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 09:55:26 UTC

svn commit: r689750 - in /incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event: JobStatusProvider.java impl/JobEventHandler.java

Author: cziegeler
Date: Thu Aug 28 00:55:25 2008
New Revision: 689750

URL: http://svn.apache.org/viewvc?rev=689750&view=rev
Log:
SLING-616 : Allow to query all jobs (running and queued)

Modified:
    incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/JobStatusProvider.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/JobStatusProvider.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/JobStatusProvider.java?rev=689750&r1=689749&r2=689750&view=diff
==============================================================================
--- incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/JobStatusProvider.java (original)
+++ incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/JobStatusProvider.java Thu Aug 28 00:55:25 2008
@@ -65,4 +65,14 @@
      * @return A non null collection.
      */
     Collection<Event> getCurrentJobs(String topic, Map<String, Object> filterProps);
+
+    /**
+     * Return all jobs either running or scheduled.
+     * This is actually a convenience method and collects the results from {@link #getScheduledJobs(String, Map)}
+     * and {@link #getCurrentJobs(String, Map)}
+     * @param topic Topic can be used as a filter, if it is non-null, only jobs with this topic will be returned.
+     * @param filterProps An optional map of filter props that act like a template.
+     * @return A non null collection.
+     */
+    Collection<Event> getAllJobs(String topic, Map<String, Object> filterProps);
 }

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=689750&r1=689749&r2=689750&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 00:55:25 2008
@@ -48,6 +48,7 @@
 import org.apache.sling.commons.osgi.OsgiUtil;
 import org.apache.sling.commons.scheduler.Scheduler;
 import org.apache.sling.commons.threads.ThreadPool;
+import org.apache.sling.event.EventPropertiesMap;
 import org.apache.sling.event.EventUtil;
 import org.apache.sling.event.JobStatusProvider;
 import org.osgi.service.component.ComponentContext;
@@ -959,13 +960,7 @@
             }
             if ( reschedule ) {
                 // update event with retry count and retries
-                final Dictionary<String, Object> newProperties;
-                // create a new dictionary
-                newProperties = new Hashtable<String, Object>();
-                final String[] names = job.getPropertyNames();
-                for(int i=0; i<names.length; i++ ) {
-                    newProperties.put(names[i], job.getProperty(names[i]));
-                }
+                final Dictionary<String, Object> newProperties = new EventPropertiesMap(job);
                 newProperties.put(EventUtil.PROPERTY_JOB_RETRY_COUNT, retryCount);
                 newProperties.put(EventUtil.PROPERTY_JOB_RETRIES, retries);
                 job = new Event(job.getTopic(), newProperties);
@@ -1123,7 +1118,7 @@
      */
     private Collection<Event> queryCurrentJobs(final String topic,
                                                final Map<String, Object> filterProps,
-                                               final boolean locked)  {
+                                               final Boolean locked)  {
         // we create a new session
         Session s = null;
         final List<Event> jobs = new ArrayList<Event>();
@@ -1144,10 +1139,12 @@
                 buffer.append(topic);
                 buffer.append("'");
             }
-            if ( locked ) {
-                buffer.append(" and @jcr:lockOwner");
-            } else {
-                buffer.append(" and not(@jcr:lockOwner)");
+            if ( locked != null ) {
+                if ( locked ) {
+                    buffer.append(" and @jcr:lockOwner");
+                } else {
+                    buffer.append(" and not(@jcr:lockOwner)");
+                }
             }
             if ( filterProps != null ) {
                 final Iterator<Map.Entry<String, Object>> i = filterProps.entrySet().iterator();
@@ -1230,6 +1227,15 @@
         return this.queryCurrentJobs(topic, null, false);
     }
 
+
+    /**
+     * @see org.apache.sling.event.JobStatusProvider#getAllJobs(java.lang.String, java.util.Map)
+     */
+    public Collection<Event> getAllJobs(String topic, Map<String, Object> filterProps) {
+        return this.queryCurrentJobs(topic, null, null);
+    }
+
+
     private static final class JobBlockingQueue extends LinkedBlockingQueue<EventInfo> {
 
         private EventInfo eventInfo;