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);


Reply via email to