Author: cziegeler
Date: Mon Apr 22 11:52:11 2013
New Revision: 1470464

URL: http://svn.apache.org/r1470464
Log:
SLING-2829 : Add API for starting a job and service interface for executing a 
job 

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

Modified: 
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/JobConsumerManager.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/JobConsumerManager.java?rev=1470464&r1=1470463&r2=1470464&view=diff
==============================================================================
--- 
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/JobConsumerManager.java
 (original)
+++ 
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/JobConsumerManager.java
 Mon Apr 22 11:52:11 2013
@@ -105,6 +105,9 @@ public class JobConsumerManager {
 
         final boolean enable = this.whitelistMatchers != null && 
this.blacklistMatchers != TopicMatcherHelper.MATCH_ALL;
         if ( wasEnabled != enable ) {
+            synchronized ( this.topicToConsumerMap ) {
+                this.calculateTopics(enable);
+            }
             if ( enable ) {
                 this.propagationService = 
bc.registerService(PropertyProvider.class.getName(),
                         new PropertyProvider() {
@@ -121,9 +124,12 @@ public class JobConsumerManager {
                 this.propagationService.unregister();
                 this.propagationService = null;
             }
+        } else if ( enable ) {
+            // update properties
             synchronized ( this.topicToConsumerMap ) {
-                this.calculateTopics();
+                this.calculateTopics(true);
             }
+            
this.propagationService.setProperties(this.getRegistrationProperties());
         }
     }
 
@@ -200,7 +206,7 @@ public class JobConsumerManager {
                 }
                 this.supportsBridgedEvents = 
this.topicToConsumerMap.containsKey("/");
                 if ( changed ) {
-                    this.calculateTopics();
+                    this.calculateTopics(this.propagationService != null);
                 }
             }
             if ( changed && this.propagationService != null ) {
@@ -237,7 +243,7 @@ public class JobConsumerManager {
                 }
                 this.supportsBridgedEvents = 
this.topicToConsumerMap.containsKey("/");
                 if ( changed ) {
-                    this.calculateTopics();
+                    this.calculateTopics(this.propagationService != null);
                 }
             }
             if ( changed && this.propagationService != null ) {
@@ -255,8 +261,8 @@ public class JobConsumerManager {
         return false;
     }
 
-    private void calculateTopics() {
-        if ( this.propagationService != null ) {
+    private void calculateTopics(final boolean enabled) {
+        if ( enabled ) {
             // create a sorted list - this ensures that the property value
             // is always the same for the same topics.
             final List<String> topicList = new ArrayList<String>();


Reply via email to