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 2013/08/12 13:49:52 UTC

svn commit: r1513117 - /sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/timed/ScheduleInfo.java

Author: cziegeler
Date: Mon Aug 12 11:49:52 2013
New Revision: 1513117

URL: http://svn.apache.org/r1513117
Log:
SLING-3012 :  Create unique id if timed event does not contain one 

Modified:
    sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/timed/ScheduleInfo.java

Modified: sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/timed/ScheduleInfo.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/timed/ScheduleInfo.java?rev=1513117&r1=1513116&r2=1513117&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/timed/ScheduleInfo.java (original)
+++ sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/timed/ScheduleInfo.java Mon Aug 12 11:49:52 2013
@@ -20,8 +20,10 @@ package org.apache.sling.event.impl.jobs
 
 import java.io.Serializable;
 import java.util.Date;
+import java.util.concurrent.atomic.AtomicLong;
 
 import org.apache.sling.event.EventUtil;
+import org.apache.sling.event.impl.support.Environment;
 import org.apache.sling.event.impl.support.ResourceHelper;
 import org.apache.sling.event.jobs.JobUtil;
 import org.osgi.service.event.Event;
@@ -63,7 +65,7 @@ final class ScheduleInfo implements Seri
         if ( topic == null ) {
             throw new IllegalArgumentException("Timed event does not contain required property " + EventUtil.PROPERTY_TIMED_EVENT_TOPIC + " : " +  EventUtil.toString(event));
         }
-        // TODO id or job name needs to be available?!?!
+
         final String id = (String)event.getProperty(EventUtil.PROPERTY_TIMED_EVENT_ID);
         final String jId = (String)event.getProperty(JobUtil.PROPERTY_JOB_NAME);
 
@@ -86,6 +88,9 @@ final class ScheduleInfo implements Seri
         return this.expression == null && this.period == null && this.date == null;
     }
 
+    /** Counter for jobs without an id. */
+    private static final AtomicLong eventCounter = new AtomicLong(0);
+
     public static String getJobId(final String topic, final String timedEventId, final String jobId) {
         final StringBuilder sb = new StringBuilder(topic.replace('/', '.'));
         if ( timedEventId != null ) {
@@ -96,6 +101,12 @@ final class ScheduleInfo implements Seri
             sb.append('_');
             sb.append(ResourceHelper.filterName(jobId));
         }
+        if ( timedEventId == null && jobId == null ) {
+            sb.append("__");
+            sb.append(Environment.APPLICATION_ID);
+            sb.append("__");
+            sb.append(eventCounter.getAndIncrement());
+        }
         return sb.toString();
     }
 }
\ No newline at end of file