@BeforeMethod public void create() throws Throwable { framework = new AtmosphereFramework(); framework.setDefaultBroadcasterClassName(SimpleBroadcaster.class.getName()); framework .setAsyncSupport( new AsynchronousProcessor(framework.getAtmosphereConfig()) { @Override public Action service(AtmosphereRequest req, AtmosphereResponse res) throws IOException, ServletException { return suspended(req, res); } public void action(AtmosphereResourceImpl r) { try { resumed(r.getRequest(), r.getResponse()); } catch (IOException e) { e.printStackTrace(); } catch (ServletException e) { e.printStackTrace(); } } }) .init(); }
@BeforeMethod public void create() throws Throwable { framework = new AtmosphereFramework(); framework.setAsyncSupport(mock(AsyncSupport.class)); framework.init( new ServletConfig() { @Override public String getServletName() { return "void"; } @Override public ServletContext getServletContext() { return mock(ServletContext.class); } @Override public String getInitParameter(String name) { return null; } @Override public Enumeration<String> getInitParameterNames() { return null; } }); }
@BeforeMethod public void setUp() throws Exception { AtmosphereFramework f = new AtmosphereFramework() .addInitParameter(ApplicationConfig.WEBSOCKET_SUPPRESS_JSR356, "true"); config = f.init().getAtmosphereConfig(); factory = config.getBroadcasterFactory(); factory.remove(Broadcaster.ROOT_MASTER); metaBroadcaster = config.metaBroadcaster(); }
@Test public void testOnClose() throws IOException, ServletException { framework.addAtmosphereHandler( "/a", new AbstractReflectorAtmosphereHandler() { @Override public void onRequest(AtmosphereResource resource) throws IOException {} @Override public void destroy() {} }); AtmosphereRequest request = new AtmosphereRequest.Builder().pathInfo("/a").build(); final AtomicReference<Boolean> closed = new AtomicReference<Boolean>(); final AtmosphereResourceEventListener listener = new AtmosphereResourceEventListenerAdapter() { @Override public void onClose(AtmosphereResourceEvent event) { closed.set(true); } }; framework.interceptor( new AtmosphereInterceptor() { @Override public void configure(AtmosphereConfig config) {} @Override public Action inspect(AtmosphereResource r) { r.addEventListener(listener).suspend(); try { r.getBroadcaster().broadcast("void").get(); } catch (InterruptedException e) { } catch (ExecutionException e) { } return Action.CONTINUE; } @Override public void postInspect(AtmosphereResource r) { try { r.close(); } catch (IOException e) { e.printStackTrace(); } } }); framework.doCometSupport(request, AtmosphereResponse.newInstance()); assertTrue(closed.get()); }
@Test public void setCookieTest() throws IOException, ServletException, ExecutionException, InterruptedException { final AtomicReference<Cookie> cValue = new AtomicReference<Cookie>(); final AtomicReference<AtmosphereResource> r = new AtomicReference<AtmosphereResource>(); framework.addAtmosphereHandler( "/*", new AtmosphereHandler() { @Override public void onRequest(AtmosphereResource resource) throws IOException { resource.getResponse().addCookie(resource.getRequest().getCookies()[0]); r.set(resource); resource.getBroadcaster().addAtmosphereResource(resource); } @Override public void onStateChange(AtmosphereResourceEvent event) throws IOException { Cookie[] c = event.getResource().getRequest().getCookies(); cValue.set(c[0]); } @Override public void destroy() {} }); Set<Cookie> c = new HashSet<Cookie>(); Cookie a = new Cookie("yo", "man"); a.setComment("kdaskjdaskda"); a.setDomain("dasdasdasd"); a.setHttpOnly(true); a.setPath("/ya"); c.add(a); AtmosphereRequest request = new AtmosphereRequestImpl.Builder().cookies(c).pathInfo("/a").build(); AtmosphereResponse response = AtmosphereResponseImpl.newInstance().delegateToNativeResponse(false); response.destroyable(false); framework.doCometSupport(request, response); r.get().getBroadcaster().broadcast("yo").get(); assertNotNull(cValue.get()); Cookie i = c.iterator().next(); assertEquals(i.getName(), cValue.get().getName()); assertEquals(i.getValue(), cValue.get().getValue()); assertEquals( "yo=man; Domain=dasdasdasd; Path=/ya; HttpOnly", response.headers().get("Set-Cookie")); }
@Test public void testEmptyDestroy() throws IOException, ServletException { Broadcaster b = framework.getBroadcasterFactory().lookup(B.class, "/test", true); b.setBroadcasterLifeCyclePolicy(BroadcasterLifeCyclePolicy.EMPTY_DESTROY); AR ah = new AR(); framework.addAtmosphereHandler("/*", ah, b).init(); AtmosphereRequest request = new AtmosphereRequestImpl.Builder().pathInfo("/a").method("GET").build(); framework.doCometSupport(request, AtmosphereResponseImpl.newInstance()); b.removeAtmosphereResource(ah.resource); assertFalse(B.class.cast(b).releaseExternalResources.get()); assertTrue(B.class.cast(b).destroy.get()); }
/** * Return the value of the init params defined in web.xml or application.xml. * * @param name the name * @return the list of init params defined in web.xml or application.xml */ public String getInitParameter(String name) { try { return framework.getServletConfig().getInitParameter(name); } catch (Throwable ex) { // Don't fail if Tomcat crash on startup with an NPE return null; } }
@Test public void basicHandlerTest() throws IOException, ServletException, ExecutionException, InterruptedException { final AtomicReference<Cookie> cValue = new AtomicReference<Cookie>(); final AtomicReference<AtmosphereResource> r = new AtomicReference<AtmosphereResource>(); framework.addAtmosphereHandler( "/*", new AtmosphereHandler() { @Override public void onRequest(AtmosphereResource resource) throws IOException { r.set(resource); resource.getBroadcaster().addAtmosphereResource(resource); } @Override public void onStateChange(AtmosphereResourceEvent event) throws IOException { Cookie[] c = event.getResource().getRequest().getCookies(); cValue.set(c[0]); } @Override public void destroy() {} }); Set<Cookie> c = new HashSet<Cookie>(); c.add(new Cookie("yo", "man")); AtmosphereRequest request = new AtmosphereRequestImpl.Builder().cookies(c).pathInfo("/a").build(); framework.doCometSupport(request, AtmosphereResponseImpl.newInstance()); r.get().getBroadcaster().broadcast("yo").get(); assertNotNull(cValue.get()); Cookie i = c.iterator().next(); assertEquals(i.getName(), cValue.get().getName()); assertEquals(i.getValue(), cValue.get().getValue()); }
@Test public void testIdleResume() throws IOException, ServletException, InterruptedException { B b = framework.getBroadcasterFactory().lookup(B.class, "/test", true); b.setBroadcasterLifeCyclePolicy( new BroadcasterLifeCyclePolicy.Builder() .policy(BroadcasterLifeCyclePolicy.ATMOSPHERE_RESOURCE_POLICY.IDLE_RESUME) .idleTimeInMS(500) .build()); b.latch = new CountDownLatch(1); AR ah = new AR(); framework.addAtmosphereHandler("/*", ah, b).init(); AtmosphereRequest request = new AtmosphereRequestImpl.Builder().pathInfo("/a").method("GET").build(); framework.doCometSupport(request, AtmosphereResponseImpl.newInstance()); b.latch.await(); assertFalse(B.class.cast(b).releaseExternalResources.get()); assertTrue(B.class.cast(b).destroy.get()); }
@Override public AnnotationProcessor configure(final AtmosphereFramework framework) { ServletContext sc = framework.getServletContext(); Map<Class<? extends Annotation>, Set<Class<?>>> annotations = (Map<Class<? extends Annotation>, Set<Class<?>>>) sc.getAttribute(ANNOTATION_ATTRIBUTE); if (annotations == null || annotations.isEmpty()) { delegate = new BytecodeBasedAnnotationProcessor(); } else { delegate = new ServletContainerInitializerAnnotationProcessor(annotations, framework); } delegate.configure(framework); return this; }
/** * Delegate the request processing to an instance of {@link org.atmosphere.cpr.AsyncSupport} * * @param req the {@link javax.servlet.http.HttpServletRequest} * @param res the {@link javax.servlet.http.HttpServletResponse} * @throws java.io.IOException * @throws javax.servlet.ServletException */ @Override public void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException { framework.doCometSupport(AtmosphereRequest.wrap(req), AtmosphereResponse.wrap(res)); }
/** * Return the {@link org.atmosphere.util.UUIDProvider} * * @return {@link org.atmosphere.util.UUIDProvider} */ public UUIDProvider uuidProvider() { return framework.uuidProvider(); }
@Override public void destroy() { framework.destroy(); }
@AfterMethod public void after() { framework.destroy(); }
/** * Return the list of {@link org.atmosphere.cpr.AtmosphereFramework.AtmosphereHandlerWrapper}s. * * @return the list of {@link org.atmosphere.cpr.AtmosphereFramework.AtmosphereHandlerWrapper} */ public Map<String, AtmosphereFramework.AtmosphereHandlerWrapper> handlers() { return framework.getAtmosphereHandlers(); }
public void init(final ServletConfig sc) throws ServletException { super.init(sc); // No native supported framework.setUseNativeImplementation(false); framework.init(sc); }
/** * Return the {@link ServletContext}. * * @return {@link ServletContext} */ public ServletContext getServletContext() { return framework.getServletContext(); }
/** * Return the current WebServer used. * * @return the current WebServer used */ public String getWebServerName() { return framework.getAsyncSupport().getContainerName(); }
/** * Return an instance of {@link DefaultBroadcasterFactory}. * * @return an instance of {@link DefaultBroadcasterFactory} */ public BroadcasterFactory getBroadcasterFactory() { return framework.getBroadcasterFactory(); }
/** * Return the {@link ServletConfig}. * * @return {@link ServletConfig} */ public ServletConfig getServletConfig() { return framework.getServletConfig(); }
@AfterMethod public void unSet() throws Exception { framework.destroy(); }
/** * Return the {@link WebSocketFactory} * * @return the {@link WebSocketFactory} */ public WebSocketFactory websocketFactory() { return framework.webSocketFactory(); }
/** * Return the {@link AtmosphereResourceFactory} * * @return the AtmosphereResourceFactory */ public AtmosphereResourceFactory resourcesFactory() { return framework.atmosphereFactory(); }
/** * Return the {@link AtmosphereResourceSessionFactory} * * @return the AtmosphereResourceSessionFactory */ public AtmosphereResourceSessionFactory sessionFactory() { return framework.sessionFactory(); }
/** * Return the {@link DefaultMetaBroadcaster} * * @return the MetaBroadcaster */ public MetaBroadcaster metaBroadcaster() { return framework.metaBroadcaster(); }