You are viewing a plain text version of this content. The canonical link for it is here.
Posted to slide-dev@jakarta.apache.org by df...@apache.org on 2004/06/08 11:48:24 UTC
cvs commit: jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/core Thread.java CachedContent.java
dflorey 2004/06/08 02:48:24
Modified: proposals/projector/src/java/org/apache/slide/projector/engine
Scheduler.java Job.java
proposals/projector/src/java/org/apache/slide/projector/processor/core
Thread.java CachedContent.java
Added: proposals/projector/src/java/org/apache/slide/projector/engine
JobDefinition.java
Log:
Prepared for repeatable jobs
Revision Changes Path
1.8 +26 -12 jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/engine/Scheduler.java
Index: Scheduler.java
===================================================================
RCS file: /home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/engine/Scheduler.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- Scheduler.java 8 Jun 2004 09:04:05 -0000 1.7
+++ Scheduler.java 8 Jun 2004 09:48:24 -0000 1.8
@@ -34,6 +34,8 @@
private static Timer timer = new Timer();
private List jobs = new ArrayList();
+ private List jobDefinitions = new ArrayList();
+
private Map installedJobs = new HashMap();
private Scheduler() {
@@ -124,24 +126,33 @@
public void notify(final Job job) {
if ( job.getExpression().evaluate() ) {
- if ( !job.repeat() ) {
- jobs.remove(job);
- if ( job.isPersistent() ) {
- saveJobs();
- }
+ job.launch();
+ jobs.remove(job);
+ if ( job.repeat() ) {
+ activateJob(job.getDefinition());
}
- job.launch();
}
- }
-
- public void activateJob(Job job) {
- job.getExpression().activate(job);
if ( job.isPersistent() ) {
- saveJobs();
+ saveJobs();
}
+ }
+
+ public void registerJobDefinition(JobDefinition jobDefinition) {
+ if ( jobDefinition.isPersistent() ) {
+ jobDefinitions.add(jobDefinition);
+ saveJobDefinitions();
+ }
+ activateJob(jobDefinition);
+ }
+
+ public void activateJob(JobDefinition jobDefinition) {
+ Job job = new Job(jobDefinition);
synchronized ( jobs ) {
jobs.add(job);
}
+ if ( job.isPersistent() ) {
+ saveJobs();
+ }
}
public static void setContext(Context context) {
@@ -155,7 +166,10 @@
return (Context)threadContext.get();
}
- public void saveJobs() {
+ public void saveJobDefinitions() {
+ }
+
+ public void saveJobs() {
XMLStringWriter writer = XMLStringWriter.create();
writer.writeXMLDeclaration();
writer.writeStartTag(XMLWriter.createStartTag("jobs"));
1.2 +13 -7 jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/engine/Job.java
Index: Job.java
===================================================================
RCS file: /home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/engine/Job.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Job.java 7 Jun 2004 17:21:53 -0000 1.1
+++ Job.java 8 Jun 2004 09:48:24 -0000 1.2
@@ -37,14 +37,16 @@
private URI processorUri;
private Map parameter;
private boolean repeat, persistent;
-
- public Job(Expression expression, URI processorUri, Map parameter, boolean repeat, boolean persistent) {
- this.expression = expression;
- this.processorUri = processorUri;
+ private JobDefinition definition;
+
+ public Job(JobDefinition definition) {
+ this.definition = definition;
+ this.expression = definition.getExpression().activate(this);
+ this.processorUri = definition.getProcessorUri();
this.parameter = new HashMap();
- this.parameter.putAll(parameter);
- this.repeat = repeat;
- this.persistent = persistent;
+ this.parameter.putAll(definition.getParameter());
+ this.repeat = definition.repeat();
+ this.persistent = definition.isPersistent();
}
public Expression getExpression() {
@@ -65,6 +67,10 @@
public boolean isPersistent() {
return persistent;
+ }
+
+ public JobDefinition getDefinition() {
+ return definition;
}
public void run() {
1.1 jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/engine/JobDefinition.java
Index: JobDefinition.java
===================================================================
/*
*
* ====================================================================
*
* Copyright 2004 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package org.apache.slide.projector.engine;
import java.util.Map;
import java.util.logging.Logger;
import org.apache.slide.projector.URI;
import org.apache.slide.projector.expression.Expression;
public class JobDefinition {
private final static Logger logger = Logger.getLogger(JobDefinition.class.getName());
private Expression expression;
private URI processorUri;
private Map parameter;
private boolean repeat, persistent;
public JobDefinition(Expression expression, URI processorUri, Map parameter, boolean repeat, boolean persistent) {
this.expression = expression;
this.processorUri = processorUri;
this.parameter = parameter;
this.repeat = repeat;
this.persistent = persistent;
}
public Expression getExpression() {
return expression;
}
public URI getProcessorUri() {
return processorUri;
}
public Map getParameter() {
return parameter;
}
public boolean repeat() {
return repeat;
}
public boolean isPersistent() {
return persistent;
}
}
1.2 +3 -2 jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/core/Thread.java
Index: Thread.java
===================================================================
RCS file: /home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/core/Thread.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Thread.java 8 Jun 2004 09:10:53 -0000 1.1
+++ Thread.java 8 Jun 2004 09:48:24 -0000 1.2
@@ -33,6 +33,7 @@
import org.apache.slide.projector.descriptor.URIValueDescriptor;
import org.apache.slide.projector.descriptor.XMLValueDescriptor;
import org.apache.slide.projector.engine.Job;
+import org.apache.slide.projector.engine.JobDefinition;
import org.apache.slide.projector.engine.ProcessorManager;
import org.apache.slide.projector.engine.Scheduler;
import org.apache.slide.projector.expression.Expression;
@@ -76,8 +77,8 @@
Expression expression = ExpressionFactory.create(condition.getRootElement());
Processor jobProcessor = ProcessorManager.getInstance().getProcessor(jobUri);
ProcessorHelper.validate(jobProcessor.getParameterDescriptors(), jobParameters, context);
- Job job = new Job(expression, jobUri, jobParameters, repeatJob, persistentJob);
- Scheduler.getInstance().activateJob(job);
+ JobDefinition jobDefinition = new JobDefinition(expression, jobUri, jobParameters, repeatJob, persistentJob);
+ Scheduler.getInstance().registerJobDefinition(jobDefinition);
return Result.OK;
}
1.2 +3 -3 jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/core/CachedContent.java
Index: CachedContent.java
===================================================================
RCS file: /home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/core/CachedContent.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- CachedContent.java 8 Jun 2004 09:10:53 -0000 1.1
+++ CachedContent.java 8 Jun 2004 09:48:24 -0000 1.2
@@ -3,7 +3,7 @@
import org.apache.slide.projector.*;
import org.apache.slide.projector.connector.ConnectorFactory;
import org.apache.slide.projector.descriptor.*;
-import org.apache.slide.projector.engine.Job;
+import org.apache.slide.projector.engine.JobDefinition;
import org.apache.slide.projector.engine.ProcessorManager;
import org.apache.slide.projector.engine.Scheduler;
import org.apache.slide.projector.expression.EventExpression;
@@ -49,7 +49,7 @@
EventExpression expression = new EventExpression("Update");
expression.addProperty(EventExpression.DEPTH, "0");
expression.addProperty(EventExpression.URI, uri.toString());
- Scheduler.getInstance().activateJob(new Job(expression, new URIValue("dispose"), jobParameter, false, false));
+ Scheduler.getInstance().registerJobDefinition(new JobDefinition(expression, new URIValue("dispose"), jobParameter, false, false));
}
resultEntries.put(SimpleProcessor.OUTPUT, output);
// build url to activate this processor on top level
---------------------------------------------------------------------
To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org