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 2015/12/22 09:40:03 UTC

svn commit: r1721316 [2/2] - in /sling/trunk/contrib/extensions/distribution: core/src/main/java/org/apache/sling/distribution/agent/impl/ core/src/main/java/org/apache/sling/distribution/packaging/ core/src/main/java/org/apache/sling/distribution/pack...

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/DistributionPackageExporterServlet.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/DistributionPackageExporterServlet.java?rev=1721316&r1=1721315&r2=1721316&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/DistributionPackageExporterServlet.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/DistributionPackageExporterServlet.java Tue Dec 22 08:40:03 2015
@@ -22,6 +22,7 @@ import javax.servlet.ServletException;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.List;
+import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.felix.scr.annotations.sling.SlingServlet;
@@ -32,6 +33,7 @@ import org.apache.sling.api.resource.Res
 import org.apache.sling.api.servlets.SlingAllMethodsServlet;
 import org.apache.sling.distribution.DistributionRequest;
 import org.apache.sling.distribution.common.DistributionException;
+import org.apache.sling.distribution.packaging.DistributionPackageProcessor;
 import org.apache.sling.distribution.serialization.DistributionPackage;
 import org.apache.sling.distribution.packaging.DistributionPackageExporter;
 import org.apache.sling.distribution.resources.DistributionResourceTypes;
@@ -75,7 +77,7 @@ public class DistributionPackageExporter
         }
     }
 
-    protected void exportOnePackage(SlingHttpServletRequest request, SlingHttpServletResponse response, boolean delete)
+    protected void exportOnePackage(final SlingHttpServletRequest request, final SlingHttpServletResponse response, final boolean delete)
             throws ServletException, IOException {
 
         DistributionPackageExporter distributionPackageExporter = request
@@ -89,48 +91,44 @@ public class DistributionPackageExporter
         DistributionRequest distributionRequest = RequestUtils.fromServletRequest(request);
         ResourceResolver resourceResolver = request.getResourceResolver();
 
-        int consumed = 0;
-        int fetched = 0;
+        final AtomicInteger fetched = new AtomicInteger(0);
         try {
             // get all items
-            List<DistributionPackage> distributionPackages = distributionPackageExporter.exportPackages(resourceResolver, distributionRequest);
-            fetched = distributionPackages.size();
-
-            if (distributionPackages.size() > 0) {
-                log.info("{} package(s) available for fetching", distributionPackages.size());
+            distributionPackageExporter.exportPackages(resourceResolver, distributionRequest, new DistributionPackageProcessor() {
+                @Override
+                public void process(DistributionPackage distributionPackage) {
+                    fetched.incrementAndGet();
+
+                    InputStream inputStream = null;
+                    int bytesCopied = -1;
+                    try {
+                        response.addHeader(HttpTransportUtils.HEADER_DISTRIBUTION_ORIGINAL_ID, distributionPackage.getId());
+
+                        inputStream = distributionPackage.createInputStream();
+
+                        bytesCopied = IOUtils.copy(inputStream, response.getOutputStream());
+                    } catch (IOException e) {
+                        log.error("cannot process package", e);
+                    } finally {
+                        IOUtils.closeQuietly(inputStream);
+                    }
 
-                for (DistributionPackage distributionPackage : distributionPackages) {
-                    if (distributionPackage != null) {
-                        consumed++;
-                        InputStream inputStream = null;
-                        int bytesCopied = -1;
-                        try {
-                            response.addHeader(HttpTransportUtils.HEADER_DISTRIBUTION_ORIGINAL_ID, distributionPackage.getId());
-
-                            inputStream = distributionPackage.createInputStream();
-
-                            bytesCopied = IOUtils.copy(inputStream, response.getOutputStream());
-                        } finally {
-                            IOUtils.closeQuietly(inputStream);
-                        }
-
-                        String packageId = distributionPackage.getId();
-                        if (delete) {
-                            // delete the package permanently
-                            distributionPackage.delete();
-                        }
-
-
-                        // everything ok
-                        response.setStatus(200);
-                        log.info("exported package {} was sent (and deleted={}), bytes written {}", new Object[]{packageId, delete, bytesCopied});
-                    } else {
-                        log.warn("fetched a null package");
+                    String packageId = distributionPackage.getId();
+                    if (delete) {
+                        // delete the package permanently
+                        distributionPackage.delete();
                     }
+
+
+                    // everything ok
+                    response.setStatus(200);
+                    log.info("exported package {} was sent (and deleted={}), bytes written {}", new Object[]{packageId, delete, bytesCopied});
                 }
+            });
 
+            if (fetched.get() > 0) {
                 long end = System.currentTimeMillis();
-                log.info("Processed distribution export request in {} ms: : consumed {} of {}", new Object[]{end - start, consumed, fetched});
+                log.info("Processed distribution export request in {} ms: : fetched {}", new Object[]{end - start, fetched});
             } else {
                 response.setStatus(204);
                 log.debug("nothing to fetch");
@@ -163,9 +161,6 @@ public class DistributionPackageExporter
             response.setStatus(204);
             log.debug("nothing to delete {}", id);
         }
-
-
-
     }
 
 }

Added: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/core/DistributionContext.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/core/DistributionContext.java?rev=1721316&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/core/DistributionContext.java (added)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/core/DistributionContext.java Tue Dec 22 08:40:03 2015
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.sling.distribution.transport.core;
+
+import org.apache.sling.api.wrappers.ValueMapDecorator;
+
+import java.util.HashMap;
+
+public class DistributionContext extends ValueMapDecorator {
+
+    public DistributionContext() {
+        super(new HashMap<String, Object>());
+    }
+}

Added: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/core/DistributionPackageProxy.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/core/DistributionPackageProxy.java?rev=1721316&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/core/DistributionPackageProxy.java (added)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/core/DistributionPackageProxy.java Tue Dec 22 08:40:03 2015
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.sling.distribution.transport.core;
+
+import org.apache.sling.distribution.serialization.DistributionPackage;
+
+
+public interface DistributionPackageProxy {
+    public DistributionPackage getPackage();
+    public void deletePackage();
+}

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/core/DistributionTransport.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/core/DistributionTransport.java?rev=1721316&r1=1721315&r2=1721316&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/core/DistributionTransport.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/core/DistributionTransport.java Tue Dec 22 08:40:03 2015
@@ -19,6 +19,7 @@
 package org.apache.sling.distribution.transport.core;
 
 import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
 
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.distribution.DistributionRequest;
@@ -42,7 +43,7 @@ public interface DistributionTransport {
      * @throws DistributionException if the {@link DistributionPackage}
      *                                        fails to be delivered to the target instance (e.g. because of network, I/O issues)
      */
-    void deliverPackage(@Nonnull ResourceResolver resourceResolver, @Nonnull DistributionPackage distributionPackage) throws DistributionException;
+    void deliverPackage(@Nonnull ResourceResolver resourceResolver, @Nonnull DistributionPackage distributionPackage, @Nonnull DistributionContext context) throws DistributionException;
 
     /**
      * Retrieve {@link DistributionPackage}s from a target Sling instance, which
@@ -56,7 +57,7 @@ public interface DistributionTransport {
      * @throws DistributionException if the {@link DistributionPackage}s
      *                                        fail to be retrieved from the target instance
      */
-    @Nonnull
-    Iterable<DistributionPackage> retrievePackages(@Nonnull ResourceResolver resourceResolver, @Nonnull DistributionRequest request) throws DistributionException;
+    @Nullable
+    DistributionPackageProxy retrievePackage(@Nonnull ResourceResolver resourceResolver, @Nonnull DistributionRequest request, @Nonnull DistributionContext context) throws DistributionException;
 
 }

Added: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/DefaultDistributionPackageProxy.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/DefaultDistributionPackageProxy.java?rev=1721316&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/DefaultDistributionPackageProxy.java (added)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/DefaultDistributionPackageProxy.java Tue Dec 22 08:40:03 2015
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.sling.distribution.transport.impl;
+
+import org.apache.http.client.fluent.Executor;
+import org.apache.sling.distribution.serialization.DistributionPackage;
+import org.apache.sling.distribution.transport.core.DistributionPackageProxy;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+
+
+public class DefaultDistributionPackageProxy implements DistributionPackageProxy {
+    static final Logger log = LoggerFactory.getLogger(DefaultDistributionPackageProxy.class);
+
+
+    private final DistributionPackage wrappedPackage;
+    private final Executor executor;
+    private final URI distributionURI;
+    private final String remoteId;
+
+    public DefaultDistributionPackageProxy(DistributionPackage wrappedPackage, Executor executor, URI distributionURI, String remoteId) {
+        this.wrappedPackage = wrappedPackage;
+        this.executor = executor;
+        this.distributionURI = distributionURI;
+        this.remoteId = remoteId;
+    }
+
+
+    public DistributionPackage getPackage() {
+        return wrappedPackage;
+    }
+
+    public void deletePackage() {
+
+        try {
+            HttpTransportUtils.deletePackage(executor, distributionURI, remoteId);
+        } catch (URISyntaxException e) {
+            log.error("cannot delete remote package", e);
+        } catch (IOException e) {
+            log.error("cannot delete remote package", e);
+        }
+    }
+}

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/SimpleHttpDistributionTransport.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/SimpleHttpDistributionTransport.java?rev=1721316&r1=1721315&r2=1721316&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/SimpleHttpDistributionTransport.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/SimpleHttpDistributionTransport.java Tue Dec 22 08:40:03 2015
@@ -36,7 +36,6 @@ import org.apache.http.conn.HttpHostConn
 import org.apache.http.entity.ContentType;
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.distribution.DistributionRequest;
-import org.apache.sling.distribution.DistributionRequestType;
 import org.apache.sling.distribution.common.DistributionException;
 import org.apache.sling.distribution.common.RecoverableDistributionException;
 import org.apache.sling.distribution.log.impl.DefaultDistributionLog;
@@ -44,7 +43,9 @@ import org.apache.sling.distribution.ser
 import org.apache.sling.distribution.serialization.DistributionPackageBuilder;
 import org.apache.sling.distribution.transport.DistributionTransportSecret;
 import org.apache.sling.distribution.transport.DistributionTransportSecretProvider;
+import org.apache.sling.distribution.transport.core.DistributionContext;
 import org.apache.sling.distribution.transport.core.DistributionTransport;
+import org.apache.sling.distribution.transport.core.DistributionPackageProxy;
 import org.apache.sling.distribution.util.RequestUtils;
 
 /**
@@ -54,6 +55,8 @@ public class SimpleHttpDistributionTrans
 
     private static final String USERNAME = "username";
     private static final String PASSWORD = "password";
+    private static final String EXECUTOR_CONTEXT_KEY = "executorContextKey";
+
 
     /**
      * distribution package origin uri
@@ -64,21 +67,18 @@ public class SimpleHttpDistributionTrans
     private final DistributionEndpoint distributionEndpoint;
     private final DistributionPackageBuilder packageBuilder;
     protected final DistributionTransportSecretProvider secretProvider;
-    private final int maxPullItems;
 
     public SimpleHttpDistributionTransport(DefaultDistributionLog log, DistributionEndpoint distributionEndpoint,
                                            DistributionPackageBuilder packageBuilder,
-                                           DistributionTransportSecretProvider secretProvider,
-                                           int maxPullItems) {
+                                           DistributionTransportSecretProvider secretProvider) {
         this.log = log;
 
         this.distributionEndpoint = distributionEndpoint;
         this.packageBuilder = packageBuilder;
         this.secretProvider = secretProvider;
-        this.maxPullItems = maxPullItems;
     }
 
-    public void deliverPackage(@Nonnull ResourceResolver resourceResolver, @Nonnull DistributionPackage distributionPackage) throws DistributionException {
+    public void deliverPackage(@Nonnull ResourceResolver resourceResolver, @Nonnull DistributionPackage distributionPackage, @Nonnull DistributionContext distributionContext) throws DistributionException {
         String hostAndPort = getHostAndPort(distributionEndpoint.getUri());
 
         URI packageOrigin = distributionPackage.getInfo().get(PACKAGE_INFO_PROPERTY_ORIGIN_URI, URI.class);
@@ -89,13 +89,7 @@ public class SimpleHttpDistributionTrans
 
 
             try {
-                Executor executor = Executor.newInstance();
-
-                DistributionTransportSecret secret = secretProvider.getSecret(distributionEndpoint.getUri());
-
-                log.debug("delivering package {} to {} with user {}", distributionPackage.getId(), distributionEndpoint.getUri(), secret.asCredentialsMap().get(USERNAME));
-
-                executor = authenticate(secret, executor);
+                Executor executor = getExecutor(distributionContext);
 
                 Request req = Request.Post(distributionEndpoint.getUri()).useExpectContinue();
 
@@ -123,8 +117,7 @@ public class SimpleHttpDistributionTrans
     }
 
     @Nonnull
-    public List<DistributionPackage> retrievePackages(@Nonnull ResourceResolver resourceResolver, @Nonnull DistributionRequest
-            distributionRequest) throws DistributionException {
+    public DistributionPackageProxy retrievePackage(@Nonnull ResourceResolver resourceResolver, @Nonnull DistributionRequest distributionRequest, @Nonnull DistributionContext distributionContext) throws DistributionException {
         log.debug("pulling from {}", distributionEndpoint.getUri());
         List<DistributionPackage> result = new ArrayList<DistributionPackage>();
 
@@ -134,57 +127,44 @@ public class SimpleHttpDistributionTrans
 
             // TODO : executor should be cached and reused
 
-            Executor executor = Executor.newInstance();
 
-            DistributionTransportSecret secret = secretProvider.getSecret(distributionEndpoint.getUri());
-            executor = authenticate(secret, executor);
+            Executor executor = getExecutor(distributionContext);
 
 //            Request req = Request.Post(distributionURI).useExpectContinue();
 
             // TODO : add queue parameter
 
             // continuously requests package streams as long as type header is received with the response (meaning there's a package of a certain type)
-            InputStream inputStream;
             final Map<String, String> headers = new HashMap<String, String>();
 
-            int pulls = 0;
-            int maxNumberOfPackages = DistributionRequestType.PULL.equals(distributionRequest.getRequestType()) ? maxPullItems : 1;
 
-            while (pulls < maxNumberOfPackages && (inputStream = HttpTransportUtils.fetchNextPackage(executor, distributionURI, headers)) != null) {
+            InputStream inputStream = HttpTransportUtils.fetchNextPackage(executor, distributionURI, headers);
 
-                final DistributionPackage responsePackage = packageBuilder.readPackage(resourceResolver, inputStream);
-                if (responsePackage != null) {
-                    responsePackage.getInfo().put(PACKAGE_INFO_PROPERTY_ORIGIN_URI, distributionURI);
-                    log.debug("pulled package no {} with info {}", pulls, responsePackage.getInfo());
+            if (inputStream == null) {
+                return null;
+            }
 
-                    result.add(responsePackage);
+            final DistributionPackage responsePackage = packageBuilder.readPackage(resourceResolver, inputStream);
+            if (responsePackage != null) {
+                responsePackage.getInfo().put(PACKAGE_INFO_PROPERTY_ORIGIN_URI, distributionURI);
+                log.debug("pulled package with info {}", responsePackage.getInfo());
 
-                    String originalId = headers.get(HttpTransportUtils.HEADER_DISTRIBUTION_ORIGINAL_ID);
 
-                    HttpTransportUtils.deletePackage(executor, distributionURI, originalId);
+                String originalId = headers.get(HttpTransportUtils.HEADER_DISTRIBUTION_ORIGINAL_ID);
 
-                } else {
-                    log.warn("responsePackage is null");
-                }
+                DistributionPackageProxy remotePackage = new DefaultDistributionPackageProxy(responsePackage, executor, distributionURI, originalId);
 
-                pulls++;
+                return remotePackage;
+            } else {
+                log.warn("responsePackage is null");
             }
-
         } catch (HttpHostConnectException e) {
             log.info("could not connect to {} - skipping", distributionEndpoint.getUri());
         } catch (Exception ex) {
             log.error("cannot retrieve packages", ex);
         }
 
-
-        // only log.info when something is pulled in order to keep a quite log
-        if (result.size() == 0) {
-            log.debug("pulled {} packages from {}", result.size(), distributionEndpoint.getUri());
-        } else {
-            log.info("pulled {} packages from {}", result.size(), distributionEndpoint.getUri());
-        }
-
-        return result;
+        return null;
     }
 
     protected Executor authenticate(DistributionTransportSecret secret, Executor executor) {
@@ -193,7 +173,7 @@ public class SimpleHttpDistributionTrans
             executor = executor.auth(new HttpHost(distributionEndpoint.getUri().getHost(), distributionEndpoint.getUri().getPort()),
                     credentialsMap.get(USERNAME), credentialsMap.get(PASSWORD)).authPreemptive(
                     new HttpHost(distributionEndpoint.getUri().getHost(), distributionEndpoint.getUri().getPort()));
-            log.debug("authenticated executor HTTP client with user and password");
+            log.debug("authenticated executor HTTP client with user and password {}", secret.asCredentialsMap().get(USERNAME));
         }
         return executor;
     }
@@ -202,4 +182,21 @@ public class SimpleHttpDistributionTrans
         return uri.getHost() + ":" + uri.getPort();
     }
 
+
+    private Executor getExecutor(DistributionContext distributionContext) {
+        if (distributionContext.containsKey(EXECUTOR_CONTEXT_KEY)) {
+            return distributionContext.get(EXECUTOR_CONTEXT_KEY, Executor.class);
+        }
+
+        Executor executor = Executor.newInstance();
+
+        DistributionTransportSecret secret = secretProvider.getSecret(distributionEndpoint.getUri());
+        executor = authenticate(secret, executor);
+
+        distributionContext.put(EXECUTOR_CONTEXT_KEY, executor);
+
+        return executor;
+
+    }
+
 }

Modified: sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentTest.java?rev=1721316&r1=1721315&r2=1721316&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentTest.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentTest.java Tue Dec 22 08:40:03 2015
@@ -18,6 +18,7 @@
  */
 package org.apache.sling.distribution.agent.impl;
 
+import java.util.ArrayList;
 import java.util.Arrays;
 
 import org.apache.sling.api.resource.ResourceResolver;
@@ -29,6 +30,7 @@ import org.apache.sling.distribution.Dis
 import org.apache.sling.distribution.SimpleDistributionRequest;
 import org.apache.sling.distribution.event.impl.DistributionEventFactory;
 import org.apache.sling.distribution.log.impl.DefaultDistributionLog;
+import org.apache.sling.distribution.packaging.DistributionPackageProcessor;
 import org.apache.sling.distribution.serialization.DistributionPackage;
 import org.apache.sling.distribution.packaging.DistributionPackageExporter;
 import org.apache.sling.distribution.packaging.DistributionPackageImporter;
@@ -41,6 +43,8 @@ import org.apache.sling.distribution.que
 import org.apache.sling.distribution.queue.impl.simple.SimpleDistributionQueue;
 import org.apache.sling.jcr.api.SlingRepository;
 import org.junit.Test;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -48,7 +52,9 @@ import static org.junit.Assert.assertNot
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.doAnswer;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.mockingDetails;
 import static org.mockito.Mockito.when;
 
 /**
@@ -75,12 +81,20 @@ public class SimpleDistributionAgentTest
                 queueProvider, distributionHandler, null,
                 distributionEventFactory, resolverFactory, mock(SlingRepository.class),  mock(DefaultDistributionLog.class), null, null, 0);
         DistributionRequest request = new SimpleDistributionRequest(DistributionRequestType.ADD, "/");
-        DistributionPackage distributionPackage = mock(DistributionPackage.class);
+        final DistributionPackage distributionPackage = mock(DistributionPackage.class);
         ResourceResolver resourceResolver = mock(ResourceResolver.class);
 
         when(distributionPackage.getInfo()).thenReturn(new DistributionPackageInfo("type"));
-        when(packageExporter.exportPackages(any(ResourceResolver.class), any(DistributionRequest.class)))
-                .thenReturn(Arrays.asList(distributionPackage));
+        doAnswer(new Answer() {
+            @Override
+            public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
+                Object[] args = invocationOnMock.getArguments();
+                ((DistributionPackageProcessor) args[2]).process(distributionPackage);
+                return null;
+            }
+        }).when(packageExporter).exportPackages(any(ResourceResolver.class), any(DistributionRequest.class), any(DistributionPackageProcessor.class));
+
+
         when(queueProvider.getQueue(DistributionQueueDispatchingStrategy.DEFAULT_QUEUE_NAME)).thenReturn(
                 new SimpleDistributionQueue(name, "name"));
         DistributionResponse response = agent.execute(resourceResolver, request);
@@ -106,15 +120,21 @@ public class SimpleDistributionAgentTest
                 distributionHandler, null, distributionEventFactory, resolverFactory, mock(SlingRepository.class),
                 mock(DefaultDistributionLog.class), null, null, 0);
         DistributionRequest request = new SimpleDistributionRequest(DistributionRequestType.ADD, "/");
-        DistributionPackage distributionPackage = mock(DistributionPackage.class);
+        final DistributionPackage distributionPackage = mock(DistributionPackage.class);
         ResourceResolver resourceResolver = mock(ResourceResolver.class);
 
         when(distributionPackage.getInfo()).thenReturn(new DistributionPackageInfo("type"));
         Iterable<DistributionQueueItemStatus> states = Arrays.asList(new DistributionQueueItemStatus(DistributionQueueItemState.QUEUED,
                 DistributionQueueDispatchingStrategy.DEFAULT_QUEUE_NAME));
         when(distributionHandler.add(any(DistributionPackage.class), any(DistributionQueueProvider.class))).thenReturn(states);
-        when(packageExporter.exportPackages(any(ResourceResolver.class), any(DistributionRequest.class)))
-                .thenReturn(Arrays.asList(distributionPackage));
+        doAnswer(new Answer() {
+            @Override
+            public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
+                Object[] args = invocationOnMock.getArguments();
+                ((DistributionPackageProcessor) args[2]).process(distributionPackage);
+                return null;
+            }
+        }).when(packageExporter).exportPackages(any(ResourceResolver.class), any(DistributionRequest.class), any(DistributionPackageProcessor.class));
         when(queueProvider.getQueue(DistributionQueueDispatchingStrategy.DEFAULT_QUEUE_NAME)).thenReturn(
                 new SimpleDistributionQueue(name, "name"));
         DistributionResponse response = agent.execute(resourceResolver, request);
@@ -128,26 +148,34 @@ public class SimpleDistributionAgentTest
         String name = "sample-agent";
         DistributionPackageImporter packageImporter = mock(DistributionPackageImporter.class);
         DistributionPackageExporter packageExporter = mock(DistributionPackageExporter.class);
-        DistributionRequestAuthorizationStrategy packageExporterStrategy = mock(DistributionRequestAuthorizationStrategy.class);
+        DistributionRequestAuthorizationStrategy requestAuthorizationStrategy = mock(DistributionRequestAuthorizationStrategy.class);
         DistributionQueueProvider queueProvider = mock(DistributionQueueProvider.class);
-        DistributionQueueDispatchingStrategy distributionHandler = mock(DistributionQueueDispatchingStrategy.class);
+        DistributionQueueDispatchingStrategy dispatchingStrategy = mock(DistributionQueueDispatchingStrategy.class);
         DistributionEventFactory distributionEventFactory = mock(DistributionEventFactory.class);
         ResourceResolverFactory resolverFactory = mock(ResourceResolverFactory.class);
 
+        when(dispatchingStrategy.add(any(DistributionPackage.class), any(DistributionQueueProvider.class))).thenReturn(new ArrayList<DistributionQueueItemStatus>());
+
         SimpleDistributionAgent agent = new SimpleDistributionAgent(name,
                 false, null, "serviceName", packageImporter,
-                packageExporter, packageExporterStrategy,
-                queueProvider, distributionHandler, null,
+                packageExporter, requestAuthorizationStrategy,
+                queueProvider, dispatchingStrategy, null,
                 distributionEventFactory, resolverFactory, mock(SlingRepository.class),
                 mock(DefaultDistributionLog.class), null, null, 0);
         DistributionRequest request = new SimpleDistributionRequest(DistributionRequestType.ADD, "/");
-        DistributionPackage distributionPackage = mock(DistributionPackage.class);
+        final DistributionPackage distributionPackage = mock(DistributionPackage.class);
         DistributionPackageInfo packageInfo = new DistributionPackageInfo("type");
         when(distributionPackage.getInfo()).thenReturn(packageInfo);
         ResourceResolver resourceResolver = mock(ResourceResolver.class);
 
-        when(packageExporter.exportPackages(resourceResolver, request)).thenReturn(Arrays.asList(distributionPackage));
-        when(queueProvider.getQueue(DistributionQueueDispatchingStrategy.DEFAULT_QUEUE_NAME)).thenReturn(
+        doAnswer(new Answer() {
+            @Override
+            public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
+                Object[] args = invocationOnMock.getArguments();
+                ((DistributionPackageProcessor) args[2]).process(distributionPackage);
+                return null;
+            }
+        }).when(packageExporter).exportPackages(any(ResourceResolver.class), any(DistributionRequest.class), any(DistributionPackageProcessor.class));        when(queueProvider.getQueue(DistributionQueueDispatchingStrategy.DEFAULT_QUEUE_NAME)).thenReturn(
                 new SimpleDistributionQueue(name, "name"));
 
         agent.execute(resourceResolver, request);
@@ -226,15 +254,21 @@ public class SimpleDistributionAgentTest
                 mock(DefaultDistributionLog.class), null, new String[] { "/content" }, 0);
 
         DistributionRequest request = new SimpleDistributionRequest(DistributionRequestType.ADD, "/content");
-        DistributionPackage distributionPackage = mock(DistributionPackage.class);
+        final DistributionPackage distributionPackage = mock(DistributionPackage.class);
         DistributionPackageInfo packageInfo = new DistributionPackageInfo("type");
         when(distributionPackage.getInfo()).thenReturn(packageInfo);
         ResourceResolver resourceResolver = mock(ResourceResolver.class);
 
         queueDistributionStrategy.add(distributionPackage, queueProvider);
 
-        when(packageExporter.exportPackages(any(ResourceResolver.class), any(DistributionRequest.class))).thenReturn(Arrays.asList(distributionPackage));
-        when(queueProvider.getQueue(DistributionQueueDispatchingStrategy.DEFAULT_QUEUE_NAME)).thenReturn(
+        doAnswer(new Answer() {
+            @Override
+            public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
+                Object[] args = invocationOnMock.getArguments();
+                ((DistributionPackageProcessor) args[2]).process(distributionPackage);
+                return null;
+            }
+        }).when(packageExporter).exportPackages(any(ResourceResolver.class), any(DistributionRequest.class), any(DistributionPackageProcessor.class));        when(queueProvider.getQueue(DistributionQueueDispatchingStrategy.DEFAULT_QUEUE_NAME)).thenReturn(
                 new SimpleDistributionQueue(name, "name"));
 
         DistributionResponse response = agent.execute(resourceResolver, request);
@@ -266,15 +300,21 @@ public class SimpleDistributionAgentTest
                 mock(DefaultDistributionLog.class), null, new String[] { "/content" }, 0);
 
         DistributionRequest request = new SimpleDistributionRequest(DistributionRequestType.ADD, "/home");
-        DistributionPackage distributionPackage = mock(DistributionPackage.class);
+        final DistributionPackage distributionPackage = mock(DistributionPackage.class);
         DistributionPackageInfo packageInfo = new DistributionPackageInfo("type");
         when(distributionPackage.getInfo()).thenReturn(packageInfo);
         ResourceResolver resourceResolver = mock(ResourceResolver.class);
 
         queueDistributionStrategy.add(distributionPackage, queueProvider);
 
-        when(packageExporter.exportPackages(any(ResourceResolver.class), any(DistributionRequest.class))).thenReturn(Arrays.asList(distributionPackage));
-        when(queueProvider.getQueue(DistributionQueueDispatchingStrategy.DEFAULT_QUEUE_NAME)).thenReturn(
+        doAnswer(new Answer() {
+            @Override
+            public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
+                Object[] args = invocationOnMock.getArguments();
+                ((DistributionPackageProcessor) args[2]).process(distributionPackage);
+                return null;
+            }
+        }).when(packageExporter).exportPackages(any(ResourceResolver.class), any(DistributionRequest.class), any(DistributionPackageProcessor.class));        when(queueProvider.getQueue(DistributionQueueDispatchingStrategy.DEFAULT_QUEUE_NAME)).thenReturn(
                 new SimpleDistributionQueue(name, "name"));
 
         DistributionResponse response = agent.execute(resourceResolver, request);

Modified: sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporterTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporterTest.java?rev=1721316&r1=1721315&r2=1721316&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporterTest.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporterTest.java Tue Dec 22 08:40:03 2015
@@ -24,10 +24,12 @@ import org.apache.sling.distribution.Dis
 import org.apache.sling.distribution.DistributionRequestType;
 import org.apache.sling.distribution.SimpleDistributionRequest;
 import org.apache.sling.distribution.agent.DistributionAgent;
+import org.apache.sling.distribution.packaging.DistributionPackageProcessor;
 import org.apache.sling.distribution.serialization.DistributionPackage;
 import org.apache.sling.distribution.serialization.DistributionPackageBuilderProvider;
 import org.junit.Test;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import static org.junit.Assert.assertEquals;
@@ -42,7 +44,13 @@ public class AgentDistributionPackageExp
                 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);
+        final List<DistributionPackage> distributionPackages = new ArrayList<DistributionPackage>();
+        distributionPackageExporter.exportPackages(resourceResolver, distributionRequest, new DistributionPackageProcessor() {
+            @Override
+            public void process(DistributionPackage distributionPackage) {
+                distributionPackages.add(distributionPackage);
+            }
+        });
         assertNotNull(distributionPackages);
 
         assertEquals(1, distributionPackages.size());

Modified: sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/packaging/impl/exporter/LocalDistributionPackageExporterTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/packaging/impl/exporter/LocalDistributionPackageExporterTest.java?rev=1721316&r1=1721315&r2=1721316&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/packaging/impl/exporter/LocalDistributionPackageExporterTest.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/packaging/impl/exporter/LocalDistributionPackageExporterTest.java Tue Dec 22 08:40:03 2015
@@ -18,12 +18,14 @@
  */
 package org.apache.sling.distribution.packaging.impl.exporter;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.distribution.DistributionRequest;
 import org.apache.sling.distribution.DistributionRequestType;
 import org.apache.sling.distribution.SimpleDistributionRequest;
+import org.apache.sling.distribution.packaging.DistributionPackageProcessor;
 import org.apache.sling.distribution.serialization.DistributionPackage;
 import org.apache.sling.distribution.serialization.DistributionPackageBuilder;
 import org.junit.Test;
@@ -31,7 +33,9 @@ import org.junit.Test;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
 /**
  * Testcase for {@link LocalDistributionPackageExporter}
@@ -41,10 +45,17 @@ public class LocalDistributionPackageExp
     @Test
     public void testDummyExport() throws Exception {
         DistributionPackageBuilder packageBuilder = mock(DistributionPackageBuilder.class);
+        when(packageBuilder.createPackage(any(ResourceResolver.class), any(DistributionRequest.class))).thenReturn(mock(DistributionPackage.class));
         LocalDistributionPackageExporter localdistributionPackageExporter = new LocalDistributionPackageExporter(packageBuilder);
         ResourceResolver resourceResolver = mock(ResourceResolver.class);
         DistributionRequest distributionRequest = new SimpleDistributionRequest(DistributionRequestType.ADD, "/");
-        List<DistributionPackage> distributionPackages = localdistributionPackageExporter.exportPackages(resourceResolver, distributionRequest);
+        final List<DistributionPackage> distributionPackages = new ArrayList<DistributionPackage>();
+        localdistributionPackageExporter.exportPackages(resourceResolver, distributionRequest, new DistributionPackageProcessor() {
+            @Override
+            public void process(DistributionPackage distributionPackage) {
+                distributionPackages.add(distributionPackage);
+            }
+        });
         assertNotNull(distributionPackages);
         assertEquals(1, distributionPackages.size());
     }

Modified: sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/packaging/impl/exporter/RemoteDistributionPackageExporterTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/packaging/impl/exporter/RemoteDistributionPackageExporterTest.java?rev=1721316&r1=1721315&r2=1721316&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/packaging/impl/exporter/RemoteDistributionPackageExporterTest.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/packaging/impl/exporter/RemoteDistributionPackageExporterTest.java Tue Dec 22 08:40:03 2015
@@ -18,6 +18,7 @@
  */
 package org.apache.sling.distribution.packaging.impl.exporter;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.sling.api.resource.ResourceResolver;
@@ -25,10 +26,11 @@ import org.apache.sling.distribution.Dis
 import org.apache.sling.distribution.DistributionRequestType;
 import org.apache.sling.distribution.SimpleDistributionRequest;
 import org.apache.sling.distribution.log.impl.DefaultDistributionLog;
+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.transport.DistributionTransportSecretProvider;
-import org.apache.sling.distribution.transport.impl.TransportEndpointStrategyType;
+
 import org.junit.Test;
 
 import static org.junit.Assert.assertNotNull;
@@ -45,14 +47,18 @@ public class RemoteDistributionPackageEx
         DistributionPackageBuilder packageBuilder = mock(DistributionPackageBuilder.class);
         DistributionTransportSecretProvider distributionTransportSecretProvider = mock(DistributionTransportSecretProvider.class);
         String[] endpoints = new String[0];
-        for (TransportEndpointStrategyType strategy : TransportEndpointStrategyType.values()) {
-            RemoteDistributionPackageExporter remotedistributionPackageExporter = new RemoteDistributionPackageExporter(mock(DefaultDistributionLog.class),
-                    packageBuilder, distributionTransportSecretProvider, endpoints, strategy, 1);
-            ResourceResolver resourceResolver = mock(ResourceResolver.class);
-            DistributionRequest distributionRequest = new SimpleDistributionRequest(DistributionRequestType.ADD, "/");
-            List<DistributionPackage> distributionPackages = remotedistributionPackageExporter.exportPackages(resourceResolver, distributionRequest);
-            assertNotNull(distributionPackages);
-            assertTrue(distributionPackages.isEmpty());
-        }
+        RemoteDistributionPackageExporter remotedistributionPackageExporter = new RemoteDistributionPackageExporter(mock(DefaultDistributionLog.class),
+                packageBuilder, distributionTransportSecretProvider, endpoints, 1);
+        ResourceResolver resourceResolver = mock(ResourceResolver.class);
+        DistributionRequest distributionRequest = new SimpleDistributionRequest(DistributionRequestType.ADD, "/");
+        final List<DistributionPackage> distributionPackages = new ArrayList<DistributionPackage>();
+        remotedistributionPackageExporter.exportPackages(resourceResolver, distributionRequest, new DistributionPackageProcessor() {
+            @Override
+            public void process(DistributionPackage distributionPackage) {
+                distributionPackages.add(distributionPackage);
+            }
+        });
+        assertNotNull(distributionPackages);
+        assertTrue(distributionPackages.isEmpty());
     }
 }

Modified: sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/packaging/impl/importer/RemoteDistributionPackageImporterTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/packaging/impl/importer/RemoteDistributionPackageImporterTest.java?rev=1721316&r1=1721315&r2=1721316&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/packaging/impl/importer/RemoteDistributionPackageImporterTest.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/packaging/impl/importer/RemoteDistributionPackageImporterTest.java Tue Dec 22 08:40:03 2015
@@ -23,7 +23,6 @@ import org.apache.sling.distribution.log
 import org.apache.sling.distribution.serialization.DistributionPackage;
 import org.apache.sling.distribution.serialization.DistributionPackageInfo;
 import org.apache.sling.distribution.transport.DistributionTransportSecretProvider;
-import org.apache.sling.distribution.transport.impl.TransportEndpointStrategyType;
 import org.junit.Test;
 
 import java.util.HashMap;
@@ -41,14 +40,13 @@ public class RemoteDistributionPackageIm
     public void testDummyImport() throws Exception {
         DistributionTransportSecretProvider distributionTransportSecretProvider = mock(DistributionTransportSecretProvider.class);
         Map<String, String> endpoints = new HashMap<String, String>();
-        for (TransportEndpointStrategyType strategy : TransportEndpointStrategyType.values()) {
-            RemoteDistributionPackageImporter remotedistributionPackageImporter = new RemoteDistributionPackageImporter(mock(DefaultDistributionLog.class),
-                    distributionTransportSecretProvider, endpoints, strategy);
-            ResourceResolver resourceResolver = mock(ResourceResolver.class);
-            DistributionPackage distributionPackage = mock(DistributionPackage.class);
-            DistributionPackageInfo info = new DistributionPackageInfo("/foo");
-            when(distributionPackage.getInfo()).thenReturn(info);
-            remotedistributionPackageImporter.importPackage(resourceResolver, distributionPackage);
-        }
+        RemoteDistributionPackageImporter remotedistributionPackageImporter = new RemoteDistributionPackageImporter(mock(DefaultDistributionLog.class),
+                distributionTransportSecretProvider, endpoints);
+        endpoints.put("default","http://endpoint");
+        ResourceResolver resourceResolver = mock(ResourceResolver.class);
+        DistributionPackage distributionPackage = mock(DistributionPackage.class);
+        DistributionPackageInfo info = new DistributionPackageInfo("/foo");
+        when(distributionPackage.getInfo()).thenReturn(info);
+        remotedistributionPackageImporter.importPackage(resourceResolver, distributionPackage);
     }
 }

Modified: sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/SelectiveQueueDispatchingStrategyTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/SelectiveQueueDispatchingStrategyTest.java?rev=1721316&r1=1721315&r2=1721316&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/SelectiveQueueDispatchingStrategyTest.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/SelectiveQueueDispatchingStrategyTest.java Tue Dec 22 08:40:03 2015
@@ -22,7 +22,7 @@ package org.apache.sling.distribution.qu
 
 import org.apache.sling.distribution.serialization.DistributionPackage;
 import org.apache.sling.distribution.serialization.DistributionPackageInfo;
-import org.apache.sling.distribution.packaging.SharedDistributionPackage;
+import org.apache.sling.distribution.serialization.impl.SharedDistributionPackage;
 import org.apache.sling.distribution.queue.DistributionQueue;
 import org.apache.sling.distribution.queue.DistributionQueueProvider;
 import org.junit.BeforeClass;

Modified: sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/transport/impl/SimpleHttpDistributionTransportTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/transport/impl/SimpleHttpDistributionTransportTest.java?rev=1721316&r1=1721315&r2=1721316&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/transport/impl/SimpleHttpDistributionTransportTest.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/transport/impl/SimpleHttpDistributionTransportTest.java Tue Dec 22 08:40:03 2015
@@ -22,7 +22,6 @@ import java.io.ByteArrayInputStream;
 import java.io.InputStream;
 import java.net.URI;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 
 import org.apache.http.HttpEntity;
@@ -41,12 +40,15 @@ import org.apache.sling.distribution.ser
 import org.apache.sling.distribution.serialization.DistributionPackageBuilder;
 import org.apache.sling.distribution.transport.DistributionTransportSecret;
 import org.apache.sling.distribution.transport.DistributionTransportSecretProvider;
+import org.apache.sling.distribution.transport.core.DistributionContext;
+import org.apache.sling.distribution.transport.core.DistributionPackageProxy;
 import org.junit.Ignore;
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.mock;
@@ -73,15 +75,14 @@ public class SimpleHttpDistributionTrans
         when(executor.execute(any(Request.class))).thenReturn(response);
         DistributionEndpoint endpoint = new DistributionEndpoint("http://127.0.0.1:8080/some/resource");
         DistributionPackageBuilder packageBuilder = mock(DistributionPackageBuilder.class);
-        int maxNoOfPackages = Integer.MAX_VALUE;
         SimpleHttpDistributionTransport simpleHttpDistributionTransport = new SimpleHttpDistributionTransport(mock(DefaultDistributionLog.class),
-                endpoint, packageBuilder, secretProvider, maxNoOfPackages);
+                endpoint, packageBuilder, secretProvider);
         ResourceResolver resourceResolver = mock(ResourceResolver.class);
         DistributionPackage distributionPackage = mock(DistributionPackage.class);
         when(distributionPackage.getInfo()).thenReturn(new DistributionPackageInfo("type"));
         InputStream stream = mock(InputStream.class);
         when(distributionPackage.createInputStream()).thenReturn(stream);
-        simpleHttpDistributionTransport.deliverPackage(resourceResolver, distributionPackage);
+        simpleHttpDistributionTransport.deliverPackage(resourceResolver, distributionPackage, new DistributionContext());
     }
 
     @Test
@@ -104,14 +105,12 @@ public class SimpleHttpDistributionTrans
         when(executor.execute(any(Request.class))).thenReturn(response);
         DistributionEndpoint endpoint = new DistributionEndpoint("http://127.0.0.1:8080/some/resource");
         DistributionPackageBuilder packageBuilder = mock(DistributionPackageBuilder.class);
-        int maxNoOfPackages = 1;
         SimpleHttpDistributionTransport simpleHttpDistributionTransport = new SimpleHttpDistributionTransport(mock(DefaultDistributionLog.class),
-                endpoint, packageBuilder, secretProvider, maxNoOfPackages);
+                endpoint, packageBuilder, secretProvider);
         ResourceResolver resourceResolver = mock(ResourceResolver.class);
         DistributionRequest distributionRequest = new SimpleDistributionRequest(DistributionRequestType.ADD, "/");
-        List<DistributionPackage> packages = simpleHttpDistributionTransport.retrievePackages(resourceResolver, distributionRequest);
-        assertNotNull(packages);
-        assertTrue(packages.isEmpty());
+        DistributionPackageProxy retrievedPackage = simpleHttpDistributionTransport.retrievePackage(resourceResolver, distributionRequest, new DistributionContext());
+        assertNull(retrievedPackage);
     }
 
     @Test
@@ -141,15 +140,11 @@ public class SimpleHttpDistributionTrans
         DistributionPackage distributionPackage = mock(DistributionPackage.class);
         when(distributionPackage.getInfo()).thenReturn(new DistributionPackageInfo("type"));
         when(packageBuilder.readPackage(any(ResourceResolver.class), any(InputStream.class))).thenReturn(distributionPackage);
-        int maxNoOfPackages = 1;
         SimpleHttpDistributionTransport simpleHttpDistributionTransport = new SimpleHttpDistributionTransport(mock(DefaultDistributionLog.class),
-                endpoint, packageBuilder, secretProvider, maxNoOfPackages);
+                endpoint, packageBuilder, secretProvider);
         ResourceResolver resourceResolver = mock(ResourceResolver.class);
         DistributionRequest distributionRequest = new SimpleDistributionRequest(DistributionRequestType.ADD, "/");
-        List<DistributionPackage> packages = simpleHttpDistributionTransport.retrievePackages(resourceResolver, distributionRequest);
-        assertNotNull(packages);
-        assertFalse(packages.isEmpty());
-        assertEquals(1, packages.size());
-        assertNotNull(packages.get(0));
+        DistributionPackageProxy retrievedPackage = simpleHttpDistributionTransport.retrievePackage(resourceResolver, distributionRequest, new DistributionContext());
+        assertNotNull(retrievedPackage);
     }
 }
\ No newline at end of file

Modified: sling/trunk/contrib/extensions/distribution/it/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/it/pom.xml?rev=1721316&r1=1721315&r2=1721316&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/it/pom.xml (original)
+++ sling/trunk/contrib/extensions/distribution/it/pom.xml Tue Dec 22 08:40:03 2015
@@ -428,12 +428,12 @@
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.distribution.api</artifactId>
-            <version>0.3.1-SNAPSHOT</version>
+            <version>0.3.0</version>
         </dependency>
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.distribution.core</artifactId>
-            <version>0.1.11-SNAPSHOT</version>
+            <version>0.1.13-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.sling</groupId>

Modified: sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/ReverseDistributionTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/ReverseDistributionTest.java?rev=1721316&r1=1721315&r2=1721316&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/ReverseDistributionTest.java (original)
+++ sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/ReverseDistributionTest.java Tue Dec 22 08:40:03 2015
@@ -69,4 +69,19 @@ public class ReverseDistributionTest ext
         distribute(publish, reverseAgent, DistributionRequestType.DELETE, nodePath);
         assertNotExists(authorClient, nodePath);
     }
+
+    @Test
+    public void testAddTwoContent() throws Exception {
+        String nodePath1 = createRandomNode(publishClient, "/content/reverse_twoadd_" + System.nanoTime());
+        assertExists(publishClient, nodePath1);
+        String nodePath2 = createRandomNode(publishClient, "/content/reverse_twoadd_" + System.nanoTime());
+        assertExists(publishClient, nodePath2);
+
+        distribute(publish, reverseAgent, DistributionRequestType.ADD, nodePath1);
+        distribute(publish, reverseAgent, DistributionRequestType.ADD, nodePath2);
+
+        assertExists(authorClient, nodePath1);
+        assertExists(authorClient, nodePath2);
+    }
+
 }