1 55 package org.lateralnz.messaging; 56 57 import java.io.Serializable ; 58 import java.net.InetAddress ; 59 import java.util.HashMap ; 60 import java.util.Iterator ; 61 import java.util.LinkedList ; 62 import java.util.List ; 63 import java.util.Map ; 64 65 import org.apache.log4j.Logger; 66 67 import org.lateralnz.common.util.Constants; 68 import org.lateralnz.common.util.StringUtils; 69 70 75 public abstract class AbstractMessageHandler implements MessageHandler, Constants, Serializable { 76 private static final Logger log = Logger.getLogger(AbstractMessageHandler.class.getName()); 77 78 protected Map listeners = new HashMap (); 80 protected InetAddress addr = null; 81 protected int port; 82 private String allowedRegex = null; 83 private String disallowedRegex = null; 84 private int allowedPriority = 1; 85 private int disallowedPriority = 0; 86 private boolean allowed = true; 87 88 public synchronized void addListener(String group, MessageListener listener) { 89 List l = (List )listeners.get(group); 90 if (l == null) { 91 l = new LinkedList (); 92 listeners.put(group, l); 93 } 94 l.add(listener); 95 } 96 97 public void notifyListeners(final Message msg) { 98 if (listeners.containsKey(msg.getGroup())) { 101 Thread t = new Thread () { 102 public void run() { 103 List l = (List )listeners.get(msg.getGroup()); 104 Iterator iter = l.iterator(); 105 while (iter.hasNext()) { 106 MessageListener list = (MessageListener)iter.next(); 107 list.handle(msg); 108 } 109 } 110 }; 111 t.start(); 112 } 113 } 114 115 118 public void setAddress(InetAddress addr, int port) { 119 this.addr = addr; 120 this.port = port; 121 } 122 123 public void setAllowedGroupRegex(String regex, int priority) { 124 this.allowedRegex = regex; 125 this.allowedPriority = priority; 126 127 if (this.allowedPriority > this.disallowedPriority) { 128 allowed = true; 129 } 130 } 131 132 public void setDisallowedGroupRegex(String regex, int priority) { 133 this.disallowedRegex = regex; 134 this.disallowedPriority = priority; 135 136 if (this.disallowedPriority > this.allowedPriority) { 137 allowed = false; 138 } 139 } 140 141 public boolean willTransmit(String group) { 142 if (allowed && allowedRegex != null && StringUtils.matches(group, allowedRegex)) { 144 return true; 145 } 146 else if (disallowedRegex != null && StringUtils.matches(group, disallowedRegex)) { 149 return false; 150 } 151 else { 152 return true; 154 } 155 } 156 }
| Popular Tags
|