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:42:03 UTC
svn commit: rev 47048 - cocoon/branches/BRANCH_2_1_X/src/blocks/cron/java/org/apache/cocoon/components/cron
Author: unico
Date: Wed Sep 22 07:42:00 2004
New Revision: 47048
Modified:
cocoon/branches/BRANCH_2_1_X/src/blocks/cron/java/org/apache/cocoon/components/cron/QuartzJobExecutor.java
cocoon/branches/BRANCH_2_1_X/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/branches/BRANCH_2_1_X/src/blocks/cron/java/org/apache/cocoon/components/cron/QuartzJobExecutor.java
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/cron/java/org/apache/cocoon/components/cron/QuartzJobExecutor.java (original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/cron/java/org/apache/cocoon/components/cron/QuartzJobExecutor.java Wed Sep 22 07:42:00 2004
@@ -16,6 +16,8 @@
package org.apache.cocoon.components.cron;
import org.apache.avalon.framework.component.WrapperComponentManager;
+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.ServiceException;
@@ -70,6 +72,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);
@@ -100,6 +103,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;
@@ -136,6 +142,9 @@
if (release) {
manager.release(job);
+ }
+ else {
+ ContainerUtil.dispose(job);
}
manager.release(processor);
}
Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/cron/java/org/apache/cocoon/components/cron/QuartzJobScheduler.java
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/cron/java/org/apache/cocoon/components/cron/QuartzJobScheduler.java (original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/cron/java/org/apache/cocoon/components/cron/QuartzJobScheduler.java Wed Sep 22 07:42:00 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));
Re: svn commit: rev 47048 - cocoon/branches/BRANCH_2_1_X/src/blocks/cron/java/org/apache/cocoon/components/cron
Posted by Unico Hommes <un...@hippo.nl>.
Vadim Gritsenko wrote:
> unico@apache.org wrote:
>
> > Modified:
> cocoon/branches/BRANCH_2_1_X/src/blocks/cron/java/org/apache/cocoon/components/cron/QuartzJobScheduler.java
> >
> ==============================================================================
> > ---
> cocoon/branches/BRANCH_2_1_X/src/blocks/cron/java/org/apache/cocoon/components/cron/QuartzJobScheduler.java
> (original)
> > +++
> cocoon/branches/BRANCH_2_1_X/src/blocks/cron/java/org/apache/cocoon/components/cron/QuartzJobScheduler.java
> Wed Sep 22 07:42:00 2004
> > @@ -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));
>
> You'll also have to remove this entry from jobDataMap when Quartz is
> about to write it into the database. See QuartzDriverDelegate, methods
> removeTransientData() and selectJobDetail().
>
O, good one, thanks :-) Will take care of this.
--
Unico
Re: svn commit: rev 47048 - cocoon/branches/BRANCH_2_1_X/src/blocks/cron/java/org/apache/cocoon/components/cron
Posted by Vadim Gritsenko <va...@reverycodes.com>.
unico@apache.org wrote:
> Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/cron/java/org/apache/cocoon/components/cron/QuartzJobScheduler.java
> ==============================================================================
> --- cocoon/branches/BRANCH_2_1_X/src/blocks/cron/java/org/apache/cocoon/components/cron/QuartzJobScheduler.java (original)
> +++ cocoon/branches/BRANCH_2_1_X/src/blocks/cron/java/org/apache/cocoon/components/cron/QuartzJobScheduler.java Wed Sep 22 07:42:00 2004
> @@ -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));
You'll also have to remove this entry from jobDataMap when Quartz is
about to write it into the database. See QuartzDriverDelegate, methods
removeTransientData() and selectJobDetail().
Vadim
Re: svn commit: rev 47048 - cocoon/branches/BRANCH_2_1_X/src/blocks/cron/java/org/apache/cocoon/components/cron
Posted by Vadim Gritsenko <va...@reverycodes.com>.
unico@apache.org wrote:
> Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/cron/java/org/apache/cocoon/components/cron/QuartzJobScheduler.java
> ==============================================================================
> --- cocoon/branches/BRANCH_2_1_X/src/blocks/cron/java/org/apache/cocoon/components/cron/QuartzJobScheduler.java (original)
> +++ cocoon/branches/BRANCH_2_1_X/src/blocks/cron/java/org/apache/cocoon/components/cron/QuartzJobScheduler.java Wed Sep 22 07:42:00 2004
> @@ -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));
You'll also have to remove this entry from jobDataMap when Quartz is
about to write it into the database. See QuartzDriverDelegate, methods
removeTransientData() and selectJobDetail().
Vadim