You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2008/08/28 19:59:25 UTC
svn commit: r689917 - in
/incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/impl:
AbstractRepositoryEventHandler.java EventHelper.java JobEventHandler.java
Author: cziegeler
Date: Thu Aug 28 10:59:25 2008
New Revision: 689917
URL: http://svn.apache.org/viewvc?rev=689917&view=rev
Log:
Check if the job node has been removed in the meantime from the repository and store node path into resulting event object.
Modified:
incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/impl/AbstractRepositoryEventHandler.java
incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/impl/EventHelper.java
incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/impl/JobEventHandler.java
Modified: incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/impl/AbstractRepositoryEventHandler.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/impl/AbstractRepositoryEventHandler.java?rev=689917&r1=689916&r2=689917&view=diff
==============================================================================
--- incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/impl/AbstractRepositoryEventHandler.java (original)
+++ incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/impl/AbstractRepositoryEventHandler.java Thu Aug 28 10:59:25 2008
@@ -103,6 +103,7 @@
private static final String[] IGNORE_PROPERTIES = new String[] {
EventUtil.PROPERTY_DISTRIBUTE,
EventUtil.PROPERTY_APPLICATION,
+ EventHelper.NODE_PROPERTY_NODE_PATH,
EventUtil.JobStatusNotifier.CONTEXT_PROPERTY_NAME
};
@@ -310,6 +311,7 @@
EventHelper.NODE_PROPERTY_PROPERTIES,
IGNORE_PREFIXES);
+ eventProps.put(EventHelper.NODE_PROPERTY_NODE_PATH, eventNode.getPath());
this.addEventProperties(eventNode, eventProps);
try {
final Event event = new Event(topic, eventProps);
Modified: incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/impl/EventHelper.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/impl/EventHelper.java?rev=689917&r1=689916&r2=689917&view=diff
==============================================================================
--- incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/impl/EventHelper.java (original)
+++ incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/impl/EventHelper.java Thu Aug 28 10:59:25 2008
@@ -34,6 +34,7 @@
public static final String NODE_PROPERTY_PROPERTIES = "slingevent:properties";
public static final String NODE_PROPERTY_PROCESSOR = "slingevent:processor";
public static final String NODE_PROPERTY_JOBID = "slingevent:id";
+ public static final String NODE_PROPERTY_NODE_PATH = "slingevent:nodePath";
public static final String NODE_PROPERTY_FINISHED = "slingevent:finished";
public static final String NODE_PROPERTY_TE_EXPRESSION = "slingevent:expression";
public static final String NODE_PROPERTY_TE_DATE = "slingevent:date";
Modified: incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/impl/JobEventHandler.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/impl/JobEventHandler.java?rev=689917&r1=689916&r2=689917&view=diff
==============================================================================
--- incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/impl/JobEventHandler.java (original)
+++ incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/impl/JobEventHandler.java Thu Aug 28 10:59:25 2008
@@ -25,7 +25,6 @@
import java.util.Dictionary;
import java.util.HashMap;
import java.util.HashSet;
-import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -319,8 +318,7 @@
this.backgroundSession.getWorkspace().getObservationManager()
.addEventListener(this,
javax.jcr.observation.Event.PROPERTY_REMOVED
- |javax.jcr.observation.Event.NODE_REMOVED
- |javax.jcr.observation.Event.PROPERTY_CHANGED,
+ |javax.jcr.observation.Event.NODE_REMOVED,
this.repositoryPath,
true,
null,
@@ -782,19 +780,18 @@
}
/**
- * Create the job event.
- * @param e
- * @return
+ * Create the real job event.
+ * This generates a new event object with the same properties, but with the
+ * {@link EventUtil#PROPERTY_JOB_TOPIC} topic.
+ * @param e The job event.
+ * @return The real job event.
*/
private Event getJobEvent(Event e, String nodePath) {
final String eventTopic = (String)e.getProperty(EventUtil.PROPERTY_JOB_TOPIC);
- final Dictionary<String, Object> properties = new Hashtable<String, Object>();
- final String[] propertyNames = e.getPropertyNames();
- for(int i=0; i<propertyNames.length; i++) {
- properties.put(propertyNames[i], e.getProperty(propertyNames[i]));
- }
+ final Dictionary<String, Object> properties = new EventPropertiesMap(e);
// put properties for finished job callback
- properties.put(EventUtil.JobStatusNotifier.CONTEXT_PROPERTY_NAME, new EventUtil.JobStatusNotifier.NotifierContext(this, nodePath));
+ properties.put(EventUtil.JobStatusNotifier.CONTEXT_PROPERTY_NAME,
+ new EventUtil.JobStatusNotifier.NotifierContext(this, nodePath));
return new Event(eventTopic, properties);
}
@@ -883,9 +880,6 @@
} catch (RepositoryException re) {
this.logger.error("Exception during jcr event processing.", re);
}
- } else if ( event.getType() == javax.jcr.observation.Event.NODE_REMOVED ) {
- final String nodePath = event.getPath();
- // TODO Cancel job
}
}
} catch (RepositoryException re) {
@@ -977,6 +971,10 @@
synchronized ( this.backgroundSession ) {
try {
this.backgroundSession.refresh(false);
+ // check if the job has been cancelled
+ if ( !this.backgroundSession.itemExists(eventNodePath) ) {
+ return true;
+ }
final Node eventNode = (Node) this.backgroundSession.getItem(eventNodePath);
boolean unlock = true;
try {