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); + } + }
