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/17 09:58:46 UTC
svn commit: r1632487 [1/2] - in /sling/trunk/contrib/extensions/replication:
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/communicatio...
Author: tommaso
Date: Fri Oct 17 07:58:45 2014
New Revision: 1632487
URL: http://svn.apache.org/r1632487
Log:
SLING-4073 - replication component factory declaring accepted properties for component creation
Removed:
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/transport/impl/ReplicationTransportConstants.java
Modified:
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/ReplicationComponentFactory.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/GenericReplicationComponentFactory.java
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/PrivilegeReplicationRequestAuthorizationStrategy.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/communication/ReplicationRequest.java
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/AgentReplicationPackageExporter.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/queue/impl/simple/ScheduledReplicationQueueProcessor.java
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/vlt/FileVaultReplicationPackage.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/transport/authentication/impl/RepositoryTransportAuthenticationProvider.java
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/transport/authentication/impl/UserCredentialsTransportAuthenticationProvider.java
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/transport/authentication/impl/UserCredentialsTransportAuthenticationProviderFactory.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/impl/AbstractJcrEventTrigger.java
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/ChainReplicateReplicationTrigger.java
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/JcrEventReplicationTrigger.java
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/PersistingJcrEventReplicationTrigger.java
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/RemoteEventReplicationTrigger.java
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/ResourceEventReplicationTrigger.java
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/ScheduledReplicationTrigger.java
sling/trunk/contrib/extensions/replication/it/src/main/resources/SLING-CONTENT/libs/test/install.author/org.apache.sling.replication.agent.impl.GenericReplicationComponentFactory-trigger-test-remote-event.json
sling/trunk/contrib/extensions/replication/it/src/main/resources/SLING-CONTENT/libs/test/install.author/org.apache.sling.replication.agent.impl.GenericReplicationComponentFactory-trigger-test-replicate-event.json
sling/trunk/contrib/extensions/replication/it/src/test/java/org/apache/sling/replication/it/ReplicationIntegrationTestBase.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.packaging.impl.exporter.AgentReplicationPackageExporterFactory-reverse.json
Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/ReplicationComponentFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/ReplicationComponentFactory.java?rev=1632487&r1=1632486&r2=1632487&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/ReplicationComponentFactory.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/ReplicationComponentFactory.java Fri Oct 17 07:58:45 2014
@@ -18,6 +18,13 @@
*/
package org.apache.sling.replication.agent;
+import org.apache.sling.replication.packaging.ReplicationPackageExporter;
+import org.apache.sling.replication.packaging.ReplicationPackageImporter;
+import org.apache.sling.replication.queue.ReplicationQueueDistributionStrategy;
+import org.apache.sling.replication.queue.ReplicationQueueProvider;
+import org.apache.sling.replication.trigger.ReplicationTrigger;
+
+import java.util.List;
import java.util.Map;
/**
@@ -25,6 +32,80 @@ import java.util.Map;
*/
public interface ReplicationComponentFactory {
+ String COMPONENT_SEPARATOR = ".";
+ String COMPONENT_TYPE = "type";
+ String COMPONENT_NAME = "name";
+ String COMPONENT_TYPE_SERVICE = "service";
+ String COMPONENT_ENABLED = "enabled";
+
+
+ // Names of the configurable components
+ String COMPONENT_AGENT = "agent";
+ String COMPONENT_PACKAGE_EXPORTER = "packageExporter";
+ String COMPONENT_PACKAGE_IMPORTER = "packageImporter";
+ String COMPONENT_REQUEST_AUTHORIZATION_STRATEGY = "requestAuthorizationStrategy";
+ String COMPONENT_QUEUE_DISTRIBUTION_STRATEGY = "queueDistributionStrategy";
+ String COMPONENT_QUEUE_PROVIDER = "queueProvider";
+ String COMPONENT_TRIGGER = "trigger";
+ String COMPONENT_PACKAGE_BUILDER = "packageBuilder";
+ String COMPONENT_TRANSPORT_AUTHENTICATION_PROVIDER = "transportAuthenticationProvider";
+
+ String AGENT_SIMPLE = "simple";
+ String AGENT_SIMPLE_PROPERTY_SERVICE_NAME = "serviceName";
+ String AGENT_SIMPLE_PROPERTY_IS_PASSIVE = "isPassive";
+
+ String PACKAGE_EXPORTER_LOCAL = "local";
+
+ String PACKAGE_EXPORTER_REMOTE = "remote";
+ String PACKAGE_EXPORTER_REMOTE_PROPERTY_ENDPOINTS = "endpoints";
+ String PACKAGE_EXPORTER_REMOTE_PROPERTY_ENDPOINTS_STRATEGY = "endpoints.strategy";
+ String PACKAGE_EXPORTER_REMOTE_PROPERTY_POLL_ITEMS = "poll.items";
+
+ String PACKAGE_EXPORTER_AGENT = "agent";
+
+ String PACKAGE_IMPORTER_LOCAL = "local";
+
+ String PACKAGE_IMPORTER_REMOTE = "remote";
+ String PACKAGE_IMPORTER_REMOTE_PROPERTY_ENDPOINTS = "endpoints";
+ String PACKAGE_IMPORTER_REMOTE_PROPERTY_ENDPOINTS_STRATEGY = "endpoints.strategy";
+
+ String TRANSPORT_AUTHENTICATION_PROVIDER_USER = "user";
+ String TRANSPORT_AUTHENTICATION_PROVIDER_USER_PROPERTY_USERNAME = "username";
+ String TRANSPORT_AUTHENTICATION_PROVIDER_USER_PROPERTY_PASSWORD = "password";
+
+ String TRIGGER_REMOTE_EVENT = "remoteEvent";
+ String TRIGGER_REMOTE_EVENT_PROPERTY_ENDPOINT = "endpoint";
+
+
+ String TRIGGER_RESOURCE_EVENT = "resourceEvent";
+ String TRIGGER_RESOURCE_EVENT_PROPERTY_PATH = "path";
+
+ String TRIGGER_SCHEDULED_EVENT = "scheduledEvent";
+ String TRIGGER_SCHEDULED_EVENT_PROPERTY_ACTION = "action";
+ String TRIGGER_SCHEDULED_EVENT_PROPERTY_PATH = "path";
+ String TRIGGER_SCHEDULED_EVENT_PROPERTY_SECONDS = "seconds";
+
+ String TRIGGER_REPLICATION_EVENT = "replicationEvent";
+ String TRIGGER_REPLICATION_EVENT_PROPERTY_PATH = "path";
+
+
+ String TRIGGER_JCR_EVENT = "jcrEvent";
+ String TRIGGER_JCR_EVENT_PROPERTY_PATH = "path";
+ String TRIGGER_JCR_EVENT_PROPERTY_SERVICE_NAME = "servicename";
+
+
+ String TRIGGER_PERSISTED_JCR_EVENT = "persistedJcrEvent";
+ String TRIGGER_PERSISTED_JCR_EVENT_PROPERTY_PATH = "path";
+ String TRIGGER_PERSISTED_JCR_EVENT_PROPERTY_SERVICE_NAME = "servicename";
+ String TRIGGER_PERSISTED_JCR_EVENT_PROPERTY_NUGGETS_PATH = "nuggets.path";
+
+
+ String REQUEST_AUTHORIZATION_STRATEGY_PRIVILEGE = "privilege";
+ String REQUEST_AUTHORIZATION_STRATEGY_PRIVILEGE_PROPERTY_JCR_PRIVILEGE = "jcrPrivilege";
+
+ String PACKAGE_BUILDER_FILEVLT = "vlt";
+
+
/**
* create a {@link org.apache.sling.replication.agent.ReplicationComponent}
*
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=1632487&r1=1632486&r2=1632487&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 Fri Oct 17 07:58:45 2014
@@ -62,40 +62,46 @@ import org.slf4j.LoggerFactory;
policy = ConfigurationPolicy.REQUIRE
)
public class CoordinatingReplicationAgentFactory implements ReplicationComponentProvider {
- public static final String QUEUEPROVIDER_TARGET = "queueProvider.target";
-
- public static final String QUEUE_DISTRIBUTION_TARGET = "queueDistributionStrategy.target";
-
- private final Logger log = LoggerFactory.getLogger(getClass());
+ private static final String QUEUE_PROVIDER_TARGET = ReplicationComponentFactory.COMPONENT_QUEUE_PROVIDER + ".target";
+ private static final String QUEUE_DISTRIBUTION_TARGET = ReplicationComponentFactory.COMPONENT_QUEUE_DISTRIBUTION_STRATEGY + ".target";
+ private static final String TRANSPORT_AUTHENTICATION_PROVIDER_TARGET = ReplicationComponentFactory.COMPONENT_TRANSPORT_AUTHENTICATION_PROVIDER + ".target";
private static final String DEFAULT_QUEUEPROVIDER = "(name=" + JobHandlingReplicationQueueProvider.NAME + ")";
-
private static final String DEFAULT_DISTRIBUTION = "(name=" + SingleQueueDistributionStrategy.NAME + ")";
+
+ private final Logger log = LoggerFactory.getLogger(getClass());
+
@Property(boolValue = true, label = "Enabled")
- private static final String ENABLED = "enabled";
+ private static final String ENABLED = ReplicationComponentFactory.COMPONENT_ENABLED;
+
+ @Property(value = ReplicationComponentFactory.AGENT_SIMPLE, propertyPrivate = true)
+ private static final String TYPE = ReplicationComponentFactory.COMPONENT_TYPE;
@Property(label = "Name")
- public static final String NAME = "name";
+ public static final String NAME = ReplicationComponentFactory.COMPONENT_NAME;
+
+ @Property(boolValue = true, propertyPrivate = true)
+ public static final String IS_PASSIVE = ReplicationComponentFactory.AGENT_SIMPLE_PROPERTY_IS_PASSIVE;
@Property(label = "Service Name")
- public static final String SERVICE_NAME = "serviceName";
+ public static final String SERVICE_NAME = ReplicationComponentFactory.AGENT_SIMPLE_PROPERTY_SERVICE_NAME;
@Property(label = "Package Exporter", cardinality = 100)
- public static final String PACKAGE_EXPORTER = "packageExporter";
+ public static final String PACKAGE_EXPORTER = ReplicationComponentFactory.COMPONENT_PACKAGE_EXPORTER;
@Property(label = "Package Importer", cardinality = 100)
- public static final String PACKAGE_IMPORTER = "packageImporter";
+ public static final String PACKAGE_IMPORTER = ReplicationComponentFactory.COMPONENT_PACKAGE_IMPORTER;
- @Property(label = "Target ReplicationQueueProvider", name = QUEUEPROVIDER_TARGET, value = DEFAULT_QUEUEPROVIDER)
- @Reference(name = "queueProvider", target = DEFAULT_QUEUEPROVIDER)
+ @Property(label = "Target ReplicationQueueProvider", name = QUEUE_PROVIDER_TARGET, value = DEFAULT_QUEUEPROVIDER)
+ @Reference(name = ReplicationComponentFactory.COMPONENT_QUEUE_PROVIDER, target = DEFAULT_QUEUEPROVIDER)
private volatile ReplicationQueueProvider queueProvider;
@Property(label = "Target QueueDistributionStrategy", name = QUEUE_DISTRIBUTION_TARGET, value = DEFAULT_DISTRIBUTION)
- @Reference(name = "queueDistributionStrategy", target = DEFAULT_DISTRIBUTION)
+ @Reference(name = ReplicationComponentFactory.COMPONENT_QUEUE_DISTRIBUTION_STRATEGY, target = DEFAULT_DISTRIBUTION)
private volatile ReplicationQueueDistributionStrategy queueDistributionStrategy;
- @Property(label = "Target TransportAuthenticationProvider", name = "transportAuthenticationProvider.target")
+ @Property(label = "Target TransportAuthenticationProvider", name = TRANSPORT_AUTHENTICATION_PROVIDER_TARGET)
@Reference(name = "transportAuthenticationProvider")
private volatile TransportAuthenticationProvider transportAuthenticationProvider;
@@ -125,40 +131,25 @@ public class CoordinatingReplicationAgen
.toString(config.get(NAME), String.valueOf(new Random().nextInt(1000)));
props.put(NAME, name);
-
- String queue = PropertiesUtil.toString(config.get(QUEUEPROVIDER_TARGET), DEFAULT_QUEUEPROVIDER);
- props.put(QUEUEPROVIDER_TARGET, queue);
-
- String distribution = PropertiesUtil.toString(config.get(QUEUE_DISTRIBUTION_TARGET), DEFAULT_DISTRIBUTION);
- props.put(QUEUE_DISTRIBUTION_TARGET, distribution);
-
if (componentReg == null) {
Map<String, Object> properties = new HashMap<String, Object>();
properties.putAll(config);
- properties.put("type", "simple");
- properties.put("isPassive", false);
+ String[] packageImporterProperties = PropertiesUtil.toStringArray(properties.get(PACKAGE_IMPORTER));
+ List<String> packageImporterPropertiesList = new ArrayList<String>();
+ packageImporterPropertiesList.addAll(Arrays.asList(packageImporterProperties));
+ packageImporterPropertiesList.add("type=remote");
+ packageImporterProperties = packageImporterPropertiesList.toArray(new String[packageImporterPropertiesList.size()]);
+ properties.put(PACKAGE_IMPORTER, packageImporterProperties);
+
+ String[] packageExporterProperties = PropertiesUtil.toStringArray(properties.get(PACKAGE_EXPORTER));
+ List<String> packageExporterPropertiesList = new ArrayList<String>();
+ packageExporterPropertiesList.addAll(Arrays.asList(packageExporterProperties));
+ packageExporterPropertiesList.add("type=remote");
+ packageExporterProperties = packageExporterPropertiesList.toArray(new String[packageExporterPropertiesList.size()]);
+ properties.put(PACKAGE_EXPORTER, packageExporterProperties);
- {
- String[] packageImporterProperties = PropertiesUtil.toStringArray(properties.get(PACKAGE_IMPORTER));
- List<String> packageImporterPropertiesList = new ArrayList<String>();
- packageImporterPropertiesList.addAll(Arrays.asList(packageImporterProperties));
- packageImporterPropertiesList.add("type=remote");
- packageImporterProperties = packageImporterPropertiesList.toArray(new String[packageImporterPropertiesList.size()]);
- properties.put(PACKAGE_IMPORTER, packageImporterProperties);
- }
-
- {
- String[] packageExporterProperties = PropertiesUtil.toStringArray(properties.get(PACKAGE_EXPORTER));
- List<String> packageExporterPropertiesList = new ArrayList<String>();
- packageExporterPropertiesList.addAll(Arrays.asList(packageExporterProperties));
- packageExporterPropertiesList.add("type=remote");
- packageExporterProperties = packageExporterPropertiesList.toArray(new String[packageExporterPropertiesList.size()]);
- properties.put(PACKAGE_EXPORTER, packageExporterProperties);
- }
-
-
- properties.put("trigger0", new String[] { "type=scheduledEvent" });
+ properties.put("trigger0", new String[]{"type=scheduledEvent"});
ReplicationAgent agent = componentFactory.createComponent(ReplicationAgent.class, properties, this);
@@ -198,11 +189,9 @@ public class CoordinatingReplicationAgen
if (type.isAssignableFrom(ReplicationQueueProvider.class)) {
return (ComponentType) queueProvider;
- }
- else if (type.isAssignableFrom(ReplicationQueueDistributionStrategy.class)) {
+ } else if (type.isAssignableFrom(ReplicationQueueDistributionStrategy.class)) {
return (ComponentType) queueDistributionStrategy;
- }
- else if (type.isAssignableFrom(TransportAuthenticationProvider.class)) {
+ } else if (type.isAssignableFrom(TransportAuthenticationProvider.class)) {
return (ComponentType) transportAuthenticationProvider;
}
return null;
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=1632487&r1=1632486&r2=1632487&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 Fri Oct 17 07:58:45 2014
@@ -37,6 +37,7 @@ import org.apache.sling.replication.agen
import org.apache.sling.replication.agent.ReplicationComponentFactory;
import org.apache.sling.replication.agent.ReplicationComponentProvider;
import org.apache.sling.replication.agent.ReplicationRequestAuthorizationStrategy;
+import org.apache.sling.replication.communication.ReplicationActionType;
import org.apache.sling.replication.event.ReplicationEventFactory;
import org.apache.sling.replication.packaging.ReplicationPackageExporter;
import org.apache.sling.replication.packaging.ReplicationPackageImporter;
@@ -79,9 +80,6 @@ import org.slf4j.LoggerFactory;
@Service(ReplicationComponentFactory.class)
public class DefaultReplicationComponentFactory implements ReplicationComponentFactory, ReplicationComponentProvider {
- public static final String COMPONENT_TYPE = "type";
- public static final String NAME = "name";
-
private final Logger log = LoggerFactory.getLogger(getClass());
@Reference
@@ -135,34 +133,33 @@ public class DefaultReplicationComponent
public ReplicationAgent createAgent(Map<String, Object> properties, ReplicationComponentProvider componentProvider) {
- String factory = PropertiesUtil.toString(properties.get(COMPONENT_TYPE), "simple");
-
- if ("simple".equals(factory)) {
+ String factory = PropertiesUtil.toString(properties.get(COMPONENT_TYPE), ReplicationComponentFactory.AGENT_SIMPLE);
- Map<String, Object> importerProperties = extractMap("packageImporter", properties);
- ReplicationPackageImporter packageImporter = createImporter(importerProperties, componentProvider);
+ if (ReplicationComponentFactory.AGENT_SIMPLE.equals(factory)) {
- Map<String, Object> exporterProperties = extractMap("packageExporter", properties);
+ Map<String, Object> exporterProperties = extractMap(COMPONENT_PACKAGE_EXPORTER, properties);
ReplicationPackageExporter packageExporter = createExporter(exporterProperties, componentProvider);
- Map<String, Object> authorizationStrategyProperties = extractMap("requestAuthorizationStrategy", properties);
+ Map<String, Object> importerProperties = extractMap(COMPONENT_PACKAGE_IMPORTER, properties);
+ ReplicationPackageImporter packageImporter = createImporter(importerProperties, componentProvider);
+
+ Map<String, Object> authorizationStrategyProperties = extractMap(COMPONENT_REQUEST_AUTHORIZATION_STRATEGY, properties);
ReplicationRequestAuthorizationStrategy packageExporterStrategy = createAuthorizationStrategy(authorizationStrategyProperties, componentProvider);
- Map<String, Object> queueDistributionStrategyProperties = extractMap("queueDistributionStrategy", properties);
+ Map<String, Object> queueDistributionStrategyProperties = extractMap(COMPONENT_QUEUE_DISTRIBUTION_STRATEGY, properties);
ReplicationQueueDistributionStrategy queueDistributionStrategy = createDistributionStrategy(queueDistributionStrategyProperties, componentProvider);
- Map<String, Object> queueProviderProperties = extractMap("queueProvider", properties);
+ Map<String, Object> queueProviderProperties = extractMap(COMPONENT_QUEUE_PROVIDER, properties);
ReplicationQueueProvider queueProvider = createQueueProvider(queueProviderProperties, componentProvider);
- List<Map<String, Object>> triggersProperties = extractMapList("trigger", properties);
+ List<Map<String, Object>> triggersProperties = extractMapList(COMPONENT_TRIGGER, properties);
List<ReplicationTrigger> triggers = createTriggerList(triggersProperties, componentProvider);
- String name = PropertiesUtil.toString(properties.get(SimpleReplicationAgentFactory.NAME), String.valueOf(new Random().nextInt(1000)));
-
- String serviceName = PropertiesUtil.toString(properties.get(SimpleReplicationAgentFactory.SERVICE_NAME), null);
+ String name = PropertiesUtil.toString(properties.get(COMPONENT_NAME), String.valueOf(new Random().nextInt(1000)));
+ String serviceName = PropertiesUtil.toString(properties.get(ReplicationComponentFactory.AGENT_SIMPLE_PROPERTY_SERVICE_NAME), null);
- boolean isPassive = PropertiesUtil.toBoolean(properties.get(SimpleReplicationAgentFactory.IS_PASSIVE), false);
+ boolean isPassive = PropertiesUtil.toBoolean(properties.get(ReplicationComponentFactory.AGENT_SIMPLE_PROPERTY_IS_PASSIVE), false);
return new SimpleReplicationAgent(name, isPassive, serviceName,
@@ -177,15 +174,16 @@ public class DefaultReplicationComponent
private ReplicationRequestAuthorizationStrategy createAuthorizationStrategy(Map<String, Object> properties, ReplicationComponentProvider componentProvider) {
- String factory = PropertiesUtil.toString(properties.get(COMPONENT_TYPE), "service");
+ String factory = PropertiesUtil.toString(properties.get(COMPONENT_TYPE), COMPONENT_TYPE_SERVICE);
- if ("service".equals(factory)) {
- String name = PropertiesUtil.toString(properties.get(NAME), null);
+ if (COMPONENT_TYPE_SERVICE.equals(factory)) {
+ String name = PropertiesUtil.toString(properties.get(COMPONENT_NAME), null);
return componentProvider.getComponent(ReplicationRequestAuthorizationStrategy.class, name);
}
- else if (PrivilegeReplicationRequestAuthorizationStrategy.NAME.equals(factory)) {
- return new PrivilegeReplicationRequestAuthorizationStrategy(properties);
+ else if (REQUEST_AUTHORIZATION_STRATEGY_PRIVILEGE.equals(factory)) {
+ String jcrPrivilege = PropertiesUtil.toString(properties.get(REQUEST_AUTHORIZATION_STRATEGY_PRIVILEGE_PROPERTY_JCR_PRIVILEGE), null);
+ return new PrivilegeReplicationRequestAuthorizationStrategy(jcrPrivilege);
}
return null;
@@ -194,31 +192,33 @@ public class DefaultReplicationComponent
public ReplicationPackageExporter createExporter(Map<String, Object> properties, ReplicationComponentProvider componentProvider) {
- String factory = PropertiesUtil.toString(properties.get(COMPONENT_TYPE), "service");
+ String factory = PropertiesUtil.toString(properties.get(COMPONENT_TYPE), COMPONENT_TYPE_SERVICE);
- if ("service".equals(factory)) {
- String name = PropertiesUtil.toString(properties.get(NAME), null);
+ if (COMPONENT_TYPE_SERVICE.equals(factory)) {
+ String name = PropertiesUtil.toString(properties.get(COMPONENT_NAME), null);
return componentProvider.getComponent(ReplicationPackageExporter.class, name);
- } else if (LocalReplicationPackageExporter.NAME.equals(factory)) {
- Map<String, Object> builderProperties = extractMap("packageBuilder", properties);
+ } else if (PACKAGE_EXPORTER_LOCAL.equals(factory)) {
+ Map<String, Object> builderProperties = extractMap(COMPONENT_PACKAGE_BUILDER, properties);
ReplicationPackageBuilder packageBuilder = createBuilder(builderProperties);
return new LocalReplicationPackageExporter(packageBuilder);
- } else if (RemoteReplicationPackageExporter.NAME.equals(factory)) {
- Map<String, Object> authenticationProviderProperties = extractMap("authenticationProvider", properties);
+ } else if (PACKAGE_EXPORTER_REMOTE.equals(factory)) {
+ Map<String, Object> authenticationProviderProperties = extractMap(COMPONENT_TRANSPORT_AUTHENTICATION_PROVIDER, properties);
TransportAuthenticationProvider authenticationProvider = createTransportAuthenticationProvider(authenticationProviderProperties, componentProvider);
- Map<String, Object> builderProperties = extractMap("packageBuilder", properties);
+ Map<String, Object> builderProperties = extractMap(COMPONENT_PACKAGE_BUILDER, properties);
ReplicationPackageBuilder packageBuilder = createBuilder(builderProperties);
- return new RemoteReplicationPackageExporter(properties, packageBuilder, authenticationProvider);
- } else if (AgentReplicationPackageExporter.NAME.equals(factory)) {
- Map<String, Object> builderProperties = extractMap("packageBuilder", properties);
- ReplicationPackageBuilder packageBuilder = createBuilder(builderProperties);
- Map<String, Object> agentProperties = extractMap("agent", properties);
- String agentName = PropertiesUtil.toString(agentProperties.get(NAME), null);
- ReplicationAgent agent = componentProvider.getComponent(ReplicationAgent.class, agentName);
+ String[] endpoints = PropertiesUtil.toStringArray(properties.get(PACKAGE_EXPORTER_REMOTE_PROPERTY_ENDPOINTS), new String[0]);
+ String endpointStrategyName = PropertiesUtil.toString(properties.get(PACKAGE_EXPORTER_REMOTE_PROPERTY_ENDPOINTS_STRATEGY), "One");
+ int pollItems = PropertiesUtil.toInteger(properties.get(PACKAGE_EXPORTER_REMOTE_PROPERTY_POLL_ITEMS), Integer.MAX_VALUE);
+
+ return new RemoteReplicationPackageExporter(packageBuilder, authenticationProvider, endpoints, endpointStrategyName, pollItems);
+ } else if (PACKAGE_EXPORTER_AGENT.equals(factory)) {
+ Map<String, Object> builderProperties = extractMap(COMPONENT_PACKAGE_BUILDER, properties);
+ ReplicationPackageBuilder packageBuilder = createBuilder(builderProperties);
+ ReplicationAgent agent = componentProvider.getComponent(ReplicationAgent.class, null);
return new AgentReplicationPackageExporter(properties, agent, packageBuilder);
}
@@ -229,30 +229,33 @@ public class DefaultReplicationComponent
public ReplicationPackageImporter createImporter(Map<String, Object> properties, ReplicationComponentProvider componentProvider) {
- String factory = PropertiesUtil.toString(properties.get(COMPONENT_TYPE), "service");
+ String factory = PropertiesUtil.toString(properties.get(COMPONENT_TYPE), COMPONENT_TYPE_SERVICE);
- if ("service".equals(factory)) {
- String name = PropertiesUtil.toString(properties.get(NAME), null);
+ if (COMPONENT_TYPE_SERVICE.equals(factory)) {
+ String name = PropertiesUtil.toString(properties.get(COMPONENT_NAME), null);
return componentProvider.getComponent(ReplicationPackageImporter.class, name);
- } else if (LocalReplicationPackageImporter.NAME.equals(factory)) {
- Map<String, Object> builderProperties = extractMap("packageBuilder", properties);
+ } else if (PACKAGE_IMPORTER_LOCAL.equals(factory)) {
+ Map<String, Object> builderProperties = extractMap(COMPONENT_PACKAGE_BUILDER, properties);
ReplicationPackageBuilder packageBuilder = createBuilder(builderProperties);
- return new LocalReplicationPackageImporter(properties, packageBuilder, replicationEventFactory);
- } else if (RemoteReplicationPackageImporter.NAME.equals(factory)) {
- Map<String, Object> authenticationProviderProperties = extractMap("authenticationProvider", properties);
+ return new LocalReplicationPackageImporter(packageBuilder, replicationEventFactory);
+ } else if (PACKAGE_IMPORTER_REMOTE.equals(factory)) {
+ Map<String, Object> authenticationProviderProperties = extractMap(COMPONENT_TRANSPORT_AUTHENTICATION_PROVIDER, properties);
TransportAuthenticationProvider authenticationProvider = createTransportAuthenticationProvider(authenticationProviderProperties, componentProvider);
- return new RemoteReplicationPackageImporter(properties, authenticationProvider);
+ String[] endpoints = PropertiesUtil.toStringArray(properties.get(PACKAGE_EXPORTER_REMOTE_PROPERTY_ENDPOINTS), new String[0]);
+ String endpointStrategyName = PropertiesUtil.toString(properties.get(PACKAGE_EXPORTER_REMOTE_PROPERTY_ENDPOINTS_STRATEGY), "One");
+
+ return new RemoteReplicationPackageImporter(authenticationProvider, endpoints, endpointStrategyName);
}
return null;
}
public ReplicationQueueProvider createQueueProvider(Map<String, Object> properties, ReplicationComponentProvider componentProvider) {
- String factory = PropertiesUtil.toString(properties.get(COMPONENT_TYPE), "service");
+ String factory = PropertiesUtil.toString(properties.get(COMPONENT_TYPE), COMPONENT_TYPE_SERVICE);
- if ("service".equals(factory)) {
- String name = PropertiesUtil.toString(properties.get(NAME), null);
+ if (COMPONENT_TYPE_SERVICE.equals(factory)) {
+ String name = PropertiesUtil.toString(properties.get(COMPONENT_NAME), null);
return componentProvider.getComponent(ReplicationQueueProvider.class, name);
}
@@ -260,10 +263,10 @@ public class DefaultReplicationComponent
}
public ReplicationQueueDistributionStrategy createDistributionStrategy(Map<String, Object> properties, ReplicationComponentProvider componentProvider) {
- String factory = PropertiesUtil.toString(properties.get(COMPONENT_TYPE), "service");
+ String factory = PropertiesUtil.toString(properties.get(COMPONENT_TYPE), COMPONENT_TYPE_SERVICE);
- if ("service".equals(factory)) {
- String name = PropertiesUtil.toString(properties.get(NAME), null);
+ if (COMPONENT_TYPE_SERVICE.equals(factory)) {
+ String name = PropertiesUtil.toString(properties.get(COMPONENT_NAME), null);
return componentProvider.getComponent(ReplicationQueueDistributionStrategy.class, name);
}
@@ -272,23 +275,25 @@ public class DefaultReplicationComponent
}
public TransportAuthenticationProvider createTransportAuthenticationProvider(Map<String, Object> properties, ReplicationComponentProvider componentProvider) {
- String factory = PropertiesUtil.toString(properties.get(COMPONENT_TYPE), "service");
+ String factory = PropertiesUtil.toString(properties.get(COMPONENT_TYPE), COMPONENT_TYPE_SERVICE);
- if ("service".equals(factory)) {
- String name = PropertiesUtil.toString(properties.get(NAME), null);
+ if (COMPONENT_TYPE_SERVICE.equals(factory)) {
+ String name = PropertiesUtil.toString(properties.get(COMPONENT_NAME), null);
return componentProvider.getComponent(TransportAuthenticationProvider.class, name);
- } else if ("user".equals(factory)) {
- return new UserCredentialsTransportAuthenticationProvider(properties);
+ } else if (TRANSPORT_AUTHENTICATION_PROVIDER_USER.equals(factory)) {
+ String username = PropertiesUtil.toString(properties.get(TRANSPORT_AUTHENTICATION_PROVIDER_USER_PROPERTY_USERNAME), "").trim();
+ String password = PropertiesUtil.toString(properties.get(TRANSPORT_AUTHENTICATION_PROVIDER_USER_PROPERTY_PASSWORD), "").trim();
+ return new UserCredentialsTransportAuthenticationProvider(username, password);
}
return null;
}
public ReplicationPackageBuilder createBuilder(Map<String, Object> properties) {
- String factory = PropertiesUtil.toString(properties.get(COMPONENT_TYPE), "service");
+ String factory = PropertiesUtil.toString(properties.get(COMPONENT_TYPE), COMPONENT_TYPE_SERVICE);
- if (FileVaultReplicationPackageBuilder.NAME.equals(factory)) {
+ if (PACKAGE_BUILDER_FILEVLT.equals(factory)) {
return new FileVaultReplicationPackageBuilder(packaging, replicationEventFactory);
}
@@ -297,27 +302,44 @@ public class DefaultReplicationComponent
private ReplicationTrigger createTrigger(Map<String, Object> properties, ReplicationComponentProvider componentProvider) {
- String factory = PropertiesUtil.toString(properties.get(COMPONENT_TYPE), "service");
+ String factory = PropertiesUtil.toString(properties.get(COMPONENT_TYPE), COMPONENT_TYPE_SERVICE);
- if ("service".equals(factory)) {
- String name = PropertiesUtil.toString(properties.get(NAME), null);
+ if (COMPONENT_TYPE_SERVICE.equals(factory)) {
+ String name = PropertiesUtil.toString(properties.get(COMPONENT_NAME), null);
return componentProvider.getComponent(ReplicationTrigger.class, name);
- } else if (RemoteEventReplicationTrigger.TYPE.equals(factory)) {
- Map<String, Object> authenticationProviderProperties = extractMap("authenticationProvider", properties);
+ } else if (TRIGGER_REMOTE_EVENT.equals(factory)) {
+ Map<String, Object> authenticationProviderProperties = extractMap(COMPONENT_TRANSPORT_AUTHENTICATION_PROVIDER, properties);
TransportAuthenticationProvider authenticationProvider = createTransportAuthenticationProvider(authenticationProviderProperties, componentProvider);
- return new RemoteEventReplicationTrigger(properties, authenticationProvider, scheduler);
- } else if (ResourceEventReplicationTrigger.TYPE.equals(factory)) {
- return new ResourceEventReplicationTrigger(properties, bundleContext);
- } else if (ScheduledReplicationTrigger.TYPE.equals(factory)) {
- return new ScheduledReplicationTrigger(properties, scheduler);
- } else if (ChainReplicateReplicationTrigger.TYPE.equals(factory)) {
- return new ChainReplicateReplicationTrigger(properties, bundleContext);
- } else if (JcrEventReplicationTrigger.TYPE.equals(factory)) {
- return new JcrEventReplicationTrigger(properties, repository);
- } else if (PersistingJcrEventReplicationTrigger.TYPE.equals(factory)) {
- return new PersistingJcrEventReplicationTrigger(properties, repository);
+ String endpoint = PropertiesUtil.toString(properties.get(TRIGGER_REMOTE_EVENT_PROPERTY_ENDPOINT), null);
+
+ return new RemoteEventReplicationTrigger(endpoint, authenticationProvider, scheduler);
+ } else if (TRIGGER_RESOURCE_EVENT.equals(factory)) {
+ String path = PropertiesUtil.toString(properties.get(TRIGGER_RESOURCE_EVENT_PROPERTY_PATH), null);
+
+ return new ResourceEventReplicationTrigger(path, bundleContext);
+ } else if (TRIGGER_SCHEDULED_EVENT.equals(factory)) {
+ String action = PropertiesUtil.toString(properties.get(TRIGGER_SCHEDULED_EVENT_PROPERTY_ACTION), ReplicationActionType.POLL.name());
+ String path = PropertiesUtil.toString(properties.get(TRIGGER_SCHEDULED_EVENT_PROPERTY_PATH), "/");
+ int interval = PropertiesUtil.toInteger(properties.get(TRIGGER_SCHEDULED_EVENT_PROPERTY_SECONDS), 30);
+
+ return new ScheduledReplicationTrigger(action, path, interval, scheduler);
+ } else if (TRIGGER_REPLICATION_EVENT.equals(factory)) {
+ String path = PropertiesUtil.toString(properties.get(TRIGGER_REPLICATION_EVENT_PROPERTY_PATH), null);
+
+ return new ChainReplicateReplicationTrigger(path, bundleContext);
+ } else if (TRIGGER_JCR_EVENT.equals(factory)) {
+ String path = PropertiesUtil.toString(properties.get(TRIGGER_JCR_EVENT_PROPERTY_PATH), null);
+ String serviceName = PropertiesUtil.toString(properties.get(TRIGGER_JCR_EVENT_PROPERTY_SERVICE_NAME), null);
+
+ return new JcrEventReplicationTrigger(repository, path, serviceName);
+ } else if (TRIGGER_PERSISTED_JCR_EVENT.equals(factory)) {
+ String path = PropertiesUtil.toString(properties.get(TRIGGER_PERSISTED_JCR_EVENT_PROPERTY_PATH), null);
+ String serviceName = PropertiesUtil.toString(properties.get(TRIGGER_PERSISTED_JCR_EVENT_PROPERTY_SERVICE_NAME), null);
+ String nuggetsPath = PropertiesUtil.toString(properties.get(TRIGGER_PERSISTED_JCR_EVENT_PROPERTY_NUGGETS_PATH), null);
+
+ return new PersistingJcrEventReplicationTrigger(repository, path, serviceName, nuggetsPath);
}
return null;
Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/GenericReplicationComponentFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/GenericReplicationComponentFactory.java?rev=1632487&r1=1632486&r2=1632487&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/GenericReplicationComponentFactory.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/GenericReplicationComponentFactory.java Fri Oct 17 07:58:45 2014
@@ -53,14 +53,16 @@ import org.slf4j.LoggerFactory;
policy = ConfigurationPolicy.REQUIRE
)
public class GenericReplicationComponentFactory implements ReplicationComponentProvider {
+ private static final String TRANSPORT_AUTHENTICATION_PROVIDER_TARGET = ReplicationComponentFactory.COMPONENT_TRANSPORT_AUTHENTICATION_PROVIDER + ".target";
+
private final Logger log = LoggerFactory.getLogger(getClass());
@Property(boolValue = true, label = "Enabled")
- private static final String ENABLED = "enabled";
+ private static final String ENABLED = ReplicationComponentFactory.COMPONENT_ENABLED;
@Property(label = "Name")
- public static final String NAME = "name";
+ public static final String NAME = ReplicationComponentFactory.COMPONENT_NAME;
@Property(label = "Properties")
public static final String PROPERTIES = "properties";
@@ -74,7 +76,7 @@ public class GenericReplicationComponent
@Reference
private ReplicationComponentFactory componentFactory;
- @Property(label = "Target TransportAuthenticationProvider", name = "transportAuthenticationProvider.target")
+ @Property(label = "Target TransportAuthenticationProvider", name = TRANSPORT_AUTHENTICATION_PROVIDER_TARGET)
@Reference(name = "transportAuthenticationProvider", policy = ReferencePolicy.DYNAMIC, cardinality = ReferenceCardinality.OPTIONAL_UNARY)
private volatile TransportAuthenticationProvider transportAuthenticationProvider;
@@ -114,12 +116,12 @@ public class GenericReplicationComponent
String componentClass = null;
Object componentObject = null;
- if ("agent".equals(componentType)) {
+ if (ReplicationComponentFactory.COMPONENT_AGENT.equals(componentType)) {
ReplicationAgent agent = componentFactory.createComponent(ReplicationAgent.class, properties, this);
componentClass = ReplicationAgent.class.getName();
componentObject = agent;
- } else if ("trigger".equals(componentType)) {
+ } else if (ReplicationComponentFactory.COMPONENT_TRIGGER.equals(componentType)) {
ReplicationTrigger trigger = componentFactory.createComponent(ReplicationTrigger.class, properties, this);
Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/PrivilegeReplicationRequestAuthorizationStrategy.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/PrivilegeReplicationRequestAuthorizationStrategy.java?rev=1632487&r1=1632486&r2=1632487&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/PrivilegeReplicationRequestAuthorizationStrategy.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/PrivilegeReplicationRequestAuthorizationStrategy.java Fri Oct 17 07:58:45 2014
@@ -36,14 +36,9 @@ import org.apache.sling.replication.pack
import org.apache.sling.replication.serialization.ReplicationPackageBuildingException;
public class PrivilegeReplicationRequestAuthorizationStrategy implements ReplicationRequestAuthorizationStrategy {
- public static final String NAME = "privilege";
- public static final String JCR_PRIVILEGE = "jcrPrivilege";
- private final String jcrPrivilege;
- public PrivilegeReplicationRequestAuthorizationStrategy(Map<String, Object> config) {
- this(PropertiesUtil.toString(config.get(JCR_PRIVILEGE), null));
- }
+ private final String jcrPrivilege;
public PrivilegeReplicationRequestAuthorizationStrategy(String jcrPrivilege) {
if (jcrPrivilege == null) {
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=1632487&r1=1632486&r2=1632487&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 Fri Oct 17 07:58:45 2014
@@ -264,6 +264,10 @@ public class SimpleReplicationAgent impl
replicationPackage.delete();
success = true;
}
+ else {
+ log.warn("replication package with id {} does not exist", queueItem.getId());
+ }
+
} catch (ReplicationPackageReadingException e) {
log.error("could not process transport queue", 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=1632487&r1=1632486&r2=1632487&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 Fri Oct 17 07:58:45 2014
@@ -19,7 +19,6 @@
package org.apache.sling.replication.agent.impl;
import java.util.Dictionary;
-import java.util.HashMap;
import java.util.Hashtable;
import java.util.Map;
import java.util.Random;
@@ -61,43 +60,50 @@ import org.slf4j.LoggerFactory;
policy = ConfigurationPolicy.REQUIRE
)
public class SimpleReplicationAgentFactory implements ReplicationComponentProvider {
- public static final String QUEUEPROVIDER_TARGET = "queueProvider.target";
+ private static final String QUEUE_PROVIDER_TARGET = ReplicationComponentFactory.COMPONENT_QUEUE_PROVIDER + ".target";
+ private static final String QUEUE_DISTRIBUTION_TARGET = ReplicationComponentFactory.COMPONENT_QUEUE_DISTRIBUTION_STRATEGY + ".target";
+ private static final String TRANSPORT_AUTHENTICATION_PROVIDER_TARGET = ReplicationComponentFactory.COMPONENT_TRANSPORT_AUTHENTICATION_PROVIDER + ".target";
- public static final String QUEUE_DISTRIBUTION_TARGET = "queueDistributionStrategy.target";
+ private static final String DEFAULT_QUEUEPROVIDER = "(name=" + JobHandlingReplicationQueueProvider.NAME + ")";
+ private static final String DEFAULT_DISTRIBUTION = "(name=" + SingleQueueDistributionStrategy.NAME + ")";
private final Logger log = LoggerFactory.getLogger(getClass());
- private static final String DEFAULT_QUEUEPROVIDER = "(name=" + JobHandlingReplicationQueueProvider.NAME + ")";
- private static final String DEFAULT_DISTRIBUTION = "(name=" + SingleQueueDistributionStrategy.NAME + ")";
@Property(boolValue = true, label = "Enabled")
- private static final String ENABLED = "enabled";
+ private static final String ENABLED = ReplicationComponentFactory.COMPONENT_ENABLED;
+
+ @Property(value = ReplicationComponentFactory.AGENT_SIMPLE, propertyPrivate = true)
+ private static final String TYPE = ReplicationComponentFactory.COMPONENT_TYPE;
@Property(label = "Name")
- public static final String NAME = "name";
+ public static final String NAME = ReplicationComponentFactory.COMPONENT_NAME;
@Property(boolValue = false, label = "Use this agent as a passive one (only queueing)")
- public static final String IS_PASSIVE = "isPassive";
+ public static final String IS_PASSIVE = ReplicationComponentFactory.AGENT_SIMPLE_PROPERTY_IS_PASSIVE;
- @Property(label = "Package Exporter", cardinality = 100)
- public static final String PACKAGE_EXPORTER = "packageExporter";
+ @Property(label = "Request Authorization Strategy Properties", cardinality = 100)
+ public static final String REQUEST_AUTHORIZATION_STRATEGY = ReplicationComponentFactory.COMPONENT_REQUEST_AUTHORIZATION_STRATEGY;
- @Property(label = "Package Importer", cardinality = 100)
- public static final String PACKAGE_IMPORTER = "packageImporter";
+ @Property(label = "Package Exporter Properties", cardinality = 100)
+ public static final String PACKAGE_EXPORTER = ReplicationComponentFactory.COMPONENT_PACKAGE_EXPORTER;
+
+ @Property(label = "Package Importer Properties", cardinality = 100)
+ public static final String PACKAGE_IMPORTER = ReplicationComponentFactory.COMPONENT_PACKAGE_IMPORTER;
@Property(label = "Service Name")
- public static final String SERVICE_NAME = "serviceName";
+ public static final String SERVICE_NAME = ReplicationComponentFactory.AGENT_SIMPLE_PROPERTY_SERVICE_NAME;
- @Property(label = "Target ReplicationQueueProvider", name = QUEUEPROVIDER_TARGET, value = DEFAULT_QUEUEPROVIDER)
- @Reference(name = "queueProvider", target = DEFAULT_QUEUEPROVIDER)
+ @Property(label = "Target ReplicationQueueProvider", name = QUEUE_PROVIDER_TARGET, value = DEFAULT_QUEUEPROVIDER)
+ @Reference(name = ReplicationComponentFactory.COMPONENT_QUEUE_PROVIDER, target = DEFAULT_QUEUEPROVIDER)
private volatile ReplicationQueueProvider queueProvider;
@Property(label = "Target QueueDistributionStrategy", name = QUEUE_DISTRIBUTION_TARGET, value = DEFAULT_DISTRIBUTION)
- @Reference(name = "queueDistributionStrategy", target = DEFAULT_DISTRIBUTION)
+ @Reference(name = ReplicationComponentFactory.COMPONENT_QUEUE_DISTRIBUTION_STRATEGY, target = DEFAULT_DISTRIBUTION)
private volatile ReplicationQueueDistributionStrategy queueDistributionStrategy;
- @Property(label = "Target TransportAuthenticationProvider", name = "transportAuthenticationProvider.target")
+ @Property(label = "Target TransportAuthenticationProvider", name = TRANSPORT_AUTHENTICATION_PROVIDER_TARGET)
@Reference(name = "transportAuthenticationProvider", policy = ReferencePolicy.DYNAMIC,
cardinality = ReferenceCardinality.OPTIONAL_UNARY)
private volatile TransportAuthenticationProvider transportAuthenticationProvider;
@@ -133,19 +139,8 @@ public class SimpleReplicationAgentFacto
.toString(config.get(NAME), String.valueOf(new Random().nextInt(1000)));
props.put(NAME, name);
-
- String queue = PropertiesUtil.toString(config.get(QUEUEPROVIDER_TARGET), DEFAULT_QUEUEPROVIDER);
- props.put(QUEUEPROVIDER_TARGET, queue);
-
- String distribution = PropertiesUtil.toString(config.get(QUEUE_DISTRIBUTION_TARGET), DEFAULT_DISTRIBUTION);
- props.put(QUEUE_DISTRIBUTION_TARGET, distribution);
-
if (componentReg == null && componentFactory != null) {
- Map<String, Object> properties = new HashMap<String, Object>();
- properties.putAll(config);
-
- properties.put("type", "simple");
- ReplicationAgent agent = componentFactory.createComponent(ReplicationAgent.class, properties, this);
+ ReplicationAgent agent = componentFactory.createComponent(ReplicationAgent.class, config, this);
log.debug("activated agent {}", agent != null ? agent.getName() : null);
Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/communication/ReplicationRequest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/communication/ReplicationRequest.java?rev=1632487&r1=1632486&r2=1632487&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/communication/ReplicationRequest.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/communication/ReplicationRequest.java Fri Oct 17 07:58:45 2014
@@ -31,6 +31,10 @@ public class ReplicationRequest {
private final String[] paths;
+ public ReplicationRequest(ReplicationActionType action, String[] paths) {
+ this(System.currentTimeMillis(), action, paths);
+ }
+
public ReplicationRequest(long time, ReplicationActionType action, String... paths) {
this.time = time;
this.action = action;
@@ -40,7 +44,7 @@ public class ReplicationRequest {
/**
* get the time this replication request was created
*
- * @return a <code>long</code> representing the replication request creation time
+ * @return a <code>long</code> representing the replication request creation time e.g. as returend by {@code System#currentTimeMillis}
*/
public long getTime() {
return time;
Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/AgentReplicationPackageExporter.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/AgentReplicationPackageExporter.java?rev=1632487&r1=1632486&r2=1632487&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/AgentReplicationPackageExporter.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/AgentReplicationPackageExporter.java Fri Oct 17 07:58:45 2014
@@ -37,7 +37,6 @@ import org.slf4j.LoggerFactory;
public class AgentReplicationPackageExporter implements ReplicationPackageExporter {
private final Logger log = LoggerFactory.getLogger(getClass());
- public static final String NAME = "agent";
public static final String QUEUE_NAME = "queue";
private ReplicationAgent agent;
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=1632487&r1=1632486&r2=1632487&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 Fri Oct 17 07:58:45 2014
@@ -48,11 +48,11 @@ import org.slf4j.LoggerFactory;
public class AgentReplicationPackageExporterFactory implements ReplicationPackageExporter, ReplicationComponentProvider {
private final Logger log = LoggerFactory.getLogger(getClass());
- @Property(value = AgentReplicationPackageExporter.NAME, propertyPrivate = true)
- private static final String TYPE = "type";
+ @Property(value = ReplicationComponentFactory.PACKAGE_EXPORTER_AGENT, propertyPrivate = true)
+ private static final String TYPE = ReplicationComponentFactory.COMPONENT_TYPE;
@Property
- private static final String NAME = "name";
+ private static final String NAME = ReplicationComponentFactory.COMPONENT_NAME;
@Property(label = "Target ReplicationAgent", name = "ReplicationAgent.target")
@Reference(name = "ReplicationAgent", policy = ReferencePolicy.STATIC)
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=1632487&r1=1632486&r2=1632487&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 Fri Oct 17 07:58:45 2014
@@ -34,8 +34,6 @@ import org.apache.sling.replication.seri
*/
public class LocalReplicationPackageExporter implements ReplicationPackageExporter {
- public static final String NAME = "local";
-
private ReplicationPackageBuilder packageBuilder;
public LocalReplicationPackageExporter(ReplicationPackageBuilder packageBuilder) {
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=1632487&r1=1632486&r2=1632487&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 Fri Oct 17 07:58:45 2014
@@ -50,11 +50,11 @@ public class LocalReplicationPackageExpo
private final Logger log = LoggerFactory.getLogger(getClass());
- @Property(value = LocalReplicationPackageExporter.NAME, propertyPrivate = true)
- private static final String TYPE = "type";
+ @Property(value = ReplicationComponentFactory.PACKAGE_EXPORTER_LOCAL, propertyPrivate = true)
+ private static final String TYPE = ReplicationComponentFactory.COMPONENT_TYPE;
@Property
- private static final String NAME = "name";
+ private static final String NAME = ReplicationComponentFactory.COMPONENT_NAME;
@Reference
ReplicationComponentFactory replicationComponentFactory;
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=1632487&r1=1632486&r2=1632487&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 Fri Oct 17 07:58:45 2014
@@ -20,10 +20,8 @@ package org.apache.sling.replication.pac
import java.util.ArrayList;
import java.util.List;
-import java.util.Map;
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.communication.ReplicationRequest;
import org.apache.sling.replication.packaging.ReplicationPackage;
@@ -33,7 +31,6 @@ import org.apache.sling.replication.seri
import org.apache.sling.replication.transport.ReplicationTransportHandler;
import org.apache.sling.replication.transport.authentication.TransportAuthenticationProvider;
import org.apache.sling.replication.transport.impl.MultipleEndpointReplicationTransportHandler;
-import org.apache.sling.replication.transport.impl.ReplicationTransportConstants;
import org.apache.sling.replication.transport.impl.SimpleHttpReplicationTransportHandler;
import org.apache.sling.replication.transport.impl.TransportEndpointStrategyType;
@@ -43,24 +40,11 @@ import org.apache.sling.replication.tran
public class RemoteReplicationPackageExporter implements ReplicationPackageExporter {
- public static final String NAME = "remote";
- public static final String POLL_ITEMS = "poll.items";
-
-
private final ReplicationPackageBuilder packageBuilder;
ReplicationTransportHandler transportHandler;
- public RemoteReplicationPackageExporter(Map<String, Object> config,
- ReplicationPackageBuilder packageBuilder,
- TransportAuthenticationProvider transportAuthenticationProvider) {
-
- this(packageBuilder, transportAuthenticationProvider,
- PropertiesUtil.toStringArray(config.get(ReplicationTransportConstants.ENDPOINTS), new String[0]),
- PropertiesUtil.toString(config.get(ReplicationTransportConstants.ENDPOINT_STRATEGY), "One"),
- PropertiesUtil.toInteger(config.get(POLL_ITEMS), Integer.MAX_VALUE));
- }
public RemoteReplicationPackageExporter(ReplicationPackageBuilder packageBuilder,
TransportAuthenticationProvider transportAuthenticationProvider,
@@ -89,7 +73,11 @@ public class RemoteReplicationPackageExp
public List<ReplicationPackage> exportPackage(ResourceResolver resourceResolver, ReplicationRequest replicationRequest) throws ReplicationPackageBuildingException {
try {
- return transportHandler.retrievePackages(resourceResolver, replicationRequest);
+ List<ReplicationPackage> replicationPackages = transportHandler.retrievePackages(resourceResolver, replicationRequest);
+// for (ReplicationPackage replicationPackage : replicationPackages) {
+// replicationPackage.
+// }
+ return replicationPackages;
} catch (Exception e) {
throw new ReplicationPackageBuildingException(e);
}
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=1632487&r1=1632486&r2=1632487&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 Fri Oct 17 07:58:45 2014
@@ -38,7 +38,6 @@ import org.apache.sling.replication.pack
import org.apache.sling.replication.packaging.ReplicationPackageExporter;
import org.apache.sling.replication.serialization.ReplicationPackageBuildingException;
import org.apache.sling.replication.transport.authentication.TransportAuthenticationProvider;
-import org.apache.sling.replication.transport.impl.ReplicationTransportConstants;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -52,20 +51,23 @@ import org.slf4j.LoggerFactory;
policy = ConfigurationPolicy.REQUIRE)
@Service(value = ReplicationPackageExporter.class)
public class RemoteReplicationPackageExporterFactory implements ReplicationPackageExporter, ReplicationComponentProvider {
+ private static final String TRANSPORT_AUTHENTICATION_PROVIDER_TARGET = ReplicationComponentFactory.COMPONENT_TRANSPORT_AUTHENTICATION_PROVIDER + ".target";
+
+
private final Logger log = LoggerFactory.getLogger(getClass());
- @Property(value = RemoteReplicationPackageExporter.NAME, propertyPrivate = true)
- private static final String TYPE = "type";
+ @Property(value = ReplicationComponentFactory.PACKAGE_EXPORTER_REMOTE, propertyPrivate = true)
+ private static final String TYPE = ReplicationComponentFactory.COMPONENT_TYPE;
@Property
- private static final String NAME = "name";
+ private static final String NAME = ReplicationComponentFactory.COMPONENT_NAME;
- @Property(name = ReplicationTransportConstants.TRANSPORT_AUTHENTICATION_PROVIDER_TARGET)
+ @Property(name = TRANSPORT_AUTHENTICATION_PROVIDER_TARGET)
@Reference(name = "TransportAuthenticationProvider", policy = ReferencePolicy.STATIC)
private volatile TransportAuthenticationProvider transportAuthenticationProvider;
@Property(cardinality = 100)
- public static final String ENDPOINTS = ReplicationTransportConstants.ENDPOINTS;
+ public static final String ENDPOINTS = ReplicationComponentFactory.PACKAGE_EXPORTER_REMOTE_PROPERTY_ENDPOINTS;
@Property(name = "poll items", description = "number of subsequent poll requests to make", intValue = 1)
public static final String POLL_ITEMS = "poll.items";
@@ -79,7 +81,7 @@ public class RemoteReplicationPackageExp
)},
value = "One"
)
- private static final String ENDPOINT_STRATEGY = ReplicationTransportConstants.ENDPOINT_STRATEGY;
+ private static final String ENDPOINT_STRATEGY = ReplicationComponentFactory.PACKAGE_EXPORTER_REMOTE_PROPERTY_ENDPOINTS_STRATEGY;
@Reference
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=1632487&r1=1632486&r2=1632487&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 Fri Oct 17 07:58:45 2014
@@ -33,6 +33,7 @@ import org.apache.felix.scr.annotations.
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.ReplicationComponentFactory;
import org.apache.sling.replication.communication.ReplicationEndpoint;
import org.apache.sling.replication.event.ReplicationEventFactory;
import org.apache.sling.replication.packaging.ReplicationPackage;
@@ -42,7 +43,6 @@ import org.apache.sling.replication.tran
import org.apache.sling.replication.transport.authentication.TransportAuthenticationProvider;
import org.apache.sling.replication.transport.impl.AdvancedHttpReplicationTransportHandler;
import org.apache.sling.replication.transport.impl.MultipleEndpointReplicationTransportHandler;
-import org.apache.sling.replication.transport.impl.ReplicationTransportConstants;
import org.apache.sling.replication.transport.impl.TransportEndpointStrategyType;
import org.osgi.framework.BundleContext;
import org.slf4j.Logger;
@@ -58,13 +58,18 @@ import org.slf4j.LoggerFactory;
policy = ConfigurationPolicy.REQUIRE)
@Service(value = ReplicationPackageImporter.class)
public class AdvancedRemoteReplicationPackageImporter implements ReplicationPackageImporter {
+ private static final String TRANSPORT_AUTHENTICATION_PROVIDER_TARGET = ReplicationComponentFactory.COMPONENT_TRANSPORT_AUTHENTICATION_PROVIDER + ".target";
+
private final Logger log = LoggerFactory.getLogger(getClass());
- @Property(name = ReplicationTransportConstants.TRANSPORT_AUTHENTICATION_PROVIDER_TARGET)
+ @Property(name = TRANSPORT_AUTHENTICATION_PROVIDER_TARGET)
@Reference(name = "TransportAuthenticationProvider", policy = ReferencePolicy.DYNAMIC)
private volatile TransportAuthenticationProvider transportAuthenticationProvider;
+ @Property(cardinality = 100)
+ public static final String ENDPOINTS = "endpoints";
+
@Property(options = {
@PropertyOption(name = "All",
value = "all endpoints"
@@ -74,7 +79,7 @@ public class AdvancedRemoteReplicationPa
)},
value = "One"
)
- private static final String ENDPOINT_STRATEGY = ReplicationTransportConstants.ENDPOINT_STRATEGY;
+ private static final String ENDPOINT_STRATEGY = "endpoint.strategy";
@Property(boolValue = false)
private static final String USE_CUSTOM_HEADERS = "useCustomHeaders";
@@ -96,8 +101,8 @@ public class AdvancedRemoteReplicationPa
@Activate
protected void activate(BundleContext context, Map<String, ?> config) throws Exception {
- String[] endpoints = PropertiesUtil.toStringArray(config.get(ReplicationTransportConstants.ENDPOINTS), new String[0]);
- String endpointStrategyName = PropertiesUtil.toString(config.get(ReplicationTransportConstants.ENDPOINT_STRATEGY),
+ String[] endpoints = PropertiesUtil.toStringArray(config.get(ENDPOINTS), new String[0]);
+ String endpointStrategyName = PropertiesUtil.toString(config.get(ENDPOINT_STRATEGY),
TransportEndpointStrategyType.One.name());
TransportEndpointStrategyType transportEndpointStrategyType = TransportEndpointStrategyType.valueOf(endpointStrategyName);
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=1632487&r1=1632486&r2=1632487&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 Fri Oct 17 07:58:45 2014
@@ -41,8 +41,6 @@ import org.slf4j.LoggerFactory;
public class LocalReplicationPackageImporter implements ReplicationPackageImporter {
- public static final String NAME = "local";
-
private final Logger log = LoggerFactory.getLogger(getClass());
private final ReplicationPackageBuilder packageBuilder;
@@ -51,13 +49,6 @@ public class LocalReplicationPackageImpo
- public LocalReplicationPackageImporter(Map<String, Object> config,
- ReplicationPackageBuilder packageBuilder,
- ReplicationEventFactory replicationEventFactory) {
-
- this(packageBuilder, replicationEventFactory);
- }
-
public LocalReplicationPackageImporter(ReplicationPackageBuilder packageBuilder,
ReplicationEventFactory replicationEventFactory) {
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=1632487&r1=1632486&r2=1632487&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 Fri Oct 17 07:58:45 2014
@@ -48,11 +48,11 @@ import org.slf4j.LoggerFactory;
public class LocalReplicationPackageImporterFactory implements ReplicationPackageImporter {
private final Logger log = LoggerFactory.getLogger(getClass());
- @Property(value = LocalReplicationPackageImporter.NAME, propertyPrivate = true)
- private static final String TYPE = "type";
+ @Property(value = ReplicationComponentFactory.PACKAGE_IMPORTER_LOCAL, propertyPrivate = true)
+ private static final String TYPE = ReplicationComponentFactory.COMPONENT_TYPE;
@Property
- private static final String NAME = "name";
+ private static final String NAME = ReplicationComponentFactory.COMPONENT_NAME;
@Reference
private ReplicationComponentFactory componentFactory;
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=1632487&r1=1632486&r2=1632487&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 Fri Oct 17 07:58:45 2014
@@ -33,7 +33,6 @@ import org.apache.sling.replication.seri
import org.apache.sling.replication.transport.ReplicationTransportHandler;
import org.apache.sling.replication.transport.authentication.TransportAuthenticationProvider;
import org.apache.sling.replication.transport.impl.MultipleEndpointReplicationTransportHandler;
-import org.apache.sling.replication.transport.impl.ReplicationTransportConstants;
import org.apache.sling.replication.transport.impl.SimpleHttpReplicationTransportHandler;
import org.apache.sling.replication.transport.impl.TransportEndpointStrategyType;
import org.slf4j.Logger;
@@ -44,27 +43,11 @@ import org.slf4j.LoggerFactory;
*/
public class RemoteReplicationPackageImporter implements ReplicationPackageImporter {
- private static final String ENDPOINT_STRATEGY = ReplicationTransportConstants.ENDPOINT_STRATEGY;
-
- public static final String NAME = "remote";
-
private final Logger log = LoggerFactory.getLogger(getClass());
- private TransportAuthenticationProvider transportAuthenticationProviderFactory;
-
- private ReplicationEventFactory replicationEventFactory;
-
private ReplicationTransportHandler transportHandler;
- public RemoteReplicationPackageImporter(Map<String, Object> config, TransportAuthenticationProvider transportAuthenticationProvider) {
-
- this(transportAuthenticationProvider,
- PropertiesUtil.toStringArray(config.get(ReplicationTransportConstants.ENDPOINTS), new String[0]),
- PropertiesUtil.toString(config.get(ENDPOINT_STRATEGY), TransportEndpointStrategyType.One.name()));
-
- }
-
public RemoteReplicationPackageImporter(TransportAuthenticationProvider transportAuthenticationProvider,
String[] endpoints,
String transportEndpointStrategyName) {
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=1632487&r1=1632486&r2=1632487&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 Fri Oct 17 07:58:45 2014
@@ -30,12 +30,12 @@ import org.apache.felix.scr.annotations.
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.agent.ReplicationComponentFactory;
+import org.apache.sling.replication.agent.ReplicationComponentProvider;
import org.apache.sling.replication.packaging.ReplicationPackage;
import org.apache.sling.replication.packaging.ReplicationPackageImporter;
-import org.apache.sling.replication.packaging.impl.exporter.LocalReplicationPackageExporter;
import org.apache.sling.replication.serialization.ReplicationPackageReadingException;
import org.apache.sling.replication.transport.authentication.TransportAuthenticationProvider;
-import org.apache.sling.replication.transport.impl.ReplicationTransportConstants;
import org.osgi.framework.BundleContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -49,22 +49,24 @@ import org.slf4j.LoggerFactory;
specVersion = "1.1",
policy = ConfigurationPolicy.REQUIRE)
@Service(value = ReplicationPackageImporter.class)
-public class RemoteReplicationPackageImporterFactory implements ReplicationPackageImporter {
+public class RemoteReplicationPackageImporterFactory implements ReplicationPackageImporter, ReplicationComponentProvider {
+ private static final String TRANSPORT_AUTHENTICATION_PROVIDER_TARGET = ReplicationComponentFactory.COMPONENT_TRANSPORT_AUTHENTICATION_PROVIDER + ".target";
+
private final Logger log = LoggerFactory.getLogger(getClass());
- @Property(value = LocalReplicationPackageExporter.NAME, propertyPrivate = true)
- private static final String TYPE = "type";
+ @Property(value = ReplicationComponentFactory.PACKAGE_IMPORTER_REMOTE, propertyPrivate = true)
+ private static final String TYPE = ReplicationComponentFactory.COMPONENT_TYPE;
@Property
- private static final String NAME = "name";
+ private static final String NAME = ReplicationComponentFactory.COMPONENT_NAME;
- @Property(name = ReplicationTransportConstants.TRANSPORT_AUTHENTICATION_PROVIDER_TARGET)
+ @Property(name = TRANSPORT_AUTHENTICATION_PROVIDER_TARGET)
@Reference(name = "TransportAuthenticationProvider", policy = ReferencePolicy.STATIC)
private volatile TransportAuthenticationProvider transportAuthenticationProvider;
@Property(cardinality = 100)
- public static final String ENDPOINTS = ReplicationTransportConstants.ENDPOINTS;
+ public static final String ENDPOINTS = ReplicationComponentFactory.PACKAGE_IMPORTER_REMOTE_PROPERTY_ENDPOINTS;
@Property(options = {
@PropertyOption(name = "All",
@@ -75,18 +77,21 @@ public class RemoteReplicationPackageImp
)},
value = "One"
)
- private static final String ENDPOINT_STRATEGY = ReplicationTransportConstants.ENDPOINT_STRATEGY;
+ private static final String ENDPOINT_STRATEGY = ReplicationComponentFactory.PACKAGE_IMPORTER_REMOTE_PROPERTY_ENDPOINTS_STRATEGY;
+
+ private ReplicationPackageImporter importer;
- private RemoteReplicationPackageImporter importer;
+ @Reference
+ ReplicationComponentFactory replicationComponentFactory;
@Activate
protected void activate(BundleContext context, Map<String, Object> config) throws Exception {
- importer = new RemoteReplicationPackageImporter(config, transportAuthenticationProvider);
+ importer = replicationComponentFactory.createComponent(ReplicationPackageImporter.class, config, this);
}
- public boolean importPackage(ResourceResolver resourceResolver, ReplicationPackage replicationPackage) {
+ public boolean importPackage(ResourceResolver resourceResolver, ReplicationPackage replicationPackage) throws ReplicationPackageReadingException {
return importer.importPackage(resourceResolver, replicationPackage);
}
@@ -94,4 +99,11 @@ public class RemoteReplicationPackageImp
return importer.readPackage(resourceResolver, stream);
}
+ public <ComponentType> ComponentType getComponent(Class<ComponentType> type, String componentName) {
+ if (type.isAssignableFrom(TransportAuthenticationProvider.class)) {
+ return (ComponentType) transportAuthenticationProvider;
+ }
+
+ return null;
+ }
}
Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/queue/impl/simple/ScheduledReplicationQueueProcessor.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/queue/impl/simple/ScheduledReplicationQueueProcessor.java?rev=1632487&r1=1632486&r2=1632487&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/queue/impl/simple/ScheduledReplicationQueueProcessor.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/queue/impl/simple/ScheduledReplicationQueueProcessor.java Fri Oct 17 07:58:45 2014
@@ -38,12 +38,10 @@ public class ScheduledReplicationQueuePr
public ScheduledReplicationQueueProcessor(ReplicationQueueProvider queueProvider,
ReplicationQueueProcessor queueProcessor) {
-
this.queueProvider = queueProvider;
this.queueProcessor = queueProcessor;
}
-
public void run() {
try {
for (ReplicationQueue queue : queueProvider.getAllQueues()) {
Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/vlt/FileVaultReplicationPackage.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/vlt/FileVaultReplicationPackage.java?rev=1632487&r1=1632486&r2=1632487&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/vlt/FileVaultReplicationPackage.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/vlt/FileVaultReplicationPackage.java Fri Oct 17 07:58:45 2014
@@ -85,7 +85,7 @@ public class FileVaultReplicationPackage
}
public String getType() {
- return FileVaultReplicationPackageBuilder.NAME;
+ return FileVaultReplicationPackageBuilder.PACKAGING_TYPE;
}
public String getAction() {
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=1632487&r1=1632486&r2=1632487&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 Fri Oct 17 07:58:45 2014
@@ -53,14 +53,14 @@ import org.slf4j.LoggerFactory;
public class FileVaultReplicationPackageBuilder extends AbstractReplicationPackageBuilder implements
ReplicationPackageBuilder {
+ public static String PACKAGING_TYPE = "vlt";
+
private final Logger log = LoggerFactory.getLogger(getClass());
private final Packaging packaging;
- public static final String NAME = "vlt";
-
public FileVaultReplicationPackageBuilder(Packaging packaging, ReplicationEventFactory replicationEventFactory) {
- super(NAME, replicationEventFactory);
+ super(PACKAGING_TYPE, replicationEventFactory);
this.packaging = packaging;
}
Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/transport/authentication/impl/RepositoryTransportAuthenticationProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/transport/authentication/impl/RepositoryTransportAuthenticationProvider.java?rev=1632487&r1=1632486&r2=1632487&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/transport/authentication/impl/RepositoryTransportAuthenticationProvider.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/transport/authentication/impl/RepositoryTransportAuthenticationProvider.java Fri Oct 17 07:58:45 2014
@@ -49,7 +49,6 @@ public class RepositoryTransportAuthenti
if (path == null) {
throw new TransportAuthenticationException(
"the path to authenticate is missing from the context");
-
}
Session session = null;