You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by mp...@apache.org on 2016/04/11 11:40:03 UTC

svn commit: r1738560 - in /sling/trunk/contrib/extensions/distribution: core/src/main/java/org/apache/sling/distribution/agent/impl/ core/src/main/java/org/apache/sling/distribution/monitor/ core/src/main/java/org/apache/sling/distribution/packaging/im...

Author: mpetria
Date: Mon Apr 11 09:40:03 2016
New Revision: 1738560

URL: http://svn.apache.org/viewvc?rev=1738560&view=rev
Log:
SLING-5657: refactor shared packages to enable file storage

Removed:
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/DefaultSharedDistributionPackage.java
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/DefaultSharedDistributionPackageBuilder.java
Modified:
    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/SimpleDistributionAgent.java
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SyncDistributionAgentFactory.java
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/DistributionQueueHealthCheck.java
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/DistributionPackageUtils.java
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporter.java
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/LocalDistributionPackageExporterFactory.java
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/RemoteDistributionPackageExporterFactory.java
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/LocalDistributionPackageImporterFactory.java
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/DistributionQueueEntry.java
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/DistributionQueueItem.java
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/DistributionAgentJobConsumer.java
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueue.java
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingUtils.java
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/simple/ScheduledDistributionQueueProcessorTask.java
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/simple/SimpleDistributionQueue.java
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/resources/impl/ExtendedDistributionServiceResourceProvider.java
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/AbstractDistributionPackage.java
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/DefaultDistributionPackageBuilderProvider.java
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/FileDistributionPackage.java
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/ResourceDistributionPackage.java
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/SimpleDistributionPackage.java
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/DistributionAgentQueueServlet.java
    sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/monitor/DistributionQueueHealthCheckTest.java
    sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/SingleQueueDistributionStrategyTest.java
    sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueueTest.java
    sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingUtilsTest.java
    sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/simple/ScheduledDistributionQueueProcessorTaskTest.java
    sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/simple/SimpleDistributionQueueTest.java
    sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/ForwardBinaryDistributionTest.java
    sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/MultipleQueueDistributionTest.java

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=1738560&r1=1738559&r2=1738560&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 Mon Apr 11 09:40:03 2016
@@ -52,7 +52,6 @@ import org.apache.sling.distribution.que
 import org.apache.sling.distribution.queue.impl.PriorityQueueDispatchingStrategy;
 import org.apache.sling.distribution.queue.impl.jobhandling.JobHandlingDistributionQueueProvider;
 import org.apache.sling.distribution.serialization.DistributionPackageBuilder;
-import org.apache.sling.distribution.serialization.impl.DefaultSharedDistributionPackageBuilder;
 import org.apache.sling.distribution.transport.DistributionTransportSecretProvider;
 import org.apache.sling.distribution.trigger.DistributionTrigger;
 import org.apache.sling.event.jobs.JobManager;
@@ -215,7 +214,7 @@ public class ForwardDistributionAgentFac
         priorityQueues = SettingsUtils.removeEmptyEntries(priorityQueues);
 
 
-        DistributionPackageExporter packageExporter = new LocalDistributionPackageExporter(new DefaultSharedDistributionPackageBuilder(packageBuilder));
+        DistributionPackageExporter packageExporter = new LocalDistributionPackageExporter(packageBuilder);
         DistributionQueueProvider queueProvider = new JobHandlingDistributionQueueProvider(agentName, jobManager, context);
 
         DistributionQueueDispatchingStrategy exportQueueStrategy;

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=1738560&r1=1738559&r2=1738560&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 Mon Apr 11 09:40:03 2016
@@ -45,7 +45,6 @@ import org.apache.sling.distribution.que
 import org.apache.sling.distribution.queue.impl.SingleQueueDispatchingStrategy;
 import org.apache.sling.distribution.queue.impl.jobhandling.JobHandlingDistributionQueueProvider;
 import org.apache.sling.distribution.serialization.DistributionPackageBuilder;
-import org.apache.sling.distribution.serialization.impl.DefaultSharedDistributionPackageBuilder;
 import org.apache.sling.distribution.trigger.DistributionTrigger;
 import org.apache.sling.event.jobs.JobManager;
 import org.apache.sling.jcr.api.SlingRepository;
@@ -180,7 +179,7 @@ public class QueueDistributionAgentFacto
             exportQueueStrategy = new SingleQueueDispatchingStrategy();
         }
 
-        DistributionPackageExporter packageExporter = new LocalDistributionPackageExporter(new DefaultSharedDistributionPackageBuilder(packageBuilder));
+        DistributionPackageExporter packageExporter = new LocalDistributionPackageExporter(packageBuilder);
         DistributionRequestType[] allowedRequests = new DistributionRequestType[]{DistributionRequestType.ADD, DistributionRequestType.DELETE};
 
         return new SimpleDistributionAgent(agentName, false, null,

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=1738560&r1=1738559&r2=1738560&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 Mon Apr 11 09:40:03 2016
@@ -48,7 +48,6 @@ import org.apache.sling.distribution.que
 import org.apache.sling.distribution.queue.impl.SingleQueueDispatchingStrategy;
 import org.apache.sling.distribution.queue.impl.jobhandling.JobHandlingDistributionQueueProvider;
 import org.apache.sling.distribution.serialization.DistributionPackageBuilder;
-import org.apache.sling.distribution.serialization.impl.DefaultSharedDistributionPackageBuilder;
 import org.apache.sling.distribution.transport.DistributionTransportSecretProvider;
 import org.apache.sling.distribution.trigger.DistributionTrigger;
 import org.apache.sling.event.jobs.JobManager;
@@ -190,7 +189,6 @@ public class ReverseDistributionAgentFac
         int pullItems = PropertiesUtil.toInteger(config.get(PULL_ITEMS), Integer.MAX_VALUE);
 
 
-        DefaultSharedDistributionPackageBuilder packageBuilder = new DefaultSharedDistributionPackageBuilder(this.packageBuilder);
         DistributionPackageExporter packageExporter = new RemoteDistributionPackageExporter(distributionLog, packageBuilder, transportSecretProvider, exporterEndpoints, pullItems);
         DistributionPackageImporter packageImporter = new LocalDistributionPackageImporter(packageBuilder);
         DistributionQueueProvider queueProvider = new JobHandlingDistributionQueueProvider(agentName, jobManager, context);

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgent.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgent.java?rev=1738560&r1=1738559&r2=1738560&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgent.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgent.java Mon Apr 11 09:40:03 2016
@@ -430,7 +430,7 @@ public class SimpleDistributionAgent imp
 
             final long startTime = System.currentTimeMillis();
 
-            distributionPackage = distributionPackageExporter.getPackage(agentResourceResolver, queueItem.getId());
+            distributionPackage = distributionPackageExporter.getPackage(agentResourceResolver, queueItem.getPackageId());
 
             if (distributionPackage != null) {
                 final long packageSize = distributionPackage.getSize();
@@ -464,7 +464,7 @@ public class SimpleDistributionAgent imp
                 }
             } else {
                 removeItemFromQueue = 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());
+                log.error("distribution package with id {} does not exist. the package will be skipped.", queueItem.getPackageId());
             }
         } finally {
             if (removeItemFromQueue) {

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=1738560&r1=1738559&r2=1738560&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 Mon Apr 11 09:40:03 2016
@@ -51,7 +51,6 @@ import org.apache.sling.distribution.que
 import org.apache.sling.distribution.queue.impl.MultipleQueueDispatchingStrategy;
 import org.apache.sling.distribution.queue.impl.jobhandling.JobHandlingDistributionQueueProvider;
 import org.apache.sling.distribution.serialization.DistributionPackageBuilder;
-import org.apache.sling.distribution.serialization.impl.DefaultSharedDistributionPackageBuilder;
 import org.apache.sling.distribution.transport.DistributionTransportSecretProvider;
 import org.apache.sling.distribution.trigger.DistributionTrigger;
 import org.apache.sling.event.jobs.JobManager;
@@ -235,7 +234,7 @@ public class SyncDistributionAgentFactor
         exportQueueStrategy = new MultipleQueueDispatchingStrategy(queueNames);
         packageImporter = new RemoteDistributionPackageImporter(distributionLog, transportSecretProvider, importerEndpointsMap);
 
-        DistributionPackageExporter packageExporter = new RemoteDistributionPackageExporter(distributionLog, new DefaultSharedDistributionPackageBuilder(packageBuilder), transportSecretProvider, exporterEndpoints, pullItems);
+        DistributionPackageExporter packageExporter = new RemoteDistributionPackageExporter(distributionLog, packageBuilder, transportSecretProvider, exporterEndpoints, pullItems);
         DistributionQueueProvider queueProvider = new JobHandlingDistributionQueueProvider(agentName, jobManager, context);
         DistributionRequestType[] allowedRequests = new DistributionRequestType[]{DistributionRequestType.PULL};
 

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/DistributionQueueHealthCheck.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/DistributionQueueHealthCheck.java?rev=1738560&r1=1738559&r2=1738560&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/DistributionQueueHealthCheck.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/monitor/DistributionQueueHealthCheck.java Mon Apr 11 09:40:03 2016
@@ -116,11 +116,11 @@ public class DistributionQueueHealthChec
                             DistributionQueueItem item = entry.getItem();
                             DistributionQueueItemStatus status = entry.getStatus();
                             if (status.getAttempts() <= numberOfRetriesAllowed) {
-                                resultLog.debug("Queue: [{}], first item: [{}], number of retries: {}", q.getName(), item.getId(), status.getAttempts());
+                                resultLog.debug("Queue: [{}], first item: [{}], number of retries: {}", q.getName(), entry.getId(), status.getAttempts());
                             } else {
                                 // the no. of attempts is higher than the configured threshold
                                 resultLog.warn("Queue: [{}], first item: [{}], number of retries: {}, expected number of retries <= {}",
-                                        q.getName(), item.getId(), status.getAttempts(), numberOfRetriesAllowed);
+                                        q.getName(), entry.getId(), status.getAttempts(), numberOfRetriesAllowed);
                                 failures.put(q.getName(), status.getAttempts());
                             }
                         } else {

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/DistributionPackageUtils.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/DistributionPackageUtils.java?rev=1738560&r1=1738559&r2=1738560&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/DistributionPackageUtils.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/DistributionPackageUtils.java Mon Apr 11 09:40:03 2016
@@ -19,6 +19,8 @@
 
 package org.apache.sling.distribution.packaging.impl;
 
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
 import org.apache.jackrabbit.commons.JcrUtils;
 import org.apache.sling.api.resource.PersistenceException;
 import org.apache.sling.api.resource.Resource;
@@ -33,6 +35,7 @@ import org.apache.sling.distribution.que
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import javax.annotation.Nonnull;
 import javax.jcr.Binary;
 import javax.jcr.Node;
 import javax.jcr.Property;
@@ -40,6 +43,9 @@ import javax.jcr.RepositoryException;
 import javax.jcr.nodetype.NodeType;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.ObjectInputStream;
@@ -47,7 +53,9 @@ import java.io.ObjectOutputStream;
 import java.io.OutputStream;
 import java.io.SequenceInputStream;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 
@@ -61,6 +69,8 @@ public class DistributionPackageUtils {
     private final static String META_START = "DSTRPACKMETA";
 
     private static Object repolock = new Object();
+    private static Object filelock = new Object();
+
 
 
 
@@ -284,6 +294,115 @@ public class DistributionPackageUtils {
         Node content = JcrUtils.getOrAddNode(file, Node.JCR_CONTENT, NodeType.NT_RESOURCE);
         Binary binary = parent.getSession().getValueFactory().createBinary(stream);
         content.setProperty(Property.JCR_DATA, binary);
+        Node refs = JcrUtils.getOrAddNode(parent, "refs", NodeType.NT_UNSTRUCTURED);
+    }
+
+
+    public static void acquire(Resource resource, @Nonnull String[] holderNames) throws RepositoryException {
+        if (holderNames.length == 0) {
+            throw new IllegalArgumentException("holder name cannot be null or empty");
+        }
+
+        Node parent = resource.adaptTo(Node.class);
+
+        Node refs = parent.getNode("refs");
+
+        for (String holderName : holderNames) {
+            if (!refs.hasNode(holderName)) {
+                refs.addNode(holderName, NodeType.NT_UNSTRUCTURED);
+            }
+        }
+    }
+
+
+    public static boolean release(Resource resource, @Nonnull String[] holderNames) throws RepositoryException {
+        if (holderNames.length == 0) {
+            throw new IllegalArgumentException("holder name cannot be null or empty");
+        }
+
+        Node parent = resource.adaptTo(Node.class);
+
+        Node refs = parent.getNode("refs");
+
+        for (String holderName : holderNames) {
+            Node refNode = refs.getNode(holderName);
+            if (refNode != null) {
+                refNode.remove();
+            }
+        }
+
+        if (!refs.hasNodes()) {
+            refs.remove();
+            return true;
+        }
+
+        return false;
+    }
+
+
+    public static void acquire(File file, @Nonnull String[] holderNames) throws IOException {
+
+        if (holderNames.length == 0) {
+            throw new IllegalArgumentException("holder name cannot be null or empty");
+        }
+
+        synchronized (filelock) {
+            try {
+                HashSet<String> set = new HashSet<String>();
+
+                if (file.exists()) {
+                    ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream(file));
+                    set = (HashSet<String>) inputStream.readObject();
+                    IOUtils.closeQuietly(inputStream);
+                }
+
+                set.addAll(Arrays.asList(holderNames));
+
+                ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream(file));
+                outputStream.writeObject(set);
+                IOUtils.closeQuietly(outputStream);
+
+            } catch (ClassNotFoundException e) {
+                log.error("Cannot release file", e);
+            }
+        }
+
+
+    }
+
+
+    public static boolean release(File file, @Nonnull String[] holderNames) throws IOException {
+        if (holderNames.length == 0) {
+            throw new IllegalArgumentException("holder name cannot be null or empty");
+        }
+
+        synchronized (filelock) {
+            try {
+
+                HashSet<String> set = new HashSet<String>();
+
+                if (file.exists()) {
+                    ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream(file));
+                    set = (HashSet<String>) inputStream.readObject();
+                    IOUtils.closeQuietly(inputStream);
+                }
+
+                set.removeAll(Arrays.asList(holderNames));
+
+                if (set.isEmpty()) {
+                    FileUtils.deleteQuietly(file);
+                    return true;
+                }
+
+                ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream(file));
+                outputStream.writeObject(set);
+                IOUtils.closeQuietly(outputStream);
+            }
+            catch (ClassNotFoundException e) {
+                log.error("Cannot release file", e);
+            }
+        }
+        return false;
     }
 
 }

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporter.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporter.java?rev=1738560&r1=1738559&r2=1738560&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporter.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporter.java Mon Apr 11 09:40:03 2016
@@ -87,12 +87,12 @@ public class AgentDistributionPackageExp
                 DistributionPackageBuilder packageBuilder = packageBuilderProvider.getPackageBuilder(info.getType());
 
                 if (packageBuilder != null) {
-                    distributionPackage = packageBuilder.getPackage(resourceResolver, queueItem.getId());
+                    distributionPackage = packageBuilder.getPackage(resourceResolver, queueItem.getPackageId());
                     distributionPackage.getInfo().putAll(info);
 
                     log.debug("item {} fetched from the queue", info);
                     if (distributionPackage != null) {
-                        packageProcessor.process(new AgentDistributionPackage(distributionPackage, queue));
+                        packageProcessor.process(new AgentDistributionPackage(distributionPackage, queue, entry.getId()));
                     } else {
                         log.warn("cannot get package {}", info);
                     }
@@ -125,12 +125,12 @@ public class AgentDistributionPackageExp
                 DistributionPackageBuilder packageBuilder = packageBuilderProvider.getPackageBuilder(info.getType());
 
                 if (packageBuilder != null) {
-                    distributionPackage = packageBuilder.getPackage(resourceResolver, queueItem.getId());
+                    distributionPackage = packageBuilder.getPackage(resourceResolver, queueItem.getPackageId());
                     distributionPackage.getInfo().putAll(info);
 
                     log.debug("item {} fetched from the queue", info);
                     if (distributionPackage != null) {
-                        return new AgentDistributionPackage(distributionPackage, queue);
+                        return new AgentDistributionPackage(distributionPackage, queue, entry.getId());
                     }
                 } else {
                     log.warn("cannot find package builder with type {}", info.getType());
@@ -149,19 +149,26 @@ public class AgentDistributionPackageExp
 
         private final DistributionPackage distributionPackage;
         private final DistributionQueue queue;
+        private final String itemId;
 
-        AgentDistributionPackage(DistributionPackage distributionPackage, DistributionQueue queue) {
+        AgentDistributionPackage(DistributionPackage distributionPackage, DistributionQueue queue, String itemId) {
             super(distributionPackage);
             this.distributionPackage = distributionPackage;
             this.queue = queue;
+            this.itemId = itemId;
         }
 
         @Override
         public void delete() {
-            String id = distributionPackage.getId();
-            queue.remove(id);
+            queue.remove(itemId);
             DistributionPackageUtils.releaseOrDelete(distributionPackage, queue.getName());
-            agentLog("exported package {} with info {} from queue {} by exporter {}", new Object[] {id, distributionPackage.getInfo(), queue.getName(), name});
+            agentLog("exported package {} with info {} from queue {} by exporter {}", new Object[] {itemId, distributionPackage.getInfo(), queue.getName(), name});
+        }
+
+        @Nonnull
+        @Override
+        public String getId() {
+            return itemId;
         }
     }
 

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/LocalDistributionPackageExporterFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/LocalDistributionPackageExporterFactory.java?rev=1738560&r1=1738559&r2=1738560&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/LocalDistributionPackageExporterFactory.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/LocalDistributionPackageExporterFactory.java Mon Apr 11 09:40:03 2016
@@ -35,7 +35,6 @@ import org.apache.sling.distribution.pac
 import org.apache.sling.distribution.serialization.DistributionPackage;
 import org.apache.sling.distribution.packaging.DistributionPackageExporter;
 import org.apache.sling.distribution.serialization.DistributionPackageBuilder;
-import org.apache.sling.distribution.serialization.impl.DefaultSharedDistributionPackageBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -69,7 +68,7 @@ public class LocalDistributionPackageExp
 
     @Activate
     public void activate(Map<String, Object> config) {
-        exporter = new LocalDistributionPackageExporter(new DefaultSharedDistributionPackageBuilder(packageBuilder));
+        exporter = new LocalDistributionPackageExporter(packageBuilder);
     }
 
     public void exportPackages(@Nonnull ResourceResolver resourceResolver, @Nonnull DistributionRequest distributionRequest, @Nonnull DistributionPackageProcessor packageProcessor) throws DistributionException {

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/RemoteDistributionPackageExporterFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/RemoteDistributionPackageExporterFactory.java?rev=1738560&r1=1738559&r2=1738560&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/RemoteDistributionPackageExporterFactory.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/RemoteDistributionPackageExporterFactory.java Mon Apr 11 09:40:03 2016
@@ -40,7 +40,6 @@ import org.apache.sling.distribution.pac
 import org.apache.sling.distribution.packaging.DistributionPackageProcessor;
 import org.apache.sling.distribution.serialization.DistributionPackage;
 import org.apache.sling.distribution.serialization.DistributionPackageBuilder;
-import org.apache.sling.distribution.serialization.impl.DefaultSharedDistributionPackageBuilder;
 import org.apache.sling.distribution.transport.DistributionTransportSecretProvider;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -109,7 +108,7 @@ public class RemoteDistributionPackageEx
         DefaultDistributionLog distributionLog = new DefaultDistributionLog(DistributionComponentKind.EXPORTER, exporterName, RemoteDistributionPackageExporter.class, DefaultDistributionLog.LogLevel.ERROR);
 
 
-        exporter = new RemoteDistributionPackageExporter(distributionLog, new DefaultSharedDistributionPackageBuilder(packageBuilder), transportSecretProvider, endpoints, pollItems);
+        exporter = new RemoteDistributionPackageExporter(distributionLog, packageBuilder, transportSecretProvider, endpoints, pollItems);
     }
 
 

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/LocalDistributionPackageImporterFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/LocalDistributionPackageImporterFactory.java?rev=1738560&r1=1738559&r2=1738560&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/LocalDistributionPackageImporterFactory.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/LocalDistributionPackageImporterFactory.java Mon Apr 11 09:40:03 2016
@@ -40,7 +40,6 @@ import org.apache.sling.distribution.ser
 import org.apache.sling.distribution.packaging.DistributionPackageImporter;
 import org.apache.sling.distribution.serialization.DistributionPackageInfo;
 import org.apache.sling.distribution.serialization.DistributionPackageBuilder;
-import org.apache.sling.distribution.serialization.impl.DefaultSharedDistributionPackageBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/DistributionQueueEntry.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/DistributionQueueEntry.java?rev=1738560&r1=1738559&r2=1738560&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/DistributionQueueEntry.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/DistributionQueueEntry.java Mon Apr 11 09:40:03 2016
@@ -25,10 +25,12 @@ import javax.annotation.Nonnull;
  */
 public final class DistributionQueueEntry {
 
+    private final String id;
     private final DistributionQueueItem item;
     private final DistributionQueueItemStatus status;
 
-    public DistributionQueueEntry(@Nonnull DistributionQueueItem item, @Nonnull DistributionQueueItemStatus status) {
+    public DistributionQueueEntry(String id, @Nonnull DistributionQueueItem item, @Nonnull DistributionQueueItemStatus status) {
+        this.id = id;
         this.item = item;
         this.status = status;
     }
@@ -53,4 +55,7 @@ public final class DistributionQueueEntr
         return item;
     }
 
+    public String getId() {
+        return id;
+    }
 }

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/DistributionQueueItem.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/DistributionQueueItem.java?rev=1738560&r1=1738559&r2=1738560&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/DistributionQueueItem.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/DistributionQueueItem.java Mon Apr 11 09:40:03 2016
@@ -33,23 +33,23 @@ import org.apache.sling.distribution.ser
  */
 public class DistributionQueueItem extends ValueMapDecorator implements ValueMap {
 
-    private final String id;
+    private final String packageId;
 
-    public DistributionQueueItem(@Nonnull String id, Map<String, Object> base) {
+    public DistributionQueueItem(@Nonnull String packageId, Map<String, Object> base) {
         super(base);
-        this.id = id;
+        this.packageId = packageId;
     }
 
     @Nonnull
-    public String getId() {
-        return id;
+    public String getPackageId() {
+        return packageId;
     }
 
 
     @Override
     public String toString() {
         return "DistributionQueueItem{" +
-                "id='" + id + '\'' +
+                "id='" + packageId + '\'' +
                 ", info=" + super.toString() +
                 '}';
     }

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/DistributionAgentJobConsumer.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/DistributionAgentJobConsumer.java?rev=1738560&r1=1738559&r2=1738560&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/DistributionAgentJobConsumer.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/DistributionAgentJobConsumer.java Mon Apr 11 09:40:03 2016
@@ -46,9 +46,9 @@ class DistributionAgentJobConsumer imple
         if (entry != null) {
             String queueName = entry.getStatus().getQueueName();
             DistributionQueueItem item = entry.getItem();
-            log.debug("processing item {} in queue {}", item.getId(), queueName);
+            log.debug("processing item {} in queue {}", entry.getId(), queueName);
             processingResult = queueProcessor.process(queueName, entry);
-            log.debug("item {} processed {}", item.getId());
+            log.debug("item {} processed {}", entry.getId());
         } else {
             log.warn("no entry for job {}", job.getId());
         }

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueue.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueue.java?rev=1738560&r1=1738559&r2=1738560&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueue.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueue.java Mon Apr 11 09:40:03 2016
@@ -71,7 +71,7 @@ public class JobHandlingDistributionQueu
             Map<String, Object> properties = JobHandlingUtils.createFullProperties(item);
 
             Job job = jobManager.createJob(topic).properties(properties).add();
-            log.debug("job {} added for item {}", job.getId(), item.getId());
+            log.debug("job {} added for item {}", job.getId(), item.getPackageId());
 
             return JobHandlingUtils.getEntry(job);
         } catch (Exception e) {
@@ -84,10 +84,8 @@ public class JobHandlingDistributionQueu
     public DistributionQueueEntry getHead() {
         Job firstJob = getFirstJob();
         if (firstJob != null) {
-            DistributionQueueItem item = JobHandlingUtils.getItem(firstJob);
-            DistributionQueueItemStatus status = JobHandlingUtils.getStatus(firstJob);
-
-            return new DistributionQueueEntry(item, status);
+            DistributionQueueEntry entry = JobHandlingUtils.getEntry(firstJob);
+            return entry;
         } else {
             return null;
         }
@@ -106,8 +104,8 @@ public class JobHandlingDistributionQueu
     }
 
     private Job getJob(String itemId) {
-        Map<String, Object> properties = JobHandlingUtils.createIdProperties(itemId);
-        Job job = jobManager.getJob(topic, properties);
+        String jobId = JobHandlingUtils.unescapeId(itemId);
+        Job job = jobManager.getJobById(jobId);
 
         if (job == null) {
             log.warn("item with id {} cannot be found", itemId);
@@ -142,10 +140,7 @@ public class JobHandlingDistributionQueu
         List<DistributionQueueEntry> items = new ArrayList<DistributionQueueEntry>();
         Collection<Job> jobs = getJobs(skip, limit);
         for (Job job : jobs) {
-            DistributionQueueItem item = JobHandlingUtils.getItem(job);
-            DistributionQueueItemStatus status = JobHandlingUtils.getStatus(job);
-
-            items.add(new DistributionQueueEntry(item, status));
+            items.add(JobHandlingUtils.getEntry(job));
         }
 
         return items;
@@ -155,10 +150,8 @@ public class JobHandlingDistributionQueu
         Job job = getJob(id);
 
         if (job != null) {
-            DistributionQueueItem item = JobHandlingUtils.getItem(job);
-            DistributionQueueItemStatus status = JobHandlingUtils.getStatus(job);
-
-            return new DistributionQueueEntry(item, status);
+            DistributionQueueEntry entry = JobHandlingUtils.getEntry(job);
+            return entry;
         }
 
         return null;
@@ -171,9 +164,7 @@ public class JobHandlingDistributionQueu
         DistributionQueueEntry entry = null;
 
         if (job != null) {
-            DistributionQueueItem item = JobHandlingUtils.getItem(job);
-            DistributionQueueItemStatus status = JobHandlingUtils.getStatus(job);
-            entry = new DistributionQueueEntry(item, status);
+            entry = JobHandlingUtils.getEntry(job);
             removed = jobManager.removeJobById(job.getId());
         }
 

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingUtils.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingUtils.java?rev=1738560&r1=1738559&r2=1738560&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingUtils.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingUtils.java Mon Apr 11 09:40:03 2016
@@ -19,7 +19,6 @@
 package org.apache.sling.distribution.queue.impl.jobhandling;
 
 import javax.annotation.CheckForNull;
-import javax.annotation.Nonnull;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
@@ -35,15 +34,16 @@ import org.slf4j.LoggerFactory;
 class JobHandlingUtils {
     private final static Logger log = LoggerFactory.getLogger(JobHandlingUtils.class);
 
+    private static final String ID_START = "dstrpck-";
 
     private static final String DISTRIBUTION_PACKAGE_PREFIX = "distribution.";
-    private static final String ID = DISTRIBUTION_PACKAGE_PREFIX + "item.id";
+    private static final String DISTRIBUTION_PACKAGE_ID = DISTRIBUTION_PACKAGE_PREFIX + "item.id";
 
     public static DistributionQueueItem getItem(final Job job) {
 
         Map<String, Object> properties = new HashMap<String, Object>();
 
-        String id = (String) job.getProperty(ID);
+        String packageId = (String) job.getProperty(DISTRIBUTION_PACKAGE_ID);
 
         try {
             Set<String> propertyNames = job.getPropertyNames();
@@ -57,7 +57,7 @@ class JobHandlingUtils {
             log.error("Cannot read job {} properties", job.getId(), t);
         }
 
-        return new DistributionQueueItem(id, properties);
+        return new DistributionQueueItem(packageId, properties);
     }
 
     public static Map<String, Object> createFullProperties(DistributionQueueItem queueItem) {
@@ -70,17 +70,11 @@ class JobHandlingUtils {
             }
         }
 
-        properties.put(ID, queueItem.getId());
+        properties.put(DISTRIBUTION_PACKAGE_ID, queueItem.getPackageId());
 
         return properties;
     }
 
-    public static Map<String, Object> createIdProperties(String itemId) {
-        Map<String, Object> properties = new HashMap<String, Object>();
-        properties.put(ID, itemId);
-        return properties;
-    }
-
     @CheckForNull
     public static String getQueueName(Job job) {
 
@@ -110,11 +104,33 @@ class JobHandlingUtils {
         DistributionQueueItemStatus itemStatus = getStatus(job);
 
         if (item != null && itemStatus != null) {
-            return new DistributionQueueEntry(item, itemStatus);
+            return new DistributionQueueEntry(escapeId(job.getId()), item, itemStatus);
         }
 
         return null;
     }
 
+    public static String escapeId(String jobId) {
+        //return id;
+        if (jobId == null) {
+            return null;
+        }
+        String itemId = ID_START + jobId.replace("/", "--");
+        return itemId;
+    }
+
+    public static String unescapeId(String itemId) {
+        if (itemId == null) {
+            return null;
+        }
+        if (!itemId.startsWith(ID_START)) {
+            return null;
+        }
+
+        String jobId = itemId.replace(ID_START, "").replace("--","/");
+
+        return jobId;
+    }
+
 
 }

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/simple/ScheduledDistributionQueueProcessorTask.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/simple/ScheduledDistributionQueueProcessorTask.java?rev=1738560&r1=1738559&r2=1738560&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/simple/ScheduledDistributionQueueProcessorTask.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/simple/ScheduledDistributionQueueProcessorTask.java Mon Apr 11 09:40:03 2016
@@ -46,11 +46,11 @@ class ScheduledDistributionQueueProcesso
                 while ((entry = queue.getHead()) != null) {
 
                     if (queueProcessor.process(queue.getName(), entry)) {
-                        if (queue.remove(entry.getItem().getId()) != null) {
+                        if (queue.remove(entry.getId()) != null) {
                             log.debug("item {} processed and removed from the queue", entry.getItem());
                         }
                     } else {
-                        log.warn("processing of item {} failed", entry.getItem().getId());
+                        log.warn("processing of item {} failed", entry.getId());
                     }
                 }
             }

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/simple/SimpleDistributionQueue.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/simple/SimpleDistributionQueue.java?rev=1738560&r1=1738559&r2=1738560&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/simple/SimpleDistributionQueue.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/simple/SimpleDistributionQueue.java Mon Apr 11 09:40:03 2016
@@ -81,7 +81,7 @@ public class SimpleDistributionQueue imp
         }
 
         if (result) {
-            return new DistributionQueueEntry(item, statusMap.get(item));
+            return new DistributionQueueEntry(item.getPackageId(), item, statusMap.get(item));
         }
 
         return null;
@@ -97,7 +97,7 @@ public class SimpleDistributionQueue imp
                     itemState.getItemState(),
                     itemState.getAttempts() + 1, name));
 
-            return new DistributionQueueEntry(element, itemState);
+            return new DistributionQueueEntry(element.getPackageId(), element, itemState);
         }
         return null;
     }
@@ -121,7 +121,7 @@ public class SimpleDistributionQueue imp
         List<DistributionQueueEntry> result = new ArrayList<DistributionQueueEntry>();
 
         for (DistributionQueueItem item : queue) {
-            result.add(new DistributionQueueEntry(item, statusMap.get(item)));
+            result.add(new DistributionQueueEntry(item.getPackageId(), item, statusMap.get(item)));
         }
         return result;
     }
@@ -129,8 +129,8 @@ public class SimpleDistributionQueue imp
     @CheckForNull
     public DistributionQueueEntry getItem(@Nonnull String id) {
         for (DistributionQueueItem item : queue) {
-            if (id.equals(item.getId())) {
-                return new DistributionQueueEntry(item, statusMap.get(item));
+            if (id.equals(item.getPackageId())) {
+                return new DistributionQueueEntry(id, item, statusMap.get(item));
             }
         }
 

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/resources/impl/ExtendedDistributionServiceResourceProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/resources/impl/ExtendedDistributionServiceResourceProvider.java?rev=1738560&r1=1738559&r2=1738560&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/resources/impl/ExtendedDistributionServiceResourceProvider.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/resources/impl/ExtendedDistributionServiceResourceProvider.java Mon Apr 11 09:40:03 2016
@@ -147,8 +147,8 @@ public class ExtendedDistributionService
                 List<String> nameList = new ArrayList<String>();
                 Map<String, Map<String, Object>> propertiesMap = new HashMap<String, Map<String, Object>>();
                 for (DistributionQueueEntry entry : queue.getItems(0, MAX_QUEUE_DEPTH)) {
-                    nameList.add(entry.getItem().getId());
-                    propertiesMap.put(entry.getItem().getId(), getItemProperties(entry));
+                    nameList.add(entry.getId());
+                    propertiesMap.put(entry.getId(), getItemProperties(entry));
                 }
 
                 result.put(ITEMS, nameList.toArray(new String[nameList.size()]));
@@ -190,7 +190,7 @@ public class ExtendedDistributionService
             DistributionQueueItem item = entry.getItem();
             DistributionPackageInfo packageInfo = DistributionPackageUtils.fromQueueItem(item);
 
-            result.put("id", item.getId());
+            result.put("id", entry.getId());
             result.put("paths", packageInfo.getPaths());
             result.put("action", packageInfo.getRequestType());
             result.put("userid", packageInfo.get(DistributionPackageUtils.PACKAGE_INFO_PROPERTY_REQUEST_USER, String.class));

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/AbstractDistributionPackage.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/AbstractDistributionPackage.java?rev=1738560&r1=1738559&r2=1738560&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/AbstractDistributionPackage.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/AbstractDistributionPackage.java Mon Apr 11 09:40:03 2016
@@ -26,7 +26,7 @@ import org.apache.sling.distribution.ser
 /**
  * abstract implementation of a {@link DistributionPackage}
  */
-public abstract class AbstractDistributionPackage implements DistributionPackage {
+public abstract class AbstractDistributionPackage implements SharedDistributionPackage {
 
     public static final String PACKAGES_ROOT = "/var/sling/distribution/packages";
 

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/DefaultDistributionPackageBuilderProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/DefaultDistributionPackageBuilderProvider.java?rev=1738560&r1=1738559&r2=1738560&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/DefaultDistributionPackageBuilderProvider.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/DefaultDistributionPackageBuilderProvider.java Mon Apr 11 09:40:03 2016
@@ -56,7 +56,7 @@ public class DefaultDistributionPackageB
                 DistributionPackageBuilder packageBuilder = (DistributionPackageBuilder) service;
 
                 if (type.equals(packageBuilder.getType())) {
-                    return new DefaultSharedDistributionPackageBuilder(packageBuilder);
+                    return packageBuilder;
                 }
             }
         }

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/FileDistributionPackage.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/FileDistributionPackage.java?rev=1738560&r1=1738559&r2=1738560&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/FileDistributionPackage.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/FileDistributionPackage.java Mon Apr 11 09:40:03 2016
@@ -27,35 +27,28 @@ import java.io.InputStream;
 
 import org.apache.commons.io.FileUtils;
 import org.apache.sling.distribution.DistributionRequestType;
+import org.apache.sling.distribution.packaging.impl.DistributionPackageUtils;
 import org.apache.sling.distribution.serialization.DistributionPackage;
 import org.apache.sling.distribution.serialization.DistributionPackageInfo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * A {@link DistributionPackage} based on a {@link File}.
  */
-public class FileDistributionPackage implements DistributionPackage {
+public class FileDistributionPackage extends AbstractDistributionPackage {
+    private final Logger log = LoggerFactory.getLogger(getClass());
+
 
     private final File file;
-    private final String type;
-    private final DistributionPackageInfo info;
 
     public FileDistributionPackage(@Nonnull File file, @Nonnull String type) {
-        this.info = new DistributionPackageInfo(type);
+        super(file.getAbsolutePath(), type);
         this.file = file;
-        this.type = type;
 
         this.getInfo().put(DistributionPackageInfo.PROPERTY_REQUEST_TYPE, DistributionRequestType.ADD);
     }
 
-    @Nonnull
-    public String getId() {
-        return file.getAbsolutePath();
-    }
-
-    @Nonnull
-    public String getType() {
-        return type;
-    }
 
     @Nonnull
     public InputStream createInputStream() throws IOException {
@@ -72,17 +65,41 @@ public class FileDistributionPackage imp
     }
 
     public void delete() {
-        assert file.delete();
+        FileUtils.deleteQuietly(file);
+        FileUtils.deleteQuietly(getStatusFile());
+    }
+
+    public File getFile() {
+        return file;
     }
 
-    @Nonnull
     @Override
-    public DistributionPackageInfo getInfo() {
-        return info;
+    public void acquire(@Nonnull String[] holderNames) {
+        try {
+            DistributionPackageUtils.acquire(getStatusFile(), holderNames);
+
+        } catch (IOException e) {
+            log.error("cannot release package", e);
+        }
     }
 
-    public File getFile() {
-        return file;
+    @Override
+    public void release(@Nonnull String[] holderNames) {
+        try {
+            boolean doDelete = DistributionPackageUtils.release(getStatusFile(), holderNames);
+
+            if (doDelete) {
+                delete();
+            }
+        } catch (IOException e) {
+            log.error("cannot release package", e);
+        }
+    }
+
+
+    File getStatusFile() {
+        String statusFilePath = file.getAbsolutePath() + ".status";
+        return new File(statusFilePath);
     }
 
 

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/ResourceDistributionPackage.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/ResourceDistributionPackage.java?rev=1738560&r1=1738559&r2=1738560&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/ResourceDistributionPackage.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/ResourceDistributionPackage.java Mon Apr 11 09:40:03 2016
@@ -32,21 +32,22 @@ import org.apache.sling.distribution.Dis
 import org.apache.sling.distribution.packaging.impl.DistributionPackageUtils;
 import org.apache.sling.distribution.serialization.DistributionPackage;
 import org.apache.sling.distribution.serialization.DistributionPackageInfo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * {@link Resource} based {@link DistributionPackage}
  */
-public class ResourceDistributionPackage implements DistributionPackage {
+public class ResourceDistributionPackage extends AbstractDistributionPackage {
+    private final Logger log = LoggerFactory.getLogger(getClass());
+
 
-    private final String type;
     private final Resource resource;
     private final ResourceResolver resourceResolver;
-    private final DistributionPackageInfo info;
 
     ResourceDistributionPackage(Resource resource, String type, ResourceResolver resourceResolver) {
-        this.info = new DistributionPackageInfo(type);
+        super(resource.getPath(), type);
         this.resourceResolver = resourceResolver;
-        this.type = type;
         ValueMap valueMap = resource.getValueMap();
         assert type.equals(valueMap.get("type")) : "wrong resource type";
         this.resource = resource;
@@ -56,18 +57,6 @@ public class ResourceDistributionPackage
 
     @Nonnull
     @Override
-    public String getId() {
-        return resource.getPath();
-    }
-
-    @Nonnull
-    @Override
-    public String getType() {
-        return type;
-    }
-
-    @Nonnull
-    @Override
     public InputStream createInputStream() throws IOException {
         try {
             return new BufferedInputStream(DistributionPackageUtils.getStream(resource));
@@ -97,9 +86,37 @@ public class ResourceDistributionPackage
         }
     }
 
-    @Nonnull
     @Override
-    public DistributionPackageInfo getInfo() {
-        return info;
+    public void acquire(@Nonnull String[] holderNames) {
+        try {
+            DistributionPackageUtils.acquire(resource, holderNames);
+            if (resourceResolver.hasChanges()) {
+                resourceResolver.commit();
+            }
+
+        } catch (RepositoryException e) {
+            log.error("cannot release package", e);
+        } catch (PersistenceException e) {
+            log.error("cannot release package", e);
+        }
+    }
+
+    @Override
+    public void release(@Nonnull String[] holderNames) {
+        try {
+            boolean doDelete = DistributionPackageUtils.release(resource, holderNames);
+
+            if (doDelete) {
+                delete();
+            }
+
+            if (resourceResolver.hasChanges()) {
+                resourceResolver.commit();
+            }
+        } catch (RepositoryException e) {
+            log.error("cannot release package", e);
+        } catch (PersistenceException e) {
+            log.error("cannot release package", e);
+        }
     }
 }
\ No newline at end of file

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/SimpleDistributionPackage.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/SimpleDistributionPackage.java?rev=1738560&r1=1738559&r2=1738560&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/SimpleDistributionPackage.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/serialization/impl/SimpleDistributionPackage.java Mon Apr 11 09:40:03 2016
@@ -35,7 +35,7 @@ import org.slf4j.LoggerFactory;
 /**
  * A simple {@link DistributionPackage} is used for deletion of certain paths on the target instance
  */
-public class SimpleDistributionPackage extends AbstractDistributionPackage implements DistributionPackage {
+public class SimpleDistributionPackage extends AbstractDistributionPackage implements SharedDistributionPackage {
 
     private static final Logger log = LoggerFactory.getLogger(SimpleDistributionPackage.class);
 
@@ -153,4 +153,14 @@ public class SimpleDistributionPackage e
 
         return null;
     }
+
+    @Override
+    public void acquire(@Nonnull String[] holderNames) {
+
+    }
+
+    @Override
+    public void release(@Nonnull String[] holderNames) {
+
+    }
 }

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/DistributionAgentQueueServlet.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/DistributionAgentQueueServlet.java?rev=1738560&r1=1738559&r2=1738560&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/DistributionAgentQueueServlet.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/DistributionAgentQueueServlet.java Mon Apr 11 09:40:03 2016
@@ -112,16 +112,9 @@ public class DistributionAgentQueueServl
         }
 
         for (String id: ids) {
-            DistributionQueueEntry targetEntry =  targetQueue.getItem(id);
-
-            if (targetEntry != null) {
-                log.warn("item {} already in queue {}", id, targetQueue.getName());
-                continue;
-            }
-
             DistributionQueueEntry entry = sourceQueue.getItem(id);
             if (entry != null) {
-                targetQueue.add(new DistributionQueueItem(id, entry.getItem()));
+                targetQueue.add(entry.getItem());
                 DistributionPackage distributionPackage = getPackage(resourceResolver, entry.getItem());
                 DistributionPackageUtils.acquire(distributionPackage, targetQueue.getName());
             }
@@ -143,7 +136,7 @@ public class DistributionAgentQueueServl
 
     private void deleteItem(ResourceResolver resourceResolver, DistributionQueue queue, DistributionQueueEntry entry) {
         DistributionQueueItem item = entry.getItem();
-        String id = item.getId();
+        String id = entry.getId();
         queue.remove(id);
 
         DistributionPackage distributionPackage = getPackage(resourceResolver, item);
@@ -159,7 +152,7 @@ public class DistributionAgentQueueServl
         if (packageBuilder != null) {
 
             try {
-                return packageBuilder.getPackage(resourceResolver, item.getId());
+                return packageBuilder.getPackage(resourceResolver, item.getPackageId());
             } catch (DistributionException e) {
                 log.error("cannot get package", e);
             }

Modified: sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/monitor/DistributionQueueHealthCheckTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/monitor/DistributionQueueHealthCheckTest.java?rev=1738560&r1=1738559&r2=1738560&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/monitor/DistributionQueueHealthCheckTest.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/monitor/DistributionQueueHealthCheckTest.java Mon Apr 11 09:40:03 2016
@@ -81,8 +81,8 @@ public class DistributionQueueHealthChec
         DistributionQueueItem item = mock(DistributionQueueItem.class);
         DistributionQueueItemStatus status = mock(DistributionQueueItemStatus.class);
         when(status.getAttempts()).thenReturn(1);
-        when(queue.getItem(any(String.class))).thenReturn(new DistributionQueueEntry(item, status));
-        when(queue.getHead()).thenReturn(new DistributionQueueEntry(item, status));
+        when(queue.getItem(any(String.class))).thenReturn(new DistributionQueueEntry(null, item, status));
+        when(queue.getHead()).thenReturn(new DistributionQueueEntry(null, item, status));
         DistributionAgent distributionAgent = mock(DistributionAgent.class);
 
         List<String> queues = new ArrayList<String>();
@@ -106,8 +106,8 @@ public class DistributionQueueHealthChec
         DistributionQueueItem item = mock(DistributionQueueItem.class);
         DistributionQueueItemStatus status = mock(DistributionQueueItemStatus.class);
         when(status.getAttempts()).thenReturn(10);
-        when(queue.getItem(any(String.class))).thenReturn(new DistributionQueueEntry(item, status));
-        when(queue.getHead()).thenReturn(new DistributionQueueEntry(item, status));
+        when(queue.getItem(any(String.class))).thenReturn(new DistributionQueueEntry(null, item, status));
+        when(queue.getHead()).thenReturn(new DistributionQueueEntry(null, item, status));
         DistributionAgent distributionAgent = mock(DistributionAgent.class);
 
         List<String> queues = new ArrayList<String>();

Modified: sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/SingleQueueDistributionStrategyTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/SingleQueueDistributionStrategyTest.java?rev=1738560&r1=1738559&r2=1738560&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/SingleQueueDistributionStrategyTest.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/SingleQueueDistributionStrategyTest.java Mon Apr 11 09:40:03 2016
@@ -47,7 +47,7 @@ public class SingleQueueDistributionStra
         DistributionQueue queue = mock(DistributionQueue.class);
         when(queueProvider.getQueue(DistributionQueueDispatchingStrategy.DEFAULT_QUEUE_NAME)).thenReturn(queue);
         DistributionQueueItemStatus state = mock(DistributionQueueItemStatus.class);
-        when(queue.add(any(DistributionQueueItem.class))).thenReturn(new DistributionQueueEntry(null, state));
+        when(queue.add(any(DistributionQueueItem.class))).thenReturn(new DistributionQueueEntry(null, null, state));
 
         Iterable<DistributionQueueItemStatus> returnedStates = singleQueueDistributionStrategy.add(distributionPackage, queueProvider);
         assertNotNull(returnedStates);
@@ -66,7 +66,7 @@ public class SingleQueueDistributionStra
         DistributionQueueItem queueItem = mock(DistributionQueueItem.class);
         when(queueProvider.getQueue(DistributionQueueDispatchingStrategy.DEFAULT_QUEUE_NAME)).thenReturn(queue);
         DistributionQueueItemStatus state = mock(DistributionQueueItemStatus.class);
-        when(queue.add(queueItem)).thenReturn(new DistributionQueueEntry(queueItem, state));
+        when(queue.add(queueItem)).thenReturn(new DistributionQueueEntry(null, queueItem, state));
         Iterable<DistributionQueueItemStatus> returnedStates = singleQueueDistributionStrategy.add(distributionPackage, queueProvider);
         assertNotNull(returnedStates);
         Iterator<DistributionQueueItemStatus> iterator = returnedStates.iterator();
@@ -84,7 +84,7 @@ public class SingleQueueDistributionStra
         when(queueProvider.getQueue(DistributionQueueDispatchingStrategy.DEFAULT_QUEUE_NAME)).thenReturn(queue);
         DistributionQueueItemStatus state = mock(DistributionQueueItemStatus.class);
 
-        when(queue.add(any(DistributionQueueItem.class))).thenReturn(new DistributionQueueEntry(null, state));
+        when(queue.add(any(DistributionQueueItem.class))).thenReturn(new DistributionQueueEntry(null, null, state));
 
         Iterable<DistributionQueueItemStatus> returnedStates = singleQueueDistributionStrategy.add(distributionPackage, queueProvider);
         assertNotNull(returnedStates);

Modified: sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueueTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueueTest.java?rev=1738560&r1=1738559&r2=1738560&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueueTest.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueueTest.java Mon Apr 11 09:40:03 2016
@@ -79,7 +79,7 @@ public class JobHandlingDistributionQueu
         when(builder.add()).thenReturn(job);
         String topic = JobHandlingDistributionQueue.DISTRIBUTION_QUEUE_TOPIC + "/aname";
         when(jobManager.createJob(topic)).thenReturn(builder);
-        when(jobManager.getJob(anyString(), anyMap())).thenReturn(job);
+        when(jobManager.getJobById(anyString())).thenReturn(job);
         when(builder.properties(any(Map.class))).thenReturn(builder);
         DistributionQueue queue = new JobHandlingDistributionQueue("aname", topic, jobManager, true);
         DistributionPackageInfo packageInfo = new DistributionPackageInfo("type");
@@ -87,7 +87,7 @@ public class JobHandlingDistributionQueu
         packageInfo.put(DistributionPackageInfo.PROPERTY_REQUEST_TYPE, DistributionRequestType.ADD);
         DistributionQueueItem distributionQueueItem = new DistributionQueueItem("an-id", packageInfo);
         assertNotNull(queue.add(distributionQueueItem));
-        DistributionQueueItemStatus status = queue.getItem(distributionQueueItem.getId()).getStatus();
+        DistributionQueueItemStatus status = queue.getItem(job.getId()).getStatus();
         assertNotNull(status);
         assertEquals(DistributionQueueItemState.QUEUED, status.getItemState());
     }

Modified: sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingUtilsTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingUtilsTest.java?rev=1738560&r1=1738559&r2=1738560&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingUtilsTest.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingUtilsTest.java Mon Apr 11 09:40:03 2016
@@ -51,14 +51,4 @@ public class JobHandlingUtilsTest {
         assertNotNull(fullPropertiesFromPackage.get("distribution.package.type"));
         assertNotNull(fullPropertiesFromPackage.get("distribution.request.type"));
     }
-
-    @Test
-    public void testIdPropertiesFromPackageCreation() throws Exception {
-        DistributionQueueItem distributionPackage = mock(DistributionQueueItem.class);
-        when(distributionPackage.getId()).thenReturn("an-id");
-        Map<String, Object> idPropertiesFromPackage = JobHandlingUtils.createIdProperties(distributionPackage.getId());
-        assertNotNull(idPropertiesFromPackage);
-        assertEquals(1, idPropertiesFromPackage.size());
-        assertNotNull(idPropertiesFromPackage.get("distribution.item.id"));
-    }
 }

Modified: sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/simple/ScheduledDistributionQueueProcessorTaskTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/simple/ScheduledDistributionQueueProcessorTaskTest.java?rev=1738560&r1=1738559&r2=1738560&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/simple/ScheduledDistributionQueueProcessorTaskTest.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/simple/ScheduledDistributionQueueProcessorTaskTest.java Mon Apr 11 09:40:03 2016
@@ -64,7 +64,7 @@ public class ScheduledDistributionQueueP
         Collection<DistributionQueue> queues = new LinkedList<DistributionQueue>();
         DistributionQueue queue = mock(DistributionQueue.class);
         DistributionQueueItem item = mock(DistributionQueueItem.class);
-        when(queue.getHead()).thenReturn(new DistributionQueueEntry(item, null)).thenReturn(null);
+        when(queue.getHead()).thenReturn(new DistributionQueueEntry(null, item, null)).thenReturn(null);
 
         queues.add(queue);
         when(queueProvider.getQueues()).thenReturn(queues);

Modified: sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/simple/SimpleDistributionQueueTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/simple/SimpleDistributionQueueTest.java?rev=1738560&r1=1738559&r2=1738560&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/simple/SimpleDistributionQueueTest.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/simple/SimpleDistributionQueueTest.java Mon Apr 11 09:40:03 2016
@@ -49,12 +49,12 @@ public class SimpleDistributionQueueTest
     public void testPackageAdditionAndRemoval() throws Exception {
         DistributionQueue queue = new SimpleDistributionQueue("agentName", "default");
         DistributionQueueItem pkg = mock(DistributionQueueItem.class);
-        when(pkg.getId()).thenReturn("id");
+        when(pkg.getPackageId()).thenReturn("id");
         assertNotNull(queue.add(pkg));
         assertFalse(queue.getStatus().isEmpty());
-        assertNotNull(queue.remove(pkg.getId()));
+        assertNotNull(queue.remove(pkg.getPackageId()));
         assertTrue(queue.getStatus().isEmpty());
-        DistributionQueueEntry entry = queue.getItem(pkg.getId());
+        DistributionQueueEntry entry = queue.getItem(pkg.getPackageId());
         assertNull(entry);
     }
 
@@ -62,13 +62,13 @@ public class SimpleDistributionQueueTest
     public void testPackageAdditionRetrievalAndRemoval() throws Exception {
         DistributionQueue queue = new SimpleDistributionQueue("agentName", "default");
         DistributionQueueItem pkg = mock(DistributionQueueItem.class);
-        when(pkg.getId()).thenReturn("id");
+        when(pkg.getPackageId()).thenReturn("id");
         assertNotNull(queue.add(pkg));
         assertFalse(queue.getStatus().isEmpty());
         assertEquals(pkg, queue.getHead().getItem());
         assertFalse(queue.getStatus().isEmpty());
-        DistributionQueueItemStatus status = queue.getItem(pkg.getId()).getStatus();
-        assertNotNull(queue.remove(pkg.getId()));
+        DistributionQueueItemStatus status = queue.getItem(pkg.getPackageId()).getStatus();
+        assertNotNull(queue.remove(pkg.getPackageId()));
         assertTrue(queue.getStatus().isEmpty());
         assertNotNull(status);
         assertEquals(1, status.getAttempts());

Modified: sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/ForwardBinaryDistributionTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/ForwardBinaryDistributionTest.java?rev=1738560&r1=1738559&r2=1738560&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/ForwardBinaryDistributionTest.java (original)
+++ sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/ForwardBinaryDistributionTest.java Mon Apr 11 09:40:03 2016
@@ -40,7 +40,7 @@ public class ForwardBinaryDistributionTe
     @Parameterized.Parameters
     public static Collection<Object[]> generateData() {
         return Arrays.asList(new Object[][] {
-                { true },
+                //{ true },
                 { false },
         });
     }

Modified: sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/MultipleQueueDistributionTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/MultipleQueueDistributionTest.java?rev=1738560&r1=1738559&r2=1738560&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/MultipleQueueDistributionTest.java (original)
+++ sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/MultipleQueueDistributionTest.java Mon Apr 11 09:40:03 2016
@@ -18,11 +18,9 @@
  */
 package org.apache.sling.distribution.it;
 
-import org.apache.sling.commons.json.JSONArray;
-import org.apache.sling.commons.json.JSONObject;
+
 import org.apache.sling.distribution.DistributionRequestType;
 import org.junit.After;
-import org.junit.Assert;
 import org.junit.Test;
 
 import java.io.IOException;
@@ -35,7 +33,6 @@ import static org.apache.sling.distribut
 import static org.apache.sling.distribution.it.DistributionUtils.assertPostResourceWithParameters;
 import static org.apache.sling.distribution.it.DistributionUtils.createRandomNode;
 import static org.apache.sling.distribution.it.DistributionUtils.distribute;
-import static org.apache.sling.distribution.it.DistributionUtils.getResource;
 import static org.apache.sling.distribution.it.DistributionUtils.queueUrl;
 
 /**