SLING-6977 - applied patch from Simone Tripodi

git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1800389 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/pom.xml b/pom.xml
index 19c1d47..ab3a1bc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -244,12 +244,10 @@
             <artifactId>servlet-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.compendium</artifactId>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.apache.felix.framework</artifactId>
+            <version>5.6.4</version>
+            <scope>provided</scope>
         </dependency>
         <!-- FILEVAULT -->
         <dependency>
diff --git a/src/main/java/org/apache/sling/distribution/component/impl/DefaultDistributionComponentProvider.java b/src/main/java/org/apache/sling/distribution/component/impl/DefaultDistributionComponentProvider.java
index 86c3e37..cf5a916 100644
--- a/src/main/java/org/apache/sling/distribution/component/impl/DefaultDistributionComponentProvider.java
+++ b/src/main/java/org/apache/sling/distribution/component/impl/DefaultDistributionComponentProvider.java
@@ -59,11 +59,17 @@
     private static final String NAME = DistributionComponentConstants.PN_NAME;
 
     private final Map<String, DistributionComponent<DistributionAgent>> distributionAgentMap = new ConcurrentHashMap<String, DistributionComponent<DistributionAgent>>();
+
     private final Map<String, DistributionComponent<DistributionQueueProvider>> distributionQueueProviderMap = new ConcurrentHashMap<String, DistributionComponent<DistributionQueueProvider>>();
+
     private final Map<String, DistributionComponent<DistributionQueueDispatchingStrategy>> distributionQueueDistributionStrategyMap = new ConcurrentHashMap<String, DistributionComponent<DistributionQueueDispatchingStrategy>>();
+
     private final Map<String, DistributionComponent<DistributionTransportSecretProvider>> distributionTransportSecretProviderMap = new ConcurrentHashMap<String, DistributionComponent<DistributionTransportSecretProvider>>();
+
     private final Map<String, DistributionComponent<DistributionPackageImporter>> distributionPackageImporterMap = new ConcurrentHashMap<String, DistributionComponent<DistributionPackageImporter>>();
+
     private final Map<String, DistributionComponent<DistributionPackageExporter>> distributionPackageExporterMap = new ConcurrentHashMap<String, DistributionComponent<DistributionPackageExporter>>();
+
     private final Map<String, DistributionComponent<DistributionPackageBuilder>> distributionPackageBuilderMap = new ConcurrentHashMap<String, DistributionComponent<DistributionPackageBuilder>>();
 
     public DistributionComponent<?> getComponent(DistributionComponentKind kind, String componentName) {
@@ -92,7 +98,6 @@
         return type.cast(component.getService());
     }
 
-
     @SuppressWarnings({ "unchecked", "rawtypes" })
     private Map<String, DistributionComponent<?>> getComponentMap(Class<?> type) {
         if (type.isAssignableFrom(DistributionAgent.class)) {
@@ -114,83 +119,66 @@
         return null;
     }
 
-    // TODO are these methods still needed?!?
+    // (un)binding methods
 
-    private void bindDistributionQueueProvider(DistributionQueueProvider distributionQueueProvider, Map<String, Object> config) {
-
+    public void bindDistributionQueueProvider(DistributionQueueProvider distributionQueueProvider, Map<String, Object> config) {
         put(DistributionQueueProvider.class, distributionQueueProvider, config);
     }
 
-    private void unbindDistributionQueueProvider(DistributionQueueProvider distributionQueueProvider, Map<String, Object> config) {
-
+    public void unbindDistributionQueueProvider(DistributionQueueProvider distributionQueueProvider, Map<String, Object> config) {
         remove(DistributionQueueProvider.class, distributionQueueProvider, config);
     }
 
-    private void bindDistributionQueueDistributionStrategy(DistributionQueueDispatchingStrategy distributionQueueDispatchingStrategy, Map<String, Object> config) {
-
+    public void bindDistributionQueueDistributionStrategy(DistributionQueueDispatchingStrategy distributionQueueDispatchingStrategy, Map<String, Object> config) {
         put(DistributionQueueDispatchingStrategy.class, distributionQueueDispatchingStrategy, config);
     }
 
-    private void unbindDistributionQueueDistributionStrategy(DistributionQueueDispatchingStrategy distributionQueueDispatchingStrategy, Map<String, Object> config) {
-
+    public void unbindDistributionQueueDistributionStrategy(DistributionQueueDispatchingStrategy distributionQueueDispatchingStrategy, Map<String, Object> config) {
         remove(DistributionQueueDispatchingStrategy.class, distributionQueueDispatchingStrategy, config);
     }
 
-    private void bindDistributionTransportSecretProvider(DistributionTransportSecretProvider distributionTransportSecretProvider, Map<String, Object> config) {
-
+    public void bindDistributionTransportSecretProvider(DistributionTransportSecretProvider distributionTransportSecretProvider, Map<String, Object> config) {
         put(DistributionTransportSecretProvider.class, distributionTransportSecretProvider, config);
-
     }
 
-    private void unbindDistributionTransportSecretProvider(DistributionTransportSecretProvider distributionTransportSecretProvider, Map<String, Object> config) {
-
+    public void unbindDistributionTransportSecretProvider(DistributionTransportSecretProvider distributionTransportSecretProvider, Map<String, Object> config) {
         remove(DistributionTransportSecretProvider.class, distributionTransportSecretProvider, config);
     }
 
-    private void bindDistributionPackageImporter(DistributionPackageImporter distributionPackageImporter, Map<String, Object> config) {
-
+    public void bindDistributionPackageImporter(DistributionPackageImporter distributionPackageImporter, Map<String, Object> config) {
         put(DistributionPackageImporter.class, distributionPackageImporter, config);
     }
 
-    private void unbindDistributionPackageImporter(DistributionPackageImporter distributionPackageImporter, Map<String, Object> config) {
-
+    public void unbindDistributionPackageImporter(DistributionPackageImporter distributionPackageImporter, Map<String, Object> config) {
         remove(DistributionPackageImporter.class, distributionPackageImporter, config);
     }
 
-    private void bindDistributionPackageExporter(DistributionPackageExporter distributionPackageExporter, Map<String, Object> config) {
-
+    public void bindDistributionPackageExporter(DistributionPackageExporter distributionPackageExporter, Map<String, Object> config) {
         put(DistributionPackageExporter.class, distributionPackageExporter, config);
     }
 
-    private void unbindDistributionPackageExporter(DistributionPackageExporter distributionPackageExporter, Map<String, Object> config) {
-
+    public void unbindDistributionPackageExporter(DistributionPackageExporter distributionPackageExporter, Map<String, Object> config) {
         remove(DistributionPackageExporter.class, distributionPackageExporter, config);
-
     }
 
-    private void bindDistributionAgent(DistributionAgent distributionAgent, Map<String, Object> config) {
-
+    public void bindDistributionAgent(DistributionAgent distributionAgent, Map<String, Object> config) {
         put(DistributionAgent.class, distributionAgent, config);
     }
 
-    private void unbindDistributionAgent(DistributionAgent distributionAgent, Map<String, Object> config) {
-
+    public void unbindDistributionAgent(DistributionAgent distributionAgent, Map<String, Object> config) {
         remove(DistributionAgent.class, distributionAgent, config);
-
     }
 
-
-    private void bindDistributionPackageBuilder(DistributionPackageBuilder distributionPackageBuilder, Map<String, Object> config) {
-
+    public void bindDistributionPackageBuilder(DistributionPackageBuilder distributionPackageBuilder, Map<String, Object> config) {
         put(DistributionPackageBuilder.class, distributionPackageBuilder, config);
     }
 
-    private void unbindDistributionPackageBuilder(DistributionPackageBuilder distributionPackageBuilder, Map<String, Object> config) {
-
+    public void unbindDistributionPackageBuilder(DistributionPackageBuilder distributionPackageBuilder, Map<String, Object> config) {
         remove(DistributionPackageBuilder.class, distributionPackageBuilder, config);
-
     }
 
+    // internals
+
     private <ComponentType> void put(Class<ComponentType> typeClass, ComponentType service, Map<String, Object> config) {
         Map<String, DistributionComponent<?>> componentMap = getComponentMap(typeClass);
 
@@ -199,19 +187,15 @@
         if (name != null && kind != null) {
             componentMap.put(name, new DistributionComponent<ComponentType>(kind, name, service, config));
         }
-
     }
 
     private <ComponentType> void remove(Class<ComponentType> typeClass, ComponentType service, Map<String, Object> config) {
-
         Map<String, DistributionComponent<?>> componentMap = getComponentMap(typeClass);
 
         String name = PropertiesUtil.toString(config.get(NAME), null);
         if (name != null) {
             componentMap.remove(name);
         }
-
     }
 
-
 }
diff --git a/src/main/java/org/apache/sling/distribution/monitor/impl/MonitoringDistributionPackageBuilder.java b/src/main/java/org/apache/sling/distribution/monitor/impl/MonitoringDistributionPackageBuilder.java
index 4d52ba2..32066c9 100644
--- a/src/main/java/org/apache/sling/distribution/monitor/impl/MonitoringDistributionPackageBuilder.java
+++ b/src/main/java/org/apache/sling/distribution/monitor/impl/MonitoringDistributionPackageBuilder.java
@@ -22,7 +22,6 @@
 import java.util.Dictionary;
 import java.util.Hashtable;
 import java.util.Queue;
-import java.util.concurrent.ArrayBlockingQueue;
 import java.util.concurrent.LinkedBlockingDeque;
 
 import javax.annotation.Nonnull;
diff --git a/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueue.java b/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueue.java
index 1c62e57..3abda50 100644
--- a/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueue.java
+++ b/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueue.java
@@ -121,7 +121,7 @@
 
         List<Job> result = new ArrayList<Job>();
         try {
-            Collection<Job> jobs = jobManager.findJobs(QueryType.ALL, topic, actualLimit);
+            Collection<Job> jobs = jobManager.findJobs(QueryType.ALL, topic, actualLimit, (Map<String, Object>[]) null);
 
             int i = 0;
             for (Job job : jobs) {