Author: tommaso
Date: Thu May  4 14:00:21 2017
New Revision: 1793803

URL: http://svn.apache.org/viewvc?rev=1793803&view=rev
Log:
SLING-5952 - added timeout configs to http transport

Modified:
    
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ForwardDistributionAgentFactory.java
    
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ReverseDistributionAgentFactory.java
    
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SyncDistributionAgentFactory.java
    
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/RemoteDistributionPackageExporter.java
    
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/RemoteDistributionPackageExporterFactory.java
    
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/RemoteDistributionPackageImporter.java
    
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/RemoteDistributionPackageImporterFactory.java
    
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/DistributionTransport.java
    
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/HttpTransportUtils.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/packaging/impl/exporter/RemoteDistributionPackageExporterTest.java
    
sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/packaging/impl/importer/RemoteDistributionPackageImporterTest.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/agent/impl/ForwardDistributionAgentFactory.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ForwardDistributionAgentFactory.java?rev=1793803&r1=1793802&r2=1793803&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ForwardDistributionAgentFactory.java
 (original)
+++ 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ForwardDistributionAgentFactory.java
 Thu May  4 14:00:21 2017
@@ -61,6 +61,7 @@ import org.apache.sling.distribution.que
 import 
org.apache.sling.distribution.queue.impl.jobhandling.JobHandlingDistributionQueueProvider;
 import 
org.apache.sling.distribution.queue.impl.simple.SimpleDistributionQueueProvider;
 import 
org.apache.sling.distribution.transport.DistributionTransportSecretProvider;
+import org.apache.sling.distribution.transport.impl.HttpConfiguration;
 import org.apache.sling.distribution.trigger.DistributionTrigger;
 import org.apache.sling.event.jobs.JobManager;
 import org.apache.sling.jcr.api.SlingRepository;
@@ -179,6 +180,12 @@ public class ForwardDistributionAgentFac
     @Property(boolValue = false, label = "Async delivery", description = 
"Whether or not to use a separate delivery queue to maximize transport 
throughput when queue has more than 100 items")
     public static final String ASYNC_DELIVERY = "async.delivery";
 
+    /**
+     * timeout for HTTP requests
+     */
+    @Property(label = "HTTP connection timeout", intValue = 10, description = 
"The connection timeout for HTTP requests (in seconds).")
+    public static final String HTTP = "http.conn.timeout";
+
     @Reference
     private Packaging packaging;
 
@@ -239,6 +246,9 @@ public class ForwardDistributionAgentFac
         Map<String, String> priorityQueues = 
PropertiesUtil.toMap(config.get(PRIORITY_QUEUES), new String[0]);
         priorityQueues = SettingsUtils.removeEmptyEntries(priorityQueues);
 
+        Integer timeout = PropertiesUtil.toInteger(HTTP, 10) * 1000;
+        HttpConfiguration httpConfiguration = new HttpConfiguration(timeout);
+
         DistributionPackageExporter packageExporter = new 
LocalDistributionPackageExporter(packageBuilder);
 
         DistributionQueueProvider queueProvider;
@@ -293,7 +303,8 @@ public class ForwardDistributionAgentFac
         processingQueues.addAll(endpointNames);
         processingQueues.removeAll(Arrays.asList(passiveQueues));
 
-        packageImporter = new 
RemoteDistributionPackageImporter(distributionLog, transportSecretProvider, 
importerEndpointsMap);
+        packageImporter = new 
RemoteDistributionPackageImporter(distributionLog, transportSecretProvider,
+                importerEndpointsMap, httpConfiguration);
 
         DistributionRequestType[] allowedRequests = new 
DistributionRequestType[]{DistributionRequestType.ADD, 
DistributionRequestType.DELETE};
 

Modified: 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ReverseDistributionAgentFactory.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ReverseDistributionAgentFactory.java?rev=1793803&r1=1793802&r2=1793803&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ReverseDistributionAgentFactory.java
 (original)
+++ 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ReverseDistributionAgentFactory.java
 Thu May  4 14:00:21 2017
@@ -53,6 +53,7 @@ import org.apache.sling.distribution.que
 import org.apache.sling.distribution.queue.impl.SingleQueueDispatchingStrategy;
 import 
org.apache.sling.distribution.queue.impl.jobhandling.JobHandlingDistributionQueueProvider;
 import 
org.apache.sling.distribution.transport.DistributionTransportSecretProvider;
+import org.apache.sling.distribution.transport.impl.HttpConfiguration;
 import org.apache.sling.distribution.trigger.DistributionTrigger;
 import org.apache.sling.event.jobs.JobManager;
 import org.apache.sling.jcr.api.SlingRepository;
@@ -117,19 +118,21 @@ public class ReverseDistributionAgentFac
     @Property(intValue = 100, label = "Pull Items", description = "Number of 
subsequent pull requests to make.")
     private static final String PULL_ITEMS = "pull.items";
 
+    /**
+     * timeout for HTTP requests
+     */
+    @Property(label = "HTTP connection timeout", intValue = 10, description = 
"The connection timeout for HTTP requests (in seconds).")
+    public static final String HTTP = "http.conn.timeout";
 
     @Property(name = "requestAuthorizationStrategy.target", label = "Request 
Authorization Strategy", description = "The target reference for the 
DistributionRequestAuthorizationStrategy used to authorize the access to 
distribution process," +
             "e.g. use target=(name=...) to bind to services by name.", value = 
SettingsUtils.COMPONENT_NAME_DEFAULT)
     @Reference(name = "requestAuthorizationStrategy")
     private DistributionRequestAuthorizationStrategy 
requestAuthorizationStrategy;
 
-
     @Property(name = "transportSecretProvider.target", label = "Transport 
Secret Provider", description = "The target reference for the 
DistributionTransportSecretProvider used to obtain the credentials used for 
accessing the remote endpoints, " +
             "e.g. use target=(name=...) to bind to services by name.", value = 
SettingsUtils.COMPONENT_NAME_DEFAULT)
     @Reference(name = "transportSecretProvider")
-    private
-    DistributionTransportSecretProvider transportSecretProvider;
-
+    private DistributionTransportSecretProvider transportSecretProvider;
 
     @Property(name = "packageBuilder.target", label = "Package Builder", 
description = "The target reference for the DistributionPackageBuilder used to 
create distribution packages, " +
             "e.g. use target=(name=...) to bind to services by name.", value = 
SettingsUtils.COMPONENT_NAME_DEFAULT)
@@ -191,7 +194,11 @@ public class ReverseDistributionAgentFac
 
         int pullItems = PropertiesUtil.toInteger(config.get(PULL_ITEMS), 
Integer.MAX_VALUE);
 
-        DistributionPackageExporter packageExporter = new 
RemoteDistributionPackageExporter(distributionLog, packageBuilder, 
transportSecretProvider, exporterEndpoints, pullItems);
+        Integer timeout = PropertiesUtil.toInteger(HTTP, 10) * 1000;
+        HttpConfiguration httpConfiguration = new HttpConfiguration(timeout);
+
+        DistributionPackageExporter packageExporter = new 
RemoteDistributionPackageExporter(distributionLog, packageBuilder,
+                transportSecretProvider, exporterEndpoints, pullItems, 
httpConfiguration);
         DistributionPackageImporter packageImporter = new 
LocalDistributionPackageImporter(agentName, distributionEventFactory, 
packageBuilder);
         DistributionQueueProvider queueProvider = new 
MonitoringDistributionQueueProvider(new 
JobHandlingDistributionQueueProvider(agentName, jobManager, context), context);
 

Modified: 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SyncDistributionAgentFactory.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SyncDistributionAgentFactory.java?rev=1793803&r1=1793802&r2=1793803&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SyncDistributionAgentFactory.java
 (original)
+++ 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SyncDistributionAgentFactory.java
 Thu May  4 14:00:21 2017
@@ -18,21 +18,7 @@
  */
 package org.apache.sling.distribution.agent.impl;
 
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeSet;
-
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.ConfigurationPolicy;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.PropertyOption;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.apache.felix.scr.annotations.ReferencePolicy;
+import org.apache.felix.scr.annotations.*;
 import org.apache.jackrabbit.vault.packaging.Packaging;
 import org.apache.sling.api.resource.ResourceResolverFactory;
 import org.apache.sling.commons.osgi.PropertiesUtil;
@@ -56,12 +42,15 @@ import org.apache.sling.distribution.que
 import 
org.apache.sling.distribution.queue.impl.MultipleQueueDispatchingStrategy;
 import 
org.apache.sling.distribution.queue.impl.jobhandling.JobHandlingDistributionQueueProvider;
 import 
org.apache.sling.distribution.transport.DistributionTransportSecretProvider;
+import org.apache.sling.distribution.transport.impl.HttpConfiguration;
 import org.apache.sling.distribution.trigger.DistributionTrigger;
 import org.apache.sling.event.jobs.JobManager;
 import org.apache.sling.jcr.api.SlingRepository;
 import org.apache.sling.settings.SlingSettingsService;
 import org.osgi.framework.BundleContext;
 
+import java.util.*;
+
 /**
  * An OSGi service factory for "synchronizing agents" that synchronize (pull 
and push) resources between remote instances.
  *
@@ -77,7 +66,7 @@ import org.osgi.framework.BundleContext;
 @Reference(name = "triggers", referenceInterface = DistributionTrigger.class,
         policy = ReferencePolicy.DYNAMIC, cardinality = 
ReferenceCardinality.OPTIONAL_MULTIPLE,
         bind = "bindDistributionTrigger", unbind = "unbindDistributionTrigger")
-@Property(name="webconsole.configurationFactory.nameHint", value="Agent name: 
{name}")
+@Property(name = "webconsole.configurationFactory.nameHint", value = "Agent 
name: {name}")
 public class SyncDistributionAgentFactory extends 
AbstractDistributionAgentFactory<SyncDistributionAgentMBean> {
 
     @Property(label = "Name", description = "The name of the agent.")
@@ -136,13 +125,18 @@ public class SyncDistributionAgentFactor
     @Property(intValue = 100, label = "Retry attempts", description = "The 
number of times to retry until the retry strategy is applied.")
     private static final String RETRY_ATTEMPTS = "retry.attempts";
 
-
     /**
      * no. of items to poll property
      */
     @Property(intValue = 100, label = "Pull Items", description = "Number of 
subsequent pull requests to make.")
     private static final String PULL_ITEMS = "pull.items";
 
+    /**
+     * timeout for HTTP requests
+     */
+    @Property(label = "HTTP connection timeout", intValue = 10, description = 
"The connection timeout for HTTP requests (in seconds).")
+    public static final String HTTP = "http.conn.timeout";
+
     @Reference
     private Packaging packaging;
 
@@ -155,9 +149,7 @@ public class SyncDistributionAgentFactor
     @Property(name = "transportSecretProvider.target", label = "Transport 
Secret Provider", description = "The target reference for the 
DistributionTransportSecretProvider used to obtain the credentials used for 
accessing the remote endpoints, " +
             "e.g. use target=(name=...) to bind to services by name.", value = 
SettingsUtils.COMPONENT_NAME_DEFAULT)
     @Reference(name = "transportSecretProvider")
-    private
-    DistributionTransportSecretProvider transportSecretProvider;
-
+    private DistributionTransportSecretProvider transportSecretProvider;
 
     @Property(name = "packageBuilder.target", label = "Package Builder", 
description = "The target reference for the DistributionPackageBuilder used to 
create distribution packages, " +
             "e.g. use target=(name=...) to bind to services by name.", value = 
SettingsUtils.COMPONENT_NAME_DEFAULT)
@@ -221,12 +213,10 @@ public class SyncDistributionAgentFactor
         String[] exporterEndpoints = 
PropertiesUtil.toStringArray(exporterEndpointsValue, new String[0]);
         exporterEndpoints = 
SettingsUtils.removeEmptyEntries(exporterEndpoints);
 
-
         Map<String, String> importerEndpointsMap = 
SettingsUtils.toUriMap(importerEndpointsValue);
 
         int pullItems = PropertiesUtil.toInteger(config.get(PULL_ITEMS), 
Integer.MAX_VALUE);
 
-
         DistributionQueueDispatchingStrategy exportQueueStrategy;
         DistributionQueueDispatchingStrategy importQueueStrategy = null;
         DistributionPackageImporter packageImporter;
@@ -240,9 +230,15 @@ public class SyncDistributionAgentFactor
 
         String[] queueNames = queuesMap.toArray(new String[queuesMap.size()]);
         exportQueueStrategy = new MultipleQueueDispatchingStrategy(queueNames);
-        packageImporter = new 
RemoteDistributionPackageImporter(distributionLog, transportSecretProvider, 
importerEndpointsMap);
 
-        DistributionPackageExporter packageExporter = new 
RemoteDistributionPackageExporter(distributionLog, packageBuilder, 
transportSecretProvider, exporterEndpoints, pullItems);
+        Integer timeout = PropertiesUtil.toInteger(HTTP, 10) * 1000;
+        HttpConfiguration httpConfiguration = new HttpConfiguration(timeout);
+
+        packageImporter = new 
RemoteDistributionPackageImporter(distributionLog, transportSecretProvider,
+                importerEndpointsMap, httpConfiguration);
+
+        DistributionPackageExporter packageExporter = new 
RemoteDistributionPackageExporter(distributionLog, packageBuilder,
+                transportSecretProvider, exporterEndpoints, pullItems, 
httpConfiguration);
         DistributionQueueProvider queueProvider = new 
MonitoringDistributionQueueProvider(new 
JobHandlingDistributionQueueProvider(agentName, jobManager, context), context);
         DistributionRequestType[] allowedRequests = new 
DistributionRequestType[]{DistributionRequestType.PULL};
 

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=1793803&r1=1793802&r2=1793803&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
 Thu May  4 14:00:21 2017
@@ -33,11 +33,7 @@ import org.apache.sling.distribution.pac
 import org.apache.sling.distribution.packaging.DistributionPackageExporter;
 import org.apache.sling.distribution.packaging.DistributionPackageBuilder;
 import 
org.apache.sling.distribution.transport.DistributionTransportSecretProvider;
-import 
org.apache.sling.distribution.transport.impl.DistributionTransportContext;
-import org.apache.sling.distribution.transport.impl.DistributionTransport;
-import org.apache.sling.distribution.transport.impl.DistributionEndpoint;
-import org.apache.sling.distribution.transport.impl.RemoteDistributionPackage;
-import 
org.apache.sling.distribution.transport.impl.SimpleHttpDistributionTransport;
+import org.apache.sling.distribution.transport.impl.*;
 
 /**
  * Remote implementation of {@link 
org.apache.sling.distribution.packaging.DistributionPackageExporter}
@@ -53,8 +49,7 @@ public class RemoteDistributionPackageEx
 
     public RemoteDistributionPackageExporter(DefaultDistributionLog log, 
DistributionPackageBuilder packageBuilder,
                                              
DistributionTransportSecretProvider secretProvider,
-                                             String[] endpoints,
-                                             int maxPullItems) {
+                                             String[] endpoints, int 
maxPullItems, HttpConfiguration httpConfiguration) {
         this.maxPullItems = maxPullItems;
         if (packageBuilder == null) {
             throw new IllegalArgumentException("packageBuilder is required");
@@ -68,7 +63,8 @@ public class RemoteDistributionPackageEx
 
         for (String endpoint : endpoints) {
             if (endpoint != null && endpoint.length() > 0) {
-                transportHandlers.add(new SimpleHttpDistributionTransport(log, 
new DistributionEndpoint(endpoint), packageBuilder, secretProvider));
+                transportHandlers.add(new SimpleHttpDistributionTransport(log, 
new DistributionEndpoint(endpoint),
+                        packageBuilder, secretProvider, httpConfiguration));
             }
         }
     }

Modified: 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/RemoteDistributionPackageExporterFactory.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/RemoteDistributionPackageExporterFactory.java?rev=1793803&r1=1793802&r2=1793803&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/RemoteDistributionPackageExporterFactory.java
 (original)
+++ 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/RemoteDistributionPackageExporterFactory.java
 Thu May  4 14:00:21 2017
@@ -41,6 +41,7 @@ import org.apache.sling.distribution.pac
 import org.apache.sling.distribution.packaging.DistributionPackage;
 import org.apache.sling.distribution.packaging.DistributionPackageBuilder;
 import 
org.apache.sling.distribution.transport.DistributionTransportSecretProvider;
+import org.apache.sling.distribution.transport.impl.HttpConfiguration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -107,8 +108,10 @@ public class RemoteDistributionPackageEx
 
         DefaultDistributionLog distributionLog = new 
DefaultDistributionLog(DistributionComponentKind.EXPORTER, exporterName, 
RemoteDistributionPackageExporter.class, DefaultDistributionLog.LogLevel.ERROR);
 
-
-        exporter = new RemoteDistributionPackageExporter(distributionLog, 
packageBuilder, transportSecretProvider, endpoints, pollItems);
+        // default to 10s, we can expose it if needed
+        HttpConfiguration httpConfiguration = new HttpConfiguration(10000);
+        exporter = new RemoteDistributionPackageExporter(distributionLog, 
packageBuilder, transportSecretProvider,
+                endpoints, pollItems, httpConfiguration);
     }
 
 

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=1793803&r1=1793802&r2=1793803&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
 Thu May  4 14:00:21 2017
@@ -31,10 +31,7 @@ import org.apache.sling.distribution.pac
 import org.apache.sling.distribution.packaging.DistributionPackageImporter;
 import org.apache.sling.distribution.packaging.DistributionPackageInfo;
 import 
org.apache.sling.distribution.transport.DistributionTransportSecretProvider;
-import 
org.apache.sling.distribution.transport.impl.DistributionTransportContext;
-import org.apache.sling.distribution.transport.impl.DistributionTransport;
-import org.apache.sling.distribution.transport.impl.DistributionEndpoint;
-import 
org.apache.sling.distribution.transport.impl.SimpleHttpDistributionTransport;
+import org.apache.sling.distribution.transport.impl.*;
 
 /**
  * Remote implementation of {@link 
org.apache.sling.distribution.packaging.DistributionPackageImporter}
@@ -45,7 +42,7 @@ public class RemoteDistributionPackageIm
     private final DistributionTransportContext distributionContext = new 
DistributionTransportContext();
 
     public RemoteDistributionPackageImporter(DefaultDistributionLog log, 
DistributionTransportSecretProvider distributionTransportSecretProvider,
-                                             Map<String, String> endpointsMap) 
{
+                                             Map<String, String> endpointsMap, 
HttpConfiguration httpConfiguration) {
         if (distributionTransportSecretProvider == null) {
             throw new 
IllegalArgumentException("distributionTransportSecretProvider is required");
         }
@@ -54,7 +51,8 @@ public class RemoteDistributionPackageIm
             String endpointKey = entry.getKey();
             String endpoint = entry.getValue();
             if (endpoint != null && endpoint.length() > 0) {
-                transportHandlers.put(endpointKey, new 
SimpleHttpDistributionTransport(log, new DistributionEndpoint(endpoint), null, 
distributionTransportSecretProvider));
+                transportHandlers.put(endpointKey, new 
SimpleHttpDistributionTransport(log, new DistributionEndpoint(endpoint),
+                        null, distributionTransportSecretProvider, 
httpConfiguration));
             }
         }
     }

Modified: 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/RemoteDistributionPackageImporterFactory.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/RemoteDistributionPackageImporterFactory.java?rev=1793803&r1=1793802&r2=1793803&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/RemoteDistributionPackageImporterFactory.java
 (original)
+++ 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/RemoteDistributionPackageImporterFactory.java
 Thu May  4 14:00:21 2017
@@ -40,6 +40,7 @@ import org.apache.sling.distribution.pac
 import org.apache.sling.distribution.packaging.DistributionPackageImporter;
 import org.apache.sling.distribution.packaging.DistributionPackageInfo;
 import 
org.apache.sling.distribution.transport.DistributionTransportSecretProvider;
+import org.apache.sling.distribution.transport.impl.HttpConfiguration;
 
 /**
  * OSGi configuration factory for {@link RemoteDistributionPackageImporter}s.
@@ -83,7 +84,10 @@ public class RemoteDistributionPackageIm
 
         DefaultDistributionLog distributionLog = new 
DefaultDistributionLog(DistributionComponentKind.IMPORTER, importerName, 
RemoteDistributionPackageImporter.class, DefaultDistributionLog.LogLevel.ERROR);
 
-        importer = new RemoteDistributionPackageImporter(distributionLog, 
transportSecretProvider, endpoints);
+        // default to 10s, we can expose it if needed
+        HttpConfiguration httpConfiguration = new HttpConfiguration(10000);
+
+        importer = new RemoteDistributionPackageImporter(distributionLog, 
transportSecretProvider, endpoints, httpConfiguration);
 
     }
 

Modified: 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/DistributionTransport.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/DistributionTransport.java?rev=1793803&r1=1793802&r2=1793803&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/DistributionTransport.java
 (original)
+++ 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/DistributionTransport.java
 Thu May  4 14:00:21 2017
@@ -43,7 +43,8 @@ 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 DistributionTransportContext 
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 +59,7 @@ public interface DistributionTransport {
      *                                        fail to be retrieved from the 
target instance
      */
     @Nullable
-    RemoteDistributionPackage retrievePackage(@Nonnull ResourceResolver 
resourceResolver, @Nonnull DistributionRequest request, @Nonnull 
DistributionTransportContext context) throws DistributionException;
+    RemoteDistributionPackage retrievePackage(@Nonnull ResourceResolver 
resourceResolver, @Nonnull DistributionRequest request,
+                                              @Nonnull 
DistributionTransportContext context) throws DistributionException;
 
 }

Modified: 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/HttpTransportUtils.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/HttpTransportUtils.java?rev=1793803&r1=1793802&r2=1793803&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/HttpTransportUtils.java
 (original)
+++ 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/HttpTransportUtils.java
 Thu May  4 14:00:21 2017
@@ -19,22 +19,26 @@
 
 package org.apache.sling.distribution.transport.impl;
 
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URI;
-import java.net.URISyntaxException;
-
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpResponse;
 import org.apache.http.client.fluent.Executor;
 import org.apache.http.client.fluent.Request;
 import org.apache.http.client.utils.URIBuilder;
 
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URI;
+import java.net.URISyntaxException;
+
 class HttpTransportUtils {
 
-    public static InputStream fetchNextPackage(Executor executor, URI 
distributionURI) throws URISyntaxException, IOException {
+    public static InputStream fetchNextPackage(Executor executor, URI 
distributionURI, HttpConfiguration httpConfiguration)
+            throws URISyntaxException, IOException {
         URI fetchUri = getFetchUri(distributionURI);
-        Request fetchReq = Request.Post(fetchUri).useExpectContinue();
+        Request fetchReq = Request.Post(fetchUri)
+                .connectTimeout(httpConfiguration.getConnectTimeout())
+                .socketTimeout(httpConfiguration.getSocketTimeout())
+                .useExpectContinue();
         HttpResponse httpResponse = 
executor.execute(fetchReq).returnResponse();
 
         if (httpResponse.getStatusLine().getStatusCode() != 200) {

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=1793803&r1=1793802&r2=1793803&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
 Thu May  4 14:00:21 2017
@@ -71,16 +71,19 @@ public class SimpleHttpDistributionTrans
     private final DistributionEndpoint distributionEndpoint;
     private final DistributionPackageBuilder packageBuilder;
     private final DistributionTransportSecretProvider secretProvider;
+    private final HttpConfiguration httpConfiguration;
     private final String contextKeyExecutor;
 
     public SimpleHttpDistributionTransport(DefaultDistributionLog log, 
DistributionEndpoint distributionEndpoint,
                                            DistributionPackageBuilder 
packageBuilder,
-                                           DistributionTransportSecretProvider 
secretProvider) {
+                                           DistributionTransportSecretProvider 
secretProvider,
+                                           HttpConfiguration 
httpConfiguration) {
         this.log = log;
 
         this.distributionEndpoint = distributionEndpoint;
         this.packageBuilder = packageBuilder;
         this.secretProvider = secretProvider;
+        this.httpConfiguration = httpConfiguration;
         this.contextKeyExecutor = EXECUTOR_CONTEXT_KEY_PREFIX + "_" + 
getHostAndPort(distributionEndpoint.getUri()) + "_" + UUID.randomUUID();
     }
 
@@ -98,7 +101,10 @@ public class SimpleHttpDistributionTrans
             try {
                 Executor executor = getExecutor(distributionContext);
 
-                Request req = 
Request.Post(distributionEndpoint.getUri()).useExpectContinue();
+                Request req = Request.Post(distributionEndpoint.getUri())
+                        .connectTimeout(httpConfiguration.getConnectTimeout())
+                        .socketTimeout(httpConfiguration.getSocketTimeout())
+                        .useExpectContinue();
 
                 // add the message body digest, see 
https://tools.ietf.org/html/rfc3230#section-4.3.2
                 if (distributionPackage instanceof 
AbstractDistributionPackage) {
@@ -147,7 +153,7 @@ public class SimpleHttpDistributionTrans
             Executor executor = getExecutor(distributionContext);
 
             // TODO : add queue parameter
-            InputStream inputStream = 
HttpTransportUtils.fetchNextPackage(executor, distributionURI);
+            InputStream inputStream = 
HttpTransportUtils.fetchNextPackage(executor, distributionURI, 
httpConfiguration);
 
             if (inputStream == null) {
                 return null;

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=1793803&r1=1793802&r2=1793803&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
 Thu May  4 14:00:21 2017
@@ -36,6 +36,7 @@ import org.apache.sling.distribution.pac
 import org.apache.sling.distribution.packaging.DistributionPackageBuilder;
 import org.apache.sling.distribution.packaging.DistributionPackageProcessor;
 import 
org.apache.sling.distribution.transport.DistributionTransportSecretProvider;
+import org.apache.sling.distribution.transport.impl.HttpConfiguration;
 import org.junit.Test;
 
 /**
@@ -49,7 +50,7 @@ public class RemoteDistributionPackageEx
         DistributionTransportSecretProvider 
distributionTransportSecretProvider = 
mock(DistributionTransportSecretProvider.class);
         String[] endpoints = new String[0];
         RemoteDistributionPackageExporter remotedistributionPackageExporter = 
new RemoteDistributionPackageExporter(mock(DefaultDistributionLog.class),
-                packageBuilder, distributionTransportSecretProvider, 
endpoints, 1);
+                packageBuilder, distributionTransportSecretProvider, 
endpoints, 1, new HttpConfiguration(10000));
         ResourceResolver resourceResolver = mock(ResourceResolver.class);
         DistributionRequest distributionRequest = new 
SimpleDistributionRequest(DistributionRequestType.ADD, "/");
         final List<DistributionPackage> distributionPackages = new 
ArrayList<DistributionPackage>();
@@ -84,7 +85,7 @@ public class RemoteDistributionPackageEx
         DistributionTransportSecretProvider 
distributionTransportSecretProvider = 
mock(DistributionTransportSecretProvider.class);
         String[] endpoints = new String[0];
         RemoteDistributionPackageExporter remotedistributionPackageExporter = 
new RemoteDistributionPackageExporter(mock(DefaultDistributionLog.class),
-                packageBuilder, distributionTransportSecretProvider, 
endpoints, 1);
+                packageBuilder, distributionTransportSecretProvider, 
endpoints, 1, new HttpConfiguration(10000));
 
         ResourceResolver resourceResolver = mock(ResourceResolver.class);
         DistributionPackage distributionPackage = 
remotedistributionPackageExporter.getPackage(resourceResolver, "123");

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=1793803&r1=1793802&r2=1793803&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
 Thu May  4 14:00:21 2017
@@ -23,6 +23,7 @@ import org.apache.sling.distribution.log
 import org.apache.sling.distribution.packaging.DistributionPackage;
 import org.apache.sling.distribution.packaging.DistributionPackageInfo;
 import 
org.apache.sling.distribution.transport.DistributionTransportSecretProvider;
+import org.apache.sling.distribution.transport.impl.HttpConfiguration;
 import org.junit.Test;
 
 import java.util.HashMap;
@@ -41,7 +42,7 @@ public class RemoteDistributionPackageIm
         DistributionTransportSecretProvider 
distributionTransportSecretProvider = 
mock(DistributionTransportSecretProvider.class);
         Map<String, String> endpoints = new HashMap<String, String>();
         RemoteDistributionPackageImporter remotedistributionPackageImporter = 
new RemoteDistributionPackageImporter(mock(DefaultDistributionLog.class),
-                distributionTransportSecretProvider, endpoints);
+                distributionTransportSecretProvider, endpoints, new 
HttpConfiguration(10000));
         endpoints.put("default","http://endpoint";);
         ResourceResolver resourceResolver = mock(ResourceResolver.class);
         DistributionPackage distributionPackage = 
mock(DistributionPackage.class);

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=1793803&r1=1793802&r2=1793803&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
 Thu May  4 14:00:21 2017
@@ -18,19 +18,6 @@
  */
 package org.apache.sling.distribution.transport.impl;
 
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.same;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-import java.net.URI;
-import java.util.HashMap;
-import java.util.Map;
-
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpResponse;
 import org.apache.http.StatusLine;
@@ -49,6 +36,19 @@ import org.apache.sling.distribution.tra
 import 
org.apache.sling.distribution.transport.DistributionTransportSecretProvider;
 import org.junit.Test;
 
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.net.URI;
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.same;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
 /**
  * Testcase for {@link SimpleHttpDistributionTransport}
  */
@@ -70,7 +70,7 @@ public class SimpleHttpDistributionTrans
         DistributionEndpoint endpoint = new 
DistributionEndpoint("http://127.0.0.1:8080/some/resource";);
         DistributionPackageBuilder packageBuilder = 
mock(DistributionPackageBuilder.class);
         SimpleHttpDistributionTransport simpleHttpDistributionTransport = new 
SimpleHttpDistributionTransport(mock(DefaultDistributionLog.class),
-                endpoint, packageBuilder, secretProvider);
+                endpoint, packageBuilder, secretProvider, new 
HttpConfiguration(1000, 1000));
         ResourceResolver resourceResolver = mock(ResourceResolver.class);
         DistributionPackage distributionPackage = 
mock(DistributionPackage.class);
         when(distributionPackage.getInfo()).thenReturn(new 
DistributionPackageInfo("type"));
@@ -103,7 +103,7 @@ public class SimpleHttpDistributionTrans
         DistributionEndpoint endpoint = new 
DistributionEndpoint("http://127.0.0.1:8080/some/resource";);
         DistributionPackageBuilder packageBuilder = 
mock(DistributionPackageBuilder.class);
         SimpleHttpDistributionTransport simpleHttpDistributionTransport = new 
SimpleHttpDistributionTransport(mock(DefaultDistributionLog.class),
-                endpoint, packageBuilder, secretProvider);
+                endpoint, packageBuilder, secretProvider, new 
HttpConfiguration(1000, 1000));
         ResourceResolver resourceResolver = mock(ResourceResolver.class);
         DistributionRequest distributionRequest = new 
SimpleDistributionRequest(DistributionRequestType.ADD, "/");
         RemoteDistributionPackage retrievedPackage = 
simpleHttpDistributionTransport.retrievePackage(resourceResolver, 
distributionRequest, new DistributionTransportContext());
@@ -138,7 +138,7 @@ public class SimpleHttpDistributionTrans
         when(distributionPackage.getInfo()).thenReturn(new 
DistributionPackageInfo("type"));
         when(packageBuilder.readPackage(any(ResourceResolver.class), 
any(InputStream.class))).thenReturn(distributionPackage);
         SimpleHttpDistributionTransport simpleHttpDistributionTransport = new 
SimpleHttpDistributionTransport(mock(DefaultDistributionLog.class),
-                endpoint, packageBuilder, secretProvider);
+                endpoint, packageBuilder, secretProvider, new 
HttpConfiguration(1000, 1000));
         ResourceResolver resourceResolver = mock(ResourceResolver.class);
         DistributionRequest distributionRequest = new 
SimpleDistributionRequest(DistributionRequestType.ADD, "/");
         DistributionTransportContext distributionContext = 
mock(DistributionTransportContext.class);


Reply via email to