Author: cziegeler
Date: Tue Aug 26 02:18:50 2008
New Revision: 689007

URL: http://svn.apache.org/viewvc?rev=689007&view=rev
Log:
SLING-498 : Provide a new property to execute a job only on the instance it was 
created on.

Modified:
    
incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/EventUtil.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/EventUtil.java
URL: 
http://svn.apache.org/viewvc/incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/EventUtil.java?rev=689007&r1=689006&r2=689007&view=diff
==============================================================================
--- 
incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/EventUtil.java
 (original)
+++ 
incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/EventUtil.java
 Tue Aug 26 02:18:50 2008
@@ -45,7 +45,6 @@
 import org.apache.jackrabbit.util.ISO9075;
 import org.apache.sling.event.EventUtil.JobStatusNotifier.NotifierContext;
 import org.osgi.service.event.Event;
-import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
@@ -60,6 +59,10 @@
     /** This event property specifies the application node. */
     public static final String PROPERTY_APPLICATION = "event.application";
 
+    /**
+     * Job Handling
+     */
+
     /** The job topic property. */
     public static final String PROPERTY_JOB_TOPIC = "event.job.topic";
 
@@ -69,6 +72,9 @@
     /** The property to set if a job can be run parallel to any other job. */
     public static final String PROPERTY_JOB_PARALLEL = "event.job.parallel";
 
+    /** The property to set if a job should only be run on the same app it has 
been created. */
+    public static final String PROPERTY_JOB_RUN_LOCAL = "event.job.run.local";
+
     /** The property to track the retry count for jobs. Value is of type 
Integer. */
     public static final String PROPERTY_JOB_RETRY_COUNT = 
"event.job.retrycount";
 
@@ -78,9 +84,26 @@
     /** The property to set a retry delay. Value is of type Long and specifies 
milliseconds. */
     public static final String PROPERTY_JOB_RETRY_DELAY = 
"event.job.retrydelay";
 
+    /** The property to set to put the jobs into a separate job queue. This 
property
+     * spcifies the name of the job queue. If the job queue does not exists yet
+     * a new queue is created.
+     * If a job queue is used, the jobs are never executed in parallel from 
this queue!
+     */
+    public static final String PROPERTY_JOB_QUEUE_NAME = "event.job.queuename";
+
+    /** If this property is set with any value, the queue processes the jobs 
in the same
+     * order as they have arrived.
+     * This property has only an effect if [EMAIL PROTECTED] 
#PROPERTY_JOB_QUEUE_NAME} is specified.
+     */
+    public static final String PROPERTY_JOB_QUEUE_ORDERED = 
"event.job.queueordered";
+
     /** The topic for jobs. */
     public static final String TOPIC_JOB = "org/apache/sling/event/job";
 
+    /**
+     * Timed Events
+     */
+
     /** The topic for timed events. */
     public static final String TOPIC_TIMED_EVENT = 
"org/apache/sling/event/timed";
 
@@ -99,7 +122,9 @@
     /** The date for the timed event. */
     public static final String PROPERTY_TIMED_EVENT_DATE = "event.timed.date";
 
-    private final static Logger logger = 
LoggerFactory.getLogger(EventUtil.class);
+    /**
+     * Utility Methods
+     */
 
     /**
      * Create a distributable event.
@@ -207,7 +232,7 @@
                 try {
                     result = processor.process(job);
                 } catch (Throwable t) {
-                    logger.error("Unhandled error occured in job processor " + 
t.getMessage(), t);
+                    LoggerFactory.getLogger(EventUtil.class).error("Unhandled 
error occured in job processor " + t.getMessage(), t);
                     // we don't reschedule if an exception occurs
                     result = true;
                 } finally {

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=689007&r1=689006&r2=689007&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
 Tue Aug 26 02:18:50 2008
@@ -314,6 +314,12 @@
             EventInfo info = null;
             try {
                 info = this.queue.take();
+                // check for local only jobs and remove them from the queue if 
they're meant
+                // for another application node
+                if ( info.event.getProperty(EventUtil.PROPERTY_JOB_RUN_LOCAL) 
!= null
+                    && 
!this.applicationId.equals(EventUtil.PROPERTY_APPLICATION) ) {
+                    info = null;
+                }
             } catch (InterruptedException e) {
                 // we ignore this
                 this.ignoreException(e);


Reply via email to