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