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