You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by fm...@apache.org on 2012/02/03 01:36:32 UTC

svn commit: r1239956 - /sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/JcrResourceListener.java

Author: fmeschbe
Date: Fri Feb  3 00:36:31 2012
New Revision: 1239956

URL: http://svn.apache.org/viewvc?rev=1239956&view=rev
Log:
SLING-2399 Property events should not be discarded in case of handling add or remove events for the parent nodes; rather this information should be provided along with the resouce added and removed OSGi events

Modified:
    sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/JcrResourceListener.java

Modified: sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/JcrResourceListener.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/JcrResourceListener.java?rev=1239956&r1=1239955&r2=1239956&view=diff
==============================================================================
--- sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/JcrResourceListener.java (original)
+++ sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/JcrResourceListener.java Fri Feb  3 00:36:31 2012
@@ -186,24 +186,20 @@ public class JcrResourceListener impleme
                     final int lastSlash = eventPath.lastIndexOf('/');
                     final String nodePath = eventPath.substring(0, lastSlash);
                     final String propName = eventPath.substring(lastSlash + 1);
-                    if ( !addedEvents.containsKey(nodePath) ) {
-                        this.updateChangedEvent(changedEvents, nodePath, event, propName);
-                    }
+                    this.updateChangedEvent(changedEvents, nodePath, event, propName);
+
                 } else if ( event.getType() == Event.NODE_ADDED ) {
                     // check if this is a remove/add operation
                     if ( removedEvents.remove(eventPath) != null ) {
                         this.updateChangedEvent(changedEvents, eventPath, event, null);
                     } else {
-                        changedEvents.remove(eventPath);
                         addedEvents.put(eventPath, event);
                     }
 
                 } else if ( event.getType() == Event.NODE_REMOVED) {
                     // remove is the strongest operation, therefore remove all removed
-                    // paths from changed and added
+                    // paths from added
                     addedEvents.remove(eventPath);
-                    changedEvents.remove(eventPath);
-
                     removedEvents.put(eventPath, event);
                 }
             } catch (final RepositoryException e) {
@@ -213,12 +209,14 @@ public class JcrResourceListener impleme
 
         for (final Entry<String, Event> e : removedEvents.entrySet()) {
             // Launch an OSGi event
-            sendOsgiEvent(e.getKey(), e.getValue(), SlingConstants.TOPIC_RESOURCE_REMOVED, null);
+            sendOsgiEvent(e.getKey(), e.getValue(), SlingConstants.TOPIC_RESOURCE_REMOVED,
+                changedEvents.remove(e.getKey()));
         }
 
         for (final Entry<String, Event> e : addedEvents.entrySet()) {
             // Launch an OSGi event.
-            sendOsgiEvent(e.getKey(), e.getValue(), SlingConstants.TOPIC_RESOURCE_ADDED, null);
+            sendOsgiEvent(e.getKey(), e.getValue(), SlingConstants.TOPIC_RESOURCE_ADDED,
+                changedEvents.remove(e.getKey()));
         }
 
         // Send the changed events.