[maven-release-plugin] copy for tag org.apache.sling.distribution.core-0.1.8

git-svn-id: https://svn.apache.org/repos/asf/sling/tags/org.apache.sling.distribution.core-0.1.8@1706845 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/pom.xml b/pom.xml
index 9c4e030..48775b9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,7 +25,7 @@
     <parent>
         <groupId>org.apache.sling</groupId>
         <artifactId>sling</artifactId>
-        <version>24</version>
+        <version>25</version>
     </parent>
 
     <!-- ======================================================================= -->
@@ -112,7 +112,7 @@
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.distribution.api</artifactId>
-            <version>0.1.2</version>
+            <version>0.2.0</version>
         </dependency>
         <dependency>
             <groupId>org.apache.sling</groupId>
diff --git a/src/main/java/org/apache/sling/distribution/agent/impl/AbstractDistributionAgentFactory.java b/src/main/java/org/apache/sling/distribution/agent/impl/AbstractDistributionAgentFactory.java
index 0b48f29..270db2e 100644
--- a/src/main/java/org/apache/sling/distribution/agent/impl/AbstractDistributionAgentFactory.java
+++ b/src/main/java/org/apache/sling/distribution/agent/impl/AbstractDistributionAgentFactory.java
@@ -28,6 +28,7 @@
 import org.apache.sling.distribution.agent.DistributionAgent;
 import org.apache.sling.distribution.component.impl.DistributionComponentConstants;
 import org.apache.sling.distribution.component.impl.DistributionComponentKind;
+import org.apache.sling.distribution.log.DistributionLog;
 import org.apache.sling.distribution.log.impl.DefaultDistributionLog;
 import org.apache.sling.distribution.resources.impl.OsgiUtils;
 import org.apache.sling.distribution.trigger.DistributionTrigger;
@@ -88,6 +89,7 @@
 
             if (componentReg == null) {
 
+                DefaultDistributionLog distributionLog = null;
                 try {
 
                     String logLevel = PropertiesUtil.toString(config.get(LOG_LEVEL), DefaultDistributionLog.LogLevel.INFO.name());
@@ -97,11 +99,14 @@
                     }
 
 
-                    DefaultDistributionLog distributionLog = new DefaultDistributionLog(DistributionComponentKind.AGENT, agentName, SimpleDistributionAgent.class, level);
+                    distributionLog = new DefaultDistributionLog(DistributionComponentKind.AGENT, agentName, SimpleDistributionAgent.class, level);
 
                     agent = createAgent(agentName, context, config, distributionLog);
-                } catch (IllegalArgumentException e) {
-                    log.warn("cannot create agent", e);
+                } catch (Throwable t) {
+                    if (distributionLog != null) {
+                        distributionLog.error("Cannot create agent", t);
+                    }
+                    log.error("Cannot create agent", t);
                 }
 
 
diff --git a/src/main/java/org/apache/sling/distribution/agent/impl/ForwardDistributionAgentFactory.java b/src/main/java/org/apache/sling/distribution/agent/impl/ForwardDistributionAgentFactory.java
index e1f5cb9..f7d99c9 100644
--- a/src/main/java/org/apache/sling/distribution/agent/impl/ForwardDistributionAgentFactory.java
+++ b/src/main/java/org/apache/sling/distribution/agent/impl/ForwardDistributionAgentFactory.java
@@ -203,7 +203,7 @@
         boolean queueProcessingEnabled = PropertiesUtil.toBoolean(config.get(QUEUE_PROCESSING_ENABLED), true);
 
         String[] passiveQueues = PropertiesUtil.toStringArray(config.get(PASSIVE_QUEUES), new String[0]);
-        passiveQueues = SettingsUtils.removeEmptyEntries(passiveQueues);
+        passiveQueues = SettingsUtils.removeEmptyEntries(passiveQueues, new String[0]);
 
 
         DistributionPackageExporter packageExporter = new LocalDistributionPackageExporter(packageBuilder);
diff --git a/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgent.java b/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgent.java
index c51e6a0..6310002 100644
--- a/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgent.java
+++ b/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgent.java
@@ -229,7 +229,6 @@
 
     private Collection<SimpleDistributionResponse> scheduleImportPackage(DistributionPackage distributionPackage) {
         Collection<SimpleDistributionResponse> distributionResponses = new LinkedList<SimpleDistributionResponse>();
-        log.debug("scheduling distribution of package {} {}", distributionPackage.getId(), distributionPackage);
 
         // dispatch the distribution package to the queue distribution handler
         try {
@@ -247,6 +246,9 @@
             distributionPackage.close();
         }
 
+        log.info("scheduled package {} with info {}", distributionPackage.getId(), distributionPackage.getInfo());
+
+
         return distributionResponses;
     }
 
@@ -337,6 +339,8 @@
         }
 
         try {
+            log.info("enabling trigger {}", trigger);
+
             trigger.register(agentBasedRequestHandler);
         } catch (DistributionTriggerException e) {
             log.error("could not register handler from trigger {} {}", trigger, e);
@@ -350,6 +354,8 @@
         }
 
         try {
+            log.info("disabling trigger {}", trigger);
+
             trigger.unregister(agentBasedRequestHandler);
         } catch (DistributionTriggerException e) {
             log.error("could not unregister handler from trigger {} {}", trigger, e);
@@ -398,6 +404,8 @@
                     success = reEnqueuePackage(distributionPackage);
                     DistributionPackageUtils.releaseOrDelete(distributionPackage, queueName);
                 }
+
+                log.info("processed package {} with info {} from queue {}", distributionPackage.getId(), distributionPackage.getInfo(), queueName);
             } else {
                 success = true; // return success if package does not exist in order to clear the queue.
                 log.error("distribution package with id {} does not exist. the package will be skipped.", queueItem.getId());
@@ -422,7 +430,7 @@
             return false;
         }
 
-        log.info("distribution package {} was delivered", distributionPackage.getId());
+        log.debug("distribution package {} was delivered", distributionPackage.getId());
         return true;
     }
 
diff --git a/src/main/java/org/apache/sling/distribution/agent/impl/SyncDistributionAgentFactory.java b/src/main/java/org/apache/sling/distribution/agent/impl/SyncDistributionAgentFactory.java
index 4910392..04ba114 100644
--- a/src/main/java/org/apache/sling/distribution/agent/impl/SyncDistributionAgentFactory.java
+++ b/src/main/java/org/apache/sling/distribution/agent/impl/SyncDistributionAgentFactory.java
@@ -208,7 +208,7 @@
         boolean queueProcessingEnabled = PropertiesUtil.toBoolean(config.get(QUEUE_PROCESSING_ENABLED), true);
 
         String[] passiveQueues = PropertiesUtil.toStringArray(config.get(PASSIVE_QUEUES), new String[0]);
-        passiveQueues = SettingsUtils.removeEmptyEntries(passiveQueues);
+        passiveQueues = SettingsUtils.removeEmptyEntries(passiveQueues, new String[0]);
 
         Object exporterEndpointsValue = config.get(EXPORTER_ENDPOINTS);
         Object importerEndpointsValue = config.get(IMPORTER_ENDPOINTS);
diff --git a/src/main/java/org/apache/sling/distribution/component/impl/SettingsUtils.java b/src/main/java/org/apache/sling/distribution/component/impl/SettingsUtils.java
index dcb0d79..6c7b651 100644
--- a/src/main/java/org/apache/sling/distribution/component/impl/SettingsUtils.java
+++ b/src/main/java/org/apache/sling/distribution/component/impl/SettingsUtils.java
@@ -199,6 +199,16 @@
         return result.toArray(new String[0]);
     }
 
+    public static String[] removeEmptyEntries(String[] array, String[] defaultArray) {
+        String[] result = removeEmptyEntries(array);
+        if (result == null) {
+            return defaultArray;
+        } else {
+            return result;
+        }
+    }
+
+
 
     public static String removeEmptyEntry(String entry) {
         if (entry == null) {
diff --git a/src/main/java/org/apache/sling/distribution/impl/CompositeDistributionResponse.java b/src/main/java/org/apache/sling/distribution/impl/CompositeDistributionResponse.java
index 882eaba..7af076e 100644
--- a/src/main/java/org/apache/sling/distribution/impl/CompositeDistributionResponse.java
+++ b/src/main/java/org/apache/sling/distribution/impl/CompositeDistributionResponse.java
@@ -54,7 +54,7 @@
 
     @Override
     public boolean isSuccessful() {
-        return !DistributionRequestState.DROPPED.equals(state);
+        return DistributionRequestState.ACCEPTED.equals(state) || DistributionRequestState.DISTRIBUTED.equals(state);
     }
 
     @Nonnull
@@ -85,9 +85,6 @@
             case DISTRIBUTED:
                 aggregatedState = first;
                 break;
-            case DROPPED:
-                aggregatedState = DistributionRequestState.DISTRIBUTED;
-                break;
             case ACCEPTED:
                 if (first.equals(DistributionRequestState.DISTRIBUTED)) {
                     aggregatedState = DistributionRequestState.ACCEPTED;
diff --git a/src/main/java/org/apache/sling/distribution/impl/DefaultDistributor.java b/src/main/java/org/apache/sling/distribution/impl/DefaultDistributor.java
index ca46917..f95ba46 100644
--- a/src/main/java/org/apache/sling/distribution/impl/DefaultDistributor.java
+++ b/src/main/java/org/apache/sling/distribution/impl/DefaultDistributor.java
@@ -53,14 +53,14 @@
         DistributionAgent agent = componentProvider.getService(DistributionAgent.class, agentName);
 
         if (agent == null) {
-            return new SimpleDistributionResponse(DistributionRequestState.DROPPED, "Agent is not available");
+            return new SimpleDistributionResponse(DistributionRequestState.NOT_EXECUTED, "Agent is not available");
         }
 
         try {
             return agent.execute(resourceResolver, distributionRequest);
         } catch (DistributionAgentException e) {
             log.error("cannot execute", e);
-            return new SimpleDistributionResponse(DistributionRequestState.FAILED, "Cannot execute request");
+            return new SimpleDistributionResponse(DistributionRequestState.DROPPED, "Cannot execute request");
         }
     }
 }
diff --git a/src/main/java/org/apache/sling/distribution/impl/SimpleDistributionResponse.java b/src/main/java/org/apache/sling/distribution/impl/SimpleDistributionResponse.java
index a1ff61c..5c51b7b 100644
--- a/src/main/java/org/apache/sling/distribution/impl/SimpleDistributionResponse.java
+++ b/src/main/java/org/apache/sling/distribution/impl/SimpleDistributionResponse.java
@@ -40,7 +40,7 @@
     }
 
     public boolean isSuccessful() {
-        return !DistributionRequestState.DROPPED.equals(state);
+        return DistributionRequestState.ACCEPTED.equals(state) || DistributionRequestState.DISTRIBUTED.equals(state);
     }
 
     @Nonnull
diff --git a/src/main/java/org/apache/sling/distribution/packaging/DistributionPackageInfo.java b/src/main/java/org/apache/sling/distribution/packaging/DistributionPackageInfo.java
index c230270..e8b9fa2 100644
--- a/src/main/java/org/apache/sling/distribution/packaging/DistributionPackageInfo.java
+++ b/src/main/java/org/apache/sling/distribution/packaging/DistributionPackageInfo.java
@@ -138,9 +138,9 @@
     @Override
     public String toString() {
         return "DistributionPackageInfo{" +
-                "origin=" + getOrigin() +
-                ", requestType=" + getRequestType() +
+                " requestType=" + getRequestType() +
                 ", paths=" + Arrays.toString(getPaths()) +
+                ", origin=" + getOrigin() +
                 '}';
     }
 }
diff --git a/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporter.java b/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporter.java
index 8b2c924..8f1f7d7 100644
--- a/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporter.java
+++ b/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporter.java
@@ -26,6 +26,8 @@
 import org.apache.sling.distribution.DistributionRequest;
 import org.apache.sling.distribution.DistributionRequestType;
 import org.apache.sling.distribution.agent.DistributionAgent;
+import org.apache.sling.distribution.log.DistributionLog;
+import org.apache.sling.distribution.log.impl.DefaultDistributionLog;
 import org.apache.sling.distribution.packaging.DistributionPackage;
 import org.apache.sling.distribution.packaging.DistributionPackageExportException;
 import org.apache.sling.distribution.packaging.DistributionPackageExporter;
@@ -44,6 +46,7 @@
 public class AgentDistributionPackageExporter implements DistributionPackageExporter {
     private final Logger log = LoggerFactory.getLogger(getClass());
     private final DistributionPackageBuilderProvider packageBuilderProvider;
+    private final String name;
 
     final static String PACKAGE_TYPE = "agentexporter";
 
@@ -51,8 +54,9 @@
     private DistributionAgent agent;
     private String queueName;
 
-    public AgentDistributionPackageExporter(String queueName, DistributionAgent agent, DistributionPackageBuilderProvider packageBuilderProvider) {
+    public AgentDistributionPackageExporter(String queueName, DistributionAgent agent, DistributionPackageBuilderProvider packageBuilderProvider, String name) {
         this.packageBuilderProvider = packageBuilderProvider;
+        this.name = name;
 
         if (agent == null || packageBuilderProvider == null) {
             throw new IllegalArgumentException("Agent and package builder are required");
@@ -88,6 +92,7 @@
 
                 if (packageBuilder != null) {
                     distributionPackage = packageBuilder.getPackage(resourceResolver, queueItem.getId());
+
                     log.info("item {} fetched from the queue", info);
                     if (distributionPackage != null) {
                         result.add(new AgentDistributionPackage(distributionPackage, queue));
@@ -97,7 +102,6 @@
                 } else {
                     log.warn("cannot find package builder with type {}", info.getType());
                 }
-
             }
 
         } catch (Exception ex) {
@@ -158,6 +162,16 @@
             String id = distributionPackage.getId();
             queue.remove(id);
             DistributionPackageUtils.releaseOrDelete(distributionPackage, queue.getName());
+            agentLog("exported package {} with info {} from queue {} by exporter {}", new Object[] {id, distributionPackage.getInfo(), queue.getName(), name});
+        }
+    }
+
+
+    private void agentLog(String message, Object[] values) {
+        DistributionLog agentLog = agent.getLog();
+
+        if (agentLog instanceof DefaultDistributionLog) {
+            ((DefaultDistributionLog) agentLog).info(message, values);
         }
     }
 }
diff --git a/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporterFactory.java b/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporterFactory.java
index 0debf27..bf849ef 100644
--- a/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporterFactory.java
+++ b/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporterFactory.java
@@ -74,8 +74,10 @@
     public void activate(Map<String, Object> config) throws Exception {
 
         String queueName = PropertiesUtil.toString(config.get(QUEUE_NAME), "");
+        String name = PropertiesUtil.toString(config.get(NAME), "");
 
-        packageExporter = new AgentDistributionPackageExporter(queueName, agent, packageBuilderProvider);
+
+        packageExporter = new AgentDistributionPackageExporter(queueName, agent, packageBuilderProvider, name);
     }
 
     @Nonnull
diff --git a/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingUtils.java b/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingUtils.java
index a2b2718..207f08a 100644
--- a/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingUtils.java
+++ b/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingUtils.java
@@ -51,7 +51,10 @@
         Map<String, Object> properties = new HashMap<String, Object>();
 
         for (String key : queueItem.keySet()) {
-            properties.put(DISTRIBUTION_PACKAGE_PREFIX + key, queueItem.get(key));
+            Object value = queueItem.get(key);
+            if (value != null) {
+                properties.put(DISTRIBUTION_PACKAGE_PREFIX + key, queueItem.get(key));
+            }
         }
 
         properties.put(ID, queueItem.getId());
diff --git a/src/test/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporterTest.java b/src/test/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporterTest.java
index 18927f0..004668e 100644
--- a/src/test/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporterTest.java
+++ b/src/test/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporterTest.java
@@ -39,7 +39,7 @@
     @Test
     public void testTestExport() throws Exception {
         AgentDistributionPackageExporter distributionPackageExporter = new AgentDistributionPackageExporter(null,
-                mock(DistributionAgent.class), mock(DistributionPackageBuilderProvider.class));
+                mock(DistributionAgent.class), mock(DistributionPackageBuilderProvider.class), null);
         ResourceResolver resourceResolver = mock(ResourceResolver.class);
         DistributionRequest distributionRequest = new SimpleDistributionRequest(DistributionRequestType.TEST, null);
         List<DistributionPackage> distributionPackages = distributionPackageExporter.exportPackages(resourceResolver, distributionRequest);