Author: tommaso
Date: Fri Oct  7 13:42:17 2016
New Revision: 1763764

URL: http://svn.apache.org/viewvc?rev=1763764&view=rev
Log:
SLING-6101 - introduced agent mbeans, patch by Simone Tripodi

Added:
    
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/
    
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/ForwardDistributionAgentMBean.java
   (with props)
    
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/ForwardDistributionAgentMBeanImpl.java
   (with props)
    
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/QueueDistributionAgentMBean.java
   (with props)
    
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/QueueDistributionAgentMBeanImpl.java
   (with props)
    
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/ReverseDistributionAgentMBean.java
   (with props)
    
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/ReverseDistributionAgentMBeanImpl.java
   (with props)
    
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/SimpleDistributionAgentMBean.java
   (with props)
    
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/SimpleDistributionAgentMBeanImpl.java
   (with props)
    
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/SyncDistributionAgentMBean.java
   (with props)
    
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/SyncDistributionAgentMBeanImpl.java
   (with props)
Modified:
    
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/AbstractDistributionAgentFactory.java
    
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ForwardDistributionAgentFactory.java
    
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/QueueDistributionAgentFactory.java
    
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ReverseDistributionAgentFactory.java
    
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentFactory.java
    
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SyncDistributionAgentFactory.java

Modified: 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/AbstractDistributionAgentFactory.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/AbstractDistributionAgentFactory.java?rev=1763764&r1=1763763&r2=1763764&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/AbstractDistributionAgentFactory.java
 (original)
+++ 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/AbstractDistributionAgentFactory.java
 Fri Oct  7 13:42:17 2016
@@ -24,6 +24,8 @@ import java.util.List;
 import java.util.Map;
 import java.util.concurrent.CopyOnWriteArrayList;
 
+import javax.management.ObjectName;
+
 import org.apache.sling.commons.osgi.PropertiesUtil;
 import org.apache.sling.distribution.agent.DistributionAgent;
 import 
org.apache.sling.distribution.component.impl.DistributionComponentConstants;
@@ -41,7 +43,7 @@ import org.slf4j.LoggerFactory;
 /**
  * An abstract OSGi service factory for registering {@link 
org.apache.sling.distribution.agent.impl.SimpleDistributionAgent}s
  */
-abstract class AbstractDistributionAgentFactory {
+abstract class AbstractDistributionAgentFactory<DistributionAgentMBeanType> {
     private final Logger log = LoggerFactory.getLogger(getClass());
 
     private static final String NAME = DistributionComponentConstants.PN_NAME;
@@ -54,14 +56,20 @@ abstract class AbstractDistributionAgent
 
     static final String LOG_LEVEL = "log.level";
 
+    private final Class<DistributionAgentMBeanType> distributionAgentMBeanType;
 
     private ServiceRegistration componentReg;
+    private ServiceRegistration mbeanServiceRegistration;
     private String agentName;
     private final List<DistributionTrigger> triggers = new 
CopyOnWriteArrayList<DistributionTrigger>();
     private boolean triggersEnabled = false;
 
     private SimpleDistributionAgent agent;
 
+    public AbstractDistributionAgentFactory(Class<DistributionAgentMBeanType> 
distributionAgentMBeanType) {
+        this.distributionAgentMBeanType = distributionAgentMBeanType;
+    }
+
     void activate(BundleContext context, Map<String, Object> config) {
         log.info("activating with config {}", 
OsgiUtils.osgiPropertyMapToString(config));
 
@@ -115,12 +123,19 @@ abstract class AbstractDistributionAgent
                     componentReg = 
context.registerService(DistributionAgent.class.getName(), agent, props);
                     agent.enable();
 
+
                     if (triggersEnabled) {
                         for (DistributionTrigger trigger : triggers) {
                             agent.enableTrigger(trigger);
                         }
                     }
 
+                    Dictionary<String, String> mbeanProps = new 
Hashtable<String, String>();
+                    mbeanProps.put("jmx.objectname", 
"org.apache.sling.distribution:type=agent,id=" + ObjectName.quote(agentName));
+
+                    DistributionAgentMBeanType mbean = createMBeanAgent(agent, 
config);
+                    mbeanServiceRegistration = 
context.registerService(distributionAgentMBeanType.getName(), mbean, 
mbeanProps);
+
                 }
 
                 log.info("activated agent {}", agentName);
@@ -160,15 +175,29 @@ abstract class AbstractDistributionAgent
                 agent.disable();
             }
 
-            componentReg.unregister();
-            componentReg = null;
+            if (safeUnregister(componentReg)) {
+                componentReg = null;
+            }
             agent = null;
         }
 
+        if (safeUnregister(mbeanServiceRegistration)) {
+            mbeanServiceRegistration = null;
+        }
+
         log.info("deactivated agent {}", agentName);
     }
 
+    private static boolean safeUnregister(ServiceRegistration 
serviceRegistration) {
+        if (serviceRegistration != null) {
+            serviceRegistration.unregister();
+            return true;
+        }
+        return false;
+    }
 
     protected abstract SimpleDistributionAgent createAgent(String agentName, 
BundleContext context, Map<String, Object> config, DefaultDistributionLog 
distributionLog);
 
+    protected abstract DistributionAgentMBeanType 
createMBeanAgent(DistributionAgent agent, Map<String, Object> 
osgiConfiguration);
+
 }

Modified: 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ForwardDistributionAgentFactory.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ForwardDistributionAgentFactory.java?rev=1763764&r1=1763763&r2=1763764&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ForwardDistributionAgentFactory.java
 (original)
+++ 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ForwardDistributionAgentFactory.java
 Fri Oct  7 13:42:17 2016
@@ -39,10 +39,13 @@ import org.apache.sling.api.resource.Res
 import org.apache.sling.commons.osgi.PropertiesUtil;
 import org.apache.sling.commons.scheduler.Scheduler;
 import org.apache.sling.distribution.DistributionRequestType;
+import org.apache.sling.distribution.agent.DistributionAgent;
 import 
org.apache.sling.distribution.component.impl.DistributionComponentConstants;
 import org.apache.sling.distribution.component.impl.SettingsUtils;
 import org.apache.sling.distribution.event.impl.DistributionEventFactory;
 import org.apache.sling.distribution.log.impl.DefaultDistributionLog;
+import 
org.apache.sling.distribution.monitor.impl.ForwardDistributionAgentMBean;
+import 
org.apache.sling.distribution.monitor.impl.ForwardDistributionAgentMBeanImpl;
 import org.apache.sling.distribution.packaging.DistributionPackageBuilder;
 import org.apache.sling.distribution.packaging.DistributionPackageExporter;
 import org.apache.sling.distribution.packaging.DistributionPackageImporter;
@@ -78,7 +81,7 @@ import org.osgi.service.cm.Configuration
         policy = ReferencePolicy.DYNAMIC, cardinality = 
ReferenceCardinality.OPTIONAL_MULTIPLE,
         bind = "bindDistributionTrigger", unbind = "unbindDistributionTrigger")
 @Property(name = "webconsole.configurationFactory.nameHint", value = "Agent 
name: {name}")
-public class ForwardDistributionAgentFactory extends 
AbstractDistributionAgentFactory {
+public class ForwardDistributionAgentFactory extends 
AbstractDistributionAgentFactory<ForwardDistributionAgentMBean> {
 
     @Property(label = "Name", description = "The name of the agent.")
     public static final String NAME = DistributionComponentConstants.PN_NAME;
@@ -198,6 +201,10 @@ public class ForwardDistributionAgentFac
     @Reference
     private ConfigurationAdmin configAdmin;
 
+    public ForwardDistributionAgentFactory() {
+        super(ForwardDistributionAgentMBean.class);
+    }
+
     @Activate
     protected void activate(BundleContext context, Map<String, Object> config) 
{
         super.activate(context, config);
@@ -300,4 +307,10 @@ public class ForwardDistributionAgentFac
 
 
     }
+
+    @Override
+    protected ForwardDistributionAgentMBean createMBeanAgent(DistributionAgent 
agent, Map<String, Object> osgiConfiguration) {
+        return new ForwardDistributionAgentMBeanImpl(agent, osgiConfiguration);
+    }
+
 }

Modified: 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/QueueDistributionAgentFactory.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/QueueDistributionAgentFactory.java?rev=1763764&r1=1763763&r2=1763764&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/QueueDistributionAgentFactory.java
 (original)
+++ 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/QueueDistributionAgentFactory.java
 Fri Oct  7 13:42:17 2016
@@ -33,10 +33,13 @@ import org.apache.jackrabbit.vault.packa
 import org.apache.sling.api.resource.ResourceResolverFactory;
 import org.apache.sling.commons.osgi.PropertiesUtil;
 import org.apache.sling.distribution.DistributionRequestType;
+import org.apache.sling.distribution.agent.DistributionAgent;
 import 
org.apache.sling.distribution.component.impl.DistributionComponentConstants;
 import org.apache.sling.distribution.component.impl.SettingsUtils;
 import org.apache.sling.distribution.event.impl.DistributionEventFactory;
 import org.apache.sling.distribution.log.impl.DefaultDistributionLog;
+import org.apache.sling.distribution.monitor.impl.QueueDistributionAgentMBean;
+import 
org.apache.sling.distribution.monitor.impl.QueueDistributionAgentMBeanImpl;
 import org.apache.sling.distribution.packaging.DistributionPackageBuilder;
 import org.apache.sling.distribution.packaging.DistributionPackageExporter;
 import 
org.apache.sling.distribution.packaging.impl.exporter.LocalDistributionPackageExporter;
@@ -68,7 +71,7 @@ import org.osgi.framework.BundleContext;
         policy = ReferencePolicy.DYNAMIC, cardinality = 
ReferenceCardinality.OPTIONAL_MULTIPLE,
         bind = "bindDistributionTrigger", unbind = "unbindDistributionTrigger")
 @Property(name="webconsole.configurationFactory.nameHint", value="Agent name: 
{name}")
-public class QueueDistributionAgentFactory extends 
AbstractDistributionAgentFactory {
+public class QueueDistributionAgentFactory extends 
AbstractDistributionAgentFactory<QueueDistributionAgentMBean> {
 
     @Property(label = "Name", description = "The name of the agent.")
     public static final String NAME = DistributionComponentConstants.PN_NAME;
@@ -138,6 +141,10 @@ public class QueueDistributionAgentFacto
     @Reference
     private SlingRepository slingRepository;
 
+    public QueueDistributionAgentFactory() {
+        super(QueueDistributionAgentMBean.class);
+    }
+
     @Activate
     protected void activate(BundleContext context, Map<String, Object> config) 
{
         super.activate(context, config);
@@ -187,4 +194,10 @@ public class QueueDistributionAgentFacto
                 queueProvider, exportQueueStrategy, null, 
distributionEventFactory, resourceResolverFactory, slingRepository,
                 distributionLog, allowedRequests, allowedRoots, 0);
     }
+
+    @Override
+    protected QueueDistributionAgentMBean createMBeanAgent(DistributionAgent 
agent, Map<String, Object> osgiConfiguration) {
+        return new QueueDistributionAgentMBeanImpl(agent, osgiConfiguration);
+    }
+
 }

Modified: 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ReverseDistributionAgentFactory.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ReverseDistributionAgentFactory.java?rev=1763764&r1=1763763&r2=1763764&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ReverseDistributionAgentFactory.java
 (original)
+++ 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ReverseDistributionAgentFactory.java
 Fri Oct  7 13:42:17 2016
@@ -35,10 +35,14 @@ import org.apache.jackrabbit.vault.packa
 import org.apache.sling.api.resource.ResourceResolverFactory;
 import org.apache.sling.commons.osgi.PropertiesUtil;
 import org.apache.sling.distribution.DistributionRequestType;
+import org.apache.sling.distribution.agent.DistributionAgent;
 import 
org.apache.sling.distribution.component.impl.DistributionComponentConstants;
 import org.apache.sling.distribution.component.impl.SettingsUtils;
 import org.apache.sling.distribution.event.impl.DistributionEventFactory;
 import org.apache.sling.distribution.log.impl.DefaultDistributionLog;
+import 
org.apache.sling.distribution.monitor.impl.ReverseDistributionAgentMBean;
+import 
org.apache.sling.distribution.monitor.impl.ReverseDistributionAgentMBeanImpl;
+import org.apache.sling.distribution.packaging.DistributionPackageBuilder;
 import org.apache.sling.distribution.packaging.DistributionPackageExporter;
 import org.apache.sling.distribution.packaging.DistributionPackageImporter;
 import 
org.apache.sling.distribution.packaging.impl.exporter.RemoteDistributionPackageExporter;
@@ -47,7 +51,6 @@ import org.apache.sling.distribution.que
 import 
org.apache.sling.distribution.queue.impl.DistributionQueueDispatchingStrategy;
 import org.apache.sling.distribution.queue.impl.SingleQueueDispatchingStrategy;
 import 
org.apache.sling.distribution.queue.impl.jobhandling.JobHandlingDistributionQueueProvider;
-import org.apache.sling.distribution.packaging.DistributionPackageBuilder;
 import 
org.apache.sling.distribution.transport.DistributionTransportSecretProvider;
 import org.apache.sling.distribution.trigger.DistributionTrigger;
 import org.apache.sling.event.jobs.JobManager;
@@ -71,7 +74,7 @@ import org.osgi.framework.BundleContext;
         policy = ReferencePolicy.DYNAMIC, cardinality = 
ReferenceCardinality.OPTIONAL_MULTIPLE,
         bind = "bindDistributionTrigger", unbind = "unbindDistributionTrigger")
 @Property(name="webconsole.configurationFactory.nameHint", value="Agent name: 
{name}")
-public class ReverseDistributionAgentFactory extends 
AbstractDistributionAgentFactory {
+public class ReverseDistributionAgentFactory extends 
AbstractDistributionAgentFactory<ReverseDistributionAgentMBean> {
 
     @Property(label = "Name", description = "The name of the agent.")
     public static final String NAME = DistributionComponentConstants.PN_NAME;
@@ -154,6 +157,9 @@ public class ReverseDistributionAgentFac
     @Reference
     private SlingRepository slingRepository;
 
+    public ReverseDistributionAgentFactory() {
+        super(ReverseDistributionAgentMBean.class);
+    }
 
     @Activate
     protected void activate(BundleContext context, Map<String, Object> config) 
{
@@ -201,4 +207,10 @@ public class ReverseDistributionAgentFac
                 queueProvider, exportQueueStrategy, importQueueStrategy, 
distributionEventFactory, resourceResolverFactory, slingRepository, 
distributionLog, allowedRequests, null, 0);
 
     }
+
+    @Override
+    protected ReverseDistributionAgentMBean createMBeanAgent(DistributionAgent 
agent, Map<String, Object> osgiConfiguration) {
+        return new ReverseDistributionAgentMBeanImpl(agent, osgiConfiguration);
+    }
+
 }

Modified: 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentFactory.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentFactory.java?rev=1763764&r1=1763763&r2=1763764&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentFactory.java
 (original)
+++ 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentFactory.java
 Fri Oct  7 13:42:17 2016
@@ -33,9 +33,12 @@ import org.apache.felix.scr.annotations.
 import org.apache.felix.scr.annotations.ReferencePolicy;
 import org.apache.sling.api.resource.ResourceResolverFactory;
 import org.apache.sling.commons.osgi.PropertiesUtil;
+import org.apache.sling.distribution.agent.DistributionAgent;
 import 
org.apache.sling.distribution.component.impl.DistributionComponentConstants;
 import org.apache.sling.distribution.event.impl.DistributionEventFactory;
 import org.apache.sling.distribution.log.impl.DefaultDistributionLog;
+import org.apache.sling.distribution.monitor.impl.SimpleDistributionAgentMBean;
+import 
org.apache.sling.distribution.monitor.impl.SimpleDistributionAgentMBeanImpl;
 import org.apache.sling.distribution.packaging.DistributionPackageExporter;
 import org.apache.sling.distribution.packaging.DistributionPackageImporter;
 import org.apache.sling.distribution.queue.DistributionQueueProvider;
@@ -62,7 +65,7 @@ import org.osgi.framework.BundleContext;
         policy = ReferencePolicy.DYNAMIC, cardinality = 
ReferenceCardinality.OPTIONAL_MULTIPLE,
         bind = "bindDistributionTrigger", unbind = "unbindDistributionTrigger")
 @Property(name="webconsole.configurationFactory.nameHint", value="Agent name: 
{name}")
-public class SimpleDistributionAgentFactory extends 
AbstractDistributionAgentFactory {
+public class SimpleDistributionAgentFactory extends 
AbstractDistributionAgentFactory<SimpleDistributionAgentMBean> {
 
     @Property(label = "Name", description = "The name of the agent.")
     public static final String NAME = DistributionComponentConstants.PN_NAME;
@@ -132,6 +135,9 @@ public class SimpleDistributionAgentFact
     @Reference
     private SlingRepository slingRepository;
 
+    public SimpleDistributionAgentFactory() {
+        super(SimpleDistributionAgentMBean.class);
+    }
 
     @Activate
     protected void activate(BundleContext context, Map<String, Object> config) 
{
@@ -171,4 +177,10 @@ public class SimpleDistributionAgentFact
                 distributionLog, null, null, 0);
 
     }
+
+    @Override
+    protected SimpleDistributionAgentMBean createMBeanAgent(DistributionAgent 
agent, Map<String, Object> osgiConfiguration) {
+        return new SimpleDistributionAgentMBeanImpl(agent, osgiConfiguration);
+    }
+
 }

Modified: 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SyncDistributionAgentFactory.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SyncDistributionAgentFactory.java?rev=1763764&r1=1763763&r2=1763764&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SyncDistributionAgentFactory.java
 (original)
+++ 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SyncDistributionAgentFactory.java
 Fri Oct  7 13:42:17 2016
@@ -37,10 +37,13 @@ import org.apache.jackrabbit.vault.packa
 import org.apache.sling.api.resource.ResourceResolverFactory;
 import org.apache.sling.commons.osgi.PropertiesUtil;
 import org.apache.sling.distribution.DistributionRequestType;
+import org.apache.sling.distribution.agent.DistributionAgent;
 import 
org.apache.sling.distribution.component.impl.DistributionComponentConstants;
 import org.apache.sling.distribution.component.impl.SettingsUtils;
 import org.apache.sling.distribution.event.impl.DistributionEventFactory;
 import org.apache.sling.distribution.log.impl.DefaultDistributionLog;
+import org.apache.sling.distribution.monitor.impl.SyncDistributionAgentMBean;
+import 
org.apache.sling.distribution.monitor.impl.SyncDistributionAgentMBeanImpl;
 import org.apache.sling.distribution.packaging.DistributionPackageBuilder;
 import org.apache.sling.distribution.packaging.DistributionPackageExporter;
 import org.apache.sling.distribution.packaging.DistributionPackageImporter;
@@ -74,7 +77,7 @@ import org.osgi.framework.BundleContext;
         policy = ReferencePolicy.DYNAMIC, cardinality = 
ReferenceCardinality.OPTIONAL_MULTIPLE,
         bind = "bindDistributionTrigger", unbind = "unbindDistributionTrigger")
 @Property(name="webconsole.configurationFactory.nameHint", value="Agent name: 
{name}")
-public class SyncDistributionAgentFactory extends 
AbstractDistributionAgentFactory {
+public class SyncDistributionAgentFactory extends 
AbstractDistributionAgentFactory<SyncDistributionAgentMBean> {
 
     @Property(label = "Name", description = "The name of the agent.")
     public static final String NAME = DistributionComponentConstants.PN_NAME;
@@ -178,6 +181,10 @@ public class SyncDistributionAgentFactor
     @Reference
     private SlingRepository slingRepository;
 
+    public SyncDistributionAgentFactory() {
+        super(SyncDistributionAgentMBean.class);
+    }
+
     @Activate
     protected void activate(BundleContext context, Map<String, Object> config) 
{
         super.activate(context, config);
@@ -252,4 +259,10 @@ public class SyncDistributionAgentFactor
                 distributionLog, allowedRequests, null, retryAttepts);
 
     }
+
+    @Override
+    protected SyncDistributionAgentMBean createMBeanAgent(DistributionAgent 
agent, Map<String, Object> osgiConfiguration) {
+        return new SyncDistributionAgentMBeanImpl(agent, osgiConfiguration);
+    }
+
 }

Added: 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/ForwardDistributionAgentMBean.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/ForwardDistributionAgentMBean.java?rev=1763764&view=auto
==============================================================================
--- 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/ForwardDistributionAgentMBean.java
 (added)
+++ 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/ForwardDistributionAgentMBean.java
 Fri Oct  7 13:42:17 2016
@@ -0,0 +1,144 @@
+/*
+ * 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.distribution.monitor.impl;
+
+/**
+ * The ForwardDistributionAgent MBean definition.
+ */
+public interface ForwardDistributionAgentMBean {
+
+    /**
+     * The name of the agent.
+     *
+     * @return the Name
+     */
+    String getName();
+
+    /**
+     * The display friendly title of the agent.
+     *
+     * @return the Title
+     */
+    String getTitle();
+
+    /**
+     * The display friendly details of the agent.
+     *
+     * @return the Details
+     */
+    String getDetails();
+
+    /**
+     * Whether or not to start the distribution agent.
+     *
+     * @return the Enabled
+     */
+    boolean isEnabled();
+
+    /**
+     * The name of the service used to access the repository.
+     *
+     * @return the Service Name
+     */
+    String getServiceName();
+
+    /**
+     * The log level recorded in the transient log accessible via http.
+     *
+     * @return the Log Level
+     */
+    String getLogLevel();
+
+    /**
+     * If set the agent will allow only distribution requests under the 
specified roots.
+     *
+     * @return the Allowed roots
+     */
+    String getAllowedRoots();
+
+    /**
+     * Whether or not the distribution agent should process packages in the 
queues.
+     *
+     * @return the Queue Processing Enabled
+     */
+    boolean isQueueProcessingEnabled();
+
+    /**
+     * List of endpoints to which packages are sent (imported). The list can 
be given as a map in case a queue should be configured for each endpoint, e.g. 
queueName=http://...
+     *
+     * @return the Importer Endpoints
+     */
+    String getPackageImporterEndpoints();
+
+    /**
+     * List of queues that should be disabled.These queues will gather all the 
packages until they are removed explicitly.
+     *
+     * @return the Passive queues
+     */
+    String getPassiveQueues();
+
+    /**
+     * List of priority queues that should used for specific paths.The 
selector format is  {queuePrefix}[|{mainQueueMatcher}]={pathMatcher}, e.g. 
french=/content/fr.*
+     *
+     * @return the Priority queues
+     */
+    String getPriorityQueues();
+
+    /**
+     * The strategy to apply after a certain number of failed retries.
+     *
+     * @return the Retry Strategy
+     */
+    String getRetryStrategy();
+
+    /**
+     * The number of times to retry until the retry strategy is applied.
+     *
+     * @return the Retry attempts
+     */
+    int getRetryAttempts();
+
+    /**
+     * The queue provider implementation.
+     *
+     * @return the Queue provider
+     */
+    String getQueueProvider();
+
+    /**
+     * Whether or not to use a separate delivery queue to maximize transport 
throughput when queue has more than 100 items
+     *
+     * @return the Async delivery
+     */
+    boolean isAsyncDelivery();
+
+    /**
+     * The distribution agent status, usually one of:
+     * paused
+     * idle
+     * running
+     * blocked
+     *
+     *
+     * @return the distribution agent status
+     * @see org.apache.sling.distribution.agent.DistributionAgentState
+     */
+    String getStatus();
+
+}

Propchange: 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/ForwardDistributionAgentMBean.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/ForwardDistributionAgentMBeanImpl.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/ForwardDistributionAgentMBeanImpl.java?rev=1763764&view=auto
==============================================================================
--- 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/ForwardDistributionAgentMBeanImpl.java
 (added)
+++ 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/ForwardDistributionAgentMBeanImpl.java
 Fri Oct  7 13:42:17 2016
@@ -0,0 +1,120 @@
+/*/*
+ * 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.distribution.monitor.impl;
+
+import java.util.Map;
+
+import org.apache.sling.commons.osgi.PropertiesUtil;
+import org.apache.sling.distribution.agent.DistributionAgent;
+
+/**
+ * The ForwardDistributionAgent MBean implementation, based on the OSGi 
configuration.
+ */
+public final class ForwardDistributionAgentMBeanImpl implements 
ForwardDistributionAgentMBean {
+
+    private final DistributionAgent agent;
+
+    private final Map<String, Object> osgiConfiguration;
+
+    public ForwardDistributionAgentMBeanImpl(DistributionAgent agent, 
Map<String, Object> osgiConfiguration) {
+        this.agent = agent;
+        this.osgiConfiguration = osgiConfiguration;
+    }
+
+    @Override
+    public String getName() {
+        return PropertiesUtil.toString(osgiConfiguration.get("name"), null);
+    }
+
+    @Override
+    public String getTitle() {
+        return PropertiesUtil.toString(osgiConfiguration.get("title"), null);
+    }
+
+    @Override
+    public String getDetails() {
+        return PropertiesUtil.toString(osgiConfiguration.get("details"), null);
+    }
+
+    @Override
+    public boolean isEnabled() {
+        return PropertiesUtil.toBoolean(osgiConfiguration.get("enabled"), 
true);
+    }
+
+    @Override
+    public String getServiceName() {
+        return PropertiesUtil.toString(osgiConfiguration.get("serviceName"), 
null);
+    }
+
+    @Override
+    public String getLogLevel() {
+        return PropertiesUtil.toString(osgiConfiguration.get("log.level"), 
"info");
+    }
+
+    @Override
+    public String getAllowedRoots() {
+        return PropertiesUtil.toString(osgiConfiguration.get("allowed.roots"), 
null);
+    }
+
+    @Override
+    public boolean isQueueProcessingEnabled() {
+        return 
PropertiesUtil.toBoolean(osgiConfiguration.get("queue.processing.enabled"), 
true);
+    }
+
+    @Override
+    public String getPackageImporterEndpoints() {
+        return 
PropertiesUtil.toString(osgiConfiguration.get("packageImporter.endpoints"), 
null);
+    }
+
+    @Override
+    public String getPassiveQueues() {
+        return PropertiesUtil.toString(osgiConfiguration.get("passiveQueues"), 
null);
+    }
+
+    @Override
+    public String getPriorityQueues() {
+        return 
PropertiesUtil.toString(osgiConfiguration.get("priorityQueues"), null);
+    }
+
+    @Override
+    public String getRetryStrategy() {
+        return 
PropertiesUtil.toString(osgiConfiguration.get("retry.strategy"), "none");
+    }
+
+    @Override
+    public int getRetryAttempts() {
+        return 
PropertiesUtil.toInteger(osgiConfiguration.get("retry.attempts"), 100);
+    }
+
+    @Override
+    public String getQueueProvider() {
+        return 
PropertiesUtil.toString(osgiConfiguration.get("queue.provider"), "jobs");
+    }
+
+    @Override
+    public boolean isAsyncDelivery() {
+        return 
PropertiesUtil.toBoolean(osgiConfiguration.get("async.delivery"), false);
+    }
+
+
+    @Override
+    public String getStatus() {
+        return agent.getState().name().toLowerCase();
+    }
+}

Propchange: 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/ForwardDistributionAgentMBeanImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/QueueDistributionAgentMBean.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/QueueDistributionAgentMBean.java?rev=1763764&view=auto
==============================================================================
--- 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/QueueDistributionAgentMBean.java
 (added)
+++ 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/QueueDistributionAgentMBean.java
 Fri Oct  7 13:42:17 2016
@@ -0,0 +1,95 @@
+/*
+ * 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.distribution.monitor.impl;
+
+/**
+ * The QueueDistributionAgent MBean definition.
+ */
+public interface QueueDistributionAgentMBean {
+
+    /**
+     * The name of the agent.
+     *
+     * @return the Name
+     */
+    String getName();
+
+    /**
+     * The display friendly title of the agent.
+     *
+     * @return the Title
+     */
+    String getTitle();
+
+    /**
+     * The display friendly details of the agent.
+     *
+     * @return the Details
+     */
+    String getDetails();
+
+    /**
+     * Whether or not to start the distribution agent.
+     *
+     * @return the Enabled
+     */
+    boolean isEnabled();
+
+    /**
+     * The name of the service used to access the repository.
+     *
+     * @return the Service Name
+     */
+    String getServiceName();
+
+    /**
+     * The log level recorded in the transient log accessible via http.
+     *
+     * @return the Log Level
+     */
+    String getLogLevel();
+
+    /**
+     * If set the agent will allow only distribution requests under the 
specified roots.
+     *
+     * @return the Allowed roots
+     */
+    String getAllowedRoots();
+
+    /**
+     * List of priority queues that should used for specific paths.The 
selector format is  {queuePrefix}[|{mainQueueMatcher}]={pathMatcher}, e.g. 
french=/content/fr.*
+     *
+     * @return the Priority queues
+     */
+    String getPriorityQueues();
+
+    /**
+     * The distribution agent status, usually one of:
+     * paused
+     * idle
+     * running
+     * blocked
+     *
+     *
+     * @return the distribution agent status
+     * @see org.apache.sling.distribution.agent.DistributionAgentState
+     */
+    String getStatus();
+
+}

Propchange: 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/QueueDistributionAgentMBean.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/QueueDistributionAgentMBeanImpl.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/QueueDistributionAgentMBeanImpl.java?rev=1763764&view=auto
==============================================================================
--- 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/QueueDistributionAgentMBeanImpl.java
 (added)
+++ 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/QueueDistributionAgentMBeanImpl.java
 Fri Oct  7 13:42:17 2016
@@ -0,0 +1,85 @@
+/*/*
+ * 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.distribution.monitor.impl;
+
+import java.util.Map;
+
+import org.apache.sling.commons.osgi.PropertiesUtil;
+import org.apache.sling.distribution.agent.DistributionAgent;
+
+/**
+ * The QueueDistributionAgent MBean implementation, based on the OSGi 
configuration.
+ */
+public final class QueueDistributionAgentMBeanImpl implements 
QueueDistributionAgentMBean {
+
+    private final DistributionAgent agent;
+
+    private final Map<String, Object> osgiConfiguration;
+
+    public QueueDistributionAgentMBeanImpl(DistributionAgent agent, 
Map<String, Object> osgiConfiguration) {
+        this.agent = agent;
+        this.osgiConfiguration = osgiConfiguration;
+    }
+
+    @Override
+    public String getName() {
+        return PropertiesUtil.toString(osgiConfiguration.get("name"), null);
+    }
+
+    @Override
+    public String getTitle() {
+        return PropertiesUtil.toString(osgiConfiguration.get("title"), null);
+    }
+
+    @Override
+    public String getDetails() {
+        return PropertiesUtil.toString(osgiConfiguration.get("details"), null);
+    }
+
+    @Override
+    public boolean isEnabled() {
+        return PropertiesUtil.toBoolean(osgiConfiguration.get("enabled"), 
true);
+    }
+
+    @Override
+    public String getServiceName() {
+        return PropertiesUtil.toString(osgiConfiguration.get("serviceName"), 
null);
+    }
+
+    @Override
+    public String getLogLevel() {
+        return PropertiesUtil.toString(osgiConfiguration.get("log.level"), 
"info");
+    }
+
+    @Override
+    public String getAllowedRoots() {
+        return PropertiesUtil.toString(osgiConfiguration.get("allowed.roots"), 
null);
+    }
+
+    @Override
+    public String getPriorityQueues() {
+        return 
PropertiesUtil.toString(osgiConfiguration.get("priorityQueues"), null);
+    }
+
+    @Override
+    public String getStatus() {
+        return agent.getState().name().toLowerCase();
+    }
+
+}

Propchange: 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/QueueDistributionAgentMBeanImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/ReverseDistributionAgentMBean.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/ReverseDistributionAgentMBean.java?rev=1763764&view=auto
==============================================================================
--- 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/ReverseDistributionAgentMBean.java
 (added)
+++ 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/ReverseDistributionAgentMBean.java
 Fri Oct  7 13:42:17 2016
@@ -0,0 +1,102 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sling.distribution.monitor.impl;
+
+/**
+ * The ReverseDistributionAgent MBean definition.
+ */
+public interface ReverseDistributionAgentMBean {
+
+    /**
+     * The name of the agent.
+     *
+     * @return the Name
+     */
+    String getName();
+
+    /**
+     * The display friendly title of the agent.
+     *
+     * @return the Title
+     */
+    String getTitle();
+
+    /**
+     * The display friendly details of the agent.
+     *
+     * @return the Details
+     */
+    String getDetails();
+
+    /**
+     * Whether or not to start the distribution agent.
+     *
+     * @return the Enabled
+     */
+    boolean isEnabled();
+
+    /**
+     * The name of the service used to access the repository.
+     *
+     * @return the Service Name
+     */
+    String getServiceName();
+
+    /**
+     * The log level recorded in the transient log accessible via http.
+     *
+     * @return the Log Level
+     */
+    String getLogLevel();
+
+    /**
+     * Whether or not the distribution agent should process packages in the 
queues.
+     *
+     * @return the Queue Processing Enabled
+     */
+    boolean isQueueProcessingEnabled();
+
+    /**
+     * List of endpoints from which packages are received (exported).
+     *
+     * @return the Importer Endpoints
+     */
+    String getPackageExporterEndpoints();
+
+    /**
+     * Number of subsequent pull requests to make.
+     *
+     * @return the Pull Items
+     */
+    int getPullItems();
+
+    /**
+     * The distribution agent status, usually one of:
+     * paused
+     * idle
+     * running
+     * blocked
+     *
+     *
+     * @return the distribution agent status
+     * @see org.apache.sling.distribution.agent.DistributionAgentState
+     */
+    String getStatus();
+
+}

Propchange: 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/ReverseDistributionAgentMBean.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/ReverseDistributionAgentMBeanImpl.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/ReverseDistributionAgentMBeanImpl.java?rev=1763764&view=auto
==============================================================================
--- 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/ReverseDistributionAgentMBeanImpl.java
 (added)
+++ 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/ReverseDistributionAgentMBeanImpl.java
 Fri Oct  7 13:42:17 2016
@@ -0,0 +1,90 @@
+/*/*
+ * 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.distribution.monitor.impl;
+
+import java.util.Map;
+
+import org.apache.sling.commons.osgi.PropertiesUtil;
+import org.apache.sling.distribution.agent.DistributionAgent;
+
+/**
+ * The ReverseDistributionAgent MBean implementation, based on the OSGi 
configuration.
+ */
+public final class ReverseDistributionAgentMBeanImpl implements 
ReverseDistributionAgentMBean {
+
+    private final DistributionAgent agent;
+
+    private final Map<String, Object> osgiConfiguration;
+
+    public ReverseDistributionAgentMBeanImpl(DistributionAgent agent, 
Map<String, Object> osgiConfiguration) {
+        this.agent = agent;
+        this.osgiConfiguration = osgiConfiguration;
+    }
+
+    @Override
+    public String getName() {
+        return PropertiesUtil.toString(osgiConfiguration.get("name"), null);
+    }
+
+    @Override
+    public String getTitle() {
+        return PropertiesUtil.toString(osgiConfiguration.get("title"), null);
+    }
+
+    @Override
+    public String getDetails() {
+        return PropertiesUtil.toString(osgiConfiguration.get("details"), null);
+    }
+
+    @Override
+    public boolean isEnabled() {
+        return PropertiesUtil.toBoolean(osgiConfiguration.get("enabled"), 
true);
+    }
+
+    @Override
+    public String getServiceName() {
+        return PropertiesUtil.toString(osgiConfiguration.get("serviceName"), 
null);
+    }
+
+    @Override
+    public String getLogLevel() {
+        return PropertiesUtil.toString(osgiConfiguration.get("log.level"), 
"info");
+    }
+
+    @Override
+    public boolean isQueueProcessingEnabled() {
+        return 
PropertiesUtil.toBoolean(osgiConfiguration.get("queue.processing.enabled"), 
true);
+    }
+
+    @Override
+    public String getPackageExporterEndpoints() {
+        return 
PropertiesUtil.toString(osgiConfiguration.get("packageExporter.endpoints"), 
null);
+    }
+
+    @Override
+    public int getPullItems() {
+        return PropertiesUtil.toInteger(osgiConfiguration.get("pull.items"), 
100);
+    }
+
+    @Override
+    public String getStatus() {
+        return agent.getState().name().toLowerCase();
+    }
+
+}

Propchange: 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/ReverseDistributionAgentMBeanImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/SimpleDistributionAgentMBean.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/SimpleDistributionAgentMBean.java?rev=1763764&view=auto
==============================================================================
--- 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/SimpleDistributionAgentMBean.java
 (added)
+++ 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/SimpleDistributionAgentMBean.java
 Fri Oct  7 13:42:17 2016
@@ -0,0 +1,88 @@
+/*
+ * 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.distribution.monitor.impl;
+
+/**
+ * The SimpleDistributionAgent MBean definition.
+ */
+public interface SimpleDistributionAgentMBean {
+
+    /**
+     * The name of the agent.
+     *
+     * @return the Name
+     */
+    String getName();
+
+    /**
+     * The display friendly title of the agent.
+     *
+     * @return the Title
+     */
+    String getTitle();
+
+    /**
+     * The display friendly details of the agent.
+     *
+     * @return the Details
+     */
+    String getDetails();
+
+    /**
+     * Whether or not to start the distribution agent.
+     *
+     * @return the Enabled
+     */
+    boolean isEnabled();
+
+    /**
+     * The name of the service used to access the repository.
+     *
+     * @return the Service Name
+     */
+    String getServiceName();
+
+    /**
+     * The log level recorded in the transient log accessible via http.
+     *
+     * @return the Log Level
+     */
+    String getLogLevel();
+
+    /**
+     * Whether or not the distribution agent should process packages in the 
queues.
+     *
+     * @return the Queue Processing Enabled
+     */
+    boolean isQueueProcessingEnabled();
+
+    /**
+     * The distribution agent status, usually one of:
+     * paused
+     * idle
+     * running
+     * blocked
+     *
+     *
+     * @return the distribution agent status
+     * @see org.apache.sling.distribution.agent.DistributionAgentState
+     */
+    String getStatus();
+
+}

Propchange: 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/SimpleDistributionAgentMBean.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/SimpleDistributionAgentMBeanImpl.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/SimpleDistributionAgentMBeanImpl.java?rev=1763764&view=auto
==============================================================================
--- 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/SimpleDistributionAgentMBeanImpl.java
 (added)
+++ 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/SimpleDistributionAgentMBeanImpl.java
 Fri Oct  7 13:42:17 2016
@@ -0,0 +1,80 @@
+/*/*
+ * 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.distribution.monitor.impl;
+
+import java.util.Map;
+
+import org.apache.sling.commons.osgi.PropertiesUtil;
+import org.apache.sling.distribution.agent.DistributionAgent;
+
+/**
+ * The SimpleDistributionAgent MBean implementation, based on the OSGi 
configuration.
+ */
+public final class SimpleDistributionAgentMBeanImpl implements 
SimpleDistributionAgentMBean {
+
+    private final DistributionAgent agent;
+
+    private final Map<String, Object> osgiConfiguration;
+
+    public SimpleDistributionAgentMBeanImpl(DistributionAgent agent, 
Map<String, Object> osgiConfiguration) {
+        this.agent = agent;
+        this.osgiConfiguration = osgiConfiguration;
+    }
+
+    @Override
+    public String getName() {
+        return PropertiesUtil.toString(osgiConfiguration.get("name"), null);
+    }
+
+    @Override
+    public String getTitle() {
+        return PropertiesUtil.toString(osgiConfiguration.get("title"), null);
+    }
+
+    @Override
+    public String getDetails() {
+        return PropertiesUtil.toString(osgiConfiguration.get("details"), null);
+    }
+
+    @Override
+    public boolean isEnabled() {
+        return PropertiesUtil.toBoolean(osgiConfiguration.get("enabled"), 
true);
+    }
+
+    @Override
+    public String getServiceName() {
+        return PropertiesUtil.toString(osgiConfiguration.get("serviceName"), 
null);
+    }
+
+    @Override
+    public String getLogLevel() {
+        return PropertiesUtil.toString(osgiConfiguration.get("log.level"), 
"info");
+    }
+
+    @Override
+    public boolean isQueueProcessingEnabled() {
+        return 
PropertiesUtil.toBoolean(osgiConfiguration.get("queue.processing.enabled"), 
true);
+    }
+
+    @Override
+    public String getStatus() {
+        return agent.getState().name().toLowerCase();
+    }
+
+}

Propchange: 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/SimpleDistributionAgentMBeanImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/SyncDistributionAgentMBean.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/SyncDistributionAgentMBean.java?rev=1763764&view=auto
==============================================================================
--- 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/SyncDistributionAgentMBean.java
 (added)
+++ 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/SyncDistributionAgentMBean.java
 Fri Oct  7 13:42:17 2016
@@ -0,0 +1,130 @@
+/*
+ * 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.distribution.monitor.impl;
+
+/**
+ * The SyncDistributionAgent MBean definition.
+ */
+public interface SyncDistributionAgentMBean {
+
+    /**
+     * The name of the agent.
+     *
+     * @return the Name
+     */
+    String getName();
+
+    /**
+     * The display friendly title of the agent.
+     *
+     * @return the Title
+     */
+    String getTitle();
+
+    /**
+     * The display friendly details of the agent.
+     *
+     * @return the Details
+     */
+    String getDetails();
+
+    /**
+     * Whether or not to start the distribution agent.
+     *
+     * @return the Enabled
+     */
+    boolean isEnabled();
+
+    /**
+     * The name of the service used to access the repository.
+     *
+     * @return the Service Name
+     */
+    String getServiceName();
+
+    /**
+     * The log level recorded in the transient log accessible via http.
+     *
+     * @return the Log Level
+     */
+    String getLogLevel();
+
+    /**
+     * Whether or not the distribution agent should process packages in the 
queues.
+     *
+     * @return the Queue Processing Enabled
+     */
+    boolean isQueueProcessingEnabled();
+
+    /**
+     * List of queues that should be disabled.These queues will gather all the 
packages until they are removed explicitly.
+     *
+     * @return the Passive queues
+     */
+    String getPassiveQueues();
+
+    /**
+     * List of endpoints from which packages are received (exported)
+     *
+     * @return the Exporter Endpoints
+     */
+    String getPackageExporterEndpoints();
+
+    /**
+     * List of endpoints to which packages are sent (imported). The list can 
be given as a map in case a queue should be configured for each endpoint, e.g. 
queueName=http://...
+     *
+     * @return the Importer Endpoints
+     */
+    String getPackageImporterEndpoints();
+
+    /**
+     * The strategy to apply after a certain number of failed retries.
+     *
+     * @return the Retry Strategy
+     */
+    String getRetryStrategy();
+
+    /**
+     * The number of times to retry until the retry strategy is applied.
+     *
+     * @return the Retry attempts
+     */
+    int getRetryAttempts();
+
+    /**
+     * Number of subsequent pull requests to make.
+     *
+     * @return the Pull Items
+     */
+    int getPullItems();
+
+    /**
+     * The distribution agent status, usually one of:
+     * paused
+     * idle
+     * running
+     * blocked
+     *
+     *
+     * @return the distribution agent status
+     * @see org.apache.sling.distribution.agent.DistributionAgentState
+     */
+    String getStatus();
+
+}

Propchange: 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/SyncDistributionAgentMBean.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/SyncDistributionAgentMBeanImpl.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/SyncDistributionAgentMBeanImpl.java?rev=1763764&view=auto
==============================================================================
--- 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/SyncDistributionAgentMBeanImpl.java
 (added)
+++ 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/SyncDistributionAgentMBeanImpl.java
 Fri Oct  7 13:42:17 2016
@@ -0,0 +1,110 @@
+/*/*
+ * 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.distribution.monitor.impl;
+
+import java.util.Map;
+
+import org.apache.sling.commons.osgi.PropertiesUtil;
+import org.apache.sling.distribution.agent.DistributionAgent;
+
+/**
+ * The SyncDistributionAgent MBean implementation, based on the OSGi 
configuration.
+ */
+public final class SyncDistributionAgentMBeanImpl implements 
SyncDistributionAgentMBean {
+
+    private final DistributionAgent agent;
+
+    private final Map<String, Object> osgiConfiguration;
+
+    public SyncDistributionAgentMBeanImpl(DistributionAgent agent, Map<String, 
Object> osgiConfiguration) {
+        this.agent = agent;
+        this.osgiConfiguration = osgiConfiguration;
+    }
+
+    @Override
+    public String getName() {
+        return PropertiesUtil.toString(osgiConfiguration.get("name"), null);
+    }
+
+    @Override
+    public String getTitle() {
+        return PropertiesUtil.toString(osgiConfiguration.get("title"), null);
+    }
+
+    @Override
+    public String getDetails() {
+        return PropertiesUtil.toString(osgiConfiguration.get("details"), null);
+    }
+
+    @Override
+    public boolean isEnabled() {
+        return PropertiesUtil.toBoolean(osgiConfiguration.get("enabled"), 
true);
+    }
+
+    @Override
+    public String getServiceName() {
+        return PropertiesUtil.toString(osgiConfiguration.get("serviceName"), 
null);
+    }
+
+    @Override
+    public String getLogLevel() {
+        return PropertiesUtil.toString(osgiConfiguration.get("log.level"), 
"info");
+    }
+
+    @Override
+    public boolean isQueueProcessingEnabled() {
+        return 
PropertiesUtil.toBoolean(osgiConfiguration.get("queue.processing.enabled"), 
true);
+    }
+
+    @Override
+    public String getPassiveQueues() {
+        return PropertiesUtil.toString(osgiConfiguration.get("passiveQueues"), 
null);
+    }
+
+    @Override
+    public String getPackageExporterEndpoints() {
+        return 
PropertiesUtil.toString(osgiConfiguration.get("packageExporter.endpoints"), 
null);
+    }
+
+    @Override
+    public String getPackageImporterEndpoints() {
+        return 
PropertiesUtil.toString(osgiConfiguration.get("packageImporter.endpoints"), 
null);
+    }
+
+    @Override
+    public String getRetryStrategy() {
+        return 
PropertiesUtil.toString(osgiConfiguration.get("retry.strategy"), "none");
+    }
+
+    @Override
+    public int getRetryAttempts() {
+        return 
PropertiesUtil.toInteger(osgiConfiguration.get("retry.attempts"), 100);
+    }
+
+    @Override
+    public int getPullItems() {
+        return PropertiesUtil.toInteger(osgiConfiguration.get("pull.items"), 
100);
+    }
+
+    @Override
+    public String getStatus() {
+        return agent.getState().name().toLowerCase();
+    }
+
+}

Propchange: 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/impl/SyncDistributionAgentMBeanImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native


Reply via email to