[prev in list] [next in list] [prev in thread] [next in thread] 

List:       slide-dev
Subject:    cvs commit: jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/tree Tre
From:       dflorey () apache ! org
Date:       2004-06-29 15:12:00
Message-ID: 20040629151200.83455.qmail () minotaur ! apache ! org
[Download RAW message or body]

dflorey     2004/06/29 08:12:00

  Modified:    proposals/projector/src/java/org/apache/slide/projector/engine
                        ProcessServlet.java Scheduler.java
               proposals/projector/src/java/org/apache/slide/projector/processor/resolver
  LocaleResolver.java
               proposals/projector/src/java/org/apache/slide/projector/processor/tree
                        TreeLocalizer.java
  Added:       proposals/projector/src/java/org/apache/slide/projector/engine
                        SessionListener.java
  Log:
  Introduced jobs that are triggered via session creation/request
  
  Revision  Changes    Path
  1.10      +8 -0      \
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/engine/ProcessServlet.java
  
  Index: ProcessServlet.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/engine/ProcessServlet.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- ProcessServlet.java	8 Jun 2004 09:10:53 -0000	1.9
  +++ ProcessServlet.java	29 Jun 2004 15:11:59 -0000	1.10
  @@ -17,6 +17,8 @@
   import javax.servlet.http.HttpServlet;
   import javax.servlet.http.HttpServletRequest;
   import javax.servlet.http.HttpServletResponse;
  +import javax.servlet.http.HttpSession;
  +
   import java.io.IOException;
   import java.util.HashMap;
   import java.util.Map;
  @@ -32,6 +34,7 @@
       
       public void service(HttpServletRequest request, HttpServletResponse response) \
throws ServletException, IOException {  ApplicationManager.getInstance();
  +    	boolean sessionCreated = request.getSession(false) == null;
       	Context context = new HttpContext(request, response);
           logger.log(Level.INFO, "Request uri=" + request.getRequestURI());
           logger.log(Level.INFO, "Context path=" + request.getContextPath());
  @@ -55,6 +58,11 @@
                   processor = ProcessorManager.getInstance().getProcessor(uri);
                   Scheduler.getInstance();
                   Scheduler.setContext(context);
  +            	if ( sessionCreated ) {
  +            		// new session
  +                    Scheduler.getInstance().launchSessionJobs(context);
  +            	}
  +                Scheduler.getInstance().launchRequestJobs(context);
                   if ( \
ProcessorManager.getInstance().getProcessorDescriptor(uri).isBookmark() ) {  \
context.setBookmark(uri);  }
  
  
  
  1.11      +41 -10    \
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.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- Scheduler.java	10 Jun 2004 16:14:12 -0000	1.10
  +++ Scheduler.java	29 Jun 2004 15:11:59 -0000	1.11
  @@ -28,6 +28,9 @@
       public final static String JOBS = "jobs.xml";
       public final static String JOB_DEFINITIONS = "jobDefinitions.xml";
   
  +    private final static String STARTUP = "startup";
  +    private final static String SESSION = "session";
  +    private final static String REQUEST = "request";
       private final static String STARTUP_IDENTIFIER = "startup:";
   
       private final Context context = new SystemContext();
  @@ -37,6 +40,8 @@
       private static Timer timer = new Timer();
   
       private List jobs = new ArrayList();
  +	private List sessionJobs = new ArrayList();
  +	private List requestJobs = new ArrayList();
       private List restoredJobs = new ArrayList();
       private List installedJobNames = new ArrayList();
   
  @@ -78,28 +83,32 @@
       			Document document = documentResource.getDocument();
       			Element rootElement = document.getRootElement();
       			List jobElements = XPath.newInstance("/jobs/job").selectNodes(rootElement);
  -    			List configuredJobs = new ArrayList();
  +    			List startupJobs = new ArrayList();
       			for ( Iterator i = jobElements.iterator(); i.hasNext(); ) {
       				Element jobElement = (Element)i.next();
       				Step job = new Step();
       				job.configure(jobElement);
  -    				if ( !installedJobNames.contains(STARTUP_IDENTIFIER+job.getName()) ) {
  -    					configuredJobs.add(job);
  -    					installedJobNames.add(job.getName());
  +    				String trigger = jobElement.getAttributeValue("trigger");
  +    				if ( trigger == null || trigger.equals(STARTUP) ) {
  +    					if ( !installedJobNames.contains(STARTUP_IDENTIFIER+job.getName()) ) {
  +    						startupJobs.add(job);
  +    						installedJobNames.add(job.getName());
  +    					}
  +    				} else if ( trigger.equals(REQUEST) ) {
  +    					requestJobs.add(job);
  +    				} else if ( trigger.equals(SESSION) ) {
  +    					sessionJobs.add(job);
       				}
       			}
       			// Note: starting jobs after reading all, to avoid writing to configuration \
                files while reading...
  -    			for ( Iterator i = configuredJobs.iterator(); i.hasNext(); ) { 
  +    			for ( Iterator i = startupJobs.iterator(); i.hasNext(); ) { 
       				Step job = (Step)i.next();
       				if ( job.getName().startsWith(STARTUP_IDENTIFIER) ) {
       					context.setStep(job.getName());
       				} else {
       					context.setStep(STARTUP_IDENTIFIER+job.getName());
       				}
  -    				Processor processor = \
                ProcessorManager.getInstance().getProcessor(job.getProcessorURI());
  -    				Map processorParameters = Process.loadParameters(job, processor, new \
                HashMap(), null, context);
  -    				ProcessorHelper.validate(processor.getParameterDescriptors(), \
                processorParameters, context);
  -    				processor.process(processorParameters, context);
  +    				launchJob(job, context);
       				if ( !restoreRunningJobs ) {
       					ConnectorFactory.getConnector().subscribe("Update", new \
                URIValue(Constants.REPOSITORY_DOMAIN+jobsUri),
       							0, Constants.SUBSCRIPTION_LIFETIME, Constants.NOTIFICATION_DELAY,
  @@ -136,7 +145,29 @@
   		install(jobsUri, true);
   	}	
   	
  -    /**
  +	public void launchSessionJobs(Context context) throws Exception {
  +		for ( Iterator i = sessionJobs.iterator(); i.hasNext(); ) {
  +			Step job = (Step)i.next();
  +			launchJob(job, context);
  +		}
  +	}
  +	
  +	public void launchRequestJobs(Context context) throws Exception {
  +		for ( Iterator i = requestJobs.iterator(); i.hasNext(); ) {
  +			Step job = (Step)i.next();
  +			launchJob(job, context);
  +		}
  +	}
  +	
  +	private void launchJob(Step job, Context context) throws Exception {
  +        logger.log(Level.INFO, "Launching job: '"+job.getName()+"'");
  +		Processor processor = \
ProcessorManager.getInstance().getProcessor(job.getProcessorURI());  +		Map \
processorParameters = Process.loadParameters(job, processor, new HashMap(), null, \
context);  +		ProcessorHelper.validate(processor.getParameterDescriptors(), \
processorParameters, context);  +		processor.process(processorParameters, context);
  +	}
  +
  +	/**
   	 * @return Returns the timer.
   	 */
   	public static Timer getTimer() {
  
  
  
  1.1                  \
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/engine/SessionListener.java
  
  Index: SessionListener.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.logging.Level;
  import java.util.logging.Logger;
  
  import javax.servlet.http.HttpSessionEvent;
  import javax.servlet.http.HttpSessionListener;
  
  public class SessionListener implements HttpSessionListener {
  	private final static Logger logger = \
Logger.getLogger(SessionListener.class.getName());  
  	public void sessionCreated(HttpSessionEvent sessionEvent) {
  	}
  
  	public void sessionDestroyed(HttpSessionEvent sessionEvent) {
  	}
  }
  
  
  
  1.3       +2 -4      \
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/resolver/LocaleResolver.java
  
  Index: LocaleResolver.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/resolver/LocaleResolver.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- LocaleResolver.java	1 Jun 2004 07:49:58 -0000	1.2
  +++ LocaleResolver.java	29 Jun 2004 15:12:00 -0000	1.3
  @@ -18,9 +18,7 @@
    * @version $Revision$
    */
   public class LocaleResolver extends SimpleProcessor {
  -    public final static String LOCALE = "locale";
  -
  -    private final static ParameterDescriptor parameterDescriptor = new \
ParameterDescriptor(LOCALE, new ParameterMessage("localeResolver/locale"), new \
StringValueDescriptor(), new StringValue(Locale.getDefault().toString()));  +    \
private final static ParameterDescriptor parameterDescriptor = new \
ParameterDescriptor(INPUT, new ParameterMessage("localeResolver/locale"), new \
StringValueDescriptor(), new StringValue(Locale.getDefault().toString()));  private \
final static ResultEntryDescriptor resultEntryDescriptor =  new \
ResultEntryDescriptor(SimpleProcessor.OUTPUT, new \
DefaultMessage("locale/result/output"), LocaleValue.CONTENT_TYPE, false);  
       public Value process(Value input, Context context) throws Exception {
  
  
  
  1.5       +16 -7     \
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/tree/TreeLocalizer.java
  
  Index: TreeLocalizer.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/tree/TreeLocalizer.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- TreeLocalizer.java	17 Jun 2004 14:54:57 -0000	1.4
  +++ TreeLocalizer.java	29 Jun 2004 15:12:00 -0000	1.5
  @@ -24,9 +24,11 @@
   package org.apache.slide.projector.processor.tree;
   
   import org.apache.slide.projector.Context;
  +import org.apache.slide.projector.EnvironmentConsumer;
   import org.apache.slide.projector.ProcessException;
   import org.apache.slide.projector.Processor;
   import org.apache.slide.projector.Result;
  +import org.apache.slide.projector.Store;
   import org.apache.slide.projector.processor.SimpleProcessor;
   import org.apache.slide.projector.descriptor.*;
   import org.apache.slide.projector.engine.ProcessorManager;
  @@ -49,7 +51,7 @@
    * 
    * @author <a href="mailto:dflorey@c1-fse.de">Daniel Florey</a>
    */
  -public class TreeLocalizer implements Processor {
  +public class TreeLocalizer implements Processor, EnvironmentConsumer  {
       private static Logger logger = \
Logger.getLogger(TreeLocalizer.class.getName());  
       public final static String LOCALE = "locale";
  @@ -57,8 +59,7 @@
       protected final static String IMAGE_IDENTIFIER = "image";
   
       private final static ParameterDescriptor[] parameterDescriptors = new \
                ParameterDescriptor[] {
  -        new ParameterDescriptor(SimpleProcessor.INPUT, new \
ParameterMessage("treeLocalizer/input"), new TreeValueDescriptor(new \
                StringValueDescriptor())),
  -        new ParameterDescriptor(LOCALE, new \
ParameterMessage("treeLocalizer/locale"), new LocaleValueDescriptor())  +        new \
ParameterDescriptor(SimpleProcessor.INPUT, new \
ParameterMessage("treeLocalizer/input"), new TreeValueDescriptor(new \
StringValueDescriptor()))  };
       private final static ResultDescriptor resultDescriptor = new ResultDescriptor(
               new StateDescriptor[] { StateDescriptor.OK_DESCRIPTOR },
  @@ -66,9 +67,13 @@
                   new ResultEntryDescriptor(SimpleProcessor.OUTPUT, new \
DefaultMessage("treeLocalizer/output"), ArrayValue.CONTENT_TYPE, false)  });
   
  +    private final static RequiredEnvironmentDescriptor[] \
requiredEnvironmentDescriptors = new RequiredEnvironmentDescriptor[] {  +    		new \
RequiredEnvironmentDescriptor(LOCALE, Store.SESSION, new \
DefaultMessage("treeLocalized/requiredEnvironment/locale"), new \
LocaleValueDescriptor(), new LocaleValue(Locale.getDefault()))  +    };
  +
       public Result process(Map parameter, Context context) throws Exception {
           Value []resources = \
                ((ArrayValue)parameter.get(SimpleProcessor.INPUT)).getArray();
  -        Locale locale = (((LocaleValue)parameter.get(LOCALE)).getLocale());
  +        Locale locale = \
                ((LocaleValue)context.getStore(Store.SESSION).get(LOCALE)).getLocale();
                
           return new Result(StateDescriptor.OK, SimpleProcessor.OUTPUT, \
localize(resources, locale, context));  }
   
  @@ -110,4 +115,8 @@
       public ResultDescriptor getResultDescriptor() {
           return resultDescriptor;
       }
  +
  +    public RequiredEnvironmentDescriptor[] getRequiredEnvironmentDescriptors() {
  +		return requiredEnvironmentDescriptors;
  +	}
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic