Author: ogrisel
Date: Fri Nov 16 17:08:37 2012
New Revision: 1410475

URL: http://svn.apache.org/viewvc?rev=1410475&view=rev
Log:
STANBOL-808: Make it possible configure the EventJobManagerImpl enhancement job 
timeout

Modified:
    
stanbol/trunk/enhancer/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EventJobManagerImpl.java
    
stanbol/trunk/enhancer/jobmanager/event/src/main/resources/OSGI-INF/metatype/metatype.properties

Modified: 
stanbol/trunk/enhancer/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EventJobManagerImpl.java
URL: 
http://svn.apache.org/viewvc/stanbol/trunk/enhancer/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EventJobManagerImpl.java?rev=1410475&r1=1410474&r2=1410475&view=diff
==============================================================================
--- 
stanbol/trunk/enhancer/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EventJobManagerImpl.java
 (original)
+++ 
stanbol/trunk/enhancer/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EventJobManagerImpl.java
 Fri Nov 16 17:08:37 2012
@@ -53,7 +53,8 @@ import org.slf4j.LoggerFactory;
 @Service
 @Properties(value={
     //register with a ranking lower than 0 to allow easy overriding by specific
-    
@Property(name=Constants.SERVICE_RANKING,intValue=EventJobManagerImpl.DEFAULT_SERVICE_RANKING)
+    
@Property(name=Constants.SERVICE_RANKING,intValue=EventJobManagerImpl.DEFAULT_SERVICE_RANKING),
+    
@Property(name=EventJobManagerImpl.MAX_ENHANCEMENT_JOB_WAIT_TIME,intValue=EventJobManagerImpl.DEFAULT_MAX_ENHANCEMENT_JOB_WAIT_TIME)
 })
 public class EventJobManagerImpl implements EnhancementJobManager {
 
@@ -61,7 +62,9 @@ public class EventJobManagerImpl impleme
     
     public static final int DEFAULT_SERVICE_RANKING = 0;
 
-    private static final int MAX_ENHANCEMENT_JOB_WAIT_TIME = 10*1000;
+    public static final String MAX_ENHANCEMENT_JOB_WAIT_TIME = 
"stanbol.maxEnhancementJobWaitTime";
+
+    public static final int DEFAULT_MAX_ENHANCEMENT_JOB_WAIT_TIME = 10 * 1000;
     
     @Reference
     protected ChainManager chainManager;
@@ -72,6 +75,7 @@ public class EventJobManagerImpl impleme
 
     private ServiceRegistration jobHandlerRegistration;
     private EnhancementJobHandler jobHandler;
+    private int maxEnhancementJobWaitTime = 
DEFAULT_MAX_ENHANCEMENT_JOB_WAIT_TIME;
     
     
     /**
@@ -88,6 +92,11 @@ public class EventJobManagerImpl impleme
         properties.put(org.osgi.service.event.EventConstants.EVENT_TOPIC, 
TOPIC_JOB_MANAGER);
         jobHandlerRegistration = ctx.getBundleContext().registerService(
             EventHandler.class.getName(), jobHandler, properties);
+        
+        Object maxWaitTime = 
ctx.getProperties().get(MAX_ENHANCEMENT_JOB_WAIT_TIME);
+        if (maxWaitTime instanceof Integer) {
+            this.maxEnhancementJobWaitTime = (Integer) maxWaitTime;
+        }
     }
     /**
      * Unregisters the {@link EnhancementJobHandler}
@@ -124,7 +133,7 @@ public class EventJobManagerImpl impleme
         }
         if(chain == null){
             throw new IllegalArgumentException("Unable to enhance ContentItem 
'"+ci.getUri()+
-                "' because NULL was parsed as enhancement chain");
+                "' because NULL was passed as enhancement chain");
         }
         long start = System.currentTimeMillis();
         boolean isDefaultChain = chain.equals(chainManager.getDefault());
@@ -134,7 +143,7 @@ public class EventJobManagerImpl impleme
         EnhancementJobObserver observer = jobHandler.register(job);
         //TODO: allow configuring a max completion time (e.g. 1min)
         while(!observer.hasCompleted() & jobHandler != null){
-            observer.waitForCompletion(MAX_ENHANCEMENT_JOB_WAIT_TIME);
+            observer.waitForCompletion(maxEnhancementJobWaitTime);
         }
         log.info("{} EnhancementJob for ContentItem {} after {}ms",
             new Object[]{ job.isFailed() ? "Failed" : "Finished",
@@ -155,8 +164,8 @@ public class EventJobManagerImpl impleme
         }
         if(!job.isFinished()){
             throw new ChainException("EnhancementJobManager was deactivated 
while" +
-                       "enhancing the parsed ContentItem 
"+job.getContentItem()+
-                       "(EnhancementJobManager type: "+getClass()+")!");
+                       " enhancing the passed ContentItem 
"+job.getContentItem()+
+                       " (EnhancementJobManager type: "+getClass()+")");
         }
     }
 

Modified: 
stanbol/trunk/enhancer/jobmanager/event/src/main/resources/OSGI-INF/metatype/metatype.properties
URL: 
http://svn.apache.org/viewvc/stanbol/trunk/enhancer/jobmanager/event/src/main/resources/OSGI-INF/metatype/metatype.properties?rev=1410475&r1=1410474&r2=1410475&view=diff
==============================================================================
--- 
stanbol/trunk/enhancer/jobmanager/event/src/main/resources/OSGI-INF/metatype/metatype.properties
 (original)
+++ 
stanbol/trunk/enhancer/jobmanager/event/src/main/resources/OSGI-INF/metatype/metatype.properties
 Fri Nov 16 17:08:37 2012
@@ -21,8 +21,12 @@ org.apache.stanbol.enhancer.jobmanager.e
 
org.apache.stanbol.enhancer.jobmanager.event.impl.EventJobManagerImpl.description=EnhancementJobManager
 \
 implementation that used the org.osgi.service.event framework for 
asynchronously enhancing \
 content items.
+stanbol.maxEnhancementJobWaitTime.name=Job timeout (ms)
+stanbol.maxEnhancementJobWaitTime.description=Maximum time in milliseconds to 
wait for job completion \
+before aborting.
 
 service.ranking.name=Ranking
 service.ranking.description=The service.ranking for this EnhancementJobManager 
implementation. \
 If different enhancement job manager are active the one with the highest rank 
will be used to \
 enhance content parsed to the Stanbol Enhancer RESTful interface.
+


Reply via email to