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/27 16:57:13 UTC

svn commit: r1634582 - in /sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication: agent/ agent/impl/ communication/ component/ component/impl/ packaging/ packaging/impl/exporter/ packaging/impl/importer/ queue/ tran...

Author: tommaso
Date: Mon Oct 27 15:57:12 2014
New Revision: 1634582

URL: http://svn.apache.org/r1634582
Log:
SLING-4106 - ReplicationComponent as marker if, ManagedRC has enable/disable, added RC to factory/provider return type

Added:
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/ManagedReplicationComponent.java   (with props)
Removed:
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/communication/ReplicationAgentHistory.java
Modified:
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/ReplicationRequestAuthorizationStrategy.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/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/component/ReplicationComponent.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/ReplicationComponentFactory.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/ReplicationComponentProvider.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/DefaultReplicationComponentFactory.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/DefaultReplicationComponentProvider.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/GenericReplicationComponentFactory.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageExporter.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageImporter.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/AgentReplicationPackageExporterFactory.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/exporter/RemoteReplicationPackageExporterFactory.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/ReplicationQueueDistributionStrategy.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/queue/ReplicationQueueProvider.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/transport/authentication/TransportAuthenticationProvider.java
    sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/ReplicationTrigger.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/ResourceEventReplicationTrigger.java

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/ReplicationRequestAuthorizationStrategy.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/ReplicationRequestAuthorizationStrategy.java?rev=1634582&r1=1634581&r2=1634582&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/ReplicationRequestAuthorizationStrategy.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/ReplicationRequestAuthorizationStrategy.java Mon Oct 27 15:57:12 2014
@@ -20,11 +20,12 @@ package org.apache.sling.replication.age
 
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.replication.communication.ReplicationRequest;
+import org.apache.sling.replication.component.ReplicationComponent;
 
 /**
  * Strategy for authorizing requests
  */
-public interface ReplicationRequestAuthorizationStrategy {
+public interface ReplicationRequestAuthorizationStrategy extends ReplicationComponent {
 
     /**
      * @param resourceResolver   a {@link org.apache.sling.api.resource.ResourceResolver} representing the calling 'user'

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=1634582&r1=1634581&r2=1634582&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 Mon Oct 27 15:57:12 2014
@@ -35,6 +35,7 @@ import org.apache.felix.scr.annotations.
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.sling.commons.osgi.PropertiesUtil;
 import org.apache.sling.replication.agent.ReplicationAgent;
+import org.apache.sling.replication.component.ManagedReplicationComponent;
 import org.apache.sling.replication.component.ReplicationComponent;
 import org.apache.sling.replication.component.ReplicationComponentFactory;
 import org.apache.sling.replication.component.ReplicationComponentProvider;
@@ -166,9 +167,8 @@ public class CoordinatingReplicationAgen
 
                     // register agent service
                     componentReg = context.registerService(ReplicationAgent.class.getName(), agent, props);
-
-                    if (agent instanceof ReplicationComponent) {
-                        ((ReplicationComponent) agent).enable();
+                    if (agent instanceof ManagedReplicationComponent) {
+                        ((ManagedReplicationComponent) agent).enable();
                     }
                 }
             }
@@ -181,8 +181,8 @@ public class CoordinatingReplicationAgen
         if (componentReg != null) {
             ServiceReference reference = componentReg.getReference();
             Object service = context.getService(reference);
-            if (service instanceof ReplicationComponent) {
-                ((ReplicationComponent) service).disable();
+            if (service instanceof ManagedReplicationComponent) {
+                ((ManagedReplicationComponent) service).disable();
             }
 
             componentReg.unregister();
@@ -191,7 +191,7 @@ public class CoordinatingReplicationAgen
 
     }
 
-    public <ComponentType> ComponentType getComponent(Class<ComponentType> type, String componentName) {
+    public <ComponentType extends ReplicationComponent> ComponentType getComponent(Class<ComponentType> type, String componentName) {
         if (type.isAssignableFrom(ReplicationQueueProvider.class)) {
             return (ComponentType) queueProvider;
         } else if (type.isAssignableFrom(ReplicationQueueDistributionStrategy.class)) {

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=1634582&r1=1634581&r2=1634582&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 Mon Oct 27 15:57:12 2014
@@ -34,6 +34,7 @@ import org.apache.sling.replication.agen
 import org.apache.sling.replication.agent.ReplicationRequestAuthorizationStrategy;
 import org.apache.sling.replication.communication.ReplicationRequest;
 import org.apache.sling.replication.communication.ReplicationResponse;
+import org.apache.sling.replication.component.ManagedReplicationComponent;
 import org.apache.sling.replication.component.ReplicationComponent;
 import org.apache.sling.replication.event.ReplicationEventFactory;
 import org.apache.sling.replication.event.ReplicationEventType;
@@ -57,7 +58,7 @@ import org.slf4j.LoggerFactory;
 /**
  * Basic implementation of a {@link ReplicationAgent}
  */
-public class SimpleReplicationAgent implements ReplicationAgent, ReplicationComponent {
+public class SimpleReplicationAgent implements ReplicationAgent, ManagedReplicationComponent {
 
     private final Logger log = LoggerFactory.getLogger(getClass());
 

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=1634582&r1=1634581&r2=1634582&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 Mon Oct 27 15:57:12 2014
@@ -33,6 +33,7 @@ import org.apache.felix.scr.annotations.
 import org.apache.felix.scr.annotations.ReferencePolicy;
 import org.apache.sling.commons.osgi.PropertiesUtil;
 import org.apache.sling.replication.agent.ReplicationAgent;
+import org.apache.sling.replication.component.ManagedReplicationComponent;
 import org.apache.sling.replication.component.ReplicationComponent;
 import org.apache.sling.replication.component.ReplicationComponentFactory;
 import org.apache.sling.replication.component.ReplicationComponentProvider;
@@ -146,9 +147,8 @@ public class SimpleReplicationAgentFacto
 
                     // register agent service
                     componentReg = context.registerService(ReplicationAgent.class.getName(), agent, props);
-
-                    if (agent instanceof ReplicationComponent) {
-                        ((ReplicationComponent) agent).enable();
+                    if (agent instanceof ManagedReplicationComponent) {
+                        ((ManagedReplicationComponent) agent).enable();
                     }
                 }
             }
@@ -161,8 +161,8 @@ public class SimpleReplicationAgentFacto
         if (componentReg != null) {
             ServiceReference reference = componentReg.getReference();
             Object service = context.getService(reference);
-            if (service instanceof ReplicationComponent) {
-                ((ReplicationComponent) service).disable();
+            if (service instanceof ManagedReplicationComponent) {
+                ((ManagedReplicationComponent) service).disable();
             }
 
             componentReg.unregister();
@@ -171,7 +171,7 @@ public class SimpleReplicationAgentFacto
 
     }
 
-    public <ComponentType> ComponentType getComponent(Class<ComponentType> type, String componentName) {
+    public <ComponentType extends ReplicationComponent> ComponentType getComponent(Class<ComponentType> type, String componentName) {
         if (type.isAssignableFrom(ReplicationQueueProvider.class)) {
             return (ComponentType) queueProvider;
         }
@@ -189,7 +189,7 @@ public class SimpleReplicationAgentFacto
             if (componentReg == null) {
                 activate(savedContext, savedConfig);
             }
-            else if (componentReg != null) {
+            else {
                 deactivate(savedContext);
                 activate(savedContext, savedConfig);
             }

Added: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/ManagedReplicationComponent.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/ManagedReplicationComponent.java?rev=1634582&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/ManagedReplicationComponent.java (added)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/ManagedReplicationComponent.java Mon Oct 27 15:57:12 2014
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sling.replication.component;
+
+/**
+ * A managed {@link org.apache.sling.replication.component.ReplicationComponent} is a component which requires explicit
+ * initialization and releasing of its underlying (and implementation specific) resources.
+ */
+public interface ManagedReplicationComponent {
+
+    /**
+     * Enable the component
+     */
+    void enable();
+
+    /**
+     * Disable the component
+     */
+    void disable();
+
+}

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

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/ReplicationComponent.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/ReplicationComponent.java?rev=1634582&r1=1634581&r2=1634582&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/ReplicationComponent.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/ReplicationComponent.java Mon Oct 27 15:57:12 2014
@@ -19,19 +19,10 @@
 package org.apache.sling.replication.component;
 
 /**
- * A {@link ReplicationComponent} is a component requiring explicit enabling and disabling.
- * Examples of such components are {@link org.apache.sling.replication.agent.ReplicationAgent}s and some {@link org.apache.sling.replication.trigger.ReplicationTrigger}s,
- * but this extends to basically all the replication infrastructure items that can be configured and built.
+ * Marker interface for Sling Replication components like: {@link org.apache.sling.replication.agent.ReplicationAgent}s,
+ * {@link org.apache.sling.replication.trigger.ReplicationTrigger}s, {@link org.apache.sling.replication.packaging.ReplicationPackageExporter}s
+ * and {@link org.apache.sling.replication.packaging.ReplicationPackageImporter}s.
  */
 public interface ReplicationComponent {
 
-    /**
-     * Enable the component
-     */
-    void enable();
-
-    /**
-     * Disable the component
-     */
-    void disable();
 }

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/ReplicationComponentFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/ReplicationComponentFactory.java?rev=1634582&r1=1634581&r2=1634582&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/ReplicationComponentFactory.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/ReplicationComponentFactory.java Mon Oct 27 15:57:12 2014
@@ -283,7 +283,7 @@ public interface ReplicationComponentFac
      *                          to be created
      * @return a {@link ReplicationComponent} of the specified type initialized with given properties
      */
-    <ComponentType> ComponentType createComponent(java.lang.Class<ComponentType> type,
+    <ComponentType extends ReplicationComponent> ComponentType createComponent(java.lang.Class<ComponentType> type,
                                                   Map<String, Object> properties,
                                                   ReplicationComponentProvider componentProvider);
 }

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/ReplicationComponentProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/ReplicationComponentProvider.java?rev=1634582&r1=1634581&r2=1634582&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/ReplicationComponentProvider.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/ReplicationComponentProvider.java Mon Oct 27 15:57:12 2014
@@ -35,6 +35,6 @@ public interface ReplicationComponentPro
      * with the specified name, or <code>null</code> if such a {@link ReplicationComponent}
      * doesn't exist
      */
-    <ComponentType> ComponentType getComponent(java.lang.Class<ComponentType> type,
+    <ComponentType extends ReplicationComponent> ComponentType getComponent(java.lang.Class<ComponentType> type,
                                                                             String componentName);
 }

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/DefaultReplicationComponentFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/DefaultReplicationComponentFactory.java?rev=1634582&r1=1634581&r2=1634582&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/DefaultReplicationComponentFactory.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/DefaultReplicationComponentFactory.java Mon Oct 27 15:57:12 2014
@@ -36,6 +36,7 @@ import org.apache.sling.jcr.api.SlingRep
 import org.apache.sling.replication.agent.ReplicationAgent;
 import org.apache.sling.replication.agent.impl.PrivilegeReplicationRequestAuthorizationStrategy;
 import org.apache.sling.replication.agent.impl.SimpleReplicationAgent;
+import org.apache.sling.replication.component.ReplicationComponent;
 import org.apache.sling.replication.component.ReplicationComponentFactory;
 import org.apache.sling.replication.component.ReplicationComponentProvider;
 import org.apache.sling.replication.agent.ReplicationRequestAuthorizationStrategy;
@@ -106,7 +107,7 @@ public class DefaultReplicationComponent
         this.bundleContext = bundleContext;
     }
 
-    public <ComponentType> ComponentType createComponent(Class<ComponentType> type, Map<String, Object> properties,
+    public <ComponentType extends ReplicationComponent> ComponentType createComponent(Class<ComponentType> type, Map<String, Object> properties,
                                                          ReplicationComponentProvider componentProvider) {
 
         if (componentProvider == null) {
@@ -371,7 +372,7 @@ public class DefaultReplicationComponent
         return result;
     }
 
-    public <ComponentType> ComponentType getComponent(Class<ComponentType> type, String componentName) {
+    public <ComponentType extends ReplicationComponent> ComponentType getComponent(Class<ComponentType> type, String componentName) {
         return null;
     }
 }

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/DefaultReplicationComponentProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/DefaultReplicationComponentProvider.java?rev=1634582&r1=1634581&r2=1634582&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/DefaultReplicationComponentProvider.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/DefaultReplicationComponentProvider.java Mon Oct 27 15:57:12 2014
@@ -29,6 +29,7 @@ import org.apache.felix.scr.annotations.
 import org.apache.felix.scr.annotations.References;
 import org.apache.felix.scr.annotations.Service;
 import org.apache.sling.replication.agent.ReplicationAgent;
+import org.apache.sling.replication.component.ReplicationComponent;
 import org.apache.sling.replication.component.ReplicationComponentProvider;
 import org.apache.sling.replication.packaging.ReplicationPackageExporter;
 import org.apache.sling.replication.packaging.ReplicationPackageImporter;
@@ -68,7 +69,7 @@ public class DefaultReplicationComponent
     Map<String, ReplicationPackageExporter> replicationPackageExporterMap = new ConcurrentHashMap<String, ReplicationPackageExporter>();
     private BundleContext bundleContext;
 
-    public <ComponentType> ComponentType getComponent(Class<ComponentType> type, String componentName) {
+    public <ComponentType extends ReplicationComponent> ComponentType getComponent(Class<ComponentType> type, String componentName) {
         if (type.isAssignableFrom(ReplicationPackageExporter.class)) {
             return (ComponentType) replicationPackageExporterMap.get(componentName);
         } else if (type.isAssignableFrom(ReplicationPackageImporter.class)) {

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/GenericReplicationComponentFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/GenericReplicationComponentFactory.java?rev=1634582&r1=1634581&r2=1634582&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/GenericReplicationComponentFactory.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/component/impl/GenericReplicationComponentFactory.java Mon Oct 27 15:57:12 2014
@@ -33,6 +33,7 @@ import org.apache.felix.scr.annotations.
 import org.apache.felix.scr.annotations.ReferencePolicy;
 import org.apache.sling.commons.osgi.PropertiesUtil;
 import org.apache.sling.replication.agent.ReplicationAgent;
+import org.apache.sling.replication.component.ManagedReplicationComponent;
 import org.apache.sling.replication.component.ReplicationComponent;
 import org.apache.sling.replication.component.ReplicationComponentFactory;
 import org.apache.sling.replication.component.ReplicationComponentProvider;
@@ -130,8 +131,8 @@ public class GenericReplicationComponent
                 }
 
                 if (componentObject != null && componentClass != null) {
-                    if (componentObject instanceof ReplicationComponent) {
-                        ((ReplicationComponent) componentObject).enable();
+                    if (componentObject instanceof ManagedReplicationComponent) {
+                        ((ManagedReplicationComponent) componentObject).enable();
                     }
 
                     componentReg = context.registerService(componentClass, componentObject, props);
@@ -149,8 +150,8 @@ public class GenericReplicationComponent
         if (componentReg != null) {
             ServiceReference reference = componentReg.getReference();
             Object service = context.getService(reference);
-            if (service instanceof ReplicationComponent) {
-                ((ReplicationComponent) service).disable();
+            if (service instanceof ManagedReplicationComponent) {
+                ((ManagedReplicationComponent) service).disable();
             }
 
             componentReg.unregister();
@@ -164,7 +165,7 @@ public class GenericReplicationComponent
             if (componentReg == null) {
                 activate(savedContext, savedConfig);
             }
-            else if (componentReg != null) {
+            else {
                 deactivate(savedContext);
                 activate(savedContext, savedConfig);
             }
@@ -181,7 +182,7 @@ public class GenericReplicationComponent
         refresh();
     }
 
-    public <ComponentType> ComponentType getComponent(Class<ComponentType> type, String componentName) {
+    public <ComponentType extends ReplicationComponent> ComponentType getComponent(Class<ComponentType> type, String componentName) {
         if (type.isAssignableFrom(TransportAuthenticationProvider.class)) {
             return (ComponentType) transportAuthenticationProvider;
         }

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageExporter.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageExporter.java?rev=1634582&r1=1634581&r2=1634582&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageExporter.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageExporter.java Mon Oct 27 15:57:12 2014
@@ -23,6 +23,7 @@ import java.util.List;
 
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.replication.communication.ReplicationRequest;
+import org.apache.sling.replication.component.ReplicationComponent;
 import org.apache.sling.replication.serialization.ReplicationPackageBuildingException;
 
 /**
@@ -30,7 +31,7 @@ import org.apache.sling.replication.seri
  * {@link org.apache.sling.replication.packaging.ReplicationPackage}s to be then imported by a {@link org.apache.sling.replication.agent.ReplicationAgent}
  * (via a {@link org.apache.sling.replication.packaging.ReplicationPackageImporter}).
  */
-public interface ReplicationPackageExporter {
+public interface ReplicationPackageExporter extends ReplicationComponent {
 
     /**
      * Exports the {@link org.apache.sling.replication.packaging.ReplicationPackage}s built from the

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageImporter.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageImporter.java?rev=1634582&r1=1634581&r2=1634582&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageImporter.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/ReplicationPackageImporter.java Mon Oct 27 15:57:12 2014
@@ -21,13 +21,14 @@ package org.apache.sling.replication.pac
 import java.io.InputStream;
 
 import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.replication.component.ReplicationComponent;
 import org.apache.sling.replication.serialization.ReplicationPackageReadingException;
 
 /**
  * A {@link org.apache.sling.replication.packaging.ReplicationPackageImporter} is responsible for importing
  * {@link org.apache.sling.replication.packaging.ReplicationPackage}s into the resource tree.
  */
-public interface ReplicationPackageImporter {
+public interface ReplicationPackageImporter extends ReplicationComponent {
     /**
      * Imports the given replication package
      *

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=1634582&r1=1634581&r2=1634582&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 Mon Oct 27 15:57:12 2014
@@ -30,6 +30,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.replication.agent.ReplicationAgent;
+import org.apache.sling.replication.component.ReplicationComponent;
 import org.apache.sling.replication.component.ReplicationComponentFactory;
 import org.apache.sling.replication.component.ReplicationComponentProvider;
 import org.apache.sling.replication.communication.ReplicationRequest;
@@ -79,7 +80,7 @@ public class AgentReplicationPackageExpo
         return packageExporter.exportPackageById(resourceResolver, replicationPackageId);
     }
 
-    public <ComponentType> ComponentType getComponent(Class<ComponentType> type, String componentName) {
+    public <ComponentType extends ReplicationComponent> ComponentType getComponent(Class<ComponentType> type, String componentName) {
         if (type.isAssignableFrom(ReplicationAgent.class)) {
             return (ComponentType) agent;
         }

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=1634582&r1=1634581&r2=1634582&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 Mon Oct 27 15:57:12 2014
@@ -31,6 +31,7 @@ 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.component.ReplicationComponent;
 import org.apache.sling.replication.component.ReplicationComponentFactory;
 import org.apache.sling.replication.component.ReplicationComponentProvider;
 import org.apache.sling.replication.communication.ReplicationRequest;
@@ -108,7 +109,7 @@ public class RemoteReplicationPackageExp
         return exporter.exportPackageById(resourceResolver, replicationPackageId);
     }
 
-    public <ComponentType> ComponentType getComponent(Class<ComponentType> type, String componentName) {
+    public <ComponentType extends ReplicationComponent> ComponentType getComponent(Class<ComponentType> type, String componentName) {
         if (type.isAssignableFrom(TransportAuthenticationProvider.class)) {
             return (ComponentType) transportAuthenticationProvider;
         }

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=1634582&r1=1634581&r2=1634582&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 Mon Oct 27 15:57:12 2014
@@ -30,6 +30,7 @@ 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.component.ReplicationComponent;
 import org.apache.sling.replication.component.ReplicationComponentFactory;
 import org.apache.sling.replication.component.ReplicationComponentProvider;
 import org.apache.sling.replication.packaging.ReplicationPackage;
@@ -99,7 +100,7 @@ public class RemoteReplicationPackageImp
         return importer.readPackage(resourceResolver, stream);
     }
 
-    public <ComponentType> ComponentType getComponent(Class<ComponentType> type, String componentName) {
+    public <ComponentType extends ReplicationComponent> ComponentType getComponent(Class<ComponentType> type, String componentName) {
         if (type.isAssignableFrom(TransportAuthenticationProvider.class)) {
             return (ComponentType) transportAuthenticationProvider;
         }

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/queue/ReplicationQueueDistributionStrategy.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/queue/ReplicationQueueDistributionStrategy.java?rev=1634582&r1=1634581&r2=1634582&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/queue/ReplicationQueueDistributionStrategy.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/queue/ReplicationQueueDistributionStrategy.java Mon Oct 27 15:57:12 2014
@@ -19,12 +19,13 @@
 package org.apache.sling.replication.queue;
 
 import org.apache.sling.replication.agent.ReplicationAgent;
+import org.apache.sling.replication.component.ReplicationComponent;
 
 /**
  * a {@link ReplicationQueueDistributionStrategy} implements an algorithm for the distribution of
  * {@link org.apache.sling.replication.queue.ReplicationQueueItem}s among the available queues for a certain agent
  */
-public interface ReplicationQueueDistributionStrategy {
+public interface ReplicationQueueDistributionStrategy extends ReplicationComponent {
 
     /**
      * synchronously distribute a {@link org.apache.sling.replication.queue.ReplicationQueueItem} to a {@link ReplicationAgent}

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/queue/ReplicationQueueProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/queue/ReplicationQueueProvider.java?rev=1634582&r1=1634581&r2=1634582&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/queue/ReplicationQueueProvider.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/queue/ReplicationQueueProvider.java Mon Oct 27 15:57:12 2014
@@ -20,10 +20,12 @@ package org.apache.sling.replication.que
 
 import java.util.Collection;
 
+import org.apache.sling.replication.component.ReplicationComponent;
+
 /**
  * A provider for {@link ReplicationQueue}s
  */
-public interface ReplicationQueueProvider {
+public interface ReplicationQueueProvider extends ReplicationComponent {
 
     /**
      * provide a named queue for the given agent or creates it if the queue doesn't exist

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/transport/authentication/TransportAuthenticationProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/transport/authentication/TransportAuthenticationProvider.java?rev=1634582&r1=1634581&r2=1634582&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/transport/authentication/TransportAuthenticationProvider.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/transport/authentication/TransportAuthenticationProvider.java Mon Oct 27 15:57:12 2014
@@ -18,11 +18,13 @@
  */
 package org.apache.sling.replication.transport.authentication;
 
+import org.apache.sling.replication.component.ReplicationComponent;
+
 /**
  * A <code>TransportAuthenticationProvider</code> is responsible for authentication of instances sending and
  * receiving replication items via {@link org.apache.sling.replication.transport.ReplicationTransportHandler}s
  */
-public interface TransportAuthenticationProvider<A, T> {
+public interface TransportAuthenticationProvider<A, T> extends ReplicationComponent {
 
     /**
      * check if this provider is able to authenticate objects belonging to given 'authenticable' class.

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/ReplicationTrigger.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/ReplicationTrigger.java?rev=1634582&r1=1634581&r2=1634582&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/ReplicationTrigger.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/ReplicationTrigger.java Mon Oct 27 15:57:12 2014
@@ -18,10 +18,12 @@
  */
 package org.apache.sling.replication.trigger;
 
+import org.apache.sling.replication.component.ReplicationComponent;
+
 /**
  * a replication trigger
  */
-public interface ReplicationTrigger {
+public interface ReplicationTrigger extends ReplicationComponent {
 
     /**
      * register a replication trigger

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/ChainReplicateReplicationTrigger.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/ChainReplicateReplicationTrigger.java?rev=1634582&r1=1634581&r2=1634582&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/ChainReplicateReplicationTrigger.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/ChainReplicateReplicationTrigger.java Mon Oct 27 15:57:12 2014
@@ -23,9 +23,9 @@ import java.util.Hashtable;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
-import org.apache.sling.replication.component.ReplicationComponent;
 import org.apache.sling.replication.communication.ReplicationActionType;
 import org.apache.sling.replication.communication.ReplicationRequest;
+import org.apache.sling.replication.component.ManagedReplicationComponent;
 import org.apache.sling.replication.event.ReplicationEvent;
 import org.apache.sling.replication.event.ReplicationEventType;
 import org.apache.sling.replication.trigger.ReplicationTrigger;
@@ -41,7 +41,7 @@ import org.slf4j.LoggerFactory;
 /**
  * {@link org.apache.sling.replication.trigger.ReplicationTrigger} for chain replication upon a certain {@link org.apache.sling.replication.event.ReplicationEventType}
  */
-public class ChainReplicateReplicationTrigger implements ReplicationTrigger, ReplicationComponent {
+public class ChainReplicateReplicationTrigger implements ReplicationTrigger, ManagedReplicationComponent {
 
     public static final String PATH = "path";
 

Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/ResourceEventReplicationTrigger.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/ResourceEventReplicationTrigger.java?rev=1634582&r1=1634581&r2=1634582&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/ResourceEventReplicationTrigger.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/ResourceEventReplicationTrigger.java Mon Oct 27 15:57:12 2014
@@ -24,6 +24,7 @@ import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.sling.api.SlingConstants;
+import org.apache.sling.replication.component.ManagedReplicationComponent;
 import org.apache.sling.replication.component.ReplicationComponent;
 import org.apache.sling.replication.communication.ReplicationActionType;
 import org.apache.sling.replication.communication.ReplicationRequest;
@@ -41,7 +42,7 @@ import org.slf4j.LoggerFactory;
  * {@link org.apache.sling.replication.trigger.ReplicationTrigger} for triggering a specific handler (e.g. agent) upon
  * node / properties being changed under a certain path
  */
-public class ResourceEventReplicationTrigger implements ReplicationTrigger, ReplicationComponent {
+public class ResourceEventReplicationTrigger implements ReplicationTrigger, ManagedReplicationComponent {
 
 
     private final Logger log = LoggerFactory.getLogger(getClass());