1 8 package org.mmbase.core.event; 9 10 import java.util.Properties ; 11 import org.mmbase.module.core.*; 12 import org.mmbase.util.HashCodeUtil; 13 14 15 22 public class TypedNodeEventListenerWrapper implements NodeEventListener { 23 24 private final MMObjectBuilder builder; 25 private final String nodeType; 26 private final NodeEventListener wrappedListener; 27 private final boolean descendants; 28 29 34 public TypedNodeEventListenerWrapper(MMObjectBuilder builder, NodeEventListener listener, boolean descendants) { 35 this.builder = builder; 36 this.nodeType = builder.getTableName(); 37 wrappedListener = listener; 38 this.descendants = descendants; 39 } 40 41 42 public void notify(NodeEvent event) { 43 if (nodeType.equals(event.getBuilderName())) { 44 wrappedListener.notify(event); 45 } else if (descendants) { 46 MMObjectBuilder eventBuilder = MMBase.getMMBase().getBuilder(event.getBuilderName()); 47 if(nodeType.equals("object") || (eventBuilder != null && eventBuilder.isExtensionOf(builder))) { 48 wrappedListener.notify(event); 49 } 50 } 51 } 52 53 public String toString() { 54 return "TypedNodeEventListenerWrapper(" + wrappedListener + ")"; 55 } 56 57 public boolean equals(Object o) { 58 if (o instanceof TypedNodeEventListenerWrapper) { 59 TypedNodeEventListenerWrapper tw = (TypedNodeEventListenerWrapper) o; 60 return 61 nodeType.equals(tw.nodeType) && 62 wrappedListener.equals(tw.wrappedListener) && 63 descendants == tw.descendants; 64 } else { 65 return false; 66 } 67 } 68 public int hashCode() { 69 int result = 0; 70 result = HashCodeUtil.hashCode(result, nodeType); 71 result = HashCodeUtil.hashCode(result, wrappedListener); 72 return result; 73 74 } 75 76 } 77 | Popular Tags |