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/10/14 17:09:13 UTC

svn commit: r1631780 [2/2] - in /sling/trunk/contrib/extensions/replication: core/ core/src/main/java/org/apache/sling/replication/agent/ core/src/main/java/org/apache/sling/replication/agent/impl/ core/src/main/java/org/apache/sling/replication/packag...

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/servlet/ReplicationAgentServlet.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/servlet/ReplicationAgentServlet.java?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/servlet/ReplicationAgentServlet.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/servlet/ReplicationAgentServlet.java Tue Oct 14 15:09:12 2014
@@ -31,6 +31,7 @@ import org.apache.felix.scr.annotations.
 import org.apache.felix.scr.annotations.Service;
 import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.SlingHttpServletResponse;
+import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.servlets.SlingAllMethodsServlet;
 import org.apache.sling.replication.agent.AgentReplicationException;
 import org.apache.sling.replication.agent.ReplicationAgent;
@@ -65,9 +66,11 @@ public class ReplicationAgentServlet ext
 
         ReplicationAgent agent = request.getResource().adaptTo(ReplicationAgent.class);
 
+        ResourceResolver resourceResolver = request.getResourceResolver();
+
         if (agent != null) {
             try {
-                ReplicationResponse replicationResponse = agent.execute(replicationRequest);
+                ReplicationResponse replicationResponse = agent.execute(resourceResolver, replicationRequest);
                 if (replicationResponse.isSuccessful()
                         || ItemState.DROPPED.toString().equals(
                         replicationResponse.getStatus())) {

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/servlet/ReplicationPackageExporterServlet.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/servlet/ReplicationPackageExporterServlet.java?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/servlet/ReplicationPackageExporterServlet.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/servlet/ReplicationPackageExporterServlet.java Tue Oct 14 15:09:12 2014
@@ -32,6 +32,7 @@ import org.apache.felix.scr.annotations.
 import org.apache.http.entity.ContentType;
 import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.SlingHttpServletResponse;
+import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.servlets.SlingAllMethodsServlet;
 import org.apache.sling.replication.communication.ReplicationRequest;
 import org.apache.sling.replication.packaging.ReplicationPackage;
@@ -68,10 +69,11 @@ public class ReplicationPackageExporterS
         response.setContentType(ContentType.APPLICATION_OCTET_STREAM.toString());
 
         ReplicationRequest replicationRequest = RequestUtils.fromServletRequest(request);
+        ResourceResolver resourceResolver = request.getResourceResolver();
 
         try {
             // get first item
-            List<ReplicationPackage> replicationPackages = replicationPackageExporter.exportPackage(replicationRequest);
+            List<ReplicationPackage> replicationPackages = replicationPackageExporter.exportPackage(resourceResolver, replicationRequest);
 
             if (replicationPackages.size() > 0) {
                 log.info("{} package(s) available for fetching, the first will be delivered", replicationPackages.size());

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/servlet/ReplicationPackageImporterServlet.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/servlet/ReplicationPackageImporterServlet.java?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/servlet/ReplicationPackageImporterServlet.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/servlet/ReplicationPackageImporterServlet.java Tue Oct 14 15:09:12 2014
@@ -29,6 +29,7 @@ import org.apache.felix.scr.annotations.
 import org.apache.felix.scr.annotations.Service;
 import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.SlingHttpServletResponse;
+import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.servlets.SlingAllMethodsServlet;
 import org.apache.sling.replication.packaging.ReplicationPackage;
 import org.apache.sling.replication.packaging.ReplicationPackageImporter;
@@ -63,10 +64,11 @@ public class ReplicationPackageImporterS
         response.setCharacterEncoding("utf-8");
 
         InputStream stream = request.getInputStream();
+        ResourceResolver resourceResolver = request.getResourceResolver();
         try {
-            ReplicationPackage replicationPackage = replicationPackageImporter.readPackage(stream);
+            ReplicationPackage replicationPackage = replicationPackageImporter.readPackage(resourceResolver, stream);
             if (replicationPackage != null) {
-                success = replicationPackageImporter.importPackage(replicationPackage);
+                success = replicationPackageImporter.importPackage(resourceResolver, replicationPackage);
             } else {
                 // TODO : this should not just cause a warning as it means package was not imported correctly
                 log.warn("cannot read a replication package from the given stream");

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/transport/ReplicationTransportHandler.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/transport/ReplicationTransportHandler.java?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/transport/ReplicationTransportHandler.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/transport/ReplicationTransportHandler.java Tue Oct 14 15:09:12 2014
@@ -20,6 +20,7 @@ package org.apache.sling.replication.tra
 
 import java.util.List;
 
+import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.replication.communication.ReplicationEndpoint;
 import org.apache.sling.replication.communication.ReplicationRequest;
 import org.apache.sling.replication.packaging.ReplicationPackage;
@@ -33,17 +34,21 @@ public interface ReplicationTransportHan
     /**
      * Delivers a given {@link ReplicationPackage}
      *
-     * @param replicationPackage a {@link ReplicationPackage} to transport
+     *
+     * @param resourceResolver
+     * @param replicationPackage a {@link org.apache.sling.replication.packaging.ReplicationPackage} to transport
      * @throws ReplicationTransportException if any error occurs during the transport
      */
-    void deliverPackage(ReplicationPackage replicationPackage) throws ReplicationTransportException;
+    void deliverPackage(ResourceResolver resourceResolver, ReplicationPackage replicationPackage) throws ReplicationTransportException;
 
     /**
      * Retrieves a list of {@link ReplicationPackage}
      *
+     *
+     * @param resourceResolver
      * @param replicationRequest the replication request
      * @throws ReplicationTransportException if any error occurs during the transport
      */
-    List<ReplicationPackage> retrievePackages(ReplicationRequest replicationRequest) throws ReplicationTransportException;
+    List<ReplicationPackage> retrievePackages(ResourceResolver resourceResolver, ReplicationRequest replicationRequest) throws ReplicationTransportException;
 
 }
\ No newline at end of file

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/transport/impl/AdvancedHttpReplicationTransportHandler.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/transport/impl/AdvancedHttpReplicationTransportHandler.java?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/transport/impl/AdvancedHttpReplicationTransportHandler.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/transport/impl/AdvancedHttpReplicationTransportHandler.java Tue Oct 14 15:09:12 2014
@@ -31,6 +31,7 @@ import org.apache.http.client.fluent.Exe
 import org.apache.http.client.fluent.Request;
 import org.apache.http.client.fluent.Response;
 import org.apache.http.entity.ContentType;
+import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.replication.communication.ReplicationEndpoint;
 import org.apache.sling.replication.packaging.ReplicationPackage;
 import org.apache.sling.replication.serialization.ReplicationPackageBuilder;
@@ -82,7 +83,7 @@ public class AdvancedHttpReplicationTran
     }
 
     @Override
-    public void deliverPackage(ReplicationPackage replicationPackage) throws ReplicationTransportException {
+    public void deliverPackage(ResourceResolver resourceResolver, ReplicationPackage replicationPackage) throws ReplicationTransportException {
         log.info("delivering package {} to {} using auth {}",
                 new Object[]{replicationPackage.getId(),
                         replicationEndpoint.getUri(), transportAuthenticationProvider});

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/transport/impl/MultipleEndpointReplicationTransportHandler.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/transport/impl/MultipleEndpointReplicationTransportHandler.java?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/transport/impl/MultipleEndpointReplicationTransportHandler.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/transport/impl/MultipleEndpointReplicationTransportHandler.java Tue Oct 14 15:09:12 2014
@@ -21,6 +21,7 @@ package org.apache.sling.replication.tra
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.replication.communication.ReplicationRequest;
 import org.apache.sling.replication.packaging.ReplicationPackage;
 import org.apache.sling.replication.transport.ReplicationTransportException;
@@ -42,7 +43,7 @@ public class MultipleEndpointReplication
         this.endpointStrategyType = endpointStrategyType;
     }
 
-    private List<ReplicationPackage> doTransport(ReplicationRequest replicationRequest, ReplicationPackage replicationPackage) throws ReplicationTransportException {
+    private List<ReplicationPackage> doTransport(ResourceResolver resourceResolver, ReplicationRequest replicationRequest, ReplicationPackage replicationPackage) throws ReplicationTransportException {
 
         int offset = 0;
         if (endpointStrategyType.equals(TransportEndpointStrategyType.One)) {
@@ -57,9 +58,9 @@ public class MultipleEndpointReplication
 
             ReplicationTransportHandler transportHelper = transportHelpers.get(currentId);
             if (replicationPackage != null) {
-                transportHelper.deliverPackage(replicationPackage);
+                transportHelper.deliverPackage(resourceResolver, replicationPackage);
             } else if (replicationRequest != null) {
-                List<ReplicationPackage> retrievedPackages = transportHelper.retrievePackages(replicationRequest);
+                List<ReplicationPackage> retrievedPackages = transportHelper.retrievePackages(resourceResolver, replicationRequest);
                 result.addAll(retrievedPackages);
             }
 
@@ -71,12 +72,12 @@ public class MultipleEndpointReplication
         return result;
     }
 
-    public void deliverPackage(ReplicationPackage replicationPackage) throws ReplicationTransportException {
-        doTransport(null, replicationPackage);
+    public void deliverPackage(ResourceResolver resourceResolver, ReplicationPackage replicationPackage) throws ReplicationTransportException {
+        doTransport(resourceResolver, null, replicationPackage);
     }
 
-    public List<ReplicationPackage> retrievePackages(ReplicationRequest replicationRequest) throws ReplicationTransportException {
-        return doTransport(replicationRequest, null);
+    public List<ReplicationPackage> retrievePackages(ResourceResolver resourceResolver, ReplicationRequest replicationRequest) throws ReplicationTransportException {
+        return doTransport(resourceResolver, replicationRequest, null);
     }
 
 

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/transport/impl/SimpleHttpReplicationTransportHandler.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/transport/impl/SimpleHttpReplicationTransportHandler.java?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/transport/impl/SimpleHttpReplicationTransportHandler.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/transport/impl/SimpleHttpReplicationTransportHandler.java Tue Oct 14 15:09:12 2014
@@ -33,6 +33,7 @@ import org.apache.http.client.fluent.Req
 import org.apache.http.client.fluent.Response;
 import org.apache.http.conn.HttpHostConnectException;
 import org.apache.http.entity.ContentType;
+import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.replication.communication.ReplicationEndpoint;
 import org.apache.sling.replication.communication.ReplicationRequest;
 import org.apache.sling.replication.packaging.ReplicationPackage;
@@ -72,7 +73,7 @@ public class SimpleHttpReplicationTransp
         this.maxNumberOfPackages = maxNumberOfPackages;
     }
 
-    public void deliverPackage(ReplicationPackage replicationPackage) throws ReplicationTransportException {
+    public void deliverPackage(ResourceResolver resourceResolver, ReplicationPackage replicationPackage) throws ReplicationTransportException {
         log.info("delivering package {} to {} using auth {}",
                 new Object[]{
                         replicationPackage.getId(),
@@ -119,7 +120,7 @@ public class SimpleHttpReplicationTransp
 
     }
 
-    public List<ReplicationPackage> retrievePackages(ReplicationRequest replicationRequest) throws ReplicationTransportException {
+    public List<ReplicationPackage> retrievePackages(ResourceResolver resourceResolver, ReplicationRequest replicationRequest) throws ReplicationTransportException {
         log.debug("polling from {}", replicationEndpoint.getUri());
 
         try {
@@ -143,7 +144,7 @@ public class SimpleHttpReplicationTransp
                 while ((httpResponse = executor.execute(req).returnResponse())
                         .getStatusLine().getStatusCode() == 200
                         && polls < maxNumberOfPackages) {
-                    ReplicationPackage responsePackage = packageBuilder.readPackage(httpResponse.getEntity().getContent());
+                    ReplicationPackage responsePackage = packageBuilder.readPackage(resourceResolver, httpResponse.getEntity().getContent());
 
                     result.add(responsePackage);
                     polls++;

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/ReplicationTriggerRequestHandler.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/ReplicationTriggerRequestHandler.java?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/ReplicationTriggerRequestHandler.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/ReplicationTriggerRequestHandler.java Tue Oct 14 15:09:12 2014
@@ -18,6 +18,7 @@
  */
 package org.apache.sling.replication.trigger;
 
+import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.replication.communication.ReplicationRequest;
 
 /**

Modified: sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/agent/impl/SimpleReplicationAgentTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/agent/impl/SimpleReplicationAgentTest.java?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/agent/impl/SimpleReplicationAgentTest.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/agent/impl/SimpleReplicationAgentTest.java Tue Oct 14 15:09:12 2014
@@ -20,12 +20,15 @@ package org.apache.sling.replication.age
 
 import java.util.Arrays;
 
+import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.api.resource.ResourceResolverFactory;
 import org.apache.sling.replication.communication.ReplicationActionType;
 import org.apache.sling.replication.communication.ReplicationRequest;
 import org.apache.sling.replication.communication.ReplicationResponse;
 import org.apache.sling.replication.event.ReplicationEventFactory;
 import org.apache.sling.replication.packaging.ReplicationPackage;
 import org.apache.sling.replication.packaging.ReplicationPackageExporter;
+import org.apache.sling.replication.packaging.ReplicationPackageExporterStrategy;
 import org.apache.sling.replication.packaging.ReplicationPackageImporter;
 import org.apache.sling.replication.queue.ReplicationQueue;
 import org.apache.sling.replication.queue.ReplicationQueueDistributionStrategy;
@@ -53,22 +56,28 @@ public class SimpleReplicationAgentTest 
         String name = "sample-agent";
         ReplicationPackageImporter packageImporter = mock(ReplicationPackageImporter.class);
         ReplicationPackageExporter packageExporter = mock(ReplicationPackageExporter.class);
-
-
+        ReplicationPackageExporterStrategy packageExporterStrategy = mock(ReplicationPackageExporterStrategy.class);
         ReplicationQueueProvider queueProvider = mock(ReplicationQueueProvider.class);
         ReplicationQueueDistributionStrategy distributionHandler = mock(ReplicationQueueDistributionStrategy.class);
         ReplicationEventFactory replicationEventFactory = mock(ReplicationEventFactory.class);
-        SimpleReplicationAgent agent = new SimpleReplicationAgent(name, true,
-                false, packageImporter, packageExporter, queueProvider, distributionHandler, replicationEventFactory, null);
+        ResourceResolverFactory resolverFactory = mock(ResourceResolverFactory.class);
+
+        SimpleReplicationAgent agent = new SimpleReplicationAgent(name,
+                false, "serviceName", packageImporter,
+                packageExporter, packageExporterStrategy,
+                queueProvider, distributionHandler,
+                replicationEventFactory, resolverFactory,  null);
         ReplicationRequest request = new ReplicationRequest(System.nanoTime(),
                 ReplicationActionType.ADD, "/");
         ReplicationPackage replicationPackage = mock(ReplicationPackage.class);
+        ResourceResolver resourceResolver = mock(ResourceResolver.class);
 
         when(replicationPackage.getPaths()).thenReturn(new String[]{"/"});
-        when(packageExporter.exportPackage(request)).thenReturn(Arrays.asList(new ReplicationPackage[]{replicationPackage}));
+        when(packageExporterStrategy.exportPackages(any(ResourceResolver.class), any(ReplicationRequest.class), any(ReplicationPackageExporter.class)))
+                .thenReturn(Arrays.asList(new ReplicationPackage[]{replicationPackage}));
         when(queueProvider.getDefaultQueue(agent.getName())).thenReturn(
                 new SimpleReplicationQueue(agent.getName(), "name"));
-        ReplicationResponse response = agent.execute(request);
+        ReplicationResponse response = agent.execute(resourceResolver, request);
         assertNotNull(response);
         assertEquals("ERROR", response.getStatus());
     }
@@ -78,22 +87,30 @@ public class SimpleReplicationAgentTest 
         String name = "sample-agent";
         ReplicationPackageImporter packageImporter = mock(ReplicationPackageImporter.class);
         ReplicationPackageExporter packageExporter = mock(ReplicationPackageExporter.class);
+        ReplicationPackageExporterStrategy packageExporterStrategy = mock(ReplicationPackageExporterStrategy.class);
         ReplicationQueueProvider queueProvider = mock(ReplicationQueueProvider.class);
         ReplicationQueueDistributionStrategy distributionHandler = mock(ReplicationQueueDistributionStrategy.class);
         ReplicationEventFactory replicationEventFactory = mock(ReplicationEventFactory.class);
-        SimpleReplicationAgent agent = new SimpleReplicationAgent(name, true,
-                false, packageImporter, packageExporter, queueProvider, distributionHandler, replicationEventFactory, null);
+        ResourceResolverFactory resolverFactory = mock(ResourceResolverFactory.class);
+        SimpleReplicationAgent agent = new SimpleReplicationAgent(name,
+                false, "subServiceName", packageImporter,
+                packageExporter, packageExporterStrategy,
+                queueProvider,
+                distributionHandler, replicationEventFactory, resolverFactory, null);
         ReplicationRequest request = new ReplicationRequest(System.nanoTime(),
                 ReplicationActionType.ADD, "/");
         ReplicationPackage replicationPackage = mock(ReplicationPackage.class);
+        ResourceResolver resourceResolver = mock(ResourceResolver.class);
+
         when(replicationPackage.getPaths()).thenReturn(new String[]{"/"});
         ReplicationQueueItemState state = new ReplicationQueueItemState();
         state.setItemState(ReplicationQueueItemState.ItemState.SUCCEEDED);
         when(distributionHandler.add(any(String.class), any(ReplicationQueueItem.class), eq(queueProvider))).thenReturn(state);
-        when(packageExporter.exportPackage(any(ReplicationRequest.class))).thenReturn(Arrays.asList(new ReplicationPackage[]{replicationPackage}));
+        when(packageExporterStrategy.exportPackages(any(ResourceResolver.class), any(ReplicationRequest.class), any(ReplicationPackageExporter.class)))
+                .thenReturn(Arrays.asList(new ReplicationPackage[]{replicationPackage}));
         when(queueProvider.getDefaultQueue(agent.getName())).thenReturn(
                 new SimpleReplicationQueue(agent.getName(), "name"));
-        ReplicationResponse response = agent.execute(request);
+        ReplicationResponse response = agent.execute(resourceResolver, request);
         assertNotNull(response);
         assertEquals("SUCCEEDED", response.getStatus());
     }
@@ -103,19 +120,28 @@ public class SimpleReplicationAgentTest 
         String name = "sample-agent";
         ReplicationPackageImporter packageImporter = mock(ReplicationPackageImporter.class);
         ReplicationPackageExporter packageExporter = mock(ReplicationPackageExporter.class);
+        ReplicationPackageExporterStrategy packageExporterStrategy = mock(ReplicationPackageExporterStrategy.class);
         ReplicationQueueProvider queueProvider = mock(ReplicationQueueProvider.class);
         ReplicationQueueDistributionStrategy distributionHandler = mock(ReplicationQueueDistributionStrategy.class);
         ReplicationEventFactory replicationEventFactory = mock(ReplicationEventFactory.class);
-        SimpleReplicationAgent agent = new SimpleReplicationAgent(name, true,
-                false, packageImporter, packageExporter, queueProvider, distributionHandler, replicationEventFactory, null);
+        ResourceResolverFactory resolverFactory = mock(ResourceResolverFactory.class);
+
+
+        SimpleReplicationAgent agent = new SimpleReplicationAgent(name,
+                false, "serviceName", packageImporter,
+                packageExporter, packageExporterStrategy,
+                queueProvider, distributionHandler,
+                replicationEventFactory, resolverFactory, null);
         ReplicationRequest request = new ReplicationRequest(System.nanoTime(),
                 ReplicationActionType.ADD, "/");
         ReplicationPackage replicationPackage = mock(ReplicationPackage.class);
+        ResourceResolver resourceResolver = mock(ResourceResolver.class);
+
         when(replicationPackage.getPaths()).thenReturn(new String[]{"/"});
-        when(packageExporter.exportPackage(request)).thenReturn(Arrays.asList(new ReplicationPackage[]{replicationPackage}));
+        when(packageExporter.exportPackage(resourceResolver, request)).thenReturn(Arrays.asList(new ReplicationPackage[]{replicationPackage}));
         when(queueProvider.getDefaultQueue(agent.getName())).thenReturn(
                 new SimpleReplicationQueue(agent.getName(), "name"));
-        agent.execute(request);
+        agent.execute(resourceResolver, request);
     }
 
     @Test
@@ -123,12 +149,19 @@ public class SimpleReplicationAgentTest 
         String name = "sample-agent";
         ReplicationPackageImporter packageImporter = mock(ReplicationPackageImporter.class);
         ReplicationPackageExporter packageExporter = mock(ReplicationPackageExporter.class);
+        ReplicationPackageExporterStrategy packageExporterStrategy = mock(ReplicationPackageExporterStrategy.class);
+
         ReplicationQueueProvider queueProvider = mock(ReplicationQueueProvider.class);
         ReplicationQueueDistributionStrategy distributionHandler = mock(ReplicationQueueDistributionStrategy.class);
         ReplicationEventFactory replicationEventFactory = mock(ReplicationEventFactory.class);
+        ResourceResolverFactory resolverFactory = mock(ResourceResolverFactory.class);
+
 
-        SimpleReplicationAgent agent = new SimpleReplicationAgent(name, true,
-                false, packageImporter, packageExporter, queueProvider, distributionHandler, replicationEventFactory, null);
+        SimpleReplicationAgent agent = new SimpleReplicationAgent(name,
+                false, "serviceName", packageImporter,
+                packageExporter, packageExporterStrategy,
+                queueProvider, distributionHandler,
+                replicationEventFactory, resolverFactory, null);
         ReplicationQueue queue = mock(ReplicationQueue.class);
         when(queueProvider.getDefaultQueue(agent.getName())).thenReturn(queue);
         assertNotNull(agent.getQueue(null));
@@ -139,12 +172,19 @@ public class SimpleReplicationAgentTest 
         String name = "sample-agent";
         ReplicationPackageImporter packageImporter = mock(ReplicationPackageImporter.class);
         ReplicationPackageExporter packageExporter = mock(ReplicationPackageExporter.class);
+        ReplicationPackageExporterStrategy packageExporterStrategy = mock(ReplicationPackageExporterStrategy.class);
+
         ReplicationQueueProvider queueProvider = mock(ReplicationQueueProvider.class);
         ReplicationQueueDistributionStrategy distributionHandler = mock(ReplicationQueueDistributionStrategy.class);
         ReplicationEventFactory replicationEventFactory = mock(ReplicationEventFactory.class);
+        ResourceResolverFactory resolverFactory = mock(ResourceResolverFactory.class);
 
-        SimpleReplicationAgent agent = new SimpleReplicationAgent(name, true,
-                false, packageImporter, packageExporter, queueProvider, distributionHandler, replicationEventFactory, null);
+
+        SimpleReplicationAgent agent = new SimpleReplicationAgent(name,
+                false, "serviceName", packageImporter,
+                packageExporter, packageExporterStrategy,
+                queueProvider, distributionHandler,
+                replicationEventFactory, resolverFactory, null);
         ReplicationQueue queue = mock(ReplicationQueue.class);
         when(queueProvider.getQueue(agent.getName(), "priority")).thenReturn(queue);
         assertNotNull(agent.getQueue("priority"));
@@ -155,12 +195,19 @@ public class SimpleReplicationAgentTest 
         String name = "sample-agent";
         ReplicationPackageImporter packageImporter = mock(ReplicationPackageImporter.class);
         ReplicationPackageExporter packageExporter = mock(ReplicationPackageExporter.class);
+        ReplicationPackageExporterStrategy packageExporterStrategy = mock(ReplicationPackageExporterStrategy.class);
+
         ReplicationQueueProvider queueProvider = mock(ReplicationQueueProvider.class);
         ReplicationQueueDistributionStrategy distributionHandler = mock(ReplicationQueueDistributionStrategy.class);
         ReplicationEventFactory replicationEventFactory = mock(ReplicationEventFactory.class);
+        ResourceResolverFactory resolverFactory = mock(ResourceResolverFactory.class);
+
 
-        SimpleReplicationAgent agent = new SimpleReplicationAgent(name, true,
-                false, packageImporter, packageExporter, queueProvider, distributionHandler, replicationEventFactory, null);
+        SimpleReplicationAgent agent = new SimpleReplicationAgent(name,
+                false, "serviceName", packageImporter,
+                packageExporter, packageExporterStrategy,
+                queueProvider, distributionHandler,
+                replicationEventFactory, resolverFactory, null);
         ReplicationQueue queue = mock(ReplicationQueue.class);
         when(queueProvider.getQueue(agent.getName(), "priority")).thenReturn(queue);
         assertNull(agent.getQueue("weird"));

Modified: sling/trunk/contrib/extensions/replication/sample/src/main/resources/SLING-CONTENT/libs/sling/replication/install.author/org.apache.sling.replication.agent.impl.CoordinatingReplicationAgentFactory-pubsync.json
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/sample/src/main/resources/SLING-CONTENT/libs/sling/replication/install.author/org.apache.sling.replication.agent.impl.CoordinatingReplicationAgentFactory-pubsync.json?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/sample/src/main/resources/SLING-CONTENT/libs/sling/replication/install.author/org.apache.sling.replication.agent.impl.CoordinatingReplicationAgentFactory-pubsync.json (original)
+++ sling/trunk/contrib/extensions/replication/sample/src/main/resources/SLING-CONTENT/libs/sling/replication/install.author/org.apache.sling.replication.agent.impl.CoordinatingReplicationAgentFactory-pubsync.json Tue Oct 14 15:09:12 2014
@@ -2,11 +2,13 @@
     "jcr:primaryType": "sling:OsgiConfig",
     "name": "pubsync",
 
+    "serviceName" : "replicationService",
+
+
     "packageExporter": [
         "authenticationProvider/type=service",
 
         "packageBuilder/type=vlt",
-        "packageBuilder/servicename=replicationService",
 
         "endpoints[0]=http://localhost:4503/libs/sling/replication/services/exporters/reverse-pubsync",
         "endpoints[1]=http://localhost:4504/libs/sling/replication/services/exporters/reverse-pubsync",
@@ -14,11 +16,15 @@
         "endpoints.strategy=All"
     ],
 
+    "packageExporterStrategy" : [
+        "type=privilege",
+        "jcrPrivilege=jcr:read"
+    ],
+
     "packageImporter": [
         "authenticationProvider/type=service",
 
         "packageBuilder/type=vlt",
-        "packageBuilder/servicename=replicationService",
 
         "endpoints[0]=http://localhost:4503/libs/sling/replication/services/importers/default",
         "endpoints[1]=http://localhost:4504/libs/sling/replication/services/importers/default",

Modified: sling/trunk/contrib/extensions/replication/sample/src/main/resources/SLING-CONTENT/libs/sling/replication/install.author/org.apache.sling.replication.agent.impl.SimpleReplicationAgentFactory-publish-reverse.json
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/sample/src/main/resources/SLING-CONTENT/libs/sling/replication/install.author/org.apache.sling.replication.agent.impl.SimpleReplicationAgentFactory-publish-reverse.json?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/sample/src/main/resources/SLING-CONTENT/libs/sling/replication/install.author/org.apache.sling.replication.agent.impl.SimpleReplicationAgentFactory-publish-reverse.json (original)
+++ sling/trunk/contrib/extensions/replication/sample/src/main/resources/SLING-CONTENT/libs/sling/replication/install.author/org.apache.sling.replication.agent.impl.SimpleReplicationAgentFactory-publish-reverse.json Tue Oct 14 15:09:12 2014
@@ -4,20 +4,26 @@
 
     "enabled" : true,
 
+    "serviceName" : "replicationService",
+
+
     "packageExporter": [
         "type=remote",
         "endpoints[0]=http://localhost:4503/libs/sling/replication/services/exporters/reverse",
 
         "authenticationProvider/type=service",
 
-        "packageBuilder/type=vlt",
-        "packageBuilder/servicename=replicationService"
+        "packageBuilder/type=vlt"
+    ],
+
+    "packageExporterStrategy" : [
+        "type=privilege",
+        "jcrPrivilege=jcr:read"
     ],
 
     "packageImporter": [
         "type=local",
         "packageBuilder/type=vlt",
-        "packageBuilder/servicename=replicationService"
     ],
 
     "trigger0": [

Modified: sling/trunk/contrib/extensions/replication/sample/src/main/resources/SLING-CONTENT/libs/sling/replication/install.author/org.apache.sling.replication.agent.impl.SimpleReplicationAgentFactory-publish.json
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/sample/src/main/resources/SLING-CONTENT/libs/sling/replication/install.author/org.apache.sling.replication.agent.impl.SimpleReplicationAgentFactory-publish.json?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/sample/src/main/resources/SLING-CONTENT/libs/sling/replication/install.author/org.apache.sling.replication.agent.impl.SimpleReplicationAgentFactory-publish.json (original)
+++ sling/trunk/contrib/extensions/replication/sample/src/main/resources/SLING-CONTENT/libs/sling/replication/install.author/org.apache.sling.replication.agent.impl.SimpleReplicationAgentFactory-publish.json Tue Oct 14 15:09:12 2014
@@ -2,10 +2,16 @@
     "jcr:primaryType": "sling:OsgiConfig",
     "name": "publish",
 
+    "serviceName" : "replicationService",
+
     "packageExporter": [
         "type=local",
-        "packageBuilder/type=vlt",
-        "packageBuilder/servicename=replicationService"
+        "packageBuilder/type=vlt"
+    ],
+
+    "packageExporterStrategy" : [
+        "type=privilege",
+        "jcrPrivilege=jcr:read"
     ],
 
     "packageImporter": [
@@ -14,8 +20,7 @@
 
         "authenticationProvider/type=service",
 
-        "packageBuilder/type=vlt",
-        "packageBuilder/servicename=replicationService"
+        "packageBuilder/type=vlt"
     ],
 
     "queueProvider.target" : "(name=sjh)",

Modified: sling/trunk/contrib/extensions/replication/sample/src/main/resources/SLING-CONTENT/libs/sling/replication/install.publish/org.apache.sling.replication.agent.impl.SimpleReplicationAgentFactory-cache-flush.json
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/sample/src/main/resources/SLING-CONTENT/libs/sling/replication/install.publish/org.apache.sling.replication.agent.impl.SimpleReplicationAgentFactory-cache-flush.json?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/sample/src/main/resources/SLING-CONTENT/libs/sling/replication/install.publish/org.apache.sling.replication.agent.impl.SimpleReplicationAgentFactory-cache-flush.json (original)
+++ sling/trunk/contrib/extensions/replication/sample/src/main/resources/SLING-CONTENT/libs/sling/replication/install.publish/org.apache.sling.replication.agent.impl.SimpleReplicationAgentFactory-cache-flush.json Tue Oct 14 15:09:12 2014
@@ -7,6 +7,10 @@
         "name=void"
     ],
 
+    "packageExporterStrategy" : [
+        "type=default"
+    ],
+
     "packageImporter": [
         "type=service",
         "name=cache-flush"

Modified: sling/trunk/contrib/extensions/replication/sample/src/main/resources/SLING-CONTENT/libs/sling/replication/install.publish/org.apache.sling.replication.agent.impl.SimpleReplicationAgentFactory-reverse.json
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/sample/src/main/resources/SLING-CONTENT/libs/sling/replication/install.publish/org.apache.sling.replication.agent.impl.SimpleReplicationAgentFactory-reverse.json?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/sample/src/main/resources/SLING-CONTENT/libs/sling/replication/install.publish/org.apache.sling.replication.agent.impl.SimpleReplicationAgentFactory-reverse.json (original)
+++ sling/trunk/contrib/extensions/replication/sample/src/main/resources/SLING-CONTENT/libs/sling/replication/install.publish/org.apache.sling.replication.agent.impl.SimpleReplicationAgentFactory-reverse.json Tue Oct 14 15:09:12 2014
@@ -10,6 +10,11 @@
         "packageBuilder/servicename=replicationService"
     ],
 
+    "packageExporterStrategy" : [
+        "type=privilege",
+        "jcrPrivilege=jcr:read"
+    ],
+
     "packageImporter": [
         "type=local",
         "packageBuilder/type=vlt",