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);