cvs commit: cocoon-2.1/src/java/org/apache/cocoon/components/flow/javascript/fom FOM_Cocoon.java FOM_JavaScriptInterpreter.java

2004-01-19 Thread coliver
coliver 2004/01/19 09:53:38

  Modified:src/java/org/apache/cocoon/components/flow/javascript/fom
FOM_Cocoon.java FOM_JavaScriptInterpreter.java
  Log:
  Made FOM_Cocoon reentrant to support e.g. aggregation. This should also fix 
bugzilla 25951
  
  Revision  ChangesPath
  1.25  +177 -131  
cocoon-2.1/src/java/org/apache/cocoon/components/flow/javascript/fom/FOM_Cocoon.java
  
  Index: FOM_Cocoon.java
  ===
  RCS file: 
/home/cvs/cocoon-2.1/src/java/org/apache/cocoon/components/flow/javascript/fom/FOM_Cocoon.java,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- FOM_Cocoon.java   13 Jan 2004 01:40:46 -  1.24
  +++ FOM_Cocoon.java   19 Jan 2004 17:53:38 -  1.25
  @@ -100,24 +100,111 @@
*/
   public class FOM_Cocoon extends ScriptableObject {
   
  -private Context avalonContext;
  +class CallContext {
  +CallContext caller;
  +Context avalonContext;
  +ServiceManager serviceManager;
  +FOM_JavaScriptInterpreter interpreter;
  +Environment environment;
  +ComponentManager componentManager;
  +Logger logger;
  +FOM_Request request;
  +FOM_Response response;
  +FOM_Session session;
  +FOM_Context context;
  +Scriptable parameters;
  +FOM_Log log;
  +WebContinuation lastContinuation;
  +
  +public CallContext(CallContext caller,
  +   FOM_JavaScriptInterpreter interp,
  +   Environment env,
  +   ComponentManager manager,
  +   ServiceManager serviceManager,
  +   Context avalonContext,
  +   Logger logger,
  +   WebContinuation lastContinuation) {
  +this.caller = caller;
  +this.interpreter = interp;
  +this.environment = env;
  +this.componentManager = manager;
  +this.serviceManager = serviceManager;
  +this.avalonContext = avalonContext;
  +this.logger = logger;
  +this.lastContinuation = lastContinuation;
  +}
  +
  +public FOM_Session getSession() {
  +if (session != null) {
  +return session;
  +}
  +Map objectModel = environment.getObjectModel();
  +session =
  +new 
FOM_Session(ObjectModelHelper.getRequest(objectModel).getSession(true));
  +session.setParentScope(getParentScope());
  +session.setPrototype(getClassPrototype(getParentScope(),
  +   FOM_Session));
  +return session;
  +}
  +
  +public FOM_Request getRequest() {
  +if (request != null) {
  +return request;
  +}
  +Map objectModel = environment.getObjectModel();
  +request = new 
FOM_Request(ObjectModelHelper.getRequest(objectModel));
  +request.setParentScope(getParentScope());
  +request.setPrototype(getClassPrototype(getParentScope(), 
  +   FOM_Request));
  +return request;
  +}
   
  -private ServiceManager serviceManager;
  +public FOM_Context getContext() {
  +if (context != null) {
  +return context;
  +}
  +Map objectModel = getEnvironment().getObjectModel();
  +context =
  +new FOM_Context(ObjectModelHelper.getContext(objectModel));
  +context.setParentScope(getParentScope());
  +context.setPrototype(getClassPrototype(getParentScope(), 
  +   FOM_Context));
  +return context;
  +}
   
  -private FOM_JavaScriptInterpreter interpreter;
  +public FOM_Response getResponse() {
  +if (response != null) {
  +return response;
  +}
  +Map objectModel = environment.getObjectModel();
  +response =
  +new FOM_Response(ObjectModelHelper.getResponse(objectModel));
  +response.setParentScope(getParentScope());
  +response.setPrototype(getClassPrototype(getParentScope(), 
  +FOM_Response));
  +return response;
  +}
  +
  +public FOM_Log getLog() {
  +if (log != null) {
  +return log;
  +}
  +log = new FOM_Log(logger);
  +log.setParentScope(getParentScope());
  +log.setPrototype(getClassPrototype(getParentScope(), FOM_Log));
  +return log;
  +}
   
  -private Environment 

cvs commit: cocoon-2.1/src/java/org/apache/cocoon/components/flow/javascript/fom FOM_Cocoon.java FOM_JavaScriptInterpreter.java

2003-11-20 Thread sylvain
sylvain 2003/11/20 07:31:29

  Modified:src/java/org/apache/cocoon/components/flow
AbstractInterpreter.java
   src/java/org/apache/cocoon/components/flow/javascript/fom
FOM_Cocoon.java FOM_JavaScriptInterpreter.java
  Log:
  Adding cocoon.setup() to setup java objects using IOC style
  
  Revision  ChangesPath
  1.11  +19 -3 
cocoon-2.1/src/java/org/apache/cocoon/components/flow/AbstractInterpreter.java
  
  Index: AbstractInterpreter.java
  ===
  RCS file: 
/home/cvs/cocoon-2.1/src/java/org/apache/cocoon/components/flow/AbstractInterpreter.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- AbstractInterpreter.java  15 Oct 2003 17:02:05 -  1.10
  +++ AbstractInterpreter.java  20 Nov 2003 15:31:29 -  1.11
  @@ -56,6 +56,9 @@
   import org.apache.avalon.framework.context.ContextException;
   import org.apache.avalon.framework.context.Contextualizable;
   import org.apache.avalon.framework.logger.AbstractLogEnabled;
  +import org.apache.avalon.framework.service.ServiceException;
  +import org.apache.avalon.framework.service.ServiceManager;
  +import org.apache.avalon.framework.service.Serviceable;
   import org.apache.avalon.framework.thread.SingleThreaded;
   import org.apache.cocoon.Constants;
   import org.apache.cocoon.Processor;
  @@ -82,9 +85,11 @@
* @version CVS $Id$
*/
   public abstract class AbstractInterpreter extends AbstractLogEnabled
  -  implements Component, Composable, Contextualizable, Interpreter,
  +  implements Component, Composable, Serviceable, Contextualizable, 
Interpreter,
SingleThreaded, Configurable, Disposable
   {
  +protected org.apache.avalon.framework.context.Context avalonContext;
  +
   /**
* List of source locations that need to be resolved.
*/
  @@ -92,6 +97,7 @@
   
   protected org.apache.cocoon.environment.Context context;
   protected ComponentManager manager;
  +protected ServiceManager serviceManager;
   protected ContinuationsManager continuationsMgr;
   
   /**
  @@ -116,11 +122,21 @@
*/
   public void compose(ComponentManager manager) throws ComponentException {
   this.manager = manager;
  -this.continuationsMgr = 
(ContinuationsManager)manager.lookup(ContinuationsManager.ROLE);
  +//mpved below in service()
  +//this.continuationsMgr = 
(ContinuationsManager)manager.lookup(ContinuationsManager.ROLE);
  +}
  +
  +/**
  + * Serviceable
  + */
  +public void service(ServiceManager sm) throws ServiceException {
  +this.serviceManager = sm;
  +this.continuationsMgr = 
(ContinuationsManager)sm.lookup(ContinuationsManager.ROLE);
   }
   
   public void contextualize(org.apache.avalon.framework.context.Context 
context)
   throws ContextException{
  +this.avalonContext = context;
   this.context = 
(Context)context.get(Constants.CONTEXT_ENVIRONMENT_CONTEXT);
   }
   
  
  
  
  1.18  +42 -3 
cocoon-2.1/src/java/org/apache/cocoon/components/flow/javascript/fom/FOM_Cocoon.java
  
  Index: FOM_Cocoon.java
  ===
  RCS file: 
/home/cvs/cocoon-2.1/src/java/org/apache/cocoon/components/flow/javascript/fom/FOM_Cocoon.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- FOM_Cocoon.java   14 Nov 2003 18:58:18 -  1.17
  +++ FOM_Cocoon.java   20 Nov 2003 15:31:29 -  1.18
  @@ -62,6 +62,8 @@
   import org.apache.avalon.framework.component.Component;
   import org.apache.avalon.framework.component.ComponentManager;
   import org.apache.avalon.framework.logger.Logger;
  +import org.apache.avalon.framework.service.ServiceManager;
  +import org.apache.cocoon.components.LifecycleHelper;
   import org.apache.cocoon.components.flow.ContinuationsManager;
   import org.apache.cocoon.components.flow.WebContinuation;
   import org.apache.cocoon.components.flow.Interpreter.Argument;
  @@ -92,6 +94,10 @@
*/
   public class FOM_Cocoon extends ScriptableObject {
   
  +private org.apache.avalon.framework.context.Context avalonContext;
  +
  +private ServiceManager serviceManager;
  +
   private FOM_JavaScriptInterpreter interpreter;
   
   private Environment environment;
  @@ -126,10 +132,14 @@
   void setup(FOM_JavaScriptInterpreter interp,
  Environment env, 
  ComponentManager manager,
  +   ServiceManager serviceManager,
  +   org.apache.avalon.framework.context.Context avalonContext,
  Logger logger) {
   this.interpreter = interp;
   this.environment = env;
   this.componentManager = manager;
  +this.serviceManager = serviceManager;
  +this.avalonContext =