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>();