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/04/22 16:43:15 UTC
svn commit: r1470552 - in
/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs:
JobConsumerManager.java JobManagerImpl.java TopologyCapabilities.java
deprecated/EventAdminBridge.java
Author: cziegeler
Date: Mon Apr 22 14:43:14 2013
New Revision: 1470552
URL: http://svn.apache.org/r1470552
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
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/JobManagerImpl.java
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/TopologyCapabilities.java
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/deprecated/EventAdminBridge.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=1470552&r1=1470551&r2=1470552&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 14:43:14 2013
@@ -44,6 +44,7 @@ import org.apache.sling.event.jobs.JobCo
import org.osgi.framework.BundleContext;
import org.osgi.framework.Constants;
import org.osgi.framework.ServiceRegistration;
+import org.slf4j.LoggerFactory;
/**
* This component manages/keeps track of all job consumer services.
@@ -109,6 +110,7 @@ public class JobConsumerManager {
this.calculateTopics(enable);
}
if ( enable ) {
+ LoggerFactory.getLogger(this.getClass()).info("Registering property provider with: {}", this.topics);
this.propagationService = bc.registerService(PropertyProvider.class.getName(),
new PropertyProvider() {
@@ -121,6 +123,7 @@ public class JobConsumerManager {
}
}, this.getRegistrationProperties());
} else {
+ LoggerFactory.getLogger(this.getClass()).info("Unregistering property provider with");
this.propagationService.unregister();
this.propagationService = null;
}
@@ -129,6 +132,7 @@ public class JobConsumerManager {
synchronized ( this.topicToConsumerMap ) {
this.calculateTopics(true);
}
+ LoggerFactory.getLogger(this.getClass()).info("Updating property provider with: {}", this.topics);
this.propagationService.setProperties(this.getRegistrationProperties());
}
}
@@ -210,6 +214,7 @@ public class JobConsumerManager {
}
}
if ( changed && this.propagationService != null ) {
+ LoggerFactory.getLogger(this.getClass()).info("Updating property provider with: {}", this.topics);
this.propagationService.setProperties(this.getRegistrationProperties());
}
}
@@ -247,6 +252,7 @@ public class JobConsumerManager {
}
}
if ( changed && this.propagationService != null ) {
+ LoggerFactory.getLogger(this.getClass()).info("Updating property provider with: {}", this.topics);
this.propagationService.setProperties(this.getRegistrationProperties());
}
}
Modified: sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/JobManagerImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/JobManagerImpl.java?rev=1470552&r1=1470551&r2=1470552&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/JobManagerImpl.java (original)
+++ sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/JobManagerImpl.java Mon Apr 22 14:43:14 2013
@@ -547,15 +547,15 @@ public class JobManagerImpl
*/
@Override
public void handleTopologyEvent(final TopologyEvent event) {
- if ( this.logger.isDebugEnabled() ) {
- this.logger.debug("Received topology event {}", event);
- }
+// if ( this.logger.isDebugEnabled() ) { // TODO
+ this.logger.info("Received topology event {}", event);
+// }
// check if there is a change of properties which doesn't affect us
if ( event.getType() == Type.PROPERTIES_CHANGED ) {
final Map<String, String> newAllInstances = TopologyCapabilities.getAllInstancesMap(event.getNewView());
if ( this.topologyCapabilities != null && this.topologyCapabilities.isSame(newAllInstances) ) {
- logger.debug("No changes in capabilities.");
+ logger.info("No changes in capabilities."); // TODO - debug
return;
}
}
Modified: sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/TopologyCapabilities.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/TopologyCapabilities.java?rev=1470552&r1=1470551&r2=1470552&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/TopologyCapabilities.java (original)
+++ sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/TopologyCapabilities.java Mon Apr 22 14:43:14 2013
@@ -99,7 +99,7 @@ public class TopologyCapabilities {
for(final InstanceDescription desc : view.getInstances() ) {
final String topics = desc.getProperty(JobConsumer.PROPERTY_TOPICS);
if ( topics != null && topics.length() > 0 ) {
- this.logger.debug("Capabilities of {} : {}", desc.getSlingId(), topics);
+ this.logger.info("Capabilities of {} : {}", desc.getSlingId(), topics); // TODO debug
for(final String topic : topics.split(",") ) {
List<InstanceDescription> list = newCaps.get(topic);
if ( list == null ) {
Modified: sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/deprecated/EventAdminBridge.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/deprecated/EventAdminBridge.java?rev=1470552&r1=1470551&r2=1470552&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/deprecated/EventAdminBridge.java (original)
+++ sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/deprecated/EventAdminBridge.java Mon Apr 22 14:43:14 2013
@@ -29,6 +29,8 @@ import org.apache.felix.scr.annotations.
import org.apache.felix.scr.annotations.Properties;
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.ReferenceCardinality;
+import org.apache.felix.scr.annotations.ReferencePolicy;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.event.EventPropertiesMap;
import org.apache.sling.event.EventUtil;
@@ -73,7 +75,7 @@ public class EventAdminBridge
/** Is the background task still running? */
private volatile boolean running;
- @Reference
+ @Reference(policy=ReferencePolicy.DYNAMIC, cardinality=ReferenceCardinality.OPTIONAL_UNARY)
private JobManager jobManager;
/**
@@ -146,20 +148,30 @@ public class EventAdminBridge
this.ignoreException(e);
}
if ( event != null && this.running ) {
- final String jobTopic = (String)event.getProperty(JobUtil.PROPERTY_JOB_TOPIC);
- final String jobName = (String)event.getProperty(JobUtil.PROPERTY_JOB_NAME);
-
- final Map<String, Object> props = new EventPropertiesMap(event);
- props.put(JobImpl.PROPERTY_BRIDGED_EVENT, Boolean.TRUE);
-
- // check for deprecated/unsupported properties
- for(final String ignoredProp : IGNORED_CONFIG_PROPERTIES) {
- if ( props.containsKey(ignoredProp)) {
- logger.info("Job {} is using deprecated and ignored property {}", EventUtil.toString(event), ignoredProp);
- props.remove(ignoredProp);
+ final JobManager jm = this.jobManager;
+ if ( jm == null ) {
+ try {
+ this.writeQueue.put(event);
+ Thread.sleep(500);
+ } catch (final InterruptedException ie) {
+ this.ignoreException(ie);
+ }
+ } else {
+ final String jobTopic = (String)event.getProperty(JobUtil.PROPERTY_JOB_TOPIC);
+ final String jobName = (String)event.getProperty(JobUtil.PROPERTY_JOB_NAME);
+
+ final Map<String, Object> props = new EventPropertiesMap(event);
+ props.put(JobImpl.PROPERTY_BRIDGED_EVENT, Boolean.TRUE);
+
+ // check for deprecated/unsupported properties
+ for(final String ignoredProp : IGNORED_CONFIG_PROPERTIES) {
+ if ( props.containsKey(ignoredProp)) {
+ logger.info("Job {} is using deprecated and ignored property {}", EventUtil.toString(event), ignoredProp);
+ props.remove(ignoredProp);
+ }
}
+ this.jobManager.addJob(jobTopic, jobName, props);
}
- this.jobManager.addJob(jobTopic, jobName, props);
}
}
}