Author: tommaso
Date: Fri Sep 26 13:03:01 2014
New Revision: 1627771
URL: http://svn.apache.org/r1627771
Log:
SLING-3962 - package events generated consistently
Modified:
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/DefaultReplicationComponentProvider.java
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/SimpleReplicationAgent.java
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/event/ReplicationEventType.java
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RepositoryReplicationPackageImporter.java
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/AbstractReplicationPackageBuilder.java
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/vlt/FileVaultReplicationPackageBuilder.java
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/vlt/FileVaultReplicationPackageBuilderFactory.java
sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/serialization/impl/vlt/FileVaultReplicationPackageBuilderTest.java
Modified:
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/DefaultReplicationComponentProvider.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/DefaultReplicationComponentProvider.java?rev=1627771&r1=1627770&r2=1627771&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/DefaultReplicationComponentProvider.java
(original)
+++
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/DefaultReplicationComponentProvider.java
Fri Sep 26 13:03:01 2014
@@ -254,7 +254,7 @@ public class DefaultReplicationComponent
String factory =
PropertiesUtil.toString(properties.get(COMPONENT_TYPE), "service");
if ("vlt".equals(factory)) {
- return
FileVaultReplicationPackageBuilderFactory.getInstance(properties, repository,
packaging);
+ return
FileVaultReplicationPackageBuilderFactory.getInstance(properties, repository,
packaging, replicationEventFactory);
}
return null;
Modified:
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/SimpleReplicationAgent.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/SimpleReplicationAgent.java?rev=1627771&r1=1627770&r2=1627771&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/SimpleReplicationAgent.java
(original)
+++
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/agent/impl/SimpleReplicationAgent.java
Fri Sep 26 13:03:01 2014
@@ -152,13 +152,11 @@ public class SimpleReplicationAgent impl
ReplicationQueueItemState state =
queueDistributionStrategy.add(getName(), replicationQueueItem,
queueProvider);
- // TODO : it probably makes sense to always generate the package
queued event
- if (isPassive()) {
- Dictionary<Object, Object> properties = new Properties();
- properties.put("replication.package.paths",
replicationQueueItem.getPaths());
- properties.put("replication.agent.name", name);
-
replicationEventFactory.generateEvent(ReplicationEventType.PACKAGE_QUEUED,
properties);
- }
+ Dictionary<Object, Object> properties = new Properties();
+ properties.put("replication.package.paths",
replicationQueueItem.getPaths());
+ properties.put("replication.agent.name", name);
+
replicationEventFactory.generateEvent(ReplicationEventType.PACKAGE_QUEUED,
properties);
+
if (state != null) {
replicationResponse.setStatus(state.getItemState().toString());
replicationResponse.setSuccessful(state.isSuccessful());
@@ -225,6 +223,12 @@ public class SimpleReplicationAgent impl
ReplicationPackage replicationPackage =
replicationPackageExporter.exportPackageById(queueItem.getId());
if (replicationPackage != null) {
replicationPackageImporter.importPackage(replicationPackage);
+
+ Dictionary<Object, Object> properties = new Properties();
+ properties.put("replication.package.paths",
replicationPackage.getPaths());
+ properties.put("replication.agent.name", name);
+
replicationEventFactory.generateEvent(ReplicationEventType.PACKAGE_REPLICATED,
properties);
+
replicationPackage.delete();
success = true;
}
Modified:
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/event/ReplicationEventType.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/event/ReplicationEventType.java?rev=1627771&r1=1627770&r2=1627771&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/event/ReplicationEventType.java
(original)
+++
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/event/ReplicationEventType.java
Fri Sep 26 13:03:01 2014
@@ -25,9 +25,9 @@ public enum ReplicationEventType {
PACKAGE_CREATED,
PACKAGE_QUEUED,
- PACKAGE_DELETED,
PACKAGE_REPLICATED,
PACKAGE_INSTALLED,
+ PACKAGE_IMPORTED,
AGENT_CREATED,
AGENT_MODIFIED,
AGENT_DELETED
Modified:
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RepositoryReplicationPackageImporter.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RepositoryReplicationPackageImporter.java?rev=1627771&r1=1627770&r2=1627771&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RepositoryReplicationPackageImporter.java
(original)
+++
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/packaging/impl/importer/RepositoryReplicationPackageImporter.java
Fri Sep 26 13:03:01 2014
@@ -101,7 +101,7 @@ public class RepositoryReplicationPackag
Dictionary<Object, Object> props = new Properties();
props.put("path", replicationPackage.getPaths());
-
replicationEventFactory.generateEvent(ReplicationEventType.PACKAGE_REPLICATED,
props);
+
replicationEventFactory.generateEvent(ReplicationEventType.PACKAGE_IMPORTED,
props);
} else {
throw new Exception("could not get a Session to deliver
package to the repository");
}
Modified:
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/AbstractReplicationPackageBuilder.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/AbstractReplicationPackageBuilder.java?rev=1627771&r1=1627770&r2=1627771&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/AbstractReplicationPackageBuilder.java
(original)
+++
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/AbstractReplicationPackageBuilder.java
Fri Sep 26 13:03:01 2014
@@ -24,9 +24,13 @@ import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.util.Dictionary;
+import java.util.Hashtable;
import org.apache.sling.replication.communication.ReplicationActionType;
import org.apache.sling.replication.communication.ReplicationRequest;
+import org.apache.sling.replication.event.ReplicationEventFactory;
+import org.apache.sling.replication.event.ReplicationEventType;
import org.apache.sling.replication.packaging.ReplicationPackage;
import org.apache.sling.replication.serialization.ReplicationPackageBuilder;
import
org.apache.sling.replication.serialization.ReplicationPackageBuildingException;
@@ -40,10 +44,14 @@ import org.slf4j.LoggerFactory;
public abstract class AbstractReplicationPackageBuilder implements
ReplicationPackageBuilder {
private final Logger log = LoggerFactory.getLogger(getClass());
+
private final String type;
- public AbstractReplicationPackageBuilder(String type) {
+ private final ReplicationEventFactory replicationEventFactory;
+
+ public AbstractReplicationPackageBuilder(String type,
ReplicationEventFactory replicationEventFactory) {
this.type = type;
+ this.replicationEventFactory = replicationEventFactory;
}
public ReplicationPackage createPackage(ReplicationRequest request)
@@ -54,11 +62,17 @@ public abstract class AbstractReplicatio
} else if (ReplicationActionType.DELETE.equals(request.getAction())) {
replicationPackage = new VoidReplicationPackage(request, type);
} else if (ReplicationActionType.POLL.equals(request.getAction())) {
- replicationPackage = new VoidReplicationPackage(request, type); //
TODO : change this
+ replicationPackage = new VoidReplicationPackage(request, type);
} else {
throw new ReplicationPackageBuildingException("unknown action type
"
+ request.getAction());
}
+ if (replicationPackage != null && replicationEventFactory != null) {
+ Dictionary<String, Object> dictionary = new Hashtable<String,
Object>();
+ dictionary.put("replication.action",
replicationPackage.getAction());
+ dictionary.put("replication.path", replicationPackage.getPaths());
+
replicationEventFactory.generateEvent(ReplicationEventType.PACKAGE_CREATED,
dictionary);
+ }
return replicationPackage;
}
@@ -94,11 +108,21 @@ public abstract class AbstractReplicatio
public boolean installPackage(ReplicationPackage replicationPackage)
throws ReplicationPackageReadingException {
ReplicationActionType actionType =
ReplicationActionType.fromName(replicationPackage.getAction());
+ boolean installed;
if (ReplicationActionType.DELETE.equals(actionType)) {
- return installDeletePackage(replicationPackage);
+ installed = installDeletePackage(replicationPackage);
+ } else {
+ installed = installPackageInternal(replicationPackage);
+ }
+
+ if (installed && replicationEventFactory != null) {
+ Dictionary<String, Object> dictionary = new Hashtable<String,
Object>();
+ dictionary.put("replication.action",
replicationPackage.getAction());
+ dictionary.put("replication.path", replicationPackage.getPaths());
+
replicationEventFactory.generateEvent(ReplicationEventType.PACKAGE_INSTALLED,
dictionary);
}
- return installPackageInternal(replicationPackage);
+ return installed;
}
private boolean installDeletePackage(ReplicationPackage
replicationPackage) throws ReplicationPackageReadingException {
Modified:
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/vlt/FileVaultReplicationPackageBuilder.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/vlt/FileVaultReplicationPackageBuilder.java?rev=1627771&r1=1627770&r2=1627771&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/vlt/FileVaultReplicationPackageBuilder.java
(original)
+++
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/vlt/FileVaultReplicationPackageBuilder.java
Fri Sep 26 13:03:01 2014
@@ -36,6 +36,7 @@ import org.apache.jackrabbit.vault.packa
import org.apache.jackrabbit.vault.packaging.VaultPackage;
import org.apache.sling.jcr.api.SlingRepository;
import org.apache.sling.replication.communication.ReplicationRequest;
+import org.apache.sling.replication.event.ReplicationEventFactory;
import org.apache.sling.replication.packaging.ReplicationPackage;
import org.apache.sling.replication.serialization.ReplicationPackageBuilder;
import
org.apache.sling.replication.serialization.ReplicationPackageBuildingException;
@@ -63,8 +64,9 @@ public class FileVaultReplicationPackage
private static final String TYPE = "vlt";
- public FileVaultReplicationPackageBuilder(String subServiceName,
SlingRepository repository, Packaging packaging) {
- super(TYPE);
+ public FileVaultReplicationPackageBuilder(String subServiceName,
SlingRepository repository, Packaging packaging,
+ ReplicationEventFactory
replicationEventFactory) {
+ super(TYPE, replicationEventFactory);
this.subServiceName = subServiceName;
this.repository = repository;
Modified:
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/vlt/FileVaultReplicationPackageBuilderFactory.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/vlt/FileVaultReplicationPackageBuilderFactory.java?rev=1627771&r1=1627770&r2=1627771&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/vlt/FileVaultReplicationPackageBuilderFactory.java
(original)
+++
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/serialization/impl/vlt/FileVaultReplicationPackageBuilderFactory.java
Fri Sep 26 13:03:01 2014
@@ -32,6 +32,7 @@ import org.apache.jackrabbit.vault.packa
import org.apache.jackrabbit.vault.packaging.VaultPackage;
import org.apache.sling.commons.osgi.PropertiesUtil;
import org.apache.sling.jcr.api.SlingRepository;
+import org.apache.sling.replication.event.ReplicationEventFactory;
import org.apache.sling.replication.packaging.ReplicationPackage;
import org.apache.sling.replication.serialization.ReplicationPackageBuilder;
import org.osgi.framework.BundleContext;
@@ -71,6 +72,9 @@ public class FileVaultReplicationPackage
@Reference
private Packaging packaging;
+ @Reference
+ private ReplicationEventFactory replicationEventFactory;
+
private ServiceRegistration builderReg;
@Activate
@@ -86,7 +90,7 @@ public class FileVaultReplicationPackage
Dictionary<String, Object> props = new Hashtable<String, Object>();
props.put(NAME, name);
- ReplicationPackageBuilder replicationPackageBuilder =
getInstance(config, repository, packaging);
+ ReplicationPackageBuilder replicationPackageBuilder =
getInstance(config, repository, packaging, replicationEventFactory);
builderReg =
context.registerService(ReplicationPackageBuilder.class.getName(),
replicationPackageBuilder, props);
}
@@ -101,8 +105,8 @@ public class FileVaultReplicationPackage
}
public static FileVaultReplicationPackageBuilder getInstance(Map<String,
Object> config,
-
SlingRepository repository, Packaging packaging) {
-
+
SlingRepository repository, Packaging packaging,
+
ReplicationEventFactory replicationEventFactory) {
String serviceName = PropertiesUtil.toString(config.get(SERVICENAME),
"").trim();
@@ -110,7 +114,7 @@ public class FileVaultReplicationPackage
throw new IllegalArgumentException("Service Name cannot be empty");
}
- return new FileVaultReplicationPackageBuilder(serviceName, repository,
packaging);
+ return new FileVaultReplicationPackageBuilder(serviceName, repository,
packaging, replicationEventFactory);
}
Modified:
sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/serialization/impl/vlt/FileVaultReplicationPackageBuilderTest.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/serialization/impl/vlt/FileVaultReplicationPackageBuilderTest.java?rev=1627771&r1=1627770&r2=1627771&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/serialization/impl/vlt/FileVaultReplicationPackageBuilderTest.java
(original)
+++
sling/trunk/contrib/extensions/replication/core/src/test/java/org/apache/sling/replication/serialization/impl/vlt/FileVaultReplicationPackageBuilderTest.java
Fri Sep 26 13:03:01 2014
@@ -37,7 +37,7 @@ public class FileVaultReplicationPackage
SlingRepository repository = mock(SlingRepository.class);
Packaging packaging = mock(Packaging.class);
- FileVaultReplicationPackageBuilder
fileVaultReplicationPackageBuilder = new
FileVaultReplicationPackageBuilder(null, repository, packaging);
+ FileVaultReplicationPackageBuilder
fileVaultReplicationPackageBuilder = new
FileVaultReplicationPackageBuilder(null, repository, packaging, null);
ReplicationRequest request = mock(ReplicationRequest.class);
fileVaultReplicationPackageBuilder.createPackageForAdd(request);