Author: tommaso
Date: Fri Dec 5 08:08:59 2014
New Revision: 1643180
URL: http://svn.apache.org/viewvc?rev=1643180&view=rev
Log:
SLING-4153 - fixed transport API to just expose the secret
Removed:
sling/trunk/contrib/extensions/distribution/api/src/main/java/org/apache/sling/distribution/transport/authentication/
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/DistributionTransportHandler.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/authentication/
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/AdvancedHttpDistributionTransportHandler.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/MultipleEndpointDistributionTransportHandler.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/SimpleHttpDistributionTransportHandler.java
sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/transport/authentication/
sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/transport/impl/AdvancedHttpDistributionTransportHandlerTest.java
sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/transport/impl/MultipleEndpointDistributionTransportHandlerTest.java
sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/transport/impl/SimpleHttpDistributionTransportHandlerTest.java
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.author/org.apache.sling.distribution.transport.authentication.impl.UserCredentialsTransportAuthenticationProviderFactory-publishAdmin.json
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.osgi.author/org.apache.sling.distribution.transport.authentication.impl.UserCredentialsTransportAuthenticationProviderFactory-publishAdmin.json
Modified:
sling/trunk/contrib/extensions/distribution/README.md
sling/trunk/contrib/extensions/distribution/api/pom.xml
sling/trunk/contrib/extensions/distribution/api/src/main/java/org/apache/sling/distribution/communication/DistributionRequest.java
sling/trunk/contrib/extensions/distribution/api/src/main/java/org/apache/sling/distribution/packaging/DistributionPackageExporter.java
sling/trunk/contrib/extensions/distribution/core/pom.xml
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgent.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/component/impl/DefaultDistributionComponentProvider.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/component/impl/DistributionComponentUtils.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporterFactory.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/AdvancedRemoteDistributionPackageImporter.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/packaging/impl/importer/RepositoryDistributionPackageImporter.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/RemoteEventDistributionTrigger.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/trigger/impl/RemoteEventDistributionTriggerTest.java
sling/trunk/contrib/extensions/distribution/it/pom.xml
sling/trunk/contrib/extensions/distribution/it/src/main/resources/SLING-CONTENT/libs/test/install.author/org.apache.sling.distribution.component.impl.GenericDistributionComponentFactory-trigger-test-remote-event.json
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.osgi.author/publish-reverse/org.apache.sling.distribution.packaging.impl.exporter.RemoteDistributionPackageExporterFactory-publish-reverse.json
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.osgi.author/publish/org.apache.sling.distribution.packaging.impl.importer.RemoteDistributionPackageImporterFactory-publish.json
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.osgi.author/pubsync/org.apache.sling.distribution.packaging.impl.exporter.RemoteDistributionPackageExporterFactory-pubsync.json
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.osgi.author/pubsync/org.apache.sling.distribution.packaging.impl.importer.RemoteDistributionPackageImporterFactory-pubsync.json
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.osgi.publish/cache-flush/org.apache.sling.distribution.agent.impl.SimpleDistributionAgentFactory-cache-flush.json
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.osgi.publish/cache-flush/org.apache.sling.distribution.packaging.impl.importer.AdvancedRemoteDistributionPackageImporter-cache-flush.json
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/settings.author/defaults/agents/global.json
Modified: sling/trunk/contrib/extensions/distribution/README.md
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/README.md?rev=1643180&r1=1643179&r2=1643180&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/README.md (original)
+++ sling/trunk/contrib/extensions/distribution/README.md Fri Dec 5 08:08:59
2014
@@ -11,7 +11,7 @@ by:
- "pushing" from Sling instance A to Sling instance B
- "pulling" from Sling instance B to Sling instance A
- - "synchronizing" Sling instances A and B via a third coordinating instance C
+ - "synchronizing" Sling instances A and B via a (third) coordinating instance
C
### Bundles
Modified: sling/trunk/contrib/extensions/distribution/api/pom.xml
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/api/pom.xml?rev=1643180&r1=1643179&r2=1643180&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/api/pom.xml (original)
+++ sling/trunk/contrib/extensions/distribution/api/pom.xml Fri Dec 5 08:08:59
2014
@@ -26,7 +26,7 @@
<parent>
<groupId>org.apache.sling</groupId>
<artifactId>sling</artifactId>
- <version>22</version>
+ <version>20</version>
</parent>
<!--
======================================================================= -->
Modified:
sling/trunk/contrib/extensions/distribution/api/src/main/java/org/apache/sling/distribution/communication/DistributionRequest.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/api/src/main/java/org/apache/sling/distribution/communication/DistributionRequest.java?rev=1643180&r1=1643179&r2=1643180&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/distribution/api/src/main/java/org/apache/sling/distribution/communication/DistributionRequest.java
(original)
+++
sling/trunk/contrib/extensions/distribution/api/src/main/java/org/apache/sling/distribution/communication/DistributionRequest.java
Fri Dec 5 08:08:59 2014
@@ -58,7 +58,7 @@ public final class DistributionRequest {
@Override
public String toString() {
return "DistributionRequest{" +
- ", actionType=" + actionType +
+ "actionType=" + actionType +
", paths=" + Arrays.toString(paths) +
'}';
}
Modified:
sling/trunk/contrib/extensions/distribution/api/src/main/java/org/apache/sling/distribution/packaging/DistributionPackageExporter.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/api/src/main/java/org/apache/sling/distribution/packaging/DistributionPackageExporter.java?rev=1643180&r1=1643179&r2=1643180&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/distribution/api/src/main/java/org/apache/sling/distribution/packaging/DistributionPackageExporter.java
(original)
+++
sling/trunk/contrib/extensions/distribution/api/src/main/java/org/apache/sling/distribution/packaging/DistributionPackageExporter.java
Fri Dec 5 08:08:59 2014
@@ -34,7 +34,7 @@ import org.apache.sling.distribution.com
* <p/>
* Exporting a {@link
org.apache.sling.distribution.packaging.DistributionPackage} means obtaining
that package by either
* directly creating it by bundling local Sling resources together or
retrieving it from a remote endpoint, e.g. by
- * executing an HTTP request to another Sling instance exposing already
created packages (for remotely changed resources).
+ * executing an HTTP POST request on another Sling instance exposing already
created packages (for remotely changed resources).
*/
@ConsumerType
public interface DistributionPackageExporter {
Modified: sling/trunk/contrib/extensions/distribution/core/pom.xml
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/pom.xml?rev=1643180&r1=1643179&r2=1643180&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/pom.xml (original)
+++ sling/trunk/contrib/extensions/distribution/core/pom.xml Fri Dec 5
08:08:59 2014
@@ -26,7 +26,7 @@
<parent>
<groupId>org.apache.sling</groupId>
<artifactId>sling</artifactId>
- <version>22</version>
+ <version>20</version>
</parent>
<!--
======================================================================= -->
Modified:
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgent.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgent.java?rev=1643180&r1=1643179&r2=1643180&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgent.java
(original)
+++
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgent.java
Fri Dec 5 08:08:59 2014
@@ -148,11 +148,10 @@ public class SimpleDistributionAgent imp
return scheduleImport(exportPackages(agentResourceResolver,
distributionRequest));
} catch (Exception e) {
- log.error("Error executing distribution request {}",
distributionRequest, e);
+ log.error("[{}]Â Error executing distribution request {}", name,
distributionRequest);
throw new DistributionAgentException(e);
} finally {
ungetAgentResourceResolver(agentResourceResolver);
-
}
}
Modified:
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/component/impl/DefaultDistributionComponentProvider.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/component/impl/DefaultDistributionComponentProvider.java?rev=1643180&r1=1643179&r2=1643180&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/component/impl/DefaultDistributionComponentProvider.java
(original)
+++
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/component/impl/DefaultDistributionComponentProvider.java
Fri Dec 5 08:08:59 2014
@@ -35,7 +35,7 @@ import org.apache.sling.distribution.pac
import org.apache.sling.distribution.packaging.DistributionPackageImporter;
import
org.apache.sling.distribution.queue.DistributionQueueDispatchingStrategy;
import org.apache.sling.distribution.queue.DistributionQueueProvider;
-import
org.apache.sling.distribution.transport.authentication.TransportAuthenticationProvider;
+import
org.apache.sling.distribution.transport.DistributionTransportSecretProvider;
import org.osgi.framework.BundleContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -49,7 +49,7 @@ import org.slf4j.LoggerFactory;
@Reference(name = "distributionPackageExporter", referenceInterface =
DistributionPackageExporter.class, cardinality =
ReferenceCardinality.OPTIONAL_MULTIPLE, policy = ReferencePolicy.DYNAMIC),
@Reference(name = "distributionQueueProvider", referenceInterface =
DistributionQueueProvider.class, cardinality =
ReferenceCardinality.OPTIONAL_MULTIPLE, policy = ReferencePolicy.DYNAMIC),
@Reference(name = "distributionQueueDistributionStrategy",
referenceInterface = DistributionQueueDispatchingStrategy.class, cardinality =
ReferenceCardinality.OPTIONAL_MULTIPLE, policy = ReferencePolicy.DYNAMIC),
- @Reference(name = "transportAuthenticationProvider",
referenceInterface = TransportAuthenticationProvider.class, cardinality =
ReferenceCardinality.OPTIONAL_MULTIPLE, policy = ReferencePolicy.DYNAMIC)
+ @Reference(name = "distributionTransportSecretProvider",
referenceInterface = DistributionTransportSecretProvider.class, cardinality =
ReferenceCardinality.OPTIONAL_MULTIPLE, policy = ReferencePolicy.DYNAMIC)
})
public class DefaultDistributionComponentProvider {
@@ -60,7 +60,7 @@ public class DefaultDistributionComponen
private Map<String, DistributionAgent> distributionAgentMap = new
ConcurrentHashMap<String, DistributionAgent>();
private Map<String, DistributionQueueProvider>
distributionQueueProviderMap = new ConcurrentHashMap<String,
DistributionQueueProvider>();
private Map<String, DistributionQueueDispatchingStrategy>
distributionQueueDistributionStrategyMap = new ConcurrentHashMap<String,
DistributionQueueDispatchingStrategy>();
- private Map<String, TransportAuthenticationProvider>
transportAuthenticationProviderMap = new ConcurrentHashMap<String,
TransportAuthenticationProvider>();
+ private Map<String, DistributionTransportSecretProvider>
distributionTransportSecretProviderMap = new ConcurrentHashMap<String,
DistributionTransportSecretProvider>();
private Map<String, DistributionPackageImporter>
distributionPackageImporterMap = new ConcurrentHashMap<String,
DistributionPackageImporter>();
private Map<String, DistributionPackageExporter>
distributionPackageExporterMap = new ConcurrentHashMap<String,
DistributionPackageExporter>();
private BundleContext bundleContext;
@@ -75,8 +75,8 @@ public class DefaultDistributionComponen
return (ComponentType)
distributionQueueProviderMap.get(componentName);
} else if
(type.isAssignableFrom(DistributionQueueDispatchingStrategy.class)) {
return (ComponentType)
distributionQueueDistributionStrategyMap.get(componentName);
- } else if
(type.isAssignableFrom(TransportAuthenticationProvider.class)) {
- return (ComponentType)
transportAuthenticationProviderMap.get(componentName);
+ } else if
(type.isAssignableFrom(DistributionTransportSecretProvider.class)) {
+ return (ComponentType)
distributionTransportSecretProviderMap.get(componentName);
}
return null;
@@ -114,21 +114,21 @@ public class DefaultDistributionComponen
}
}
- private void
bindTransportAuthenticationProvider(TransportAuthenticationProvider
transportAuthenticationProvider, Map<String, Object> config) {
+ private void
bindDistributionTransportSecretProvider(DistributionTransportSecretProvider
distributionTransportSecretProvider, Map<String, Object> config) {
String name = PropertiesUtil.toString(config.get(NAME), null);
if (name != null) {
- transportAuthenticationProviderMap.put(name,
transportAuthenticationProvider);
+ distributionTransportSecretProviderMap.put(name,
distributionTransportSecretProvider);
}
}
- private void
unbindTransportAuthenticationProvider(TransportAuthenticationProvider
transportAuthenticationProvider, Map<String, Object> config) {
+ private void
unbindDistributionTransportSecretProvider(DistributionTransportSecretProvider
distributionTransportSecretProvider, Map<String, Object> config) {
String name = PropertiesUtil.toString(config.get(NAME), null);
if (name != null) {
- transportAuthenticationProviderMap.remove(name);
+ distributionTransportSecretProviderMap.remove(name);
}
}
Modified:
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/component/impl/DistributionComponentUtils.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/component/impl/DistributionComponentUtils.java?rev=1643180&r1=1643179&r2=1643180&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/component/impl/DistributionComponentUtils.java
(original)
+++
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/component/impl/DistributionComponentUtils.java
Fri Dec 5 08:08:59 2014
@@ -38,8 +38,8 @@ import org.apache.sling.distribution.pac
import
org.apache.sling.distribution.packaging.impl.importer.RemoteDistributionPackageImporterFactory;
import org.apache.sling.distribution.serialization.DistributionPackageBuilder;
import
org.apache.sling.distribution.serialization.impl.vlt.FileVaultDistributionPackageBuilderFactory;
-import
org.apache.sling.distribution.transport.authentication.TransportAuthenticationProvider;
-import
org.apache.sling.distribution.transport.authentication.impl.UserCredentialsTransportAuthenticationProviderFactory;
+import
org.apache.sling.distribution.transport.DistributionTransportSecretProvider;
+import
org.apache.sling.distribution.transport.impl.UserCredentialsDistributionTransportSecretProvider;
import org.apache.sling.distribution.trigger.DistributionTrigger;
import
org.apache.sling.distribution.trigger.impl.LocalDistributionTriggerFactory;
@@ -99,7 +99,7 @@ public class DistributionComponentUtils
registerService("importer", DistributionPackageImporter.class);
registerService("packager", DistributionPackageBuilder.class);
registerService("requestAuthorization",
DistributionRequestAuthorizationStrategy.class);
- registerService("transportAuthenticator",
TransportAuthenticationProvider.class);
+ registerService("distributionTransportSecretProvider",
DistributionTransportSecretProvider.class);
registerService("trigger", DistributionTrigger.class);
@@ -117,7 +117,7 @@ public class DistributionComponentUtils
registerFactory("requestAuthorization", "privilege",
PrivilegeDistributionRequestAuthorizationStrategy.class);
- registerFactory("transportAuthenticator", "user",
UserCredentialsTransportAuthenticationProviderFactory.class);
+ registerFactory("distributionTransportSecretProvider", "user",
UserCredentialsDistributionTransportSecretProvider.class);
registerFactory("trigger", "resourceEvent",
LocalDistributionTriggerFactory.class);
registerFactory("trigger", "scheduledEvent",
LocalDistributionTriggerFactory.class);
Modified:
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporterFactory.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporterFactory.java?rev=1643180&r1=1643179&r2=1643180&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporterFactory.java
(original)
+++
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporterFactory.java
Fri Dec 5 08:08:59 2014
@@ -47,8 +47,8 @@ import org.slf4j.LoggerFactory;
policy = ConfigurationPolicy.REQUIRE)
@Service(value = DistributionPackageExporter.class)
public class AgentDistributionPackageExporterFactory implements
DistributionPackageExporter {
- private final Logger log = LoggerFactory.getLogger(getClass());
+ private final Logger log = LoggerFactory.getLogger(getClass());
/**
* name of this component.
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=1643180&r1=1643179&r2=1643180&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
Fri Dec 5 08:08:59 2014
@@ -28,11 +28,11 @@ import org.apache.sling.distribution.pac
import
org.apache.sling.distribution.packaging.DistributionPackageExportException;
import org.apache.sling.distribution.packaging.DistributionPackageExporter;
import org.apache.sling.distribution.serialization.DistributionPackageBuilder;
-import org.apache.sling.distribution.transport.DistributionTransportHandler;
-import
org.apache.sling.distribution.transport.authentication.TransportAuthenticationProvider;
+import org.apache.sling.distribution.transport.DistributionTransport;
+import
org.apache.sling.distribution.transport.DistributionTransportSecretProvider;
import org.apache.sling.distribution.transport.impl.DistributionEndpoint;
-import
org.apache.sling.distribution.transport.impl.MultipleEndpointDistributionTransportHandler;
-import
org.apache.sling.distribution.transport.impl.SimpleHttpDistributionTransportHandler;
+import
org.apache.sling.distribution.transport.impl.MultipleEndpointDistributionTransport;
+import
org.apache.sling.distribution.transport.impl.SimpleHttpDistributionTransport;
import
org.apache.sling.distribution.transport.impl.TransportEndpointStrategyType;
/**
@@ -41,11 +41,12 @@ import org.apache.sling.distribution.tra
public class RemoteDistributionPackageExporter implements
DistributionPackageExporter {
private final DistributionPackageBuilder packageBuilder;
+ private final DistributionTransportSecretProvider secretProvider;
- private DistributionTransportHandler transportHandler;
+ private DistributionTransport transportHandler;
public RemoteDistributionPackageExporter(DistributionPackageBuilder
packageBuilder,
- TransportAuthenticationProvider
transportAuthenticationProvider,
+
DistributionTransportSecretProvider secretProvider,
String[] endpoints,
String
transportEndpointStrategyName,
int pullItems) {
@@ -54,25 +55,29 @@ public class RemoteDistributionPackageEx
}
this.packageBuilder = packageBuilder;
+ this.secretProvider = secretProvider;
TransportEndpointStrategyType transportEndpointStrategyType =
TransportEndpointStrategyType.valueOf(transportEndpointStrategyName);
- List<DistributionTransportHandler> transportHandlers = new
ArrayList<DistributionTransportHandler>();
+ List<DistributionTransport> transportHandlers = new
ArrayList<DistributionTransport>();
for (String endpoint : endpoints) {
if (endpoint != null && endpoint.length() > 0) {
- transportHandlers.add(new
SimpleHttpDistributionTransportHandler(transportAuthenticationProvider,
- new DistributionEndpoint(endpoint), packageBuilder,
pullItems));
+ transportHandlers.add(new SimpleHttpDistributionTransport(new
DistributionEndpoint(endpoint), packageBuilder, pullItems));
}
}
- transportHandler = new
MultipleEndpointDistributionTransportHandler(transportHandlers,
+ transportHandler = new
MultipleEndpointDistributionTransport(transportHandlers,
transportEndpointStrategyType);
}
@Nonnull
public List<DistributionPackage> exportPackages(@Nonnull ResourceResolver
resourceResolver, @Nonnull DistributionRequest distributionRequest) throws
DistributionPackageExportException {
try {
- return transportHandler.retrievePackages(resourceResolver,
distributionRequest);
+ List<DistributionPackage> packages = new
ArrayList<DistributionPackage>();
+ for (DistributionPackage distributionPackage :
transportHandler.retrievePackages(resourceResolver, distributionRequest,
secretProvider.getSecret())) {
+ packages.add(distributionPackage);
+ }
+ return packages;
} catch (Exception e) {
throw new DistributionPackageExportException(e);
}
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=1643180&r1=1643179&r2=1643180&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
Fri Dec 5 08:08:59 2014
@@ -33,13 +33,12 @@ import org.apache.felix.scr.annotations.
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.commons.osgi.PropertiesUtil;
import org.apache.sling.distribution.communication.DistributionRequest;
-import
org.apache.sling.distribution.component.impl.DistributionComponentManager;
import org.apache.sling.distribution.component.impl.DistributionComponentUtils;
import org.apache.sling.distribution.packaging.DistributionPackage;
import
org.apache.sling.distribution.packaging.DistributionPackageExportException;
import org.apache.sling.distribution.packaging.DistributionPackageExporter;
import org.apache.sling.distribution.serialization.DistributionPackageBuilder;
-import
org.apache.sling.distribution.transport.authentication.TransportAuthenticationProvider;
+import
org.apache.sling.distribution.transport.DistributionTransportSecretProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -50,8 +49,7 @@ import org.slf4j.LoggerFactory;
metatype = true,
configurationFactory = true,
specVersion = "1.1",
- policy = ConfigurationPolicy.REQUIRE,
- immediate = true
+ policy = ConfigurationPolicy.REQUIRE
)
@Service(value = DistributionPackageExporter.class)
public class RemoteDistributionPackageExporterFactory implements
DistributionPackageExporter {
@@ -93,26 +91,23 @@ public class RemoteDistributionPackageEx
@Property(name = "packageBuilder.target")
@Reference(name = "packageBuilder")
- DistributionPackageBuilder packageBuilder;
+ private DistributionPackageBuilder packageBuilder;
- @Property(name = "transportAuthenticationProvider.target")
- @Reference(name = "transportAuthenticationProvider")
- TransportAuthenticationProvider transportAuthenticationProvider;
-
- @Reference
- private DistributionComponentManager componentManager;
+ @Property(name = "distributionTransportSecretProvider.target")
+ @Reference(name = "distributionTransportSecretProvider")
+ private DistributionTransportSecretProvider
distributionTransportSecretProvider;
private DistributionPackageExporter exporter;
@Activate
protected void activate(Map<String, Object> config) throws Exception {
-
+ log.info("activating remote exporter with pb {} and dtsp {}",
packageBuilder, distributionTransportSecretProvider);
String[] endpoints =
PropertiesUtil.toStringArray(config.get(ENDPOINTS), new String[0]);
String endpointStrategyName =
PropertiesUtil.toString(config.get(ENDPOINTS_STRATEGY), "One");
int pollItems = PropertiesUtil.toInteger(config.get(PULL_ITEMS),
Integer.MAX_VALUE);
- exporter = new RemoteDistributionPackageExporter(packageBuilder,
transportAuthenticationProvider, endpoints, endpointStrategyName, pollItems);
+ exporter = new RemoteDistributionPackageExporter(packageBuilder,
distributionTransportSecretProvider, endpoints, endpointStrategyName,
pollItems);
}
Modified:
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/AdvancedRemoteDistributionPackageImporter.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/AdvancedRemoteDistributionPackageImporter.java?rev=1643180&r1=1643179&r2=1643180&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/AdvancedRemoteDistributionPackageImporter.java
(original)
+++
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/AdvancedRemoteDistributionPackageImporter.java
Fri Dec 5 08:08:59 2014
@@ -25,23 +25,20 @@ import java.util.List;
import java.util.Map;
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.Property;
import org.apache.felix.scr.annotations.PropertyOption;
import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.Service;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.commons.osgi.PropertiesUtil;
import org.apache.sling.distribution.event.impl.DistributionEventFactory;
import org.apache.sling.distribution.packaging.DistributionPackage;
import
org.apache.sling.distribution.packaging.DistributionPackageImportException;
import org.apache.sling.distribution.packaging.DistributionPackageImporter;
-import org.apache.sling.distribution.transport.DistributionTransportHandler;
-import
org.apache.sling.distribution.transport.authentication.TransportAuthenticationProvider;
-import
org.apache.sling.distribution.transport.impl.AdvancedHttpDistributionTransportHandler;
+import org.apache.sling.distribution.transport.DistributionTransport;
+import
org.apache.sling.distribution.transport.DistributionTransportSecretProvider;
+import
org.apache.sling.distribution.transport.impl.AdvancedHttpDistributionTransport;
import org.apache.sling.distribution.transport.impl.DistributionEndpoint;
-import
org.apache.sling.distribution.transport.impl.MultipleEndpointDistributionTransportHandler;
+import
org.apache.sling.distribution.transport.impl.MultipleEndpointDistributionTransport;
import
org.apache.sling.distribution.transport.impl.TransportEndpointStrategyType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -56,9 +53,9 @@ public class AdvancedRemoteDistributionP
private final Logger log = LoggerFactory.getLogger(getClass());
- @Property(name = "transportAuthenticationProvider.target")
- @Reference(name = "transportAuthenticationProvider")
- private volatile TransportAuthenticationProvider
transportAuthenticationProvider;
+ @Property(name = "distributionTransportSecretProvider.target")
+ @Reference(name = "distributionTransportSecretProvider")
+ private volatile DistributionTransportSecretProvider
distributionTransportSecretProvider;
@Property(cardinality = 100)
public static final String ENDPOINTS = "endpoints";
@@ -89,7 +86,7 @@ public class AdvancedRemoteDistributionP
@Reference
private DistributionEventFactory distributionEventFactory;
- private DistributionTransportHandler transportHandler;
+ private DistributionTransport transportHandler;
@Activate
protected void activate(Map<String, ?> config) throws Exception {
@@ -106,17 +103,16 @@ public class AdvancedRemoteDistributionP
String customBody = PropertiesUtil.toString(config.get(CUSTOM_BODY),
"");
- List<DistributionTransportHandler> transportHandlers = new
ArrayList<DistributionTransportHandler>();
+ List<DistributionTransport> transportHandlers = new
ArrayList<DistributionTransport>();
for (String endpoint : endpoints) {
if (endpoint != null && endpoint.length() > 0) {
- transportHandlers.add(new
AdvancedHttpDistributionTransportHandler(useCustomHeaders, customHeaders,
+ transportHandlers.add(new
AdvancedHttpDistributionTransport(useCustomHeaders, customHeaders,
useCustomBody, customBody,
- transportAuthenticationProvider,
new DistributionEndpoint(endpoint), null, -1));
}
}
- transportHandler = new
MultipleEndpointDistributionTransportHandler(transportHandlers,
+ transportHandler = new
MultipleEndpointDistributionTransport(transportHandlers,
transportEndpointStrategyType);
}
@@ -124,7 +120,7 @@ public class AdvancedRemoteDistributionP
public void importPackage(@Nonnull ResourceResolver resourceResolver,
@Nonnull DistributionPackage distributionPackage) {
try {
- transportHandler.deliverPackage(resourceResolver,
distributionPackage);
+ transportHandler.deliverPackage(resourceResolver,
distributionPackage, distributionTransportSecretProvider.getSecret());
} catch (Exception e) {
log.error("failed delivery", e);
}
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=1643180&r1=1643179&r2=1643180&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
Fri Dec 5 08:08:59 2014
@@ -27,11 +27,11 @@ import org.apache.sling.api.resource.Res
import org.apache.sling.distribution.packaging.DistributionPackage;
import
org.apache.sling.distribution.packaging.DistributionPackageImportException;
import org.apache.sling.distribution.packaging.DistributionPackageImporter;
-import org.apache.sling.distribution.transport.DistributionTransportHandler;
-import
org.apache.sling.distribution.transport.authentication.TransportAuthenticationProvider;
+import org.apache.sling.distribution.transport.DistributionTransport;
+import
org.apache.sling.distribution.transport.DistributionTransportSecretProvider;
import org.apache.sling.distribution.transport.impl.DistributionEndpoint;
-import
org.apache.sling.distribution.transport.impl.MultipleEndpointDistributionTransportHandler;
-import
org.apache.sling.distribution.transport.impl.SimpleHttpDistributionTransportHandler;
+import
org.apache.sling.distribution.transport.impl.MultipleEndpointDistributionTransport;
+import
org.apache.sling.distribution.transport.impl.SimpleHttpDistributionTransport;
import
org.apache.sling.distribution.transport.impl.TransportEndpointStrategyType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -43,36 +43,37 @@ public class RemoteDistributionPackageIm
private final Logger log = LoggerFactory.getLogger(getClass());
- private DistributionTransportHandler transportHandler;
+ private DistributionTransport transportHandler;
+ private DistributionTransportSecretProvider
distributionTransportSecretProvider;
- public RemoteDistributionPackageImporter(TransportAuthenticationProvider
transportAuthenticationProvider,
+ public
RemoteDistributionPackageImporter(DistributionTransportSecretProvider
distributionTransportSecretProvider,
String[] endpoints,
String
transportEndpointStrategyName) {
+ this.distributionTransportSecretProvider =
distributionTransportSecretProvider;
- if (transportAuthenticationProvider == null) {
- throw new
IllegalArgumentException("transportAuthenticationProviderFactory is required");
+ if (distributionTransportSecretProvider == null) {
+ throw new
IllegalArgumentException("distributionTransportSecretProvider is required");
}
TransportEndpointStrategyType transportEndpointStrategyType =
TransportEndpointStrategyType.valueOf(transportEndpointStrategyName);
- List<DistributionTransportHandler> transportHandlers = new
ArrayList<DistributionTransportHandler>();
+ List<DistributionTransport> transportHandlers = new
ArrayList<DistributionTransport>();
for (String endpoint : endpoints) {
if (endpoint != null && endpoint.length() > 0) {
- transportHandlers.add(new
SimpleHttpDistributionTransportHandler(transportAuthenticationProvider,
- new DistributionEndpoint(endpoint), null, -1));
+ transportHandlers.add(new SimpleHttpDistributionTransport(new
DistributionEndpoint(endpoint), null, -1));
}
}
- transportHandler = new
MultipleEndpointDistributionTransportHandler(transportHandlers,
+ transportHandler = new
MultipleEndpointDistributionTransport(transportHandlers,
transportEndpointStrategyType);
}
public void importPackage(@Nonnull ResourceResolver resourceResolver,
@Nonnull DistributionPackage distributionPackage) throws
DistributionPackageImportException {
try {
- transportHandler.deliverPackage(resourceResolver,
distributionPackage);
+ transportHandler.deliverPackage(resourceResolver,
distributionPackage, distributionTransportSecretProvider.getSecret());
} catch (Exception e) {
throw new DistributionPackageImportException("failed in importing
package " + distributionPackage);
}
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=1643180&r1=1643179&r2=1643180&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
Fri Dec 5 08:08:59 2014
@@ -36,7 +36,7 @@ import org.apache.sling.distribution.com
import org.apache.sling.distribution.packaging.DistributionPackage;
import
org.apache.sling.distribution.packaging.DistributionPackageImportException;
import org.apache.sling.distribution.packaging.DistributionPackageImporter;
-import
org.apache.sling.distribution.transport.authentication.TransportAuthenticationProvider;
+import
org.apache.sling.distribution.transport.DistributionTransportSecretProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -80,9 +80,9 @@ public class RemoteDistributionPackageIm
public static final String ENDPOINTS_STRATEGY = "endpoints.strategy";
- @Property(name = "transportAuthenticationProvider.target")
- @Reference(name = "transportAuthenticationProvider")
- TransportAuthenticationProvider transportAuthenticationProvider;
+ @Property(name = "distributionTransportSecretProvider.target")
+ @Reference(name = "distributionTransportSecretProvider")
+ DistributionTransportSecretProvider distributionTransportSecretProvider;
private DistributionPackageImporter importer;
@Reference
@@ -96,7 +96,7 @@ public class RemoteDistributionPackageIm
String endpointStrategyName =
PropertiesUtil.toString(config.get(ENDPOINTS_STRATEGY), "One");
- importer = new
RemoteDistributionPackageImporter(transportAuthenticationProvider, endpoints,
endpointStrategyName);
+ importer = new
RemoteDistributionPackageImporter(distributionTransportSecretProvider,
endpoints, endpointStrategyName);
}
Modified:
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/RepositoryDistributionPackageImporter.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/RepositoryDistributionPackageImporter.java?rev=1643180&r1=1643179&r2=1643180&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/RepositoryDistributionPackageImporter.java
(original)
+++
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/RepositoryDistributionPackageImporter.java
Fri Dec 5 08:08:59 2014
@@ -35,8 +35,7 @@ import org.apache.sling.distribution.eve
import org.apache.sling.distribution.packaging.DistributionPackage;
import
org.apache.sling.distribution.packaging.DistributionPackageImportException;
import org.apache.sling.distribution.packaging.DistributionPackageImporter;
-import
org.apache.sling.distribution.transport.authentication.TransportAuthenticationContext;
-import
org.apache.sling.distribution.transport.authentication.TransportAuthenticationProvider;
+import
org.apache.sling.distribution.transport.DistributionTransportSecretProvider;
import org.apache.sling.distribution.transport.impl.DistributionEndpoint;
import org.apache.sling.jcr.api.SlingRepository;
import org.slf4j.Logger;
@@ -58,17 +57,19 @@ public class RepositoryDistributionPacka
private DistributionEventFactory distributionEventFactory;
- private TransportAuthenticationProvider<SlingRepository, Session>
transportAuthenticationProvider;
+ private DistributionTransportSecretProvider
distributionTransportSecretProvider;
+
+ private String serviceName;
+ private String path;
+ private String privilege;
public void deliverPackageToEndpoint(DistributionPackage
distributionPackage, DistributionEndpoint distributionEndpoint)
throws Exception {
Session session = null;
try {
- TransportAuthenticationContext transportAuthenticationContext =
new TransportAuthenticationContext();
String path =
distributionEndpoint.getUri().toString().replace("repo:/", "");
- transportAuthenticationContext.addAttribute("path", path);
- session = transportAuthenticationProvider.authenticate(repository,
transportAuthenticationContext);
+ session = authenticate();
int lastSlash = distributionPackage.getId().lastIndexOf('/');
String nodeName = Text.escape(lastSlash < 0 ?
distributionPackage.getId() : distributionPackage.getId().substring(lastSlash +
1));
log.info("creating node {} in {}", distributionPackage.getId(),
nodeName);
@@ -111,4 +112,17 @@ public class RepositoryDistributionPacka
public DistributionPackage importStream(@Nonnull ResourceResolver
resourceResolver, @Nonnull InputStream stream) throws
DistributionPackageImportException {
throw new DistributionPackageImportException("not supported");
}
+
+
+ private Session authenticate() throws Exception {
+ Session session = repository.loginService(serviceName, null);
+
+ if (!session.hasPermission(path, privilege)) {
+ session.logout();
+ throw new Exception("failed to access path " + path + " with
privilege " + privilege);
+ }
+
+ log.info("authenticated path {} with privilege {}", path, privilege);
+ return session;
+ }
}
Modified:
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/RemoteEventDistributionTrigger.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/RemoteEventDistributionTrigger.java?rev=1643180&r1=1643179&r2=1643180&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/RemoteEventDistributionTrigger.java
(original)
+++
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/trigger/impl/RemoteEventDistributionTrigger.java
Fri Dec 5 08:08:59 2014
@@ -27,6 +27,8 @@ import java.util.concurrent.Future;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
+import org.apache.http.auth.AuthScope;
+import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIUtils;
@@ -42,8 +44,7 @@ import org.apache.sling.commons.schedule
import org.apache.sling.commons.scheduler.Scheduler;
import org.apache.sling.distribution.communication.DistributionRequest;
import org.apache.sling.distribution.communication.DistributionRequestType;
-import
org.apache.sling.distribution.transport.authentication.TransportAuthenticationContext;
-import
org.apache.sling.distribution.transport.authentication.TransportAuthenticationProvider;
+import
org.apache.sling.distribution.transport.DistributionTransportSecretProvider;
import org.apache.sling.distribution.transport.impl.DistributionEndpoint;
import org.apache.sling.distribution.trigger.DistributionRequestHandler;
import org.apache.sling.distribution.trigger.DistributionTrigger;
@@ -61,26 +62,22 @@ public class RemoteEventDistributionTrig
private final Logger log = LoggerFactory.getLogger(getClass());
private final DistributionEndpoint endpoint;
- private final TransportAuthenticationProvider<CredentialsProvider,
CredentialsProvider> authenticationProvider;
+ private final DistributionTransportSecretProvider
distributionTransportSecretProvider;
private Scheduler scheduler;
private final Map<String, Future<HttpResponse>> requests = new
ConcurrentHashMap<String, Future<HttpResponse>>();
- public RemoteEventDistributionTrigger(String endpoint,
TransportAuthenticationProvider<CredentialsProvider, CredentialsProvider>
authenticationProvider, Scheduler scheduler) {
+ public RemoteEventDistributionTrigger(String endpoint,
DistributionTransportSecretProvider distributionTransportSecretProvider,
Scheduler scheduler) {
if (endpoint == null) {
throw new IllegalArgumentException("Endpoint is required");
}
- if (authenticationProvider == null) {
+ if (distributionTransportSecretProvider == null) {
throw new IllegalArgumentException("Authentication provider is
required");
}
- if
(!authenticationProvider.canAuthenticate(CredentialsProvider.class)) {
- throw new IllegalArgumentException("Authentication provider cannot
authenticate CredentialsProvider");
- }
-
- this.authenticationProvider = authenticationProvider;
+ this.distributionTransportSecretProvider =
distributionTransportSecretProvider;
this.endpoint = new DistributionEndpoint(endpoint);
this.scheduler = scheduler;
}
@@ -159,43 +156,47 @@ public class RemoteEventDistributionTrig
CredentialsProvider credentialsProvider = new
BasicCredentialsProvider();
- TransportAuthenticationContext context = new
TransportAuthenticationContext();
- context.addAttribute("endpoint", endpoint);
- credentialsProvider =
authenticationProvider.authenticate(credentialsProvider, context);
-
- final CloseableHttpAsyncClient httpClient =
HttpAsyncClients.custom()
- .setDefaultCredentialsProvider(credentialsProvider)
- .build();
-
- HttpGet get = new HttpGet(endpoint.getUri());
- HttpHost target = URIUtils.extractHost(get.getURI());
- BasicAsyncRequestProducer basicAsyncRequestProducer = new
BasicAsyncRequestProducer(target, get);
- httpClient.start();
- try {
- log.debug("sending request");
- Future<HttpResponse> futureResponse = httpClient.execute(
- basicAsyncRequestProducer,
- new SSEResponseConsumer(requestHandler), new
FutureCallback<HttpResponse>() {
- public void completed(HttpResponse
httpResponse) {
- log.debug("response received {}",
httpResponse);
- }
-
- public void failed(Exception e) {
- log.warn("failed request {}",
e.toString());
- }
-
- public void cancelled() {
- log.warn("request cancelled");
- }
- });
- requests.put(requestHandler.toString(), futureResponse);
- futureResponse.get();
-
- } catch (Exception e) {
- log.warn("cannot communicate with {}", endpoint, e);
+ Map<String, String> credentialsMap =
distributionTransportSecretProvider.getSecret().asCredentialsMap();
+ if (credentialsMap != null) {
+ String username = credentialsMap.get("username");
+ String password = credentialsMap.get("password");
+ credentialsProvider.setCredentials(new AuthScope(new
HttpHost(endpoint.getUri().getHost(), endpoint.getUri().getPort())),
+ new UsernamePasswordCredentials(username,
password));
+
+ final CloseableHttpAsyncClient httpClient =
HttpAsyncClients.custom()
+ .setDefaultCredentialsProvider(credentialsProvider)
+ .build();
+
+ HttpGet get = new HttpGet(endpoint.getUri());
+ HttpHost target = URIUtils.extractHost(get.getURI());
+ BasicAsyncRequestProducer basicAsyncRequestProducer = new
BasicAsyncRequestProducer(target, get);
+ httpClient.start();
+ try {
+ log.debug("sending request");
+ Future<HttpResponse> futureResponse =
httpClient.execute(
+ basicAsyncRequestProducer,
+ new SSEResponseConsumer(requestHandler), new
FutureCallback<HttpResponse>() {
+ public void completed(HttpResponse
httpResponse) {
+ log.debug("response received {}",
httpResponse);
+ }
+
+ public void failed(Exception e) {
+ log.warn("failed request {}",
e.toString());
+ }
+
+ public void cancelled() {
+ log.warn("request cancelled");
+ }
+ });
+ requests.put(requestHandler.toString(),
futureResponse);
+ futureResponse.get();
+
+ } catch (Exception e) {
+ log.warn("cannot communicate with {}", endpoint, e);
+ }
+ httpClient.close();
+ log.debug("request finished");
}
- httpClient.close();
- log.debug("request finished");
} catch (Exception e) {
log.error("cannot run event based distribution {}", e);
}
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=1643180&r1=1643179&r2=1643180&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
Fri Dec 5 08:08:59 2014
@@ -25,7 +25,7 @@ import org.apache.sling.distribution.com
import org.apache.sling.distribution.communication.DistributionRequestType;
import org.apache.sling.distribution.packaging.DistributionPackage;
import org.apache.sling.distribution.serialization.DistributionPackageBuilder;
-import
org.apache.sling.distribution.transport.authentication.TransportAuthenticationProvider;
+import
org.apache.sling.distribution.transport.DistributionTransportSecretProvider;
import
org.apache.sling.distribution.transport.impl.TransportEndpointStrategyType;
import org.junit.Test;
@@ -41,11 +41,11 @@ public class RemoteDistributionPackageEx
@Test
public void testDummyExport() throws Exception {
DistributionPackageBuilder packageBuilder =
mock(DistributionPackageBuilder.class);
- TransportAuthenticationProvider authProvider =
mock(TransportAuthenticationProvider.class);
+ DistributionTransportSecretProvider
distributionTransportSecretProvider =
mock(DistributionTransportSecretProvider.class);
String[] endpoints = new String[0];
for (TransportEndpointStrategyType strategy :
TransportEndpointStrategyType.values()) {
RemoteDistributionPackageExporter
remotedistributionPackageExporter = new RemoteDistributionPackageExporter(
- packageBuilder, authProvider, endpoints, strategy.name(),
1);
+ packageBuilder, distributionTransportSecretProvider,
endpoints, strategy.name(), 1);
ResourceResolver resourceResolver = mock(ResourceResolver.class);
DistributionRequest distributionRequest = new
DistributionRequest(DistributionRequestType.ADD, "/");
List<DistributionPackage> distributionPackages =
remotedistributionPackageExporter.exportPackages(resourceResolver,
distributionRequest);
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=1643180&r1=1643179&r2=1643180&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
Fri Dec 5 08:08:59 2014
@@ -20,7 +20,7 @@ package org.apache.sling.distribution.pa
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.distribution.packaging.DistributionPackage;
-import
org.apache.sling.distribution.transport.authentication.TransportAuthenticationProvider;
+import
org.apache.sling.distribution.transport.DistributionTransportSecretProvider;
import
org.apache.sling.distribution.transport.impl.TransportEndpointStrategyType;
import org.junit.Test;
@@ -33,11 +33,11 @@ public class RemoteDistributionPackageIm
@Test
public void testDummyImport() throws Exception {
- TransportAuthenticationProvider authenticationProvider =
mock(TransportAuthenticationProvider.class);
+ DistributionTransportSecretProvider
distributionTransportSecretProvider =
mock(DistributionTransportSecretProvider.class);
String[] endpoints = new String[0];
for (TransportEndpointStrategyType strategy :
TransportEndpointStrategyType.values()) {
RemoteDistributionPackageImporter
remotedistributionPackageImporter = new RemoteDistributionPackageImporter(
- authenticationProvider, endpoints, strategy.name());
+ distributionTransportSecretProvider, endpoints,
strategy.name());
ResourceResolver resourceResolver = mock(ResourceResolver.class);
DistributionPackage distributionPackage =
mock(DistributionPackage.class);
remotedistributionPackageImporter.importPackage(resourceResolver,
distributionPackage);
Modified:
sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/trigger/impl/RemoteEventDistributionTriggerTest.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/trigger/impl/RemoteEventDistributionTriggerTest.java?rev=1643180&r1=1643179&r2=1643180&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/trigger/impl/RemoteEventDistributionTriggerTest.java
(original)
+++
sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/trigger/impl/RemoteEventDistributionTriggerTest.java
Fri Dec 5 08:08:59 2014
@@ -18,10 +18,9 @@
*/
package org.apache.sling.distribution.trigger.impl;
-import org.apache.http.client.CredentialsProvider;
import org.apache.sling.commons.scheduler.ScheduleOptions;
import org.apache.sling.commons.scheduler.Scheduler;
-import
org.apache.sling.distribution.transport.authentication.TransportAuthenticationProvider;
+import
org.apache.sling.distribution.transport.DistributionTransportSecretProvider;
import org.apache.sling.distribution.trigger.DistributionRequestHandler;
import org.junit.Test;
@@ -37,25 +36,23 @@ public class RemoteEventDistributionTrig
public void testRegister() throws Exception {
DistributionRequestHandler handler =
mock(DistributionRequestHandler.class);
String endpoint = "";
- TransportAuthenticationProvider<CredentialsProvider,
CredentialsProvider> authProvider = mock(TransportAuthenticationProvider.class);
-
when(authProvider.canAuthenticate(CredentialsProvider.class)).thenReturn(true);
+ DistributionTransportSecretProvider
distributionTransportSecretProvider =
mock(DistributionTransportSecretProvider.class);
Scheduler scheduler = mock(Scheduler.class);
ScheduleOptions options = mock(ScheduleOptions.class);
when(options.name(handler.toString())).thenReturn(options);
when(scheduler.NOW()).thenReturn(options);
RemoteEventDistributionTrigger remoteEventdistributionTrigger = new
RemoteEventDistributionTrigger(
- endpoint, authProvider, scheduler);
+ endpoint, distributionTransportSecretProvider, scheduler);
remoteEventdistributionTrigger.register(handler);
}
@Test
public void testUnregister() throws Exception {
String endpoint = "";
- TransportAuthenticationProvider<CredentialsProvider,
CredentialsProvider> authProvider = mock(TransportAuthenticationProvider.class);
-
when(authProvider.canAuthenticate(CredentialsProvider.class)).thenReturn(true);
+ DistributionTransportSecretProvider
distributionTransportSecretProvider =
mock(DistributionTransportSecretProvider.class);
Scheduler scheduler = mock(Scheduler.class);
RemoteEventDistributionTrigger remoteEventdistributionTrigger = new
RemoteEventDistributionTrigger(
- endpoint, authProvider, scheduler);
+ endpoint, distributionTransportSecretProvider, scheduler);
DistributionRequestHandler handler =
mock(DistributionRequestHandler.class);
remoteEventdistributionTrigger.unregister(handler);
}
Modified: sling/trunk/contrib/extensions/distribution/it/pom.xml
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/it/pom.xml?rev=1643180&r1=1643179&r2=1643180&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/it/pom.xml (original)
+++ sling/trunk/contrib/extensions/distribution/it/pom.xml Fri Dec 5 08:08:59
2014
@@ -267,7 +267,6 @@
All bundles must be listed as dependencies in this
pom, or they won't be installed.
-->
-
<sling.additional.bundle.1>httpcore-osgi</sling.additional.bundle.1>
<sling.additional.bundle.2>httpclient-osgi</sling.additional.bundle.2>
<sling.additional.bundle.3>org.apache.sling.discovery.impl</sling.additional.bundle.3>
Modified:
sling/trunk/contrib/extensions/distribution/it/src/main/resources/SLING-CONTENT/libs/test/install.author/org.apache.sling.distribution.component.impl.GenericDistributionComponentFactory-trigger-test-remote-event.json
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/it/src/main/resources/SLING-CONTENT/libs/test/install.author/org.apache.sling.distribution.component.impl.GenericDistributionComponentFactory-trigger-test-remote-event.json?rev=1643180&r1=1643179&r2=1643180&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/distribution/it/src/main/resources/SLING-CONTENT/libs/test/install.author/org.apache.sling.distribution.component.impl.GenericDistributionComponentFactory-trigger-test-remote-event.json
(original)
+++
sling/trunk/contrib/extensions/distribution/it/src/main/resources/SLING-CONTENT/libs/test/install.author/org.apache.sling.distribution.component.impl.GenericDistributionComponentFactory-trigger-test-remote-event.json
Fri Dec 5 08:08:59 2014
@@ -8,8 +8,8 @@
"type=remoteEvent",
"endpoint=http://localhost:4503/libs/sling/distribution/services/triggers/content-changed.event",
- "transportAuthenticationProvider/type=service",
- "transportAuthenticationProvider/name=publishAdmin"
+ "distributionTransportSecretProvider/type=service",
+ "distributionTransportSecretProvider/name=publishAdmin"
]
}
\ No newline at end of file
Modified:
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.osgi.author/publish-reverse/org.apache.sling.distribution.packaging.impl.exporter.RemoteDistributionPackageExporterFactory-publish-reverse.json
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.osgi.author/publish-reverse/org.apache.sling.distribution.packaging.impl.exporter.RemoteDistributionPackageExporterFactory-publish-reverse.json?rev=1643180&r1=1643179&r2=1643180&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.osgi.author/publish-reverse/org.apache.sling.distribution.packaging.impl.exporter.RemoteDistributionPackageExporterFactory-publish-reverse.json
(original)
+++
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.osgi.author/publish-reverse/org.apache.sling.distribution.packaging.impl.exporter.RemoteDistributionPackageExporterFactory-publish-reverse.json
Fri Dec 5 08:08:59 2014
@@ -8,5 +8,5 @@
"http://localhost:4503/libs/sling/distribution/services/exporters/reverse"
],
"packageBuilder.target" : "(name=vlt)",
- "transportAuthenticationProvider.target" : "(name=publishAdmin)"
+ "distributionTransportSecretProvider.target" : "(name=publishAdmin)"
}
\ No newline at end of file
Modified:
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.osgi.author/publish/org.apache.sling.distribution.packaging.impl.importer.RemoteDistributionPackageImporterFactory-publish.json
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.osgi.author/publish/org.apache.sling.distribution.packaging.impl.importer.RemoteDistributionPackageImporterFactory-publish.json?rev=1643180&r1=1643179&r2=1643180&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.osgi.author/publish/org.apache.sling.distribution.packaging.impl.importer.RemoteDistributionPackageImporterFactory-publish.json
(original)
+++
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.osgi.author/publish/org.apache.sling.distribution.packaging.impl.importer.RemoteDistributionPackageImporterFactory-publish.json
Fri Dec 5 08:08:59 2014
@@ -8,5 +8,5 @@
"http://localhost:4503/libs/sling/distribution/services/importers/default"
],
"packageBuilder.target" : "(name=vlt)",
- "transportAuthenticationProvider.target" : "(name=publishAdmin)"
+ "distributionTransportSecretProvider.target" : "(name=publishAdmin)"
}
\ No newline at end of file
Modified:
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.osgi.author/pubsync/org.apache.sling.distribution.packaging.impl.exporter.RemoteDistributionPackageExporterFactory-pubsync.json
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.osgi.author/pubsync/org.apache.sling.distribution.packaging.impl.exporter.RemoteDistributionPackageExporterFactory-pubsync.json?rev=1643180&r1=1643179&r2=1643180&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.osgi.author/pubsync/org.apache.sling.distribution.packaging.impl.exporter.RemoteDistributionPackageExporterFactory-pubsync.json
(original)
+++
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.osgi.author/pubsync/org.apache.sling.distribution.packaging.impl.exporter.RemoteDistributionPackageExporterFactory-pubsync.json
Fri Dec 5 08:08:59 2014
@@ -13,7 +13,7 @@
"endpoints.strategy": "All",
"packageBuilder.target" : "(name=vlt)",
- "transportAuthenticationProvider.target" : "(name=publishAdmin)"
+ "distributionTransportSecretProvider.target" : "(name=publishAdmin)"
}
\ No newline at end of file
Modified:
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.osgi.author/pubsync/org.apache.sling.distribution.packaging.impl.importer.RemoteDistributionPackageImporterFactory-pubsync.json
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.osgi.author/pubsync/org.apache.sling.distribution.packaging.impl.importer.RemoteDistributionPackageImporterFactory-pubsync.json?rev=1643180&r1=1643179&r2=1643180&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.osgi.author/pubsync/org.apache.sling.distribution.packaging.impl.importer.RemoteDistributionPackageImporterFactory-pubsync.json
(original)
+++
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.osgi.author/pubsync/org.apache.sling.distribution.packaging.impl.importer.RemoteDistributionPackageImporterFactory-pubsync.json
Fri Dec 5 08:08:59 2014
@@ -15,5 +15,5 @@
"packageBuilder.target" : "(name=vlt)",
- "transportAuthenticationProvider.target" : "(name=publishAdmin)"
+ "distributionTransportSecretProvider.target" : "(name=publishAdmin)"
}
\ No newline at end of file
Modified:
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.osgi.publish/cache-flush/org.apache.sling.distribution.agent.impl.SimpleDistributionAgentFactory-cache-flush.json
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.osgi.publish/cache-flush/org.apache.sling.distribution.agent.impl.SimpleDistributionAgentFactory-cache-flush.json?rev=1643180&r1=1643179&r2=1643180&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.osgi.publish/cache-flush/org.apache.sling.distribution.agent.impl.SimpleDistributionAgentFactory-cache-flush.json
(original)
+++
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.osgi.publish/cache-flush/org.apache.sling.distribution.agent.impl.SimpleDistributionAgentFactory-cache-flush.json
Fri Dec 5 08:08:59 2014
@@ -4,7 +4,6 @@
"enabled" : false,
-
"requestAuthorizationStrategy.target" : "privilegeRead"
}
Modified:
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.osgi.publish/cache-flush/org.apache.sling.distribution.packaging.impl.importer.AdvancedRemoteDistributionPackageImporter-cache-flush.json
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.osgi.publish/cache-flush/org.apache.sling.distribution.packaging.impl.importer.AdvancedRemoteDistributionPackageImporter-cache-flush.json?rev=1643180&r1=1643179&r2=1643180&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.osgi.publish/cache-flush/org.apache.sling.distribution.packaging.impl.importer.AdvancedRemoteDistributionPackageImporter-cache-flush.json
(original)
+++
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.osgi.publish/cache-flush/org.apache.sling.distribution.packaging.impl.importer.AdvancedRemoteDistributionPackageImporter-cache-flush.json
Fri Dec 5 08:08:59 2014
@@ -9,6 +9,5 @@
"delete -> Change : REMOVE" ],
"useCustomBody": true,
"customBody": "",
- "TransportAuthenticationProvider.target": "(name=nop)",
"endpoints": [ "http://localhost:8000/invalidatecache" ]
}
\ No newline at end of file
Modified:
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/settings.author/defaults/agents/global.json
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/settings.author/defaults/agents/global.json?rev=1643180&r1=1643179&r2=1643180&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/settings.author/defaults/agents/global.json
(original)
+++
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/settings.author/defaults/agents/global.json
Fri Dec 5 08:08:59 2014
@@ -21,7 +21,7 @@
"name" : "vlt"
},
- "transportAuthenticationProvider" : {
+ "distributionTransportSecretProvider" : {
"kind" : "transportAuthenticator",
"type" : "service",
"name" : "publishAdmin"
@@ -39,7 +39,7 @@
"name" : "vlt"
},
- "transportAuthenticationProvider" : {
+ "distributionTransportSecretProvider" : {
"kind" : "transportAuthenticator",
"type" : "service",
"name" : "publishAdmin"