You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by to...@apache.org on 2014/11/04 10:48:59 UTC

svn commit: r1636530 - in /sling/trunk/contrib/extensions/replication: core/src/main/java/org/apache/sling/replication/component/impl/ core/src/main/java/org/apache/sling/replication/trigger/impl/ core/src/test/java/org/apache/sling/replication/trigger...

Author: tommaso
Date: Tue Nov  4 09:48:59 2014
New Revision: 1636530

URL: http://svn.apache.org/r1636530
Log:
SLING-4128 - fixed nuggets path initialization

Modified:
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/SettingsUtils.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/AbstractJcrEventTrigger.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/PersistingJcrEventReplicationTrigger.java
    sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/trigger/impl/PersistingJcrEventReplicationTriggerTest.java
    sling/trunk/contrib/extensions/replication/it/src/main/resources/SLING-CONTENT/libs/test/install.author/org.apache.sling.replication.component.impl.GenericReplicationComponentFactory-trigger-test-persisting-event.json

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/SettingsUtils.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/SettingsUtils.java?rev=1636530&r1=1636529&r2=1636530&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/SettingsUtils.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/SettingsUtils.java Tue Nov  4 09:48:59 2014
@@ -37,7 +37,8 @@ public class SettingsUtils {
 
         if (value instanceof String[]) {
             return compactMap(SettingsUtils.toMap((String[]) value));
-
+        } else if (value instanceof String) {
+            return compactMap(SettingsUtils.toMap(((String) value).split(",")));
         }
         return null;
     }

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/AbstractJcrEventTrigger.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/AbstractJcrEventTrigger.java?rev=1636530&r1=1636529&r2=1636530&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/AbstractJcrEventTrigger.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/AbstractJcrEventTrigger.java Tue Nov  4 09:48:59 2014
@@ -99,6 +99,7 @@ public abstract class AbstractJcrEventTr
         }
 
         public void onEvent(EventIterator eventIterator) {
+            log.info("handling event {}");
             while (eventIterator.hasNext()) {
                 Event event = eventIterator.nextEvent();
                 try {

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/PersistingJcrEventReplicationTrigger.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/PersistingJcrEventReplicationTrigger.java?rev=1636530&r1=1636529&r2=1636530&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/PersistingJcrEventReplicationTrigger.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/PersistingJcrEventReplicationTrigger.java Tue Nov  4 09:48:59 2014
@@ -22,7 +22,6 @@ import javax.jcr.Node;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 import javax.jcr.observation.Event;
-import javax.jcr.security.Privilege;
 import java.util.Map;
 import java.util.Set;
 
@@ -48,12 +47,12 @@ public class PersistingJcrEventReplicati
 
     public PersistingJcrEventReplicationTrigger(SlingRepository repository, String path, String servicename, String nuggetsPath) {
         super(repository, path, servicename);
-        this.nuggetsPath = nuggetsPath == null ? DEFAULT_NUGGETS_PATH : nuggetsPath;
+        this.nuggetsPath = nuggetsPath == null || nuggetsPath.length() == 0 ? DEFAULT_NUGGETS_PATH : nuggetsPath;
     }
 
     @Override
     protected ReplicationRequest processEvent(Event event) throws RepositoryException {
-        log.debug("processing event {}", event);
+        log.info("processing event {}", event);
 
         ReplicationRequest replicationRequest = null;
 
@@ -63,8 +62,8 @@ public class PersistingJcrEventReplicati
             initializeNuggetsPath(session);
         }
 
-        if (session.hasPermission(nuggetsPath, Privilege.JCR_ADD_CHILD_NODES)) {
-            log.debug("persisting event under {}", nuggetsPath);
+        if (session.hasPermission(nuggetsPath, Session.ACTION_ADD_NODE)) {
+            log.info("persisting event under {}", nuggetsPath);
             Node nuggetsNode = session.getNode(nuggetsPath);
             if (nuggetsNode != null) {
                 String nodeName = event.getIdentifier() != null ? event.getIdentifier() : String.valueOf(System.nanoTime());
@@ -82,7 +81,7 @@ public class PersistingJcrEventReplicati
                         nuggetsNode.setProperty("info." + entry.getKey(), String.valueOf(entry.getValue()));
                     }
                     session.save();
-                    log.debug("event persisted at {}", path);
+                    log.info("event persisted at {}", path);
                     replicationRequest = new ReplicationRequest(System.currentTimeMillis(), ReplicationActionType.ADD, path);
                 } else {
                     log.warn("could not create node {}", nuggetsPath + "/" + nodeName);
@@ -98,21 +97,28 @@ public class PersistingJcrEventReplicati
     }
 
     private void initializeNuggetsPath(Session session) throws RepositoryException {
+        log.info("initializing nuggets path");
         if (session != null) {
             Node parent = session.getRootNode();
-            if (session.hasPermission(parent.getPath(), Privilege.JCR_ADD_CHILD_NODES)) {
+            if (session.hasPermission(parent.getPath(), Session.ACTION_ADD_NODE)) {
                 for (String nodeName : nuggetsPath.split("/")) {
-                    if (!parent.hasNode(nodeName)) {
-                        parent = parent.addNode(nodeName, "sling:Folder");
-                    } else {
-                        parent = parent.getNode(nodeName);
+                    if (nodeName.length() > 0) {
+                        if (!parent.hasNode(nodeName)) {
+                            log.info("adding {}", nodeName);
+                            parent = parent.addNode(nodeName, "sling:Folder");
+                        } else {
+                            log.info("{} exists", nodeName);
+                            parent = parent.getNode(nodeName);
+                        }
                     }
                 }
+                session.save();
             }
         }
     }
 
     public void enable() {
+        log.info("enabling persisting jcr event listener");
         Session session = null;
         try {
             session = getSession();
@@ -129,6 +135,6 @@ public class PersistingJcrEventReplicati
     }
 
     public void disable() {
-
+        log.info("disabling persisting jcr event listener");
     }
 }

Modified: sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/trigger/impl/PersistingJcrEventReplicationTriggerTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/trigger/impl/PersistingJcrEventReplicationTriggerTest.java?rev=1636530&r1=1636529&r2=1636530&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/trigger/impl/PersistingJcrEventReplicationTriggerTest.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/trigger/impl/PersistingJcrEventReplicationTriggerTest.java Tue Nov  4 09:48:59 2014
@@ -62,8 +62,8 @@ public class PersistingJcrEventReplicati
     public void testProcessEventWithoutPrivilegesAndNuggetsPath() throws Exception {
         String serviceName = "serviceId";
         Session session = mock(Session.class);
-        when(session.hasPermission(eq("var"), eq(Privilege.JCR_ADD_CHILD_NODES))).thenReturn(true);
-        when(session.hasPermission(eq("nuggets"), eq(Privilege.JCR_ADD_CHILD_NODES))).thenReturn(true);
+        when(session.hasPermission(eq("var"), eq(Session.ACTION_ADD_NODE))).thenReturn(true);
+        when(session.hasPermission(eq("nuggets"), eq(Session.ACTION_ADD_NODE))).thenReturn(true);
         when(session.nodeExists("/var/nuggets")).thenReturn(false); // first time it doesn't exist and should be created
         when(session.nodeExists("/var/nuggets")).thenReturn(true); // second time it should exist
         Node rootNode = mock(Node.class);
@@ -93,7 +93,7 @@ public class PersistingJcrEventReplicati
         ObservationManager observationManager = mock(ObservationManager.class);
         when(workspace.getObservationManager()).thenReturn(observationManager);
         when(session.getWorkspace()).thenReturn(workspace);
-        when(session.hasPermission(nuggetsPath, Privilege.JCR_ADD_CHILD_NODES)).thenReturn(true);
+        when(session.hasPermission(nuggetsPath, Session.ACTION_ADD_NODE)).thenReturn(true);
 
         SlingRepository repository = mock(SlingRepository.class);
         when(repository.loginService(serviceName, null)).thenReturn(session);
@@ -131,7 +131,7 @@ public class PersistingJcrEventReplicati
         ObservationManager observationManager = mock(ObservationManager.class);
         when(workspace.getObservationManager()).thenReturn(observationManager);
         when(session.getWorkspace()).thenReturn(workspace);
-        when(session.hasPermission(any(String.class), eq(Privilege.JCR_ADD_CHILD_NODES))).thenReturn(true);
+        when(session.hasPermission(any(String.class), eq(Session.ACTION_ADD_NODE))).thenReturn(true);
 
         SlingRepository repository = mock(SlingRepository.class);
         when(repository.loginService(serviceName, null)).thenReturn(session);

Modified: sling/trunk/contrib/extensions/replication/it/src/main/resources/SLING-CONTENT/libs/test/install.author/org.apache.sling.replication.component.impl.GenericReplicationComponentFactory-trigger-test-persisting-event.json
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/it/src/main/resources/SLING-CONTENT/libs/test/install.author/org.apache.sling.replication.component.impl.GenericReplicationComponentFactory-trigger-test-persisting-event.json?rev=1636530&r1=1636529&r2=1636530&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/it/src/main/resources/SLING-CONTENT/libs/test/install.author/org.apache.sling.replication.component.impl.GenericReplicationComponentFactory-trigger-test-persisting-event.json (original)
+++ sling/trunk/contrib/extensions/replication/it/src/main/resources/SLING-CONTENT/libs/test/install.author/org.apache.sling.replication.component.impl.GenericReplicationComponentFactory-trigger-test-persisting-event.json Tue Nov  4 09:48:59 2014
@@ -6,7 +6,7 @@
 
     "properties": [
         "type=persistedJcrEvent",
-        "path=/content",
+        "path=/content/persistedEvents",
         "servicename=replicationService"
     ]