Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @Documented
- @Target(ElementType.TYPE, ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD)
- @Retention(RetentionPolicy.RUNTIME)
- @Qualifier
- public @interface MessageType
- {
- String value();
- }
- public interface MessageHandler
- {
- public void processMessage(String inputMesssage);
- }
- public class FirstMessageHandler implements MessageHandler
- {
- @Inject
- ResourceBundleProvider resourceBundleProvider;
- @Override
- public void processMessage(@Observes @MessageType("first") String inputMesssage)
- {
- System.out.println("FirstMessageHandler#processMessage: " + inputMesssage);
- System.out.println("InjectionTest: " + resourceBundleProvider.getValue("label.language"));
- }
- }
- public class SecondMessageHandler implements MessageHandler
- {
- @Override
- public void processMessage(@Observes @MessageType("second") String inputMesssage)
- {
- System.out.println("SecondMessageHandler#processMessage: " + inputMesssage);
- }
- }
- public class DefaultMessageHandler implements MessageHandler
- {
- @Override
- public void processMessage(@Observes @MessageType("default") String inputMesssage)
- {
- System.out.println("DefaultMessageHandler#processMessage: " + inputMesssage);
- }
- }
- public class MessageTypeLiteral extends AnnotationLiteral implements MessageType
- {
- private final String value;
- public MessageTypeLiteral(String newValue)
- {
- this.value = newValue;
- }
- @Override
- public String value()
- {
- return this.value;
- }
- }
- public class MessageDispatcher
- {
- @Inject
- private Event<String> msgEvent;
- public synchronized void onMessage(String data)
- {
- String[] message = data.split(":");
- // Fire the event based on the type
- if (message[0] not in your list of handlers) // psuedo code
- {
- msgEvent.select(new MessageTypeLiteral("default"));
- }
- else
- {
- msgEvent.select(new MessageTypeLiteral(message[0]));
- }
- msgEvent.fire(message[1]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement