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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to