Class ServerAnnotationProcessor

java.lang.Object
org.cometd.annotation.AnnotationProcessor
org.cometd.annotation.server.ServerAnnotationProcessor

public class ServerAnnotationProcessor
extends AnnotationProcessor

Processes annotations in server-side service objects.

Service objects must be annotated with Service at class level to be processed by this processor, for example:

 @Service
 public class MyService
 {
     @Session
     private ServerSession session;

     @Configure("/foo")
     public void configureFoo(ConfigurableServerChannel channel)
     {
         channel.setPersistent(...);
         channel.addListener(...);
         channel.addAuthorizer(...);
     }

     @Listener("/foo")
     public void handleFooMessages(ServerSession remote, ServerMessage.Mutable message)
     {
         // Do something
     }
 }
 

The processor is used in this way:

 BayeuxServer bayeux = ...;
 ServerAnnotationProcessor processor = ServerAnnotationProcessor.get(bayeux);
 MyService s = new MyService();
 processor.process(s);
 
  • Constructor Details

    • ServerAnnotationProcessor

      public ServerAnnotationProcessor​(BayeuxServer bayeuxServer)
    • ServerAnnotationProcessor

      public ServerAnnotationProcessor​(BayeuxServer bayeuxServer, java.lang.Object... injectables)
  • Method Details

    • process

      public boolean process​(java.lang.Object bean)
      Processes dependencies annotated with Inject and Session, configuration methods annotated with Configure, callback methods annotated with Listener, Subscription and RemoteCall, and lifecycle methods annotated with PostConstruct.
      Parameters:
      bean - the annotated service instance
      Returns:
      true if the bean contains at least one annotation that has been processed, false otherwise
    • processConfigurations

      public boolean processConfigurations​(java.lang.Object bean)
      Processes the methods annotated with Configure.
      Parameters:
      bean - the annotated service instance
      Returns:
      true if at least one annotated configure has been processed, false otherwise
    • processDependencies

      public boolean processDependencies​(java.lang.Object bean)
      Processes the dependencies annotated with Inject and Session.
      Parameters:
      bean - the annotated service instance
      Returns:
      true if at least one annotated dependency has been processed, false otherwise
    • processPostConstruct

      public boolean processPostConstruct​(java.lang.Object bean)
      Processes lifecycle methods annotated with PostConstruct.
      Overrides:
      processPostConstruct in class AnnotationProcessor
      Parameters:
      bean - the annotated service instance
      Returns:
      true if at least one lifecycle method has been invoked, false otherwise
    • processCallbacks

      public boolean processCallbacks​(java.lang.Object bean)
      Processes the callbacks annotated with Listener, Subscription and RemoteCall.
      Parameters:
      bean - the annotated service instance
      Returns:
      true if at least one annotated callback has been processed, false otherwise
    • deprocess

      public boolean deprocess​(java.lang.Object bean)
      Performs the opposite processing done by process(Object) on callbacks methods annotated with Listener, Subscription and RemoteCall, and on lifecycle methods annotated with PreDestroy.
      Parameters:
      bean - the annotated service instance
      Returns:
      true if at least one deprocessing has been performed, false otherwise
      See Also:
      process(Object)
    • deprocessCallbacks

      public boolean deprocessCallbacks​(java.lang.Object bean)
      Performs the opposite processing done by processCallbacks(Object) on callback methods annotated with Listener, Subscription and RemoteCall.
      Parameters:
      bean - the annotated service instance
      Returns:
      true if the at least one callback has been deprocessed
    • processPreDestroy

      public boolean processPreDestroy​(java.lang.Object bean)
      Processes lifecycle methods annotated with PreDestroy.
      Overrides:
      processPreDestroy in class AnnotationProcessor
      Parameters:
      bean - the annotated service instance
      Returns:
      true if at least one lifecycle method has been invoked, false otherwise