@Override public void handle(AtmosphereFramework framework, Class<?> annotatedClass) { try { Class<WebSocketHandler> s = (Class<WebSocketHandler>) annotatedClass; WebSocketHandlerService m = s.getAnnotation(WebSocketHandlerService.class); atmosphereConfig(m.atmosphereConfig(), framework); framework .addAtmosphereHandler(m.path(), AtmosphereFramework.REFLECTOR_ATMOSPHEREHANDLER) .initWebSocket(); framework.setDefaultBroadcasterClassName(m.broadcaster().getName()); filters(m.broadcastFilters(), framework); interceptors(m.interceptors(), framework); AtmosphereInterceptor aa = listeners(m.listeners(), framework); if (aa != null) { framework.interceptor(aa); } WebSocketProcessor p = WebSocketProcessorFactory.getDefault().getWebSocketProcessor(framework); p.registerWebSocketHandler( m.path(), new WebSocketProcessor.WebSocketHandlerProxy( broadcasterClass(framework, m.broadcaster()), framework.newClassInstance(s))); } catch (Throwable e) { logger.warn("", e); } }
@Test public void testOverrideBroadcaster() throws IOException, ServletException { framework.setDefaultBroadcasterClassName(SimpleBroadcaster.class.getName()); AtmosphereRequest request = new AtmosphereRequest.Builder().pathInfo("/override").method("GET").build(); request.header(X_ATMOSPHERE_TRANSPORT, LONG_POLLING_TRANSPORT); framework.doCometSupport(request, AtmosphereResponse.newInstance()); assertNotNull(r.get()); assertEquals(r.get().getBroadcaster().getClass().getName(), SimpleBroadcaster.class.getName()); }
@BeforeMethod public void create() throws Throwable { framework = new AtmosphereFramework(); framework.setDefaultBroadcasterClassName(SimpleBroadcaster.class.getName()); framework.addAnnotationPackage(ManagedGet.class); 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( new ServletConfig() { @Override public String getServletName() { return "void"; } @Override public ServletContext getServletContext() { return mock(ServletContext.class); } @Override public String getInitParameter(String name) { return ApplicationConfig.CLIENT_HEARTBEAT_INTERVAL_IN_SECONDS.equals(name) ? "10" : null; } @Override public Enumeration<String> getInitParameterNames() { return null; } }); }