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;