[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