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