import com.gedge.messaging.Message; import com.gedge.messaging.MessageDeliverySystem; import com.gedge.messaging.MessageReceiver; import com.gedge.messaging.MessageSender; import com.gedge.messaging.ReceiverMethod; /** * * * @author Jason Gedge */ public class MessagingTest { public static class Sender implements MessageSender { //------------------------------------------------------------- @Message() public final static String MESSAGE1 = "message1"; @Message(signature = {int.class, String.class}) public final static String MESSAGE2 = "message2"; //------------------------------------------------------------- public void sendMessage1() { MessageDeliverySystem.getDeliverySystem().sendMessage(this, MESSAGE1); } private int counter = 0; public void sendMessage2(String extraStuff) { MessageDeliverySystem.getDeliverySystem().sendMessage(this, MESSAGE2, ++counter, extraStuff); } } public static class Receiver implements MessageReceiver { private Sender sender; public Receiver(Sender sender) { this.sender = sender; MessageDeliverySystem.getDeliverySystem().addReceiver(this); } @ReceiverMethod(senderClass = Sender.class, message = Sender.MESSAGE1) public void message1() { System.out.format("%12d: message1() received %s%n", this.hashCode(), Sender.MESSAGE1); } @ReceiverMethod(senderClass = Sender.class, message = Sender.MESSAGE2) public void anotherMessage(int param1, String param2) { System.out.format("%12d: anotherMessage() received %s with parameters: `%d` and `%s`%n", this.hashCode(), Sender.MESSAGE2, param1, param2); } public boolean accepts(MessageSender sender, String msg) { if(Sender.MESSAGE2.equals(msg)) return (sender != this.sender); // accept messages from everyone return true; } } public static void main(String[] args) { MessageDeliverySystem sys = MessageDeliverySystem.getDeliverySystem(); // Register sender class(es), followed by receiver class(es) sys.registerSender(Sender.class); sys.registerReceiver(Receiver.class); // Construct sender(s) and receiver(s) Sender sender1 = new Sender(); Sender sender2 = new Sender(); Receiver receiver1 = new Receiver(null); // accepts all Receiver receiver2 = new Receiver(sender1); // Register receiving instances sys.addReceiver(receiver1); sys.addReceiver(receiver2); // Send some messages System.out.println("Sending message1..."); sender1.sendMessage1(); sender2.sendMessage1(); System.out.println("----------------------------------------"); System.out.println("Sending message2..."); sender1.sendMessage2("First time!"); sender2.sendMessage2("First time!"); System.out.println("----------------------------------------"); System.out.println("Sending message2..."); sender1.sendMessage2("This is cool stuff sure"); sender2.sendMessage2("This is cool stuff sure"); } }