You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by un...@apache.org on 2004/09/22 16:54:48 UTC

svn commit: rev 47049 - cocoon/trunk/src/blocks/cron/java/org/apache/cocoon/components/cron

Author: unico
Date: Wed Sep 22 07:54:46 2004
New Revision: 47049

Modified:
   cocoon/trunk/src/blocks/cron/java/org/apache/cocoon/components/cron/QuartzJobExecutor.java
   cocoon/trunk/src/blocks/cron/java/org/apache/cocoon/components/cron/QuartzJobScheduler.java
Log:
apply avalon lifecycle methods to jobs that are not looked up from the service manager
similar to createObject FOM functionality

Modified: cocoon/trunk/src/blocks/cron/java/org/apache/cocoon/components/cron/QuartzJobExecutor.java
==============================================================================
--- cocoon/trunk/src/blocks/cron/java/org/apache/cocoon/components/cron/QuartzJobExecutor.java	(original)
+++ cocoon/trunk/src/blocks/cron/java/org/apache/cocoon/components/cron/QuartzJobExecutor.java	Wed Sep 22 07:54:46 2004
@@ -15,6 +15,8 @@
  */
 package org.apache.cocoon.components.cron;
 
+import org.apache.avalon.framework.container.ContainerUtil;
+import org.apache.avalon.framework.context.Context;
 import org.apache.avalon.framework.logger.Logger;
 import org.apache.avalon.framework.parameters.Parameters;
 import org.apache.avalon.framework.service.ServiceManager;
@@ -66,6 +68,7 @@
             logger.info("Scheduling cron job named '" + name + "'");
         }
 
+        Context appContext = (Context) data.get(QuartzJobScheduler.DATA_MAP_CONTEXT);
         ServiceManager manager = (ServiceManager)data.get(QuartzJobScheduler.DATA_MAP_MANAGER);
         org.apache.cocoon.environment.Context envContext =
                 (org.apache.cocoon.environment.Context)data.get(QuartzJobScheduler.DATA_MAP_ENV_CONTEXT);
@@ -84,6 +87,9 @@
 
             if (null == jobrole) {
                 job = data.get(QuartzJobScheduler.DATA_MAP_OBJECT);
+                ContainerUtil.enableLogging(job, logger);
+                ContainerUtil.contextualize(job, appContext);
+                ContainerUtil.service(job, manager);
             } else {
                 job = manager.lookup(jobrole);
                 release = true;
@@ -120,6 +126,9 @@
 
             if (release && manager != null) {
                 manager.release(job);
+            }
+            else if (job != null) {
+            	ContainerUtil.dispose(job);
             }
         }
     }

Modified: cocoon/trunk/src/blocks/cron/java/org/apache/cocoon/components/cron/QuartzJobScheduler.java
==============================================================================
--- cocoon/trunk/src/blocks/cron/java/org/apache/cocoon/components/cron/QuartzJobScheduler.java	(original)
+++ cocoon/trunk/src/blocks/cron/java/org/apache/cocoon/components/cron/QuartzJobScheduler.java	Wed Sep 22 07:54:46 2004
@@ -74,8 +74,6 @@
                                            Serviceable, Configurable, Startable,
                                            Disposable, Contextualizable, Initializable {
 
-    private org.apache.cocoon.environment.Context environmentContext;
-
     /** ThreadPool policy RUN */
     private static final String POLICY_RUN = "RUN";
 
@@ -101,6 +99,9 @@
     /** Map key for the job name */
     static final String DATA_MAP_NAME = "QuartzJobScheduler.JobName";
 
+    /** Map key for the avalon context */
+    static final String DATA_MAP_CONTEXT = "QuartzJobScheduler.Context";
+
     /** Map key for the service manager */
     static final String DATA_MAP_MANAGER = "QuartzJobScheduler.ServiceManager";
 
@@ -132,6 +133,12 @@
     /** The scheduler name */
     static final String DEFAULT_QUARTZ_SCHEDULER_NAME = "Cocoon";
 
+    /** The Avalon Context instance */
+    private Context applicationContext;
+
+    /** The Cocoon environment Context instance */
+    private org.apache.cocoon.environment.Context environmentContext;
+
     /** The PooledExecutor instance */
     private PooledExecutor executor;
 
@@ -307,6 +314,7 @@
      * @see org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context)
      */
     public void contextualize(Context context) throws ContextException {
+    	this.applicationContext = context;
         this.environmentContext = (org.apache.cocoon.environment.Context)context.get(Constants.CONTEXT_ENVIRONMENT_CONTEXT);
     }
 
@@ -547,6 +555,7 @@
 
         jobDataMap.put(DATA_MAP_NAME, name);
         jobDataMap.put(DATA_MAP_LOGGER, getLogger());
+        jobDataMap.put(DATA_MAP_CONTEXT, this.applicationContext);
         jobDataMap.put(DATA_MAP_MANAGER, this.manager);
         jobDataMap.put(DATA_MAP_ENV_CONTEXT, this.environmentContext);
         jobDataMap.put(DATA_MAP_RUN_CONCURRENT, new Boolean(canRunConcurrently));