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