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 12:30:22 UTC
svn commit: r1721363 - in
/sling/trunk/contrib/extensions/distribution/core/src:
main/java/org/apache/sling/distribution/packaging/impl/exporter/
main/java/org/apache/sling/distribution/packaging/impl/importer/
main/java/org/apache/sling/distribution/t...
Author: mpetria
Date: Tue Dec 22 11:30:22 2015
New Revision: 1721363
URL: http://svn.apache.org/viewvc?rev=1721363&view=rev
Log:
SLING-5396: use single transport context per exporter/importer
Added:
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/core/DistributionTransportContext.java
Removed:
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/core/DistributionContext.java
Modified:
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/RemoteDistributionPackageExporter.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/RemoteDistributionPackageImporter.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/core/DistributionTransport.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/SimpleHttpDistributionTransport.java
sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/transport/impl/SimpleHttpDistributionTransportTest.java
Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/RemoteDistributionPackageExporter.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/RemoteDistributionPackageExporter.java?rev=1721363&r1=1721362&r2=1721363&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/RemoteDistributionPackageExporter.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/RemoteDistributionPackageExporter.java Tue Dec 22 11:30:22 2015
@@ -33,7 +33,7 @@ import org.apache.sling.distribution.ser
import org.apache.sling.distribution.packaging.DistributionPackageExporter;
import org.apache.sling.distribution.serialization.DistributionPackageBuilder;
import org.apache.sling.distribution.transport.DistributionTransportSecretProvider;
-import org.apache.sling.distribution.transport.core.DistributionContext;
+import org.apache.sling.distribution.transport.core.DistributionTransportContext;
import org.apache.sling.distribution.transport.core.DistributionTransport;
import org.apache.sling.distribution.transport.impl.DistributionEndpoint;
import org.apache.sling.distribution.transport.core.DistributionPackageProxy;
@@ -49,6 +49,8 @@ public class RemoteDistributionPackageEx
private final DistributionTransportSecretProvider secretProvider;
private final DefaultDistributionLog log;
private final int maxPullItems;
+ private final DistributionTransportContext distributionContext = new DistributionTransportContext();
+
private List<DistributionTransport> transportHandlers = new ArrayList<DistributionTransport>();
@@ -83,7 +85,6 @@ public class RemoteDistributionPackageEx
for (DistributionTransport distributionTransport : transportHandlers) {
int noPackages = 0;
- DistributionContext distributionContext = new DistributionContext();
DistributionPackageProxy retrievedPackage;
while (noPackages < maxNumberOfPackages && ((retrievedPackage = distributionTransport.retrievePackage(resourceResolver, distributionRequest, distributionContext)) != null)) {
Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/RemoteDistributionPackageImporter.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/RemoteDistributionPackageImporter.java?rev=1721363&r1=1721362&r2=1721363&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/RemoteDistributionPackageImporter.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/RemoteDistributionPackageImporter.java Tue Dec 22 11:30:22 2015
@@ -31,7 +31,7 @@ import org.apache.sling.distribution.ser
import org.apache.sling.distribution.packaging.DistributionPackageImporter;
import org.apache.sling.distribution.serialization.DistributionPackageInfo;
import org.apache.sling.distribution.transport.DistributionTransportSecretProvider;
-import org.apache.sling.distribution.transport.core.DistributionContext;
+import org.apache.sling.distribution.transport.core.DistributionTransportContext;
import org.apache.sling.distribution.transport.core.DistributionTransport;
import org.apache.sling.distribution.transport.impl.DistributionEndpoint;
import org.apache.sling.distribution.transport.impl.SimpleHttpDistributionTransport;
@@ -43,6 +43,8 @@ public class RemoteDistributionPackageIm
Map<String, DistributionTransport> transportHandlers = new HashMap<String, DistributionTransport>();
+ private final DistributionTransportContext distributionContext = new DistributionTransportContext();
+
public RemoteDistributionPackageImporter(DefaultDistributionLog log, DistributionTransportSecretProvider distributionTransportSecretProvider,
@@ -68,10 +70,10 @@ public class RemoteDistributionPackageIm
DistributionTransport distributionTransport = transportHandlers.get(queueName);
if (distributionTransport != null) {
- distributionTransport.deliverPackage(resourceResolver, distributionPackage, new DistributionContext());
+ distributionTransport.deliverPackage(resourceResolver, distributionPackage, distributionContext);
} else {
for(DistributionTransport transportHandler: transportHandlers.values()) {
- transportHandler.deliverPackage(resourceResolver, distributionPackage, new DistributionContext());
+ transportHandler.deliverPackage(resourceResolver, distributionPackage, distributionContext);
}
}
}
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=1721363&r1=1721362&r2=1721363&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 11:30:22 2015
@@ -43,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, @Nonnull DistributionContext context) throws DistributionException;
+ void deliverPackage(@Nonnull ResourceResolver resourceResolver, @Nonnull DistributionPackage distributionPackage, @Nonnull DistributionTransportContext context) throws DistributionException;
/**
* Retrieve {@link DistributionPackage}s from a target Sling instance, which
@@ -58,6 +58,6 @@ public interface DistributionTransport {
* fail to be retrieved from the target instance
*/
@Nullable
- DistributionPackageProxy retrievePackage(@Nonnull ResourceResolver resourceResolver, @Nonnull DistributionRequest request, @Nonnull DistributionContext context) throws DistributionException;
+ DistributionPackageProxy retrievePackage(@Nonnull ResourceResolver resourceResolver, @Nonnull DistributionRequest request, @Nonnull DistributionTransportContext context) throws DistributionException;
}
Added: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/core/DistributionTransportContext.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/core/DistributionTransportContext.java?rev=1721363&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/core/DistributionTransportContext.java (added)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/core/DistributionTransportContext.java Tue Dec 22 11:30:22 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 DistributionTransportContext extends ValueMapDecorator {
+
+ public DistributionTransportContext() {
+ super(new HashMap<String, Object>());
+ }
+}
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=1721363&r1=1721362&r2=1721363&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 11:30:22 2015
@@ -25,6 +25,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.UUID;
import org.apache.commons.io.IOUtils;
import org.apache.http.HttpHost;
@@ -43,7 +44,7 @@ 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.DistributionTransportContext;
import org.apache.sling.distribution.transport.core.DistributionTransport;
import org.apache.sling.distribution.transport.core.DistributionPackageProxy;
import org.apache.sling.distribution.util.RequestUtils;
@@ -55,7 +56,7 @@ public class SimpleHttpDistributionTrans
private static final String USERNAME = "username";
private static final String PASSWORD = "password";
- private static final String EXECUTOR_CONTEXT_KEY = "executorContextKey";
+ private static final String EXECUTOR_CONTEXT_KEY_PREFIX = "ExecutorContextKey";
/**
@@ -67,6 +68,7 @@ public class SimpleHttpDistributionTrans
private final DistributionEndpoint distributionEndpoint;
private final DistributionPackageBuilder packageBuilder;
protected final DistributionTransportSecretProvider secretProvider;
+ private final String contextKeyExecutor;
public SimpleHttpDistributionTransport(DefaultDistributionLog log, DistributionEndpoint distributionEndpoint,
DistributionPackageBuilder packageBuilder,
@@ -76,9 +78,10 @@ public class SimpleHttpDistributionTrans
this.distributionEndpoint = distributionEndpoint;
this.packageBuilder = packageBuilder;
this.secretProvider = secretProvider;
+ this.contextKeyExecutor = EXECUTOR_CONTEXT_KEY_PREFIX + "_" + getHostAndPort(distributionEndpoint.getUri()) + "_" + UUID.randomUUID();
}
- public void deliverPackage(@Nonnull ResourceResolver resourceResolver, @Nonnull DistributionPackage distributionPackage, @Nonnull DistributionContext distributionContext) throws DistributionException {
+ public void deliverPackage(@Nonnull ResourceResolver resourceResolver, @Nonnull DistributionPackage distributionPackage, @Nonnull DistributionTransportContext distributionContext) throws DistributionException {
String hostAndPort = getHostAndPort(distributionEndpoint.getUri());
URI packageOrigin = distributionPackage.getInfo().get(PACKAGE_INFO_PROPERTY_ORIGIN_URI, URI.class);
@@ -117,7 +120,7 @@ public class SimpleHttpDistributionTrans
}
@Nonnull
- public DistributionPackageProxy retrievePackage(@Nonnull ResourceResolver resourceResolver, @Nonnull DistributionRequest distributionRequest, @Nonnull DistributionContext distributionContext) throws DistributionException {
+ public DistributionPackageProxy retrievePackage(@Nonnull ResourceResolver resourceResolver, @Nonnull DistributionRequest distributionRequest, @Nonnull DistributionTransportContext distributionContext) throws DistributionException {
log.debug("pulling from {}", distributionEndpoint.getUri());
List<DistributionPackage> result = new ArrayList<DistributionPackage>();
@@ -183,9 +186,9 @@ public class SimpleHttpDistributionTrans
}
- private Executor getExecutor(DistributionContext distributionContext) {
- if (distributionContext.containsKey(EXECUTOR_CONTEXT_KEY)) {
- return distributionContext.get(EXECUTOR_CONTEXT_KEY, Executor.class);
+ private Executor getExecutor(DistributionTransportContext distributionContext) {
+ if (distributionContext.containsKey(contextKeyExecutor)) {
+ return distributionContext.get(contextKeyExecutor, Executor.class);
}
Executor executor = Executor.newInstance();
@@ -193,7 +196,7 @@ public class SimpleHttpDistributionTrans
DistributionTransportSecret secret = secretProvider.getSecret(distributionEndpoint.getUri());
executor = authenticate(secret, executor);
- distributionContext.put(EXECUTOR_CONTEXT_KEY, executor);
+ distributionContext.put(contextKeyExecutor, executor);
return executor;
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=1721363&r1=1721362&r2=1721363&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 11:30:22 2015
@@ -40,7 +40,7 @@ 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.DistributionTransportContext;
import org.apache.sling.distribution.transport.core.DistributionPackageProxy;
import org.junit.Ignore;
import org.junit.Test;
@@ -82,7 +82,7 @@ public class SimpleHttpDistributionTrans
when(distributionPackage.getInfo()).thenReturn(new DistributionPackageInfo("type"));
InputStream stream = mock(InputStream.class);
when(distributionPackage.createInputStream()).thenReturn(stream);
- simpleHttpDistributionTransport.deliverPackage(resourceResolver, distributionPackage, new DistributionContext());
+ simpleHttpDistributionTransport.deliverPackage(resourceResolver, distributionPackage, new DistributionTransportContext());
}
@Test
@@ -109,7 +109,7 @@ public class SimpleHttpDistributionTrans
endpoint, packageBuilder, secretProvider);
ResourceResolver resourceResolver = mock(ResourceResolver.class);
DistributionRequest distributionRequest = new SimpleDistributionRequest(DistributionRequestType.ADD, "/");
- DistributionPackageProxy retrievedPackage = simpleHttpDistributionTransport.retrievePackage(resourceResolver, distributionRequest, new DistributionContext());
+ DistributionPackageProxy retrievedPackage = simpleHttpDistributionTransport.retrievePackage(resourceResolver, distributionRequest, new DistributionTransportContext());
assertNull(retrievedPackage);
}
@@ -144,7 +144,7 @@ public class SimpleHttpDistributionTrans
endpoint, packageBuilder, secretProvider);
ResourceResolver resourceResolver = mock(ResourceResolver.class);
DistributionRequest distributionRequest = new SimpleDistributionRequest(DistributionRequestType.ADD, "/");
- DistributionPackageProxy retrievedPackage = simpleHttpDistributionTransport.retrievePackage(resourceResolver, distributionRequest, new DistributionContext());
+ DistributionPackageProxy retrievedPackage = simpleHttpDistributionTransport.retrievePackage(resourceResolver, distributionRequest, new DistributionTransportContext());
assertNotNull(retrievedPackage);
}
}
\ No newline at end of file