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 [1/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...

Author: tommaso
Date: Tue Oct 14 15:09:12 2014
New Revision: 1631780

URL: http://svn.apache.org/r1631780
Log:
SLING-3899 - applied Marius patch to add the resource resolved to all APIs

Added:
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageExporterStrategy.java   (with props)
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/strategy/
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/strategy/DefaultReplicationPackageExporterStrategy.java   (with props)
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/strategy/PrivilegeReplicationPackageExporterStrategy.java   (with props)
Removed:
    sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/serialization/impl/vlt/
Modified:
    sling/trunk/contrib/extensions/replication/core/pom.xml
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/ReplicationAgent.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/CoordinatingReplicationAgentFactory.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/DefaultReplicationComponentFactory.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/SimpleReplicationAgent.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/SimpleReplicationAgentFactory.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageExporter.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageImporter.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/AgentReplicationPackageExporterFactory.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/LocalReplicationPackageExporter.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/LocalReplicationPackageExporterFactory.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/RemoteReplicationPackageExporter.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/RemoteReplicationPackageExporterFactory.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/AdvancedRemoteReplicationPackageImporter.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/LocalReplicationPackageImporter.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/LocalReplicationPackageImporterFactory.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RemoteReplicationPackageImporter.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RemoteReplicationPackageImporterFactory.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RepositoryReplicationPackageImporter.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/ReplicationPackageBuilder.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/AbstractReplicationPackageBuilder.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/VoidReplicationPackageBuilder.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/vlt/FileVaultReplicationPackageBuilder.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/vlt/FileVaultReplicationPackageBuilderFactory.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/servlet/ReplicationAgentRootServlet.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/servlet/ReplicationAgentServlet.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/servlet/ReplicationPackageExporterServlet.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/servlet/ReplicationPackageImporterServlet.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/transport/ReplicationTransportHandler.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/transport/impl/AdvancedHttpReplicationTransportHandler.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/transport/impl/MultipleEndpointReplicationTransportHandler.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/transport/impl/SimpleHttpReplicationTransportHandler.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/ReplicationTriggerRequestHandler.java
    sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/agent/impl/SimpleReplicationAgentTest.java
    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
    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
    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
    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
    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

Modified: sling/trunk/contrib/extensions/replication/core/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/pom.xml?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/pom.xml (original)
+++ sling/trunk/contrib/extensions/replication/core/pom.xml Tue Oct 14 15:09:12 2014
@@ -111,7 +111,7 @@
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.api</artifactId>
-            <version>2.3.0</version>
+            <version>2.5.0</version>
         </dependency>
         <dependency>
             <groupId>org.apache.sling</groupId>

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/ReplicationAgent.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/ReplicationAgent.java?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/ReplicationAgent.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/ReplicationAgent.java Tue Oct 14 15:09:12 2014
@@ -18,6 +18,7 @@
  */
 package org.apache.sling.replication.agent;
 
+import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.replication.communication.ReplicationRequest;
 import org.apache.sling.replication.communication.ReplicationResponse;
 import org.apache.sling.replication.queue.ReplicationQueue;
@@ -55,6 +56,6 @@ public interface ReplicationAgent {
      * @return a {@link ReplicationResponse}
      * @throws AgentReplicationException
      */
-    ReplicationResponse execute(ReplicationRequest replicationRequest) throws AgentReplicationException;
+    ReplicationResponse execute(ResourceResolver resourceResolver, ReplicationRequest replicationRequest) throws AgentReplicationException;
 
 }

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/CoordinatingReplicationAgentFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/CoordinatingReplicationAgentFactory.java?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/CoordinatingReplicationAgentFactory.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/CoordinatingReplicationAgentFactory.java Tue Oct 14 15:09:12 2014
@@ -78,8 +78,8 @@ public class CoordinatingReplicationAgen
     @Property(label = "Name")
     public static final String NAME = "name";
 
-    @Property(boolValue = true, label = "Replicate using aggregated paths")
-    public static final String USE_AGGREGATE_PATHS = "useAggregatePaths";
+    @Property(label = "Service Name")
+    public static final String SERVICE_NAME = "serviceName";
 
     @Property(label = "Package Exporter", cardinality = 100)
     public static final String PACKAGE_EXPORTER = "packageExporter";
@@ -207,4 +207,4 @@ public class CoordinatingReplicationAgen
         }
         return null;
     }
-}
\ No newline at end of file
+}

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/DefaultReplicationComponentFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/DefaultReplicationComponentFactory.java?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/DefaultReplicationComponentFactory.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/DefaultReplicationComponentFactory.java Tue Oct 14 15:09:12 2014
@@ -29,6 +29,7 @@ import org.apache.felix.scr.annotations.
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.Service;
 import org.apache.jackrabbit.vault.packaging.Packaging;
+import org.apache.sling.api.resource.ResourceResolverFactory;
 import org.apache.sling.commons.osgi.PropertiesUtil;
 import org.apache.sling.commons.scheduler.Scheduler;
 import org.apache.sling.jcr.api.SlingRepository;
@@ -37,9 +38,12 @@ import org.apache.sling.replication.agen
 import org.apache.sling.replication.agent.ReplicationComponentProvider;
 import org.apache.sling.replication.event.ReplicationEventFactory;
 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.packaging.impl.exporter.strategy.DefaultReplicationPackageExporterStrategy;
 import org.apache.sling.replication.packaging.impl.exporter.LocalReplicationPackageExporterFactory;
 import org.apache.sling.replication.packaging.impl.exporter.RemoteReplicationPackageExporterFactory;
+import org.apache.sling.replication.packaging.impl.exporter.strategy.PrivilegeReplicationPackageExporterStrategy;
 import org.apache.sling.replication.packaging.impl.importer.LocalReplicationPackageImporterFactory;
 import org.apache.sling.replication.packaging.impl.importer.RemoteReplicationPackageImporterFactory;
 import org.apache.sling.replication.queue.ReplicationQueueDistributionStrategy;
@@ -85,6 +89,9 @@ public class DefaultReplicationComponent
     private ReplicationEventFactory replicationEventFactory;
 
     @Reference
+    private ResourceResolverFactory resourceResolverFactory;
+
+    @Reference
     private SlingRepository repository;
 
     @Reference
@@ -131,6 +138,9 @@ public class DefaultReplicationComponent
             Map<String, Object> exporterProperties = extractMap("packageExporter", properties);
             ReplicationPackageExporter packageExporter = createExporter(exporterProperties, componentProvider);
 
+            Map<String, Object> exporterStrategyProperties = extractMap("packageExporterStrategy", properties);
+            ReplicationPackageExporterStrategy packageExporterStrategy = createExporterStrategy(exporterStrategyProperties, componentProvider);
+
             Map<String, Object> queueDistributionStrategyProperties = extractMap("queueDistributionStrategy", properties);
             ReplicationQueueDistributionStrategy queueDistributionStrategy = createDistributionStrategy(queueDistributionStrategyProperties, componentProvider);
 
@@ -142,13 +152,15 @@ public class DefaultReplicationComponent
 
             String name = PropertiesUtil.toString(properties.get(SimpleReplicationAgentFactory.NAME), String.valueOf(new Random().nextInt(1000)));
 
-            boolean useAggregatePaths = PropertiesUtil.toBoolean(properties.get(SimpleReplicationAgentFactory.USE_AGGREGATE_PATHS), true);
+            String serviceName = PropertiesUtil.toString(properties.get(SimpleReplicationAgentFactory.SERVICE_NAME), null);
+
 
             boolean isPassive = PropertiesUtil.toBoolean(properties.get(SimpleReplicationAgentFactory.IS_PASSIVE), false);
 
 
-            return new SimpleReplicationAgent(name, useAggregatePaths, isPassive,
-                    packageImporter, packageExporter, queueProvider, queueDistributionStrategy, replicationEventFactory, triggers);
+            return new SimpleReplicationAgent(name, isPassive, serviceName,
+                    packageImporter, packageExporter, packageExporterStrategy,
+                    queueProvider, queueDistributionStrategy, replicationEventFactory, resourceResolverFactory, triggers);
 
         }
 
@@ -156,6 +168,26 @@ public class DefaultReplicationComponent
 
     }
 
+    private ReplicationPackageExporterStrategy createExporterStrategy(Map<String, Object> properties, ReplicationComponentProvider componentProvider) {
+
+        String factory = PropertiesUtil.toString(properties.get(COMPONENT_TYPE), "service");
+
+        if ("service".equals(factory)) {
+            String name = PropertiesUtil.toString(properties.get(NAME), null);
+            return componentProvider.getComponent(ReplicationPackageExporterStrategy.class, name);
+
+        }
+        else if (DefaultReplicationPackageExporterStrategy.NAME.equals(factory)) {
+            return new DefaultReplicationPackageExporterStrategy();
+        }
+        else if (PrivilegeReplicationPackageExporterStrategy.NAME.equals(factory)) {
+            return new PrivilegeReplicationPackageExporterStrategy(properties);
+        }
+
+        return null;
+    }
+
+
     public ReplicationPackageExporter createExporter(Map<String, Object> properties, ReplicationComponentProvider componentProvider) {
 
         String factory = PropertiesUtil.toString(properties.get(COMPONENT_TYPE), "service");
@@ -301,4 +333,4 @@ public class DefaultReplicationComponent
         return result;
     }
 
-}
\ No newline at end of file
+}

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/SimpleReplicationAgent.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/SimpleReplicationAgent.java?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/SimpleReplicationAgent.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/SimpleReplicationAgent.java Tue Oct 14 15:09:12 2014
@@ -18,12 +18,11 @@
  */
 package org.apache.sling.replication.agent.impl;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Dictionary;
-import java.util.List;
-import java.util.Properties;
+import java.util.*;
 
+import org.apache.sling.api.resource.LoginException;
+import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.api.resource.ResourceResolverFactory;
 import org.apache.sling.replication.agent.AgentReplicationException;
 import org.apache.sling.replication.agent.ReplicationAgent;
 import org.apache.sling.replication.agent.ReplicationComponent;
@@ -33,6 +32,7 @@ import org.apache.sling.replication.even
 import org.apache.sling.replication.event.ReplicationEventType;
 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;
@@ -69,32 +69,43 @@ public class SimpleReplicationAgent impl
 
     private final String name;
 
-    private final boolean useAggregatePaths;
+    private final ReplicationPackageExporterStrategy replicationPackageExporterStrategy;
+    private final ResourceResolverFactory resourceResolverFactory;
+    private final String subServiceName;
 
     public SimpleReplicationAgent(String name,
-                                  boolean useAggregatePaths,
                                   boolean passive,
+                                  String subServiceName,
                                   ReplicationPackageImporter replicationPackageImporter,
                                   ReplicationPackageExporter replicationPackageExporter,
+                                  ReplicationPackageExporterStrategy replicationPackageExporterStrategy,
                                   ReplicationQueueProvider queueProvider,
                                   ReplicationQueueDistributionStrategy queueDistributionStrategy,
                                   ReplicationEventFactory replicationEventFactory,
+                                  ResourceResolverFactory resourceResolverFactory,
                                   List<ReplicationTrigger> triggers) {
+        this.subServiceName = subServiceName;
+        this.replicationPackageExporterStrategy = replicationPackageExporterStrategy;
+        this.resourceResolverFactory = resourceResolverFactory;
 
         // check configuration is valid
         if (name == null
                 || replicationPackageImporter == null
                 || replicationPackageExporter == null
+                || replicationPackageExporterStrategy == null
                 || queueProvider == null
                 || queueDistributionStrategy == null
-                || replicationEventFactory == null) {
+                || replicationEventFactory == null
+                || resourceResolverFactory == null) {
 
             String errorMessage = Arrays.toString(new Object[]{name,
                     replicationPackageImporter,
                     replicationPackageExporter,
+                    replicationPackageExporterStrategy,
                     queueProvider,
                     queueDistributionStrategy,
-                    replicationEventFactory});
+                    replicationEventFactory,
+                    resourceResolverFactory});
             throw new IllegalArgumentException("all arguments are required: " + errorMessage);
         }
 
@@ -104,15 +115,14 @@ public class SimpleReplicationAgent impl
         this.replicationPackageExporter = replicationPackageExporter;
         this.queueProvider = queueProvider;
         this.queueDistributionStrategy = queueDistributionStrategy;
-        this.useAggregatePaths = useAggregatePaths;
         this.replicationEventFactory = replicationEventFactory;
         this.triggers = triggers == null ? new ArrayList<ReplicationTrigger>() : triggers;
     }
 
-    public ReplicationResponse execute(ReplicationRequest replicationRequest)
+    public ReplicationResponse execute(ResourceResolver resourceResolver, ReplicationRequest replicationRequest)
             throws AgentReplicationException {
         try {
-            return schedule(buildPackages(replicationRequest));
+            return schedule(buildPackages(resourceResolver, replicationRequest));
         } catch (Exception e) {
             log.error("Error executing replication request {}", replicationRequest, e);
             throw new AgentReplicationException(e);
@@ -124,22 +134,15 @@ public class SimpleReplicationAgent impl
         return passive;
     }
 
-    private List<ReplicationPackage> buildPackages(ReplicationRequest replicationRequest) throws ReplicationPackageBuildingException {
+    private List<ReplicationPackage> buildPackages(ResourceResolver resourceResolver, ReplicationRequest replicationRequest) throws ReplicationPackageBuildingException {
 
         List<ReplicationPackage> replicationPackages = new ArrayList<ReplicationPackage>();
 
-        if (useAggregatePaths) {
-            List<ReplicationPackage> exportedPackages = replicationPackageExporter.exportPackage(replicationRequest);
-            replicationPackages.addAll(exportedPackages);
-        } else {
-            for (String path : replicationRequest.getPaths()) {
-                ReplicationRequest splitReplicationRequest = new ReplicationRequest(replicationRequest.getTime(),
-                        replicationRequest.getAction(),
-                        path);
-                List<ReplicationPackage> exportedPackages = replicationPackageExporter.exportPackage(splitReplicationRequest);
-                replicationPackages.addAll(exportedPackages);
-            }
-        }
+
+        List<ReplicationPackage> exportedPackages = replicationPackageExporterStrategy.exportPackages(resourceResolver,
+                replicationRequest,
+                replicationPackageExporter);
+        replicationPackages.addAll(exportedPackages);
 
         return replicationPackages;
     }
@@ -239,10 +242,12 @@ public class SimpleReplicationAgent impl
     private boolean processTransportQueue(ReplicationQueueItem queueItem) {
         boolean success = false;
         log.debug("reading package with id {}", queueItem.getId());
+        ResourceResolver resourceResolver = getResourceResolver();
         try {
-            ReplicationPackage replicationPackage = replicationPackageExporter.exportPackageById(queueItem.getId());
+
+            ReplicationPackage replicationPackage = replicationPackageExporter.exportPackageById(resourceResolver, queueItem.getId());
             if (replicationPackage != null) {
-                replicationPackageImporter.importPackage(replicationPackage);
+                replicationPackageImporter.importPackage(resourceResolver, replicationPackage);
 
                 Dictionary<Object, Object> properties = new Properties();
                 properties.put("replication.package.paths", replicationPackage.getPaths());
@@ -258,6 +263,20 @@ public class SimpleReplicationAgent impl
         return success;
     }
 
+    private ResourceResolver getResourceResolver() {
+        ResourceResolver resourceResolver = null;
+
+        Map<String, Object> authenticationInfo = new HashMap<String, Object>();
+        authenticationInfo.put(ResourceResolverFactory.SUBSERVICE, subServiceName);
+        try {
+            resourceResolver = resourceResolverFactory.getServiceResourceResolver(authenticationInfo);
+        } catch (LoginException e) {
+            log.error("cannot obtain a resource resolver");
+        }
+
+        return resourceResolver;
+    }
+
     class PackageQueueProcessor implements ReplicationQueueProcessor {
         public boolean process(String queueName, ReplicationQueueItem packageInfo) {
             log.info("running package queue processor");
@@ -274,7 +293,8 @@ public class SimpleReplicationAgent impl
 
         public void handle(ReplicationRequest request) {
             try {
-                agent.execute(request);
+                ResourceResolver resourceResolver = getResourceResolver();
+                agent.execute(resourceResolver, request);
             } catch (AgentReplicationException e) {
                 log.error("Error executing handler", e);
             }

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/SimpleReplicationAgentFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/SimpleReplicationAgentFactory.java?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/SimpleReplicationAgentFactory.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/SimpleReplicationAgentFactory.java Tue Oct 14 15:09:12 2014
@@ -77,19 +77,18 @@ public class SimpleReplicationAgentFacto
     @Property(label = "Name")
     public static final String NAME = "name";
 
-    @Property(boolValue = true, label = "Replicate using aggregated paths")
-    public static final String USE_AGGREGATE_PATHS = "useAggregatePaths";
-
     @Property(boolValue = false, label = "Use this agent as a passive one (only queueing)")
     public static final String IS_PASSIVE = "isPassive";
 
-
     @Property(label = "Package Exporter", cardinality = 100)
     public static final String PACKAGE_EXPORTER = "packageExporter";
 
     @Property(label = "Package Importer", cardinality = 100)
     public static final String PACKAGE_IMPORTER = "packageImporter";
 
+    @Property(label = "Service Name")
+    public static final String SERVICE_NAME = "serviceName";
+
     @Property(label = "Target ReplicationQueueProvider", name = QUEUEPROVIDER_TARGET, value = DEFAULT_QUEUEPROVIDER)
     @Reference(name = "queueProvider", target = DEFAULT_QUEUEPROVIDER)
     private volatile ReplicationQueueProvider queueProvider;

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageExporter.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageExporter.java?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageExporter.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageExporter.java Tue Oct 14 15:09:12 2014
@@ -21,6 +21,7 @@ package org.apache.sling.replication.pac
 
 import java.util.List;
 
+import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.replication.communication.ReplicationRequest;
 import org.apache.sling.replication.serialization.ReplicationPackageBuildingException;
 
@@ -37,12 +38,12 @@ public interface ReplicationPackageExpor
      *
      * @return a <code>List</code> of {@link org.apache.sling.replication.packaging.ReplicationPackage}s
      */
-    List<ReplicationPackage> exportPackage(ReplicationRequest replicationRequest) throws ReplicationPackageBuildingException;
+    List<ReplicationPackage> exportPackage(ResourceResolver resourceResolver, ReplicationRequest replicationRequest) throws ReplicationPackageBuildingException;
 
     /**
      * Exports a {@link org.apache.sling.replication.packaging.ReplicationPackage} given its 'id', if it already exists.
      *
      * @return a {@link org.apache.sling.replication.packaging.ReplicationPackage} if available, <code>null</code> otherwise
      */
-    ReplicationPackage exportPackageById(String replicationPackageId);
+    ReplicationPackage exportPackageById(ResourceResolver resourceResolver, String replicationPackageId);
 }

Added: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageExporterStrategy.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageExporterStrategy.java?rev=1631780&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageExporterStrategy.java (added)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageExporterStrategy.java Tue Oct 14 15:09:12 2014
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sling.replication.packaging;
+
+import java.util.List;
+
+import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.replication.communication.ReplicationRequest;
+import org.apache.sling.replication.serialization.ReplicationPackageBuildingException;
+
+/**
+ * Strategy for exporting packages
+ */
+public interface ReplicationPackageExporterStrategy {
+
+    /**
+     * @param resourceResolver   a {@link org.apache.sling.api.resource.ResourceResolver} representing the calling 'user'
+     * @param replicationRequest a request bringing metadata for getting {@link org.apache.sling.replication.packaging.ReplicationPackage}s
+     *                           to be exported
+     * @param packageExporter an exporter to be used to generate {@link org.apache.sling.replication.packaging.ReplicationPackage}s
+     * @return
+     * @throws ReplicationPackageBuildingException
+     */
+    List<ReplicationPackage> exportPackages(ResourceResolver resourceResolver, ReplicationRequest replicationRequest,
+                                            ReplicationPackageExporter packageExporter) throws ReplicationPackageBuildingException;
+
+}

Propchange: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageExporterStrategy.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageImporter.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageImporter.java?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageImporter.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageImporter.java Tue Oct 14 15:09:12 2014
@@ -20,6 +20,7 @@ package org.apache.sling.replication.pac
 
 import java.io.InputStream;
 
+import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.replication.serialization.ReplicationPackageReadingException;
 
 /**
@@ -33,7 +34,7 @@ public interface ReplicationPackageImpor
      * @param replicationPackage - the package to be imported
      * @return <code>true</code> if the import succeeded, <code>false</code> otherwise
      */
-    boolean importPackage(ReplicationPackage replicationPackage) throws ReplicationPackageReadingException;
+    boolean importPackage(ResourceResolver resourceResolver, ReplicationPackage replicationPackage) throws ReplicationPackageReadingException;
 
     /**
      * reads a stream and tries to convert it to a {@link ReplicationPackage} this provider can read and install
@@ -42,6 +43,6 @@ public interface ReplicationPackageImpor
      * @return a {@link ReplicationPackage} if it can read it from the stream
      * @throws ReplicationPackageReadingException when the stream cannot be read as a {@link ReplicationPackage}
      */
-    ReplicationPackage readPackage(InputStream stream) throws ReplicationPackageReadingException;
+    ReplicationPackage readPackage(ResourceResolver resourceResolver, InputStream stream) throws ReplicationPackageReadingException;
 
 }

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/AgentReplicationPackageExporterFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/AgentReplicationPackageExporterFactory.java?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/AgentReplicationPackageExporterFactory.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/AgentReplicationPackageExporterFactory.java Tue Oct 14 15:09:12 2014
@@ -29,6 +29,7 @@ import org.apache.felix.scr.annotations.
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.ReferencePolicy;
 import org.apache.felix.scr.annotations.Service;
+import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.commons.osgi.PropertiesUtil;
 import org.apache.sling.replication.agent.ReplicationAgent;
 import org.apache.sling.replication.communication.ReplicationRequest;
@@ -72,7 +73,7 @@ public class AgentReplicationPackageExpo
         queueName = PropertiesUtil.toString(config.get(QUEUE_NAME), "");
     }
 
-    public List<ReplicationPackage> exportPackage(ReplicationRequest replicationRequest) {
+    public List<ReplicationPackage> exportPackage(ResourceResolver resourceResolver, ReplicationRequest replicationRequest) {
 
         List<ReplicationPackage> result = new ArrayList<ReplicationPackage>();
         try {
@@ -82,7 +83,7 @@ public class AgentReplicationPackageExpo
             ReplicationQueueItem info = queue.getHead();
             ReplicationPackage replicationPackage;
             if (info != null) {
-                replicationPackage = replicationPackageBuilder.getPackage(info.getId());
+                replicationPackage = replicationPackageBuilder.getPackage(resourceResolver, info.getId());
                 queue.remove(info.getId());
                 if (replicationPackage != null) {
                     result.add(replicationPackage);
@@ -96,7 +97,7 @@ public class AgentReplicationPackageExpo
         return result;
     }
 
-    public ReplicationPackage exportPackageById(String replicationPackageId) {
+    public ReplicationPackage exportPackageById(ResourceResolver resourceResolver, String replicationPackageId) {
         return null;
     }
 }

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/LocalReplicationPackageExporter.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/LocalReplicationPackageExporter.java?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/LocalReplicationPackageExporter.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/LocalReplicationPackageExporter.java Tue Oct 14 15:09:12 2014
@@ -21,6 +21,7 @@ package org.apache.sling.replication.pac
 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.packaging.ReplicationPackageExporter;
@@ -39,16 +40,16 @@ public class LocalReplicationPackageExpo
         this.packageBuilder = packageBuilder;
     }
 
-    public List<ReplicationPackage> exportPackage(ReplicationRequest replicationRequest) throws ReplicationPackageBuildingException {
+    public List<ReplicationPackage> exportPackage(ResourceResolver resourceResolver, ReplicationRequest replicationRequest) throws ReplicationPackageBuildingException {
         List<ReplicationPackage> result = new ArrayList<ReplicationPackage>();
 
-        ReplicationPackage createdPackage = packageBuilder.createPackage(replicationRequest);
+        ReplicationPackage createdPackage = packageBuilder.createPackage(resourceResolver, replicationRequest);
         result.add(createdPackage);
 
         return result;
     }
 
-    public ReplicationPackage exportPackageById(String replicationPackageId) {
-        return packageBuilder.getPackage(replicationPackageId);
+    public ReplicationPackage exportPackageById(ResourceResolver resourceResolver, String replicationPackageId) {
+        return packageBuilder.getPackage(resourceResolver, replicationPackageId);
     }
 }

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/LocalReplicationPackageExporterFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/LocalReplicationPackageExporterFactory.java?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/LocalReplicationPackageExporterFactory.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/LocalReplicationPackageExporterFactory.java Tue Oct 14 15:09:12 2014
@@ -27,6 +27,7 @@ import org.apache.felix.scr.annotations.
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.ReferencePolicy;
 import org.apache.felix.scr.annotations.Service;
+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.packaging.ReplicationPackageExporter;
@@ -69,11 +70,11 @@ public class LocalReplicationPackageExpo
     }
 
 
-    public List<ReplicationPackage> exportPackage(ReplicationRequest replicationRequest) throws ReplicationPackageBuildingException {
-        return exporter.exportPackage(replicationRequest);
+    public List<ReplicationPackage> exportPackage(ResourceResolver resourceResolver, ReplicationRequest replicationRequest) throws ReplicationPackageBuildingException {
+        return exporter.exportPackage(resourceResolver, replicationRequest);
     }
 
-    public ReplicationPackage exportPackageById(String replicationPackageId) {
-        return exporter.exportPackageById(replicationPackageId);
+    public ReplicationPackage exportPackageById(ResourceResolver resourceResolver, String replicationPackageId) {
+        return exporter.exportPackageById(resourceResolver, replicationPackageId);
     }
 }

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/RemoteReplicationPackageExporter.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/RemoteReplicationPackageExporter.java?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/RemoteReplicationPackageExporter.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/RemoteReplicationPackageExporter.java Tue Oct 14 15:09:12 2014
@@ -21,6 +21,7 @@ package org.apache.sling.replication.pac
 import java.util.ArrayList;
 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;
@@ -60,15 +61,15 @@ public class RemoteReplicationPackageExp
                 transportEndpointStrategyType);
     }
 
-    public List<ReplicationPackage> exportPackage(ReplicationRequest replicationRequest) throws ReplicationPackageBuildingException {
+    public List<ReplicationPackage> exportPackage(ResourceResolver resourceResolver, ReplicationRequest replicationRequest) throws ReplicationPackageBuildingException {
         try {
-            return transportHandler.retrievePackages(replicationRequest);
+            return transportHandler.retrievePackages(resourceResolver, replicationRequest);
         } catch (Exception e) {
             throw new ReplicationPackageBuildingException(e);
         }
     }
 
-    public ReplicationPackage exportPackageById(String replicationPackageId) {
-        return packageBuilder.getPackage(replicationPackageId);
+    public ReplicationPackage exportPackageById(ResourceResolver resourceResolver, String replicationPackageId) {
+        return packageBuilder.getPackage(resourceResolver, replicationPackageId);
     }
 }

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/RemoteReplicationPackageExporterFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/RemoteReplicationPackageExporterFactory.java?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/RemoteReplicationPackageExporterFactory.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/RemoteReplicationPackageExporterFactory.java Tue Oct 14 15:09:12 2014
@@ -30,6 +30,7 @@ import org.apache.felix.scr.annotations.
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.ReferencePolicy;
 import org.apache.felix.scr.annotations.Service;
+import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.commons.osgi.PropertiesUtil;
 import org.apache.sling.replication.communication.ReplicationRequest;
 import org.apache.sling.replication.packaging.ReplicationPackage;
@@ -114,11 +115,11 @@ public class RemoteReplicationPackageExp
         exporter = null;
     }
 
-    public List<ReplicationPackage> exportPackage(ReplicationRequest replicationRequest) throws ReplicationPackageBuildingException {
-        return exporter.exportPackage(replicationRequest);
+    public List<ReplicationPackage> exportPackage(ResourceResolver resourceResolver, ReplicationRequest replicationRequest) throws ReplicationPackageBuildingException {
+        return exporter.exportPackage(resourceResolver, replicationRequest);
     }
 
-    public ReplicationPackage exportPackageById(String replicationPackageId) {
-        return exporter.exportPackageById(replicationPackageId);
+    public ReplicationPackage exportPackageById(ResourceResolver resourceResolver, String replicationPackageId) {
+        return exporter.exportPackageById(resourceResolver, replicationPackageId);
     }
 }

Added: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/strategy/DefaultReplicationPackageExporterStrategy.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/strategy/DefaultReplicationPackageExporterStrategy.java?rev=1631780&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/strategy/DefaultReplicationPackageExporterStrategy.java (added)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/strategy/DefaultReplicationPackageExporterStrategy.java Tue Oct 14 15:09:12 2014
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.sling.replication.packaging.impl.exporter.strategy;
+
+
+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.packaging.ReplicationPackageExporter;
+import org.apache.sling.replication.packaging.ReplicationPackageExporterStrategy;
+import org.apache.sling.replication.serialization.ReplicationPackageBuildingException;
+
+import java.util.List;
+
+public class DefaultReplicationPackageExporterStrategy implements ReplicationPackageExporterStrategy {
+
+    public static final String NAME = "default";
+
+    public List<ReplicationPackage> exportPackages(ResourceResolver resourceResolver, ReplicationRequest replicationRequest,
+                                                   ReplicationPackageExporter packageExporter) throws ReplicationPackageBuildingException {
+        return packageExporter.exportPackage(resourceResolver, replicationRequest);
+    }
+}

Propchange: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/strategy/DefaultReplicationPackageExporterStrategy.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/strategy/PrivilegeReplicationPackageExporterStrategy.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/strategy/PrivilegeReplicationPackageExporterStrategy.java?rev=1631780&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/strategy/PrivilegeReplicationPackageExporterStrategy.java (added)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/strategy/PrivilegeReplicationPackageExporterStrategy.java Tue Oct 14 15:09:12 2014
@@ -0,0 +1,102 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sling.replication.packaging.impl.exporter.strategy;
+
+import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.commons.osgi.PropertiesUtil;
+import org.apache.sling.replication.communication.ReplicationActionType;
+import org.apache.sling.replication.communication.ReplicationRequest;
+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.serialization.ReplicationPackageBuildingException;
+
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.jcr.security.AccessControlManager;
+import javax.jcr.security.Privilege;
+import java.nio.file.AccessDeniedException;
+import java.util.List;
+import java.util.Map;
+
+public class PrivilegeReplicationPackageExporterStrategy implements ReplicationPackageExporterStrategy {
+    public static final String NAME = "privilege";
+    public static final String JCR_PRIVILEGE = "jcrPrivilege";
+
+    private final String jcrPrivilege;
+
+    public PrivilegeReplicationPackageExporterStrategy(Map<String, Object> config) {
+        this(PropertiesUtil.toString(config.get(JCR_PRIVILEGE), null));
+    }
+
+    public PrivilegeReplicationPackageExporterStrategy(String jcrPrivilege) {
+        if (jcrPrivilege == null) {
+            throw new IllegalArgumentException("Jcr Privilege is required");
+        }
+
+        this.jcrPrivilege = jcrPrivilege;
+    }
+    public List<ReplicationPackage> exportPackages(ResourceResolver resourceResolver, ReplicationRequest replicationRequest, ReplicationPackageExporter packageExporter) throws ReplicationPackageBuildingException {
+        Session session = resourceResolver.adaptTo(Session.class);
+
+        try {
+           if (ReplicationActionType.ADD.equals(replicationRequest.getAction())) {
+               checkPermissionForAdd(session, replicationRequest.getPaths());
+           }
+           else if (ReplicationActionType.DELETE.equals(replicationRequest.getAction())) {
+               checkPermissionForDelete(session, replicationRequest.getPaths());
+           }
+
+        }
+        catch (RepositoryException e) {
+            throw new ReplicationPackageBuildingException("Not enough privileges");
+        }
+
+        return packageExporter.exportPackage(resourceResolver, replicationRequest);
+
+    }
+
+    private void checkPermissionForAdd(Session session, String[] paths)
+            throws RepositoryException, ReplicationPackageBuildingException {
+        AccessControlManager acMgr = session.getAccessControlManager();
+
+        Privilege[] privileges = new Privilege[] { acMgr.privilegeFromName(jcrPrivilege) };
+        for (String path : paths) {
+            if(!acMgr.hasPrivileges(path, privileges)) {
+                throw new ReplicationPackageBuildingException("Not enough privileges");
+            };
+        }
+
+    }
+
+    private void checkPermissionForDelete(Session session, String[] paths)
+            throws RepositoryException, ReplicationPackageBuildingException {
+        AccessControlManager acMgr = session.getAccessControlManager();
+
+        Privilege[] privileges = new Privilege[] { acMgr.privilegeFromName(jcrPrivilege) };
+        for (String path : paths) {
+            if(session.nodeExists(path) && !acMgr.hasPrivileges(path, privileges)) {
+                throw new ReplicationPackageBuildingException("Not enough privileges");
+            };
+        }
+
+    }
+
+
+}

Propchange: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/strategy/PrivilegeReplicationPackageExporterStrategy.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/AdvancedRemoteReplicationPackageImporter.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/AdvancedRemoteReplicationPackageImporter.java?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/AdvancedRemoteReplicationPackageImporter.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/AdvancedRemoteReplicationPackageImporter.java Tue Oct 14 15:09:12 2014
@@ -31,6 +31,7 @@ import org.apache.felix.scr.annotations.
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.ReferencePolicy;
 import org.apache.felix.scr.annotations.Service;
+import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.commons.osgi.PropertiesUtil;
 import org.apache.sling.replication.communication.ReplicationEndpoint;
 import org.apache.sling.replication.event.ReplicationEventFactory;
@@ -123,10 +124,10 @@ public class AdvancedRemoteReplicationPa
     }
 
 
-    public boolean importPackage(ReplicationPackage replicationPackage) {
+    public boolean importPackage(ResourceResolver resourceResolver, ReplicationPackage replicationPackage) {
         boolean result = false;
         try {
-            transportHandler.deliverPackage(replicationPackage);
+            transportHandler.deliverPackage(resourceResolver, replicationPackage);
             result = true;
         } catch (Exception e) {
             log.error("failed delivery", e);
@@ -134,7 +135,7 @@ public class AdvancedRemoteReplicationPa
         return result;
     }
 
-    public ReplicationPackage readPackage(InputStream stream) throws ReplicationPackageReadingException {
+    public ReplicationPackage readPackage(ResourceResolver resourceResolver, InputStream stream) throws ReplicationPackageReadingException {
         return null;
     }
 

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/LocalReplicationPackageImporter.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/LocalReplicationPackageImporter.java?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/LocalReplicationPackageImporter.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/LocalReplicationPackageImporter.java Tue Oct 14 15:09:12 2014
@@ -23,6 +23,7 @@ import java.util.Arrays;
 import java.util.Dictionary;
 import java.util.Hashtable;
 
+import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.replication.event.ReplicationEventFactory;
 import org.apache.sling.replication.event.ReplicationEventType;
 import org.apache.sling.replication.packaging.ReplicationPackage;
@@ -53,10 +54,10 @@ public class LocalReplicationPackageImpo
     }
 
 
-    public boolean importPackage(ReplicationPackage replicationPackage) {
+    public boolean importPackage(ResourceResolver resourceResolver, ReplicationPackage replicationPackage) {
         boolean success = false;
         try {
-            success = packageBuilder.installPackage(replicationPackage);
+            success = packageBuilder.installPackage(resourceResolver, replicationPackage);
 
             if (success) {
                 log.info("replication package read and installed for path(s) {}", Arrays.toString(replicationPackage.getPaths()));
@@ -76,9 +77,9 @@ public class LocalReplicationPackageImpo
         return success;
     }
 
-    public ReplicationPackage readPackage(InputStream stream) throws ReplicationPackageReadingException {
+    public ReplicationPackage readPackage(ResourceResolver resourceResolver, InputStream stream) throws ReplicationPackageReadingException {
         try {
-            return packageBuilder.readPackage(stream);
+            return packageBuilder.readPackage(resourceResolver, stream);
         } catch (Exception e) {
             log.error("cannot read a package from the given stream");
         }

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/LocalReplicationPackageImporterFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/LocalReplicationPackageImporterFactory.java?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/LocalReplicationPackageImporterFactory.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/LocalReplicationPackageImporterFactory.java Tue Oct 14 15:09:12 2014
@@ -28,6 +28,7 @@ import org.apache.felix.scr.annotations.
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.ReferencePolicy;
 import org.apache.felix.scr.annotations.Service;
+import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.replication.event.ReplicationEventFactory;
 import org.apache.sling.replication.packaging.ReplicationPackage;
 import org.apache.sling.replication.packaging.ReplicationPackageImporter;
@@ -77,12 +78,12 @@ public class LocalReplicationPackageImpo
 
     }
 
-    public boolean importPackage(ReplicationPackage replicationPackage) {
-        return importer.importPackage(replicationPackage);
+    public boolean importPackage(ResourceResolver resourceResolver, ReplicationPackage replicationPackage) {
+        return importer.importPackage(resourceResolver, replicationPackage);
     }
 
-    public ReplicationPackage readPackage(InputStream stream) throws ReplicationPackageReadingException {
-        return importer.readPackage(stream);
+    public ReplicationPackage readPackage(ResourceResolver resourceResolver, InputStream stream) throws ReplicationPackageReadingException {
+        return importer.readPackage(resourceResolver, stream);
     }
 
 }

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RemoteReplicationPackageImporter.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RemoteReplicationPackageImporter.java?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RemoteReplicationPackageImporter.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RemoteReplicationPackageImporter.java Tue Oct 14 15:09:12 2014
@@ -22,6 +22,7 @@ import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.replication.communication.ReplicationEndpoint;
 import org.apache.sling.replication.event.ReplicationEventFactory;
 import org.apache.sling.replication.packaging.ReplicationPackage;
@@ -65,10 +66,10 @@ public class RemoteReplicationPackageImp
 
     }
 
-    public boolean importPackage(ReplicationPackage replicationPackage) {
+    public boolean importPackage(ResourceResolver resourceResolver, ReplicationPackage replicationPackage) {
         boolean result = false;
         try {
-            transportHandler.deliverPackage(replicationPackage);
+            transportHandler.deliverPackage(resourceResolver, replicationPackage);
             result = true;
         } catch (Exception e) {
             log.error("failed in importing package {} ", replicationPackage, e);
@@ -76,7 +77,7 @@ public class RemoteReplicationPackageImp
         return result;
     }
 
-    public ReplicationPackage readPackage(InputStream stream) throws ReplicationPackageReadingException {
+    public ReplicationPackage readPackage(ResourceResolver resourceResolver, InputStream stream) throws ReplicationPackageReadingException {
         return null;
     }
 

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RemoteReplicationPackageImporterFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RemoteReplicationPackageImporterFactory.java?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RemoteReplicationPackageImporterFactory.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RemoteReplicationPackageImporterFactory.java Tue Oct 14 15:09:12 2014
@@ -29,6 +29,7 @@ import org.apache.felix.scr.annotations.
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.ReferencePolicy;
 import org.apache.felix.scr.annotations.Service;
+import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.commons.osgi.PropertiesUtil;
 import org.apache.sling.replication.event.ReplicationEventFactory;
 import org.apache.sling.replication.packaging.ReplicationPackage;
@@ -100,12 +101,12 @@ public class RemoteReplicationPackageImp
 
     }
 
-    public boolean importPackage(ReplicationPackage replicationPackage) {
-        return importer.importPackage(replicationPackage);
+    public boolean importPackage(ResourceResolver resourceResolver, ReplicationPackage replicationPackage) {
+        return importer.importPackage(resourceResolver, replicationPackage);
     }
 
-    public ReplicationPackage readPackage(InputStream stream) throws ReplicationPackageReadingException {
-        return importer.readPackage(stream);
+    public ReplicationPackage readPackage(ResourceResolver resourceResolver, InputStream stream) throws ReplicationPackageReadingException {
+        return importer.readPackage(resourceResolver, stream);
     }
 
 }

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RepositoryReplicationPackageImporter.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RepositoryReplicationPackageImporter.java?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RepositoryReplicationPackageImporter.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RepositoryReplicationPackageImporter.java Tue Oct 14 15:09:12 2014
@@ -32,6 +32,7 @@ import org.apache.felix.scr.annotations.
 import org.apache.felix.scr.annotations.Service;
 import org.apache.jackrabbit.JcrConstants;
 import org.apache.jackrabbit.util.Text;
+import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.jcr.api.SlingRepository;
 import org.apache.sling.replication.communication.ReplicationEndpoint;
 import org.apache.sling.replication.event.ReplicationEventFactory;
@@ -112,11 +113,11 @@ public class RepositoryReplicationPackag
         }
     }
 
-    public boolean importPackage(ReplicationPackage replicationPackage) throws ReplicationPackageReadingException {
+    public boolean importPackage(ResourceResolver resourceResolver, ReplicationPackage replicationPackage) throws ReplicationPackageReadingException {
         return false;
     }
 
-    public ReplicationPackage readPackage(InputStream stream) throws ReplicationPackageReadingException {
+    public ReplicationPackage readPackage(ResourceResolver resourceResolver, InputStream stream) throws ReplicationPackageReadingException {
         return null;
     }
 }

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/ReplicationPackageBuilder.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/ReplicationPackageBuilder.java?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/ReplicationPackageBuilder.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/ReplicationPackageBuilder.java Tue Oct 14 15:09:12 2014
@@ -20,6 +20,7 @@ package org.apache.sling.replication.ser
 
 import java.io.InputStream;
 
+import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.replication.communication.ReplicationRequest;
 import org.apache.sling.replication.packaging.ReplicationPackage;
 
@@ -31,11 +32,13 @@ public interface ReplicationPackageBuild
     /**
      * creates a {@link org.apache.sling.replication.packaging.ReplicationPackage} for a specific {@link ReplicationRequest}
      *
-     * @param request the {@link ReplicationRequest} to create the package for
+     *
+     * @param resourceResolver
+     * @param request the {@link org.apache.sling.replication.communication.ReplicationRequest} to create the package for
      * @return a {@link org.apache.sling.replication.packaging.ReplicationPackage}
      * @throws ReplicationPackageBuildingException
      */
-    ReplicationPackage createPackage(ReplicationRequest request) throws ReplicationPackageBuildingException;
+    ReplicationPackage createPackage(ResourceResolver resourceResolver, ReplicationRequest request) throws ReplicationPackageBuildingException;
 
     /**
      * reads a stream and tries to convert it to a {@link ReplicationPackage} this provider can read and install
@@ -44,7 +47,7 @@ public interface ReplicationPackageBuild
      * @return a {@link ReplicationPackage} if it can read it from the stream
      * @throws ReplicationPackageReadingException when the stream cannot be read as a {@link ReplicationPackage}
      */
-    ReplicationPackage readPackage(InputStream stream) throws ReplicationPackageReadingException;
+    ReplicationPackage readPackage(ResourceResolver resourceResolver, InputStream stream) throws ReplicationPackageReadingException;
 
     /**
      * get an already created (and saved into the repository) {@link ReplicationPackage} by its id
@@ -52,7 +55,7 @@ public interface ReplicationPackageBuild
      * @param id a <code>String</code> representing the unique identifier of an already created {@link ReplicationPackage}
      * @return a {@link ReplicationPackage} if one with such an id exists, <code>null</code> otherwise
      */
-    ReplicationPackage getPackage(String id);
+    ReplicationPackage getPackage(ResourceResolver resourceResolver, String id);
 
     /**
      * Installs the given replicationPackage into the repository
@@ -61,6 +64,6 @@ public interface ReplicationPackageBuild
      * @return <code>true</code> if the package was installed successfully
      * @throws ReplicationPackageReadingException
      */
-    boolean installPackage(ReplicationPackage replicationPackage) throws ReplicationPackageReadingException;
+    boolean installPackage(ResourceResolver resourceResolver, ReplicationPackage replicationPackage) throws ReplicationPackageReadingException;
 
 }

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/AbstractReplicationPackageBuilder.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/AbstractReplicationPackageBuilder.java?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/AbstractReplicationPackageBuilder.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/AbstractReplicationPackageBuilder.java Tue Oct 14 15:09:12 2014
@@ -27,6 +27,7 @@ import java.io.InputStream;
 import java.util.Dictionary;
 import java.util.Hashtable;
 
+import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.replication.communication.ReplicationActionType;
 import org.apache.sling.replication.communication.ReplicationRequest;
 import org.apache.sling.replication.event.ReplicationEventFactory;
@@ -35,6 +36,7 @@ import org.apache.sling.replication.pack
 import org.apache.sling.replication.serialization.ReplicationPackageBuilder;
 import org.apache.sling.replication.serialization.ReplicationPackageBuildingException;
 import org.apache.sling.replication.serialization.ReplicationPackageReadingException;
+import org.apache.sling.replication.util.ReplicationJcrUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -43,6 +45,8 @@ import org.slf4j.LoggerFactory;
  */
 public abstract class AbstractReplicationPackageBuilder implements ReplicationPackageBuilder {
 
+    public static final String USER_DATA = "vlt.pb.data";
+
     private final Logger log = LoggerFactory.getLogger(getClass());
 
     private final String type;
@@ -54,11 +58,11 @@ public abstract class AbstractReplicatio
         this.replicationEventFactory = replicationEventFactory;
     }
 
-    public ReplicationPackage createPackage(ReplicationRequest request)
+    public ReplicationPackage createPackage(ResourceResolver resourceResolver, ReplicationRequest request)
             throws ReplicationPackageBuildingException {
         ReplicationPackage replicationPackage;
         if (ReplicationActionType.ADD.equals(request.getAction())) {
-            replicationPackage = createPackageForAdd(request);
+            replicationPackage = createPackageForAdd(resourceResolver, request);
         } else if (ReplicationActionType.DELETE.equals(request.getAction())) {
             replicationPackage = new VoidReplicationPackage(request, type);
         } else if (ReplicationActionType.POLL.equals(request.getAction())) {
@@ -76,10 +80,8 @@ public abstract class AbstractReplicatio
         return replicationPackage;
     }
 
-    protected abstract ReplicationPackage createPackageForAdd(ReplicationRequest request)
-            throws ReplicationPackageBuildingException;
 
-    public ReplicationPackage readPackage(InputStream stream) throws ReplicationPackageReadingException {
+    public ReplicationPackage readPackage(ResourceResolver resourceResolver, InputStream stream) throws ReplicationPackageReadingException {
         ReplicationPackage replicationPackage = null;
         if (!stream.markSupported()) {
             stream = new BufferedInputStream(stream);
@@ -100,19 +102,19 @@ public abstract class AbstractReplicatio
         }
         stream.mark(-1);
         if (replicationPackage == null) {
-            replicationPackage = readPackageInternal(stream);
+            replicationPackage = readPackageInternal(resourceResolver, stream);
         }
         return replicationPackage;
     }
 
 
-    public boolean installPackage(ReplicationPackage replicationPackage) throws ReplicationPackageReadingException {
+    public boolean installPackage(ResourceResolver resourceResolver, ReplicationPackage replicationPackage) throws ReplicationPackageReadingException {
         ReplicationActionType actionType = ReplicationActionType.fromName(replicationPackage.getAction());
         boolean installed;
         if (ReplicationActionType.DELETE.equals(actionType)) {
-            installed = installDeletePackage(replicationPackage);
+            installed = installDeletePackage(resourceResolver, replicationPackage);
         } else {
-            installed = installPackageInternal(replicationPackage);
+            installed = installPackageInternal(resourceResolver, replicationPackage);
         }
 
         if (installed && replicationEventFactory != null) {
@@ -125,11 +127,11 @@ public abstract class AbstractReplicatio
         return installed;
     }
 
-    private boolean installDeletePackage(ReplicationPackage replicationPackage) throws ReplicationPackageReadingException {
+    private boolean installDeletePackage(ResourceResolver resourceResolver, ReplicationPackage replicationPackage) throws ReplicationPackageReadingException {
         Session session = null;
         try {
             if (replicationPackage != null) {
-                session = getSession();
+                session = getSession(resourceResolver);
                 for (String path : replicationPackage.getPaths()) {
                     if (session.itemExists(path)) {
                         session.removeItem(path);
@@ -149,7 +151,7 @@ public abstract class AbstractReplicatio
         return false;
     }
 
-    public ReplicationPackage getPackage(String id) {
+    public ReplicationPackage getPackage(ResourceResolver resourceResolver, String id) {
         ReplicationPackage replicationPackage = null;
         try {
             replicationPackage = VoidReplicationPackage.fromStream(new ByteArrayInputStream(id.getBytes("UTF-8")));
@@ -158,20 +160,31 @@ public abstract class AbstractReplicatio
         }
 
         if (replicationPackage == null) {
-            replicationPackage = getPackageInternal(id);
+            replicationPackage = getPackageInternal(resourceResolver, id);
         }
         return replicationPackage;
     }
 
-    protected abstract Session getSession() throws RepositoryException;
+    protected Session getSession(ResourceResolver resourceResolver) throws RepositoryException {
+        Session session = resourceResolver.adaptTo(Session.class);
+        if (session != null) {
+            ReplicationJcrUtils.setDoNotReplicate(session);
+        }
+        return session;
+    }
+
+
+    protected abstract ReplicationPackage createPackageForAdd(ResourceResolver resourceResolver, ReplicationRequest request)
+            throws ReplicationPackageBuildingException;
+
 
-    protected abstract ReplicationPackage readPackageInternal(InputStream stream)
+    protected abstract ReplicationPackage readPackageInternal(ResourceResolver resourceResolver, InputStream stream)
             throws ReplicationPackageReadingException;
 
 
-    protected abstract boolean installPackageInternal(ReplicationPackage replicationPackage)
+    protected abstract boolean installPackageInternal(ResourceResolver resourceResolver, ReplicationPackage replicationPackage)
             throws ReplicationPackageReadingException;
 
-    protected abstract ReplicationPackage getPackageInternal(String id);
+    protected abstract ReplicationPackage getPackageInternal(ResourceResolver resourceResolver, String id);
 
 }

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/VoidReplicationPackageBuilder.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/VoidReplicationPackageBuilder.java?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/VoidReplicationPackageBuilder.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/VoidReplicationPackageBuilder.java Tue Oct 14 15:09:12 2014
@@ -25,6 +25,7 @@ import java.io.InputStream;
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Property;
 import org.apache.felix.scr.annotations.Service;
+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.serialization.ReplicationPackageBuilder;
@@ -38,11 +39,11 @@ public class VoidReplicationPackageBuild
 
     static final String NAME = "void";
 
-    public ReplicationPackage createPackage(ReplicationRequest request) throws ReplicationPackageBuildingException {
+    public ReplicationPackage createPackage(ResourceResolver resourceResolver, ReplicationRequest request) throws ReplicationPackageBuildingException {
         return new VoidReplicationPackage(request);
     }
 
-    public ReplicationPackage readPackage(InputStream stream) throws ReplicationPackageReadingException {
+    public ReplicationPackage readPackage(ResourceResolver resourceResolver, InputStream stream) throws ReplicationPackageReadingException {
         try {
             return VoidReplicationPackage.fromStream(stream);
         } catch (Exception e) {
@@ -50,7 +51,7 @@ public class VoidReplicationPackageBuild
         }
     }
 
-    public ReplicationPackage getPackage(String id) {
+    public ReplicationPackage getPackage(ResourceResolver resourceResolver, String id) {
         try {
             return VoidReplicationPackage.fromStream(new ByteArrayInputStream(id.getBytes("UTF-8")));
         } catch (IOException ex) {
@@ -58,7 +59,7 @@ public class VoidReplicationPackageBuild
         }
     }
 
-    public boolean installPackage(ReplicationPackage replicationPackage) {
+    public boolean installPackage(ResourceResolver resourceResolver, ReplicationPackage replicationPackage) {
         return false;
     }
 }

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/vlt/FileVaultReplicationPackageBuilder.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/vlt/FileVaultReplicationPackageBuilder.java?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/vlt/FileVaultReplicationPackageBuilder.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/vlt/FileVaultReplicationPackageBuilder.java Tue Oct 14 15:09:12 2014
@@ -34,6 +34,7 @@ import org.apache.jackrabbit.vault.packa
 import org.apache.jackrabbit.vault.packaging.JcrPackage;
 import org.apache.jackrabbit.vault.packaging.Packaging;
 import org.apache.jackrabbit.vault.packaging.VaultPackage;
+import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.jcr.api.SlingRepository;
 import org.apache.sling.replication.communication.ReplicationRequest;
 import org.apache.sling.replication.event.ReplicationEventFactory;
@@ -61,24 +62,22 @@ public class FileVaultReplicationPackage
 
     private final Packaging packaging;
 
-    private final String subServiceName;
-
     private static final String TYPE = "vlt";
 
-    public FileVaultReplicationPackageBuilder(String subServiceName, SlingRepository repository, Packaging packaging,
+    public FileVaultReplicationPackageBuilder(SlingRepository repository, Packaging packaging,
                                               ReplicationEventFactory replicationEventFactory) {
         super(TYPE, replicationEventFactory);
 
-        this.subServiceName = subServiceName;
         this.repository = repository;
         this.packaging = packaging;
     }
 
-    protected ReplicationPackage createPackageForAdd(ReplicationRequest request)
+    @Override
+    protected ReplicationPackage createPackageForAdd(ResourceResolver resourceResolver, ReplicationRequest request)
             throws ReplicationPackageBuildingException {
         Session session = null;
         try {
-            session = getSession();
+            session = getSession(resourceResolver);
 
             final String[] paths = request.getPaths();
 
@@ -114,14 +113,7 @@ public class FileVaultReplicationPackage
     }
 
     @Override
-    protected Session getSession() throws RepositoryException {
-        Session session = repository.loginService(subServiceName, null);
-        ReplicationJcrUtils.setDoNotReplicate(session);
-        return session;
-    }
-
-    @Override
-    protected ReplicationPackage readPackageInternal(final InputStream stream)
+    protected ReplicationPackage readPackageInternal(ResourceResolver resourceResolver, final InputStream stream)
             throws ReplicationPackageReadingException {
         log.debug("reading a stream");
         ReplicationPackage pkg = null;
@@ -148,7 +140,7 @@ public class FileVaultReplicationPackage
 
 
     @Override
-    protected ReplicationPackage getPackageInternal(String id) {
+    protected ReplicationPackage getPackageInternal(ResourceResolver resourceResolver, String id) {
         ReplicationPackage replicationPackage = null;
         try {
             File file = new File(id);
@@ -168,12 +160,12 @@ public class FileVaultReplicationPackage
 
 
     @Override
-    public boolean installPackageInternal(ReplicationPackage replicationPackage) throws ReplicationPackageReadingException {
+    public boolean installPackageInternal(ResourceResolver resourceResolver, ReplicationPackage replicationPackage) throws ReplicationPackageReadingException {
         log.debug("reading a replication package stream");
 
         Session session = null;
         try {
-            session = getSession();
+            session = getSession(resourceResolver);
 //            if (session != null) {
 //                final JcrPackage jcrPackage = packaging.getPackageManager(getSession())
 //                        .open(PackageId.fromString(replicationPackage.getId()));

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/vlt/FileVaultReplicationPackageBuilderFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/vlt/FileVaultReplicationPackageBuilderFactory.java?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/vlt/FileVaultReplicationPackageBuilderFactory.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/vlt/FileVaultReplicationPackageBuilderFactory.java Tue Oct 14 15:09:12 2014
@@ -63,9 +63,6 @@ public class FileVaultReplicationPackage
     @Property
     public static final String NAME = "name";
 
-    @Property
-    public static final String SERVICENAME = "servicename";
-
     @Reference
     private SlingRepository repository;
 
@@ -108,13 +105,7 @@ public class FileVaultReplicationPackage
                                                                  SlingRepository repository, Packaging packaging,
                                                                  ReplicationEventFactory replicationEventFactory) {
 
-        String serviceName = PropertiesUtil.toString(config.get(SERVICENAME), "").trim();
-
-        if (serviceName.length() == 0) {
-            throw new IllegalArgumentException("Service Name cannot be empty");
-        }
-
-        return new FileVaultReplicationPackageBuilder(serviceName, repository, packaging, replicationEventFactory);
+        return new FileVaultReplicationPackageBuilder(repository, packaging, replicationEventFactory);
 
     }
 

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/servlet/ReplicationAgentRootServlet.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/servlet/ReplicationAgentRootServlet.java?rev=1631780&r1=1631779&r2=1631780&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/servlet/ReplicationAgentRootServlet.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/servlet/ReplicationAgentRootServlet.java Tue Oct 14 15:09:12 2014
@@ -28,6 +28,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;
@@ -71,10 +72,12 @@ public class ReplicationAgentRootServlet
         ReplicationRequest replicationRequest = new ReplicationRequest(System.currentTimeMillis(),
                 action, paths);
 
+        ResourceResolver resourceResolver = request.getResourceResolver();
+
         boolean failed = false;
         for (ReplicationAgent agent : agents) {
             try {
-                agent.execute(replicationRequest);
+                agent.execute(resourceResolver, replicationRequest);
             } catch (AgentReplicationException e) {
                 log.warn("agent {} failed", agent.getName(), e);