@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;
              }
            });
  }