Revision: 540
Author: allain.lalonde
Date: Tue Jul 21 07:24:46 2009
Log: Fixing NotificationTarget and NotificationKey equals methods so that  
they conform to the equals contract.
http://code.google.com/p/piccolo2d/source/detail?r=540

Modified:
   
/piccolo2d.java/trunk/extras/src/main/java/edu/umd/cs/piccolox/event/PNotificationCenter.java

=======================================
---  
/piccolo2d.java/trunk/extras/src/main/java/edu/umd/cs/piccolox/event/PNotificationCenter.java
    
Sat Jul 18 17:44:30 2009
+++  
/piccolo2d.java/trunk/extras/src/main/java/edu/umd/cs/piccolox/event/PNotificationCenter.java
    
Tue Jul 21 07:24:46 2009
@@ -106,22 +106,22 @@
          Method method = null;

          try {
-            method = listener.getClass().getMethod(callbackMethodName, new  
Class[] { PNotification.class });
+            method = listener.getClass().getMethod(callbackMethodName, new  
Class[] { PNotification.class });
          }
          catch (NoSuchMethodException e) {
              return false;
          }
-
+
          int modifiers = method.getModifiers();
-
+
          if (!Modifier.isPublic(modifiers)) {
              return false;
-        }
+        }

          if (name == null) {
              name = NULL_MARKER;
          }
-
+
          if (object == null) {
              object = NULL_MARKER;
          }
@@ -138,7 +138,7 @@
          if (!list.contains(notificationTarget)) {
              list.add(notificationTarget);
          }
-
+
          return true;
      }

@@ -211,7 +211,12 @@
          Object object = aNotification.getObject();

          if (name != null) {
-            if (object != null) { // both are specified
+            if (object == null) {// object is null
+                listenersList = (List) listenersMap.get(new  
NotificationKey(name, NULL_MARKER));
+                if (listenersList != null) {
+                    mergedListeners.addAll(listenersList);
+                }
+            } else { // both are specified
                  listenersList = (List) listenersMap.get(new  
NotificationKey(name, object));
                  if (listenersList != null) {
                      mergedListeners.addAll(listenersList);
@@ -223,13 +228,7 @@
                  listenersList = (List) listenersMap.get(new  
NotificationKey(NULL_MARKER, object));
                  if (listenersList != null) {
                      mergedListeners.addAll(listenersList);
-                }
-            }
-            else { // object is null
-                listenersList = (List) listenersMap.get(new  
NotificationKey(name, NULL_MARKER));
-                if (listenersList != null) {
-                    mergedListeners.addAll(listenersList);
-                }
+                }
              }
          }
          else if (object != null) { // name is null
@@ -244,7 +243,7 @@
          if (listenersList != null) {
              mergedListeners.addAll(listenersList);
          }
-
+
          dispatchNotifications(aNotification, mergedListeners);
      }

@@ -261,12 +260,12 @@
                  try {
                      listener.getMethod().invoke(listener.get(), new  
Object[] { aNotification });
                  }
-                catch (IllegalAccessException e) {
+                catch (IllegalAccessException e) {
                      // it's impossible add listeners that are not public
                  }
                  catch (InvocationTargetException e) {
-                    // Since this is how Swing handles Exceptions that get  
thrown on listeners,
-                    // it's probably ok to do it here.
+                    // Since this is how Swing handles Exceptions that get
+                    // thrown on listeners, it's probably ok to do it here.
                      e.printStackTrace();
                  }
              }
@@ -283,7 +282,7 @@
          Iterator it = listenersMap.keySet().iterator();
          while (it.hasNext()) {
              NotificationKey key = (NotificationKey) it.next();
-            if ((name == null) || (name == key.name())) {
+            if (name == null || name.equals(key.name())) {
                  if ((object == null) || (object == key.get())) {
                      result.add(key);
                  }
@@ -351,16 +350,18 @@
          public boolean equals(Object anObject) {
              if (this == anObject)
                  return true;
+
+            if (!(anObject instanceof NotificationKey))
+                return false;
+
              NotificationKey key = (NotificationKey) anObject;
-            if (name == key.name || (name != null &&  
name.equals(key.name))) {
-                Object object = get();
-                if (object != null) {
-                    if (object == (key.get())) {
-                        return true;
-                    }
-                }
-            }
-            return false;
+
+            if (name != key.name && (name == null | 
| !name.equals(key.name)))
+                return false;
+
+            Object object = get();
+
+            return object != null && object == key.get();
          }

          public String toString() {
@@ -390,16 +391,17 @@
          public boolean equals(Object object) {
              if (this == object)
                  return true;
-            NotificationTarget value = (NotificationTarget) object;
-            if (method == value.method || (method != null &&  
method.equals(value.method))) {
-                Object o = get();
-                if (o != null) {
-                    if (o == value.get()) {
-                        return true;
-                    }
-                }
-            }
-            return false;
+
+            if (!(object instanceof NotificationTarget))
+                return false;
+
+            NotificationTarget target = (NotificationTarget) object;
+            if (method != target.method && (method == null | 
| !method.equals(target.method)))
+                return false;
+
+            Object o = get();
+
+            return (o != null) && (o == target.get());
          }

          public String toString() {

--~--~---------~--~----~------------~-------~--~----~
Piccolo2D Developers Group: http://groups.google.com/group/piccolo2d-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to