You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by mp...@apache.org on 2015/04/20 15:27:21 UTC
svn commit: r1674843 - in /sling/trunk/contrib/extensions/distribution:
core/src/main/java/org/apache/sling/distribution/agent/impl/
core/src/main/java/org/apache/sling/distribution/queue/
core/src/main/java/org/apache/sling/distribution/queue/impl/job...
Author: mpetria
Date: Mon Apr 20 13:27:20 2015
New Revision: 1674843
URL: http://svn.apache.org/r1674843
Log:
SLING-4629: allow configuration of passive queues, for which processing is not enabled
Added:
sling/trunk/contrib/extensions/distribution/sample/src/main/java/
sling/trunk/contrib/extensions/distribution/sample/src/main/java/org/
sling/trunk/contrib/extensions/distribution/sample/src/main/java/org/apache/
sling/trunk/contrib/extensions/distribution/sample/src/main/java/org/apache/sling/
sling/trunk/contrib/extensions/distribution/sample/src/main/java/org/apache/sling/distribution/
sling/trunk/contrib/extensions/distribution/sample/src/main/java/org/apache/sling/distribution/test/
sling/trunk/contrib/extensions/distribution/sample/src/main/java/org/apache/sling/distribution/test/Init.java
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.author/publish-multiple/org.apache.sling.distribution.packaging.impl.exporter.AgentDistributionPackageExporterFactory-publish-multiple.json
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/QueueDistributionAgentFactory.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/SimpleDistributionAgent.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentFactory.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/queue/DistributionQueueProvider.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueue.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueueProvider.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/simple/SimpleDistributionQueueProvider.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/resources/impl/ExtendedDistributionServiceResourceProvider.java
sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentTest.java
sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueueTest.java
sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/DistributionIntegrationTestBase.java
sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/MultipleForwardDistributionTest.java
sling/trunk/contrib/extensions/distribution/sample/pom.xml
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.author/publish-multiple/org.apache.sling.distribution.agent.impl.ForwardDistributionAgentFactory-publish-multiple.json
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-distribution.json
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=1674843&r1=1674842&r2=1674843&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 Mon Apr 20 13:27:20 2015
@@ -54,7 +54,11 @@ import org.osgi.framework.BundleContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.Arrays;
+import java.util.HashSet;
import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
/**
* An OSGi service factory for {@link org.apache.sling.distribution.agent.DistributionAgent}s which references already existing OSGi services.
@@ -118,6 +122,9 @@ public class ForwardDistributionAgentFac
"If the queue names are not specified by importer endpoints definition then they are autogenerated.")
public static final String USE_MULTIPLE_QUEUES = "useMultipleQueues";
+ @Property(cardinality = 100, label = "Passive queues", description = "List of queues that should be disabled." +
+ "These queues will gather all the packages until they are removed explicitly.")
+ public static final String PASSIVE_QUEUES = "passiveQueues";
@Property(name = "requestAuthorizationStrategy.target", label = "Request Authorization Strategy", description = "The target reference for the DistributionRequestAuthorizationStrategy used to authorize the access to distribution process," +
@@ -184,6 +191,9 @@ public class ForwardDistributionAgentFac
boolean queueProcessingEnabled = PropertiesUtil.toBoolean(config.get(QUEUE_PROCESSING_ENABLED), true);
+ String[] passiveQueues = PropertiesUtil.toStringArray(config.get(PASSIVE_QUEUES), new String[0]);
+ passiveQueues = SettingsUtils.removeEmptyEntries(passiveQueues);
+
DistributionPackageExporter packageExporter = new LocalDistributionPackageExporter(packageBuilder);
@@ -195,8 +205,11 @@ public class ForwardDistributionAgentFac
boolean useMultipleQueues = PropertiesUtil.toBoolean(config.get(USE_MULTIPLE_QUEUES), false);
if (useMultipleQueues) {
- java.util.Set<String> var = importerEndpointsMap.keySet();
- String[] queueNames = var.toArray(new String[var.size()]);
+ Set<String> queuesMap = new TreeSet<String>();
+ queuesMap.addAll(importerEndpointsMap.keySet());
+ queuesMap.addAll(Arrays.asList(passiveQueues));
+
+ String[] queueNames = queuesMap.toArray(new String[0]);
dispatchingStrategy = new MultipleQueueDispatchingStrategy(queueNames);
packageImporter = new RemoteDistributionPackageImporter(distributionLog, transportSecretProvider, importerEndpointsMap, TransportEndpointStrategyType.One);
} else {
@@ -207,8 +220,8 @@ public class ForwardDistributionAgentFac
DistributionRequestType[] allowedRequests = new DistributionRequestType[] { DistributionRequestType.ADD, DistributionRequestType.DELETE };
- return new SimpleDistributionAgent(agentName, queueProcessingEnabled, serviceName,
- packageImporter, packageExporter, requestAuthorizationStrategy,
+ return new SimpleDistributionAgent(agentName, queueProcessingEnabled, passiveQueues,
+ serviceName, packageImporter, packageExporter, requestAuthorizationStrategy,
queueProvider, dispatchingStrategy, distributionEventFactory, resourceResolverFactory, distributionLog, allowedRequests, allowedRoots);
Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/QueueDistributionAgentFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/QueueDistributionAgentFactory.java?rev=1674843&r1=1674842&r2=1674843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/QueueDistributionAgentFactory.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/QueueDistributionAgentFactory.java Mon Apr 20 13:27:20 2015
@@ -160,8 +160,8 @@ public class QueueDistributionAgentFacto
DistributionRequestType[] allowedRequests = new DistributionRequestType[] { DistributionRequestType.ADD, DistributionRequestType.DELETE };
- return new SimpleDistributionAgent(agentName, false, serviceName,
- null, packageExporter, requestAuthorizationStrategy,
+ return new SimpleDistributionAgent(agentName, false, null,
+ serviceName, null, packageExporter, requestAuthorizationStrategy,
queueProvider, dispatchingStrategy, distributionEventFactory, resourceResolverFactory, distributionLog, allowedRequests, allowedRoots);
}
}
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=1674843&r1=1674842&r2=1674843&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 Mon Apr 20 13:27:20 2015
@@ -100,6 +100,9 @@ public class ReverseDistributionAgentFac
@Property(boolValue = true, label = "Queue Processing Enabled", description = "Whether or not the distribution agent should process packages in the queues.")
public static final String QUEUE_PROCESSING_ENABLED = "queue.processing.enabled";
+ @Property(cardinality = 100, label = "Passive queues", description = "List of queues that should be disabled." +
+ "These queues will gather all the packages until they are removed explicitly.")
+ public static final String PASSIVE_QUEUES = "passiveQueues";
/**
* endpoints property
@@ -175,6 +178,9 @@ public class ReverseDistributionAgentFac
String serviceName = PropertiesUtil.toString(config.get(SERVICE_NAME), null);
boolean queueProcessingEnabled = PropertiesUtil.toBoolean(config.get(QUEUE_PROCESSING_ENABLED), true);
+ String[] passiveQueues = PropertiesUtil.toStringArray(config.get(PASSIVE_QUEUES), new String[0]);
+ passiveQueues = SettingsUtils.removeEmptyEntries(passiveQueues);
+
String[] exporterEndpoints = PropertiesUtil.toStringArray(config.get(EXPORTER_ENDPOINTS), new String[0]);
exporterEndpoints = SettingsUtils.removeEmptyEntries(exporterEndpoints);
@@ -192,8 +198,8 @@ public class ReverseDistributionAgentFac
DistributionRequestType[] allowedRequests = new DistributionRequestType[] { DistributionRequestType.PULL };
- return new SimpleDistributionAgent(agentName, queueProcessingEnabled, serviceName,
- packageImporter, packageExporter, requestAuthorizationStrategy,
+ return new SimpleDistributionAgent(agentName, queueProcessingEnabled, passiveQueues,
+ serviceName, packageImporter, packageExporter, requestAuthorizationStrategy,
queueProvider, dispatchingStrategy, distributionEventFactory, resourceResolverFactory, distributionLog, allowedRequests, null);
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=1674843&r1=1674842&r2=1674843&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 Mon Apr 20 13:27:20 2015
@@ -19,12 +19,16 @@
package org.apache.sling.distribution.agent.impl;
import javax.annotation.Nonnull;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
import org.apache.sling.api.resource.LoginException;
import org.apache.sling.api.resource.PersistenceException;
@@ -90,9 +94,11 @@ public class SimpleDistributionAgent imp
private final DefaultDistributionLog log;
private final DistributionRequestType[] allowedRequests;
private final String[] allowedRoots;
+ private final String[] passiveQueues;
public SimpleDistributionAgent(String name,
boolean queueProcessingEnabled,
+ String[] passiveQueues,
String subServiceName,
DistributionPackageImporter distributionPackageImporter,
DistributionPackageExporter distributionPackageExporter,
@@ -107,6 +113,7 @@ public class SimpleDistributionAgent imp
this.log = log;
this.allowedRequests = allowedRequests;
this.allowedRoots = allowedRoots;
+ this.passiveQueues = passiveQueues;
// check configuration is valid
if (name == null
@@ -306,7 +313,15 @@ public class SimpleDistributionAgent imp
if (!isPassive()) {
try {
- queueProvider.enableQueueProcessing(new PackageQueueProcessor());
+
+ Set<String> allQueues = new HashSet<String>(queueDistributionStrategy.getQueueNames());
+
+ if (passiveQueues != null) {
+ Set<String> passiveQueues = new HashSet<String>(Arrays.asList(this.passiveQueues));
+ allQueues.removeAll(passiveQueues);
+ }
+
+ queueProvider.enableQueueProcessing(new PackageQueueProcessor(), allQueues.toArray(new String[0]));
} catch (DistributionQueueException e) {
log.error("cannot enable queue processing", e);
}
@@ -475,7 +490,6 @@ public class SimpleDistributionAgent imp
class PackageQueueProcessor implements DistributionQueueProcessor {
public boolean process(@Nonnull String queueName, @Nonnull DistributionQueueItem queueItem) {
try {
-
log.debug("queue {} processing item {}", queueName, queueItem);
boolean success = processQueueItem(queueName, queueItem);
Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentFactory.java?rev=1674843&r1=1674842&r2=1674843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentFactory.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentFactory.java Mon Apr 20 13:27:20 2015
@@ -32,6 +32,7 @@ import org.apache.felix.scr.annotations.
import org.apache.sling.api.resource.ResourceResolverFactory;
import org.apache.sling.commons.osgi.PropertiesUtil;
import org.apache.sling.distribution.component.impl.DistributionComponentConstants;
+import org.apache.sling.distribution.component.impl.SettingsUtils;
import org.apache.sling.distribution.event.impl.DistributionEventFactory;
import org.apache.sling.distribution.log.impl.DefaultDistributionLog;
import org.apache.sling.distribution.packaging.DistributionPackageExporter;
@@ -93,6 +94,10 @@ public class SimpleDistributionAgentFact
@Property(boolValue = true, label = "Queue Processing Enabled", description = "Whether or not the distribution agent should process packages in the queues.")
public static final String QUEUE_PROCESSING_ENABLED = "queue.processing.enabled";
+ @Property(cardinality = 100, label = "Passive queues", description = "List of queues that should be disabled." +
+ "These queues will gather all the packages until they are removed explicitly.")
+ public static final String PASSIVE_QUEUES = "passiveQueues";
+
@Property(name = "packageExporter.target", label = "Exporter", description = "The target reference for the DistributionPackageExporter used to receive (export) the distribution packages," +
"e.g. use target=(name=...) to bind to services by name.")
@@ -155,11 +160,13 @@ public class SimpleDistributionAgentFact
String serviceName = PropertiesUtil.toString(config.get(SERVICE_NAME), null);
boolean queueProcessingEnabled = PropertiesUtil.toBoolean(config.get(QUEUE_PROCESSING_ENABLED), true);
+ String[] passiveQueues = PropertiesUtil.toStringArray(config.get(PASSIVE_QUEUES), new String[0]);
+ passiveQueues = SettingsUtils.removeEmptyEntries(passiveQueues);
DistributionQueueProvider queueProvider = new JobHandlingDistributionQueueProvider(agentName, jobManager, context);
DistributionQueueDispatchingStrategy dispatchingStrategy = new SingleQueueDispatchingStrategy();
- return new SimpleDistributionAgent(agentName, queueProcessingEnabled, serviceName,
- packageImporter, packageExporter, requestAuthorizationStrategy,
+ return new SimpleDistributionAgent(agentName, queueProcessingEnabled, passiveQueues,
+ serviceName, packageImporter, packageExporter, requestAuthorizationStrategy,
queueProvider, dispatchingStrategy, distributionEventFactory, resourceResolverFactory, distributionLog, null, null);
}
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=1674843&r1=1674842&r2=1674843&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 Mon Apr 20 13:27:20 2015
@@ -54,7 +54,11 @@ import org.osgi.framework.BundleContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.Arrays;
+import java.util.HashSet;
import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
/**
* An OSGi service factory for {@link org.apache.sling.distribution.agent.DistributionAgent}s which references already existing OSGi services.
@@ -101,6 +105,10 @@ public class SyncDistributionAgentFactor
@Property(boolValue = true, label = "Queue Processing Enabled", description = "Whether or not the distribution agent should process packages in the queues.")
public static final String QUEUE_PROCESSING_ENABLED = "queue.processing.enabled";
+ @Property(cardinality = 100, label = "Passive queues", description = "List of queues that should be disabled." +
+ "These queues will gather all the packages until they are removed explicitly.")
+ public static final String PASSIVE_QUEUES = "passiveQueues";
+
/**
* endpoints property
*/
@@ -120,6 +128,7 @@ public class SyncDistributionAgentFactor
"If the queue names are not specified by importer endpoints definition then they are autogenerated.")
public static final String USE_MULTIPLE_QUEUES = "useMultipleQueues";
+
/**
* no. of items to poll property
*/
@@ -188,6 +197,9 @@ public class SyncDistributionAgentFactor
String serviceName = PropertiesUtil.toString(config.get(SERVICE_NAME), null);
boolean queueProcessingEnabled = PropertiesUtil.toBoolean(config.get(QUEUE_PROCESSING_ENABLED), true);
+ String[] passiveQueues = PropertiesUtil.toStringArray(config.get(PASSIVE_QUEUES), new String[0]);
+ passiveQueues = SettingsUtils.removeEmptyEntries(passiveQueues);
+
Object exporterEndpointsValue = config.get(EXPORTER_ENDPOINTS);
@@ -196,6 +208,7 @@ public class SyncDistributionAgentFactor
String[] exporterEndpoints = PropertiesUtil.toStringArray(exporterEndpointsValue, new String[0]);
exporterEndpoints = SettingsUtils.removeEmptyEntries(exporterEndpoints);
+
Map<String, String> importerEndpointsMap = SettingsUtils.toUriMap(importerEndpointsValue);
boolean useMultipleQueues = PropertiesUtil.toBoolean(config.get(USE_MULTIPLE_QUEUES), false);
@@ -206,8 +219,11 @@ public class SyncDistributionAgentFactor
DistributionPackageImporter packageImporter;
if (useMultipleQueues) {
- java.util.Set<String> var = importerEndpointsMap.keySet();
- String[] queueNames = var.toArray(new String[var.size()]);
+ Set<String> queuesMap = new TreeSet<String>();
+ queuesMap.addAll(importerEndpointsMap.keySet());
+ queuesMap.addAll(Arrays.asList(passiveQueues));
+
+ String[] queueNames = queuesMap.toArray(new String[0]);
dispatchingStrategy = new MultipleQueueDispatchingStrategy(queueNames);
packageImporter = new RemoteDistributionPackageImporter(distributionLog, transportSecretProvider, importerEndpointsMap, TransportEndpointStrategyType.One);
} else {
@@ -219,8 +235,8 @@ public class SyncDistributionAgentFactor
DistributionQueueProvider queueProvider = new JobHandlingDistributionQueueProvider(agentName, jobManager, context);
DistributionRequestType[] allowedRequests = new DistributionRequestType[] { DistributionRequestType.PULL };
- return new SimpleDistributionAgent(agentName, queueProcessingEnabled, serviceName,
- packageImporter, packageExporter, requestAuthorizationStrategy,
+ return new SimpleDistributionAgent(agentName, queueProcessingEnabled, passiveQueues,
+ serviceName, packageImporter, packageExporter, requestAuthorizationStrategy,
queueProvider, dispatchingStrategy, distributionEventFactory, resourceResolverFactory, distributionLog, allowedRequests, null);
}
Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/DistributionQueueProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/DistributionQueueProvider.java?rev=1674843&r1=1674842&r2=1674843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/DistributionQueueProvider.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/DistributionQueueProvider.java Mon Apr 20 13:27:20 2015
@@ -43,7 +43,7 @@ public interface DistributionQueueProvid
*
* @param queueProcessor the queue processor to be used
*/
- void enableQueueProcessing(@Nonnull DistributionQueueProcessor queueProcessor) throws DistributionQueueException;
+ void enableQueueProcessing(@Nonnull DistributionQueueProcessor queueProcessor, String... queueNames) throws DistributionQueueException;
/**
Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueue.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueue.java?rev=1674843&r1=1674842&r2=1674843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueue.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueue.java Mon Apr 20 13:27:20 2015
@@ -52,10 +52,13 @@ public class JobHandlingDistributionQueu
private final JobManager jobManager;
- JobHandlingDistributionQueue(String name, String topic, JobManager jobManager) {
+ private final boolean isActive;
+
+ JobHandlingDistributionQueue(String name, String topic, JobManager jobManager, boolean isActive) {
this.name = name;
this.topic = topic;
this.jobManager = jobManager;
+ this.isActive = isActive;
}
@Nonnull
@@ -204,7 +207,11 @@ public class JobHandlingDistributionQueu
}
public DistributionQueueState getState() {
- return DistributionQueueUtils.calculateState(this);
+ if (!isActive) {
+ return DistributionQueueState.PAUSED;
+ } else {
+ return DistributionQueueUtils.calculateState(this);
+ }
}
}
Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueueProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueueProvider.java?rev=1674843&r1=1674842&r2=1674843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueueProvider.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueueProvider.java Mon Apr 20 13:27:20 2015
@@ -19,8 +19,14 @@
package org.apache.sling.distribution.queue.impl.jobhandling;
import javax.annotation.Nonnull;
+import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Dictionary;
+import java.util.HashSet;
import java.util.Hashtable;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.ConcurrentSkipListSet;
import org.apache.sling.distribution.queue.DistributionQueue;
import org.apache.sling.distribution.queue.DistributionQueueException;
@@ -47,6 +53,7 @@ public class JobHandlingDistributionQueu
private ServiceRegistration jobConsumer = null;
private BundleContext context;
+ private Set<String> processingQueueNames = null;
public JobHandlingDistributionQueueProvider(String name, JobManager jobManager, BundleContext context) {
@@ -61,23 +68,39 @@ public class JobHandlingDistributionQueu
@Nonnull
public DistributionQueue getQueue(@Nonnull String queueName) throws DistributionQueueException {
String topic = JobHandlingDistributionQueue.DISTRIBUTION_QUEUE_TOPIC + '/' + name + "/" + queueName;
- return new JobHandlingDistributionQueue(queueName, topic, jobManager);
+ boolean isActive = jobConsumer != null && (processingQueueNames == null || processingQueueNames.contains(queueName));
+
+ return new JobHandlingDistributionQueue(queueName, topic, jobManager, isActive);
}
- public void enableQueueProcessing(@Nonnull DistributionQueueProcessor queueProcessor) throws DistributionQueueException {
+ public void enableQueueProcessing(@Nonnull DistributionQueueProcessor queueProcessor, String... queueNames) throws DistributionQueueException {
if (jobConsumer != null) {
throw new DistributionQueueException("job already registered");
}
// eventually register job consumer for sling job handling based queues
Dictionary<String, Object> jobProps = new Hashtable<String, Object>();
- String topic = JobHandlingDistributionQueue.DISTRIBUTION_QUEUE_TOPIC + '/' + name;
- String childTopic = topic + "/*";
- jobProps.put(JobConsumer.PROPERTY_TOPICS, new String[]{topic, childTopic});
+ String mainTopic = JobHandlingDistributionQueue.DISTRIBUTION_QUEUE_TOPIC + '/' + name;
+
+ List<String> topicList = new ArrayList<String>();
+ if (queueNames == null) {
+ topicList.add(mainTopic + "/*");
+ processingQueueNames = null;
+ } else {
+ for (String queueName : queueNames) {
+ topicList.add(mainTopic + "/" + queueName);
+ }
+ processingQueueNames = new HashSet<String>(Arrays.asList(queueNames));
+ }
+
+ jobProps.put(JobConsumer.PROPERTY_TOPICS, topicList.toArray(new String[0]));
+
log.info("registering job consumer for agent {}", name);
log.info("qp: {}, jp: {}", queueProcessor, jobProps);
jobConsumer = context.registerService(JobConsumer.class.getName(), new DistributionAgentJobConsumer(queueProcessor), jobProps);
log.info("job consumer for agent {} registered", name);
+
+
}
public void disableQueueProcessing() {
@@ -86,6 +109,7 @@ public class JobHandlingDistributionQueu
log.info("job consumer for agent {} unregistered", name);
jobConsumer = null;
}
+ processingQueueNames = null;
log.info("unregistering job consumer for agent {}", name);
}
Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/simple/SimpleDistributionQueueProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/simple/SimpleDistributionQueueProvider.java?rev=1674843&r1=1674842&r2=1674843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/simple/SimpleDistributionQueueProvider.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/simple/SimpleDistributionQueueProvider.java Mon Apr 20 13:27:20 2015
@@ -77,7 +77,7 @@ public class SimpleDistributionQueueProv
return queueMap.values();
}
- public void enableQueueProcessing(@Nonnull DistributionQueueProcessor queueProcessor) {
+ public void enableQueueProcessing(@Nonnull DistributionQueueProcessor queueProcessor, String... queueNames) {
ScheduleOptions options = scheduler.NOW(-1, 10)
.canRunConcurrently(false)
.name(getJobName());
Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/resources/impl/ExtendedDistributionServiceResourceProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/resources/impl/ExtendedDistributionServiceResourceProvider.java?rev=1674843&r1=1674842&r2=1674843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/resources/impl/ExtendedDistributionServiceResourceProvider.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/resources/impl/ExtendedDistributionServiceResourceProvider.java Mon Apr 20 13:27:20 2015
@@ -131,17 +131,9 @@ public class ExtendedDistributionService
try {
DistributionQueue queue = agent.getQueue(queueName);
- DistributionAgentState agentState = agent.getState();
-
result.put(SLING_RESOURCE_TYPE, DistributionResourceTypes.AGENT_QUEUE_RESOURCE_TYPE);
- // if the agent is paused report also the queues as paused.
- // TODO: to this at java API level
- if (DistributionAgentState.PAUSED.equals(agentState)) {
- result.put("state", DistributionQueueState.PAUSED.name());
- } else {
- result.put("state", queue.getState().name());
- }
+ result.put("state", queue.getState().name());
result.put("empty", queue.isEmpty());
result.put("itemsCount", queue.getItemsCount());
Modified: sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentTest.java?rev=1674843&r1=1674842&r2=1674843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentTest.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentTest.java Mon Apr 20 13:27:20 2015
@@ -69,7 +69,7 @@ public class SimpleDistributionAgentTest
ResourceResolverFactory resolverFactory = mock(ResourceResolverFactory.class);
SimpleDistributionAgent agent = new SimpleDistributionAgent(name,
- false, "serviceName", packageImporter,
+ false, null, "serviceName", packageImporter,
packageExporter, packageExporterStrategy,
queueProvider, distributionHandler,
distributionEventFactory, resolverFactory, mock(DefaultDistributionLog.class), null, null);
@@ -99,7 +99,7 @@ public class SimpleDistributionAgentTest
DistributionEventFactory distributionEventFactory = mock(DistributionEventFactory.class);
ResourceResolverFactory resolverFactory = mock(ResourceResolverFactory.class);
SimpleDistributionAgent agent = new SimpleDistributionAgent(name,
- false, "subServiceName", packageImporter,
+ false, null, "subServiceName", packageImporter,
packageExporter, packageExporterStrategy,
queueProvider,
distributionHandler, distributionEventFactory, resolverFactory, mock(DefaultDistributionLog.class), null, null);
@@ -133,7 +133,7 @@ public class SimpleDistributionAgentTest
ResourceResolverFactory resolverFactory = mock(ResourceResolverFactory.class);
SimpleDistributionAgent agent = new SimpleDistributionAgent(name,
- false, "serviceName", packageImporter,
+ false, null, "serviceName", packageImporter,
packageExporter, packageExporterStrategy,
queueProvider, distributionHandler,
distributionEventFactory, resolverFactory, mock(DefaultDistributionLog.class), null, null);
@@ -163,7 +163,7 @@ public class SimpleDistributionAgentTest
ResourceResolverFactory resolverFactory = mock(ResourceResolverFactory.class);
SimpleDistributionAgent agent = new SimpleDistributionAgent(name,
- false, "serviceName", packageImporter,
+ false, null, "serviceName", packageImporter,
packageExporter, packageExporterStrategy,
queueProvider, distributionHandler,
distributionEventFactory, resolverFactory, mock(DefaultDistributionLog.class), null, null);
@@ -186,7 +186,7 @@ public class SimpleDistributionAgentTest
ResourceResolverFactory resolverFactory = mock(ResourceResolverFactory.class);
SimpleDistributionAgent agent = new SimpleDistributionAgent(name,
- false, "serviceName", packageImporter,
+ false, null, "serviceName", packageImporter,
packageExporter, packageExporterStrategy,
queueProvider, distributionHandler,
distributionEventFactory, resolverFactory, mock(DefaultDistributionLog.class), null, null);
@@ -208,7 +208,7 @@ public class SimpleDistributionAgentTest
ResourceResolverFactory resolverFactory = mock(ResourceResolverFactory.class);
SimpleDistributionAgent agent = new SimpleDistributionAgent(name,
- false, "serviceName", packageImporter,
+ false, null, "serviceName", packageImporter,
packageExporter, packageExporterStrategy,
queueProvider, distributionHandler,
distributionEventFactory, resolverFactory, mock(DefaultDistributionLog.class), null, null);
@@ -236,7 +236,7 @@ public class SimpleDistributionAgentTest
));
SimpleDistributionAgent agent = new SimpleDistributionAgent(name,
- false, "serviceName", packageImporter,
+ false, null, "serviceName", packageImporter,
packageExporter, packageExporterStrategy,
queueProvider, queueDistributionStrategy,
distributionEventFactory, resolverFactory, mock(DefaultDistributionLog.class), null, new String[] { "/content" });
@@ -275,7 +275,7 @@ public class SimpleDistributionAgentTest
));
SimpleDistributionAgent agent = new SimpleDistributionAgent(name,
- false, "serviceName", packageImporter,
+ false, null, "serviceName", packageImporter,
packageExporter, packageExporterStrategy,
queueProvider, queueDistributionStrategy,
distributionEventFactory, resolverFactory, mock(DefaultDistributionLog.class), null, new String[] { "/content" });
Modified: sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueueTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueueTest.java?rev=1674843&r1=1674842&r2=1674843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueueTest.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueueTest.java Mon Apr 20 13:27:20 2015
@@ -58,7 +58,7 @@ public class JobHandlingDistributionQueu
when(jobManager.createJob(topic)).thenReturn(builder);
when(jobManager.findJobs(JobManager.QueryType.ALL, topic, -1)).thenReturn(Collections.<Job>emptySet());
when(builder.properties(any(Map.class))).thenReturn(builder);
- DistributionQueue queue = new JobHandlingDistributionQueue("aname", topic, jobManager);
+ DistributionQueue queue = new JobHandlingDistributionQueue("aname", topic, jobManager, true);
DistributionQueueItem distributionQueueItem = mock(DistributionQueueItem.class);
DistributionPackageInfo packageInfo = new DistributionPackageInfo();
packageInfo.setPaths(new String[]{"/foo"});
@@ -80,7 +80,7 @@ public class JobHandlingDistributionQueu
when(jobManager.createJob(topic)).thenReturn(builder);
when(jobManager.findJobs(JobManager.QueryType.ALL, topic, -1)).thenReturn(Collections.<Job>emptySet());
when(builder.properties(any(Map.class))).thenReturn(builder);
- DistributionQueue queue = new JobHandlingDistributionQueue("aname", topic, jobManager);
+ DistributionQueue queue = new JobHandlingDistributionQueue("aname", topic, jobManager, true);
DistributionQueueItem distributionQueueItem = mock(DistributionQueueItem.class);
DistributionPackageInfo packageInfo = new DistributionPackageInfo();
packageInfo.setPaths(new String[]{"/foo"});
Modified: sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/DistributionIntegrationTestBase.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/DistributionIntegrationTestBase.java?rev=1674843&r1=1674842&r2=1674843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/DistributionIntegrationTestBase.java (original)
+++ sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/DistributionIntegrationTestBase.java Mon Apr 20 13:27:20 2015
@@ -59,43 +59,50 @@ public abstract class DistributionIntegr
publishClient = new SlingClient(publish.getServerBaseUrl(), publish.getServerUsername(), publish.getServerPassword());
try {
- assertExists(authorClient, authorAgentConfigUrl("publish"));
- // change the url for publish agent and wait for it to start
String remoteImporterUrl = publish.getServerBaseUrl() + importerUrl("default");
+ String remoteExporterUrl = publish.getServerBaseUrl() + exporterUrl("reverse");
- authorClient.setProperties(authorAgentConfigUrl("publish"),
- "packageImporter.endpoints", remoteImporterUrl);
+ {
+ assertExists(authorClient, authorAgentConfigUrl("publish"));
- Thread.sleep(3000);
+ authorClient.setProperties(authorAgentConfigUrl("publish"),
+ "packageImporter.endpoints", remoteImporterUrl);
- assertExists(authorClient, agentUrl("publish"));
+ Thread.sleep(3000);
- assertExists(authorClient, authorAgentConfigUrl("publish-multiple"));
- setArrayProperties(author, authorAgentConfigUrl("publish-multiple"),
- "packageImporter.endpoints", remoteImporterUrl, remoteImporterUrl + "badaddress");
+ assertExists(authorClient, agentUrl("publish"));
+ }
- Thread.sleep(3000);
+ {
+ assertExists(authorClient, authorAgentConfigUrl("publish-multiple"));
+ setArrayProperties(author, authorAgentConfigUrl("publish-multiple"),
+ "packageImporter.endpoints", remoteImporterUrl, remoteImporterUrl + "badaddress");
- assertExists(authorClient, agentUrl("publish-multiple"));
- assertExists(authorClient, authorAgentConfigUrl("publish-reverse"));
+ Thread.sleep(3000);
- String remoteExporterUrl = publish.getServerBaseUrl() + exporterUrl("reverse");
+ assertExists(authorClient, agentUrl("publish-multiple"));
+ assertExists(authorClient, exporterUrl("publish-multiple-passivequeue1"));
+
+ }
- authorClient.setProperties(authorAgentConfigUrl("publish-reverse"), "packageExporter.endpoints", remoteExporterUrl);
+ {
+ assertExists(authorClient, authorAgentConfigUrl("publish-reverse"));
- Thread.sleep(3000);
- assertExists(authorClient, agentUrl("publish-reverse"));
+ authorClient.setProperties(authorAgentConfigUrl("publish-reverse"), "packageExporter.endpoints", remoteExporterUrl);
- assertExists(publishClient, exporterUrl("reverse"));
- assertExists(publishClient, exporterUrl("default"));
- assertExists(publishClient, importerUrl("default"));
+ Thread.sleep(3000);
+ assertExists(authorClient, agentUrl("publish-reverse"));
+ assertExists(publishClient, exporterUrl("reverse"));
+ assertExists(publishClient, exporterUrl("default"));
+ assertExists(publishClient, importerUrl("default"));
+ }
} catch (Exception ex) {
throw new RuntimeException(ex);
Modified: sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/MultipleForwardDistributionTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/MultipleForwardDistributionTest.java?rev=1674843&r1=1674842&r2=1674843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/MultipleForwardDistributionTest.java (original)
+++ sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/MultipleForwardDistributionTest.java Mon Apr 20 13:27:20 2015
@@ -18,18 +18,23 @@
*/
package org.apache.sling.distribution.it;
+import org.apache.sling.commons.json.JSONArray;
+import org.apache.sling.commons.json.JSONObject;
import org.apache.sling.distribution.DistributionRequestType;
import org.junit.After;
import org.junit.Test;
import java.io.IOException;
+import static junit.framework.Assert.assertEquals;
import static org.apache.sling.distribution.it.DistributionUtils.assertExists;
import static org.apache.sling.distribution.it.DistributionUtils.assertNotExists;
import static org.apache.sling.distribution.it.DistributionUtils.assertPostResourceWithParameters;
import static org.apache.sling.distribution.it.DistributionUtils.createRandomNode;
import static org.apache.sling.distribution.it.DistributionUtils.distribute;
import static org.apache.sling.distribution.it.DistributionUtils.distributeDeep;
+import static org.apache.sling.distribution.it.DistributionUtils.doExport;
+import static org.apache.sling.distribution.it.DistributionUtils.getResource;
import static org.apache.sling.distribution.it.DistributionUtils.queueUrl;
/**
@@ -57,6 +62,36 @@ public class MultipleForwardDistribution
}
+ @Test
+ public void testAddContentCheckPassiveQueue() throws Exception {
+ String nodePath = createRandomNode(authorClient, "/content/forward_add_" + System.nanoTime());
+ assertExists(authorClient, nodePath);
+ distribute(author, "publish-multiple", DistributionRequestType.ADD, nodePath);
+ assertExists(publishClient, nodePath);
+
+ {
+ JSONObject json = getResource(author, queueUrl("publish-multiple") + "/passivequeue1");
+
+ JSONArray queueItems = json.getJSONArray("items");
+ assertEquals(1, queueItems.length());
+ assertEquals(1, json.get("itemsCount"));
+ }
+
+
+ String content = doExport(author, "publish-multiple-passivequeue1", DistributionRequestType.PULL, null);
+
+ {
+ JSONObject json = getResource(author, queueUrl("publish-multiple") + "/passivequeue1");
+
+ JSONArray queueItems = json.getJSONArray("items");
+ assertEquals(0, queueItems.length());
+ assertEquals(0, json.get("itemsCount"));
+ }
+
+ }
+
+
+
@After
public void clean() throws IOException {
assertPostResourceWithParameters(author, 200, queueUrl("publish-multiple") + "/endpoint1",
@@ -65,6 +100,9 @@ public class MultipleForwardDistribution
assertPostResourceWithParameters(author, 200, queueUrl("publish-multiple") + "/endpoint2",
"operation", "delete", "limit", DELETE_LIMIT);
+ assertPostResourceWithParameters(author, 200, queueUrl("publish-multiple") + "/passivequeue1",
+ "operation", "delete", "limit", DELETE_LIMIT);
+
}
}
Modified: sling/trunk/contrib/extensions/distribution/sample/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/sample/pom.xml?rev=1674843&r1=1674842&r2=1674843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/sample/pom.xml (original)
+++ sling/trunk/contrib/extensions/distribution/sample/pom.xml Mon Apr 20 13:27:20 2015
@@ -93,7 +93,33 @@
<artifactId>org.osgi.compendium</artifactId>
<scope>provided</scope>
</dependency>
-
+ <dependency>
+ <groupId>javax.jcr</groupId>
+ <artifactId>jcr</artifactId>
+ <version>2.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-api</artifactId>
+ <version>2.9.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.jcr.api</artifactId>
+ <version>2.2.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>1.6.2</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-jcr-commons</artifactId>
+ <version>2.9.0</version>
+ </dependency>
</dependencies>
<reporting>
<plugins>
Added: sling/trunk/contrib/extensions/distribution/sample/src/main/java/org/apache/sling/distribution/test/Init.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/sample/src/main/java/org/apache/sling/distribution/test/Init.java?rev=1674843&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/distribution/sample/src/main/java/org/apache/sling/distribution/test/Init.java (added)
+++ sling/trunk/contrib/extensions/distribution/sample/src/main/java/org/apache/sling/distribution/test/Init.java Mon Apr 20 13:27:20 2015
@@ -0,0 +1,90 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+
+package org.apache.sling.distribution.test;
+
+import org.apache.felix.scr.annotations.Activate;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Reference;
+import org.apache.jackrabbit.api.JackrabbitSession;
+import org.apache.jackrabbit.api.security.user.Authorizable;
+import org.apache.jackrabbit.api.security.user.UserManager;
+import javax.jcr.security.Privilege;
+import org.apache.jackrabbit.commons.jackrabbit.authorization.AccessControlUtils;
+import org.apache.sling.jcr.api.SlingRepository;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+import javax.jcr.Session;
+
+
+@Component(immediate = true)
+public class Init {
+
+ Logger log = LoggerFactory.getLogger(getClass());
+
+ @Reference
+ SlingRepository slingRepository;
+
+ @Activate
+ public void activate() throws Exception {
+
+ try {
+ final String userName = "testDistributionUser";
+ Session session = slingRepository.loginAdministrative(null);
+
+ JackrabbitSession jackrabittSession = (JackrabbitSession) session;
+ UserManager userManager = jackrabittSession.getUserManager();
+ Authorizable user = userManager.getAuthorizable(userName);
+
+ if (user == null) {
+ try {
+ user = userManager.createSystemUser(userName, null);
+ log.error("created system user", user);
+
+ } catch (Throwable t) {
+ user = userManager.createUser(userName, "123");
+ log.error("created regular user", user);
+
+ }
+ }
+
+ if (user != null) {
+ AccessControlUtils.addAccessControlEntry(session, "/", user.getPrincipal(), new String[]{ Privilege.JCR_ALL }, true);
+
+ AccessControlUtils.addAccessControlEntry(session, null, user.getPrincipal(), new String[]{ Privilege.JCR_ALL }, true);
+
+ session.save();
+
+ session.logout();
+ }
+
+ } catch (Throwable t) {
+ log.error("cannot create user", t);
+ }
+
+
+
+ }
+
+
+
+}
Modified: sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.author/publish-multiple/org.apache.sling.distribution.agent.impl.ForwardDistributionAgentFactory-publish-multiple.json
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.author/publish-multiple/org.apache.sling.distribution.agent.impl.ForwardDistributionAgentFactory-publish-multiple.json?rev=1674843&r1=1674842&r2=1674843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.author/publish-multiple/org.apache.sling.distribution.agent.impl.ForwardDistributionAgentFactory-publish-multiple.json (original)
+++ sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.author/publish-multiple/org.apache.sling.distribution.agent.impl.ForwardDistributionAgentFactory-publish-multiple.json Mon Apr 20 13:27:20 2015
@@ -16,5 +16,9 @@
"packageImporter.endpoints" : [
"endpoint1=http://localhost:4503/libs/sling/distribution/services/importers/default",
"endpoint2=http://localhost:4503/libs/sling/distribution/services/importers/defaultbadaddress"
+ ],
+
+ "passiveQueues" : [
+ "passivequeue1"
]
}
\ No newline at end of file
Added: sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.author/publish-multiple/org.apache.sling.distribution.packaging.impl.exporter.AgentDistributionPackageExporterFactory-publish-multiple.json
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.author/publish-multiple/org.apache.sling.distribution.packaging.impl.exporter.AgentDistributionPackageExporterFactory-publish-multiple.json?rev=1674843&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.author/publish-multiple/org.apache.sling.distribution.packaging.impl.exporter.AgentDistributionPackageExporterFactory-publish-multiple.json (added)
+++ sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.author/publish-multiple/org.apache.sling.distribution.packaging.impl.exporter.AgentDistributionPackageExporterFactory-publish-multiple.json Mon Apr 20 13:27:20 2015
@@ -0,0 +1,8 @@
+{
+ "jcr:primaryType": "sling:OsgiConfig",
+ "name": "publish-multiple-passivequeue1",
+
+ "agent.target": "(name=publish-multiple)",
+
+ "queue": "passivequeue1"
+}
\ No newline at end of file
Modified: sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-distribution.json
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-distribution.json?rev=1674843&r1=1674842&r2=1674843&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-distribution.json (original)
+++ sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-distribution.json Mon Apr 20 13:27:20 2015
@@ -1,5 +1,5 @@
{
"jcr:primaryType": "sling:OsgiConfig",
"user.default": "",
- "user.mapping": "org.apache.sling.distribution.core:distributionService=admin"
+ "user.mapping": "org.apache.sling.distribution.core:distributionService=testDistributionUser"
}