Advertisement
Guest User

Untitled

a guest
Oct 29th, 2012
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.03 KB | None | 0 0
  1. @Documented
  2. @Target(ElementType.TYPE, ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD)
  3. @Retention(RetentionPolicy.RUNTIME)
  4. @Qualifier
  5. public @interface MessageType
  6. {
  7.     String value();
  8. }
  9.  
  10. public interface MessageHandler
  11. {
  12.     public void processMessage(String inputMesssage);
  13. }
  14.  
  15. public class FirstMessageHandler implements MessageHandler
  16. {
  17.     @Inject
  18.     ResourceBundleProvider resourceBundleProvider;
  19.  
  20.     @Override
  21.     public void processMessage(@Observes @MessageType("first") String inputMesssage)
  22.     {
  23.         System.out.println("FirstMessageHandler#processMessage: " + inputMesssage);
  24.         System.out.println("InjectionTest: " + resourceBundleProvider.getValue("label.language"));
  25.     }
  26. }
  27.  
  28. public class SecondMessageHandler implements MessageHandler
  29. {
  30.     @Override
  31.     public void processMessage(@Observes @MessageType("second") String inputMesssage)
  32.     {
  33.         System.out.println("SecondMessageHandler#processMessage: " + inputMesssage);
  34.     }
  35. }
  36.  
  37. public class DefaultMessageHandler implements MessageHandler
  38. {
  39.     @Override
  40.     public void processMessage(@Observes @MessageType("default") String inputMesssage)
  41.     {
  42.         System.out.println("DefaultMessageHandler#processMessage: " + inputMesssage);
  43.     }
  44. }
  45.  
  46. public class MessageTypeLiteral extends AnnotationLiteral implements MessageType
  47. {
  48.   private final String value;
  49.  
  50.   public MessageTypeLiteral(String newValue)
  51.   {
  52.     this.value = newValue;
  53.   }
  54.  
  55.   @Override
  56.   public String value()
  57.   {
  58.     return this.value;
  59.   }
  60. }
  61.  
  62. public class MessageDispatcher
  63. {
  64.   @Inject
  65.   private Event<String> msgEvent;
  66.  
  67.   public synchronized void onMessage(String data)
  68.   {
  69.       String[] message = data.split(":");
  70.  
  71.       // Fire the event based on the type
  72.       if (message[0] not in your list of handlers) // psuedo code
  73.       {
  74.         msgEvent.select(new MessageTypeLiteral("default"));
  75.       }
  76.       else
  77.       {
  78.         msgEvent.select(new MessageTypeLiteral(message[0]));
  79.       }
  80.       msgEvent.fire(message[1]);
  81.   }
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement