@Override
 public void handle(AtmosphereFramework framework, Class<BroadcastFilter> annotatedClass) {
   try {
     framework.broadcasterFilters(
         (BroadcastFilter) framework.newClassInstance(BroadcastFilter.class, annotatedClass));
   } catch (Exception e) {
     logger.warn("", e);
   }
 }
  /** {@inheritDoc} */
  @Override
  public void configure(final AtmosphereConfig config) {
    framework = config.framework();
    arsf = AtmosphereResourceSessionFactory.getDefault();
    setStompFormat(PropertyClass.STOMP_FORMAT_CLASS.retrieve(StompFormat.class, config));

    try {
      // TODO: user must map AtmosphereServlet to /stomp in web.xml, can we offer a chance to set a
      // custom location ?
      framework.addAtmosphereHandler(
          "/stomp",
          framework.newClassInstance(
              AtmosphereHandler.class, AbstractReflectorAtmosphereHandler.Default.class));

      interceptors =
          new ConcurrentHashMap<org.atmosphere.stomp.protocol.Action, StompInterceptor>();
      configureInterceptor(
          config,
          ConnectInterceptor.class,
          org.atmosphere.stomp.protocol.Action.CONNECT,
          org.atmosphere.stomp.protocol.Action.STOMP,
          org.atmosphere.stomp.protocol.Action.NULL);
      configureInterceptor(
          config, SubscribeInterceptor.class, org.atmosphere.stomp.protocol.Action.SUBSCRIBE);
      configureInterceptor(
          config, UnsubscribeInterceptor.class, org.atmosphere.stomp.protocol.Action.UNSUBSCRIBE);
      configureInterceptor(
          config, SendInterceptor.class, org.atmosphere.stomp.protocol.Action.SEND);

      final BroadcastFilterLifecycle filter =
          framework.newClassInstance(BroadcastFilterLifecycle.class, StompBroadcastFilter.class);
      framework.broadcasterFilters(filter);
      filter.init(config);
    } catch (InstantiationException e) {
      logger.error("", e);
    } catch (IllegalAccessException e) {
      logger.error("", e);
    }
  }