You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by lg...@apache.org on 2004/11/21 15:20:14 UTC

svn commit: r106091 - /cocoon/trunk/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/ApplesProcessor.java /cocoon/trunk/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/StatelessAppleController.java /cocoon/trunk/src/blocks/javaflow/java/org/apache/cocoon/components/flow/java/JavaInterpreter.java /cocoon/trunk/src/blocks/javaflow/java/org/apache/cocoon/components/flow/javascript/JavaScriptInterpreter.java /cocoon/trunk/src/blocks/scratchpad/java/org/apache/cocoon/components/flow/groovy/GroovyInterpreter.java /cocoon/trunk/src/blocks/scratchpad/java/org/apache/cocoon/components/flow/javascript/fom/AO_FOM_Cocoon.java /cocoon/trunk/src/blocks/scratchpad/java/org/apache/cocoon/components/flow/javascript/fom/AO_FOM_JavaScriptInterpreter.java /cocoon/trunk/src/java/org/apache/cocoon/components/flow/AbstractInterpreter.java /cocoon/trunk/src/java/org/apache/cocoon/components/flow/ContinuationsManager.java /cocoon/trunk/src/java/org/apache/cocoon/components/flow/ContinuationsManagerImpl.java /cocoon/trunk/src/java/org/apache/cocoon/components/flow/Interpreter.java /cocoon/trunk/src/java/org/apache/cocoon/components/flow/WebContinuation.java /cocoon/trunk/src/java/org/apache/cocoon/components/flow/javascript/fom/FOM_Cocoon.java /cocoon/trunk/src/java/org/apache/cocoon/components/flow/javascript/fom/FOM_JavaScriptInterpreter.java /cocoon/trunk/src/java/org/apache/cocoon/components/flow/javascript/fom/FOM_WebContinuation.java /cocoon/trunk/status.xml

Author: lgawron
Date: Sun Nov 21 06:20:13 2004
New Revision: 106091

Modified:
   cocoon/trunk/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/ApplesProcessor.java
   cocoon/trunk/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/StatelessAppleController.java
   cocoon/trunk/src/blocks/javaflow/java/org/apache/cocoon/components/flow/java/JavaInterpreter.java
   cocoon/trunk/src/blocks/javaflow/java/org/apache/cocoon/components/flow/javascript/JavaScriptInterpreter.java
   cocoon/trunk/src/blocks/scratchpad/java/org/apache/cocoon/components/flow/groovy/GroovyInterpreter.java
   cocoon/trunk/src/blocks/scratchpad/java/org/apache/cocoon/components/flow/javascript/fom/AO_FOM_Cocoon.java
   cocoon/trunk/src/blocks/scratchpad/java/org/apache/cocoon/components/flow/javascript/fom/AO_FOM_JavaScriptInterpreter.java
   cocoon/trunk/src/java/org/apache/cocoon/components/flow/AbstractInterpreter.java
   cocoon/trunk/src/java/org/apache/cocoon/components/flow/ContinuationsManager.java
   cocoon/trunk/src/java/org/apache/cocoon/components/flow/ContinuationsManagerImpl.java
   cocoon/trunk/src/java/org/apache/cocoon/components/flow/Interpreter.java
   cocoon/trunk/src/java/org/apache/cocoon/components/flow/WebContinuation.java
   cocoon/trunk/src/java/org/apache/cocoon/components/flow/javascript/fom/FOM_Cocoon.java
   cocoon/trunk/src/java/org/apache/cocoon/components/flow/javascript/fom/FOM_JavaScriptInterpreter.java
   cocoon/trunk/src/java/org/apache/cocoon/components/flow/javascript/fom/FOM_WebContinuation.java
   cocoon/trunk/status.xml
Log:
Fix: Continuation can only be invoked for the interpreter it was originally created for
- o.a.c.components.flow.ContinuationsManager interface change. Interpreter id has to be passed
  to create a continuation and lookup one. 
- o.a.c.components.flow.ContinuationManagerImpl returns null if interpreter does not match during lookup.
- o.a.c.components.flow.Interpreter interface extended with setInterpreterID method. 
- all current interpreters updated to match new contracts

Modified: cocoon/trunk/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/ApplesProcessor.java
==============================================================================
--- cocoon/trunk/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/ApplesProcessor.java	(original)
+++ cocoon/trunk/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/ApplesProcessor.java	Sun Nov 21 06:20:13 2004
@@ -52,7 +52,8 @@
 
         WebContinuation wk = null;
         if (!(app instanceof StatelessAppleController)) {
-            wk = this.continuationsMgr.createWebContinuation(app, null, 0, this);
+            wk = this.continuationsMgr.createWebContinuation(app, null, 0,
+                    getInterpreterID(), this);
             if (getLogger().isDebugEnabled())
                 getLogger().debug("Instantiated a stateful apple, continuationid = " + wk.getId());
         }
@@ -79,7 +80,7 @@
         throws Exception {
 
         WebContinuation wk =
-            this.continuationsMgr.lookupWebContinuation(continuationId);
+            this.continuationsMgr.lookupWebContinuation(continuationId, getInterpreterID());
         if (wk == null) {
             // Throw an InvalidContinuationException to be handled inside the
             // <map:handle-errors> sitemap element.

Modified: cocoon/trunk/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/StatelessAppleController.java
==============================================================================
--- cocoon/trunk/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/StatelessAppleController.java	(original)
+++ cocoon/trunk/src/blocks/apples/java/org/apache/cocoon/components/flow/apples/StatelessAppleController.java	Sun Nov 21 06:20:13 2004
@@ -1,3 +1,19 @@
+/*
+ * Copyright 1999-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.cocoon.components.flow.apples;
 
 /**

Modified: cocoon/trunk/src/blocks/javaflow/java/org/apache/cocoon/components/flow/java/JavaInterpreter.java
==============================================================================
--- cocoon/trunk/src/blocks/javaflow/java/org/apache/cocoon/components/flow/java/JavaInterpreter.java	(original)
+++ cocoon/trunk/src/blocks/javaflow/java/org/apache/cocoon/components/flow/java/JavaInterpreter.java	Sun Nov 21 06:20:13 2004
@@ -175,7 +175,8 @@
 
         Continuation continuation = new Continuation(context);
 
-        WebContinuation wk = continuationsMgr.createWebContinuation(continuation, null, timeToLive, null);
+        WebContinuation wk = continuationsMgr.createWebContinuation(
+                continuation, null, timeToLive, getInterpreterID(), null);
         FlowHelper.setWebContinuation(ContextHelper.getObjectModel(this.avalonContext), wk);
 
         continuation.registerThread();
@@ -218,7 +219,7 @@
         if (!initialized)
             initialize();
 
-        WebContinuation parentwk = continuationsMgr.lookupWebContinuation(id);
+        WebContinuation parentwk = continuationsMgr.lookupWebContinuation(id, getInterpreterID());
 
         if (parentwk == null) {
         /*
@@ -252,7 +253,8 @@
         ContinuationCapable flow = (ContinuationCapable) context.getObject();
         Method method = context.getMethod();
 
-        WebContinuation wk = continuationsMgr.createWebContinuation(continuation, parentwk, timeToLive, null);
+        WebContinuation wk = continuationsMgr.createWebContinuation(
+                continuation, parentwk, timeToLive, getInterpreterID(), null);
         FlowHelper.setWebContinuation(ContextHelper.getObjectModel(this.avalonContext), wk);
 
         continuation.registerThread();

Modified: cocoon/trunk/src/blocks/javaflow/java/org/apache/cocoon/components/flow/javascript/JavaScriptInterpreter.java
==============================================================================
--- cocoon/trunk/src/blocks/javaflow/java/org/apache/cocoon/components/flow/javascript/JavaScriptInterpreter.java	(original)
+++ cocoon/trunk/src/blocks/javaflow/java/org/apache/cocoon/components/flow/javascript/JavaScriptInterpreter.java	Sun Nov 21 06:20:13 2004
@@ -127,7 +127,8 @@
 
         Continuation continuation = new Continuation(context);
 
-        WebContinuation wk = continuationsMgr.createWebContinuation(continuation, null, timeToLive, null);
+        WebContinuation wk = continuationsMgr.createWebContinuation(continuation, null, timeToLive, 
+                                                                    getInterpreterID(), null);
         FlowHelper.setWebContinuation(ContextHelper.getObjectModel(this.avalonContext), wk);
 
         continuation.registerThread();
@@ -155,7 +156,7 @@
 
     public void handleContinuation(String id, List params, Redirector redirector) throws Exception {
 
-        WebContinuation parentwk = continuationsMgr.lookupWebContinuation(id);
+        WebContinuation parentwk = continuationsMgr.lookupWebContinuation(id, getInterpreterID());
 
         if (parentwk == null) {
         /*
@@ -187,7 +188,8 @@
 
         ScriptHelper flow = (ScriptHelper) context.getObject();
 
-        WebContinuation wk = continuationsMgr.createWebContinuation(continuation, parentwk, timeToLive, null);
+        WebContinuation wk = continuationsMgr.createWebContinuation(continuation, parentwk, timeToLive, 
+                                                                    getInterpreterID(), null);
         FlowHelper.setWebContinuation(ContextHelper.getObjectModel(this.avalonContext), wk);
 
         continuation.registerThread();

Modified: cocoon/trunk/src/blocks/scratchpad/java/org/apache/cocoon/components/flow/groovy/GroovyInterpreter.java
==============================================================================
--- cocoon/trunk/src/blocks/scratchpad/java/org/apache/cocoon/components/flow/groovy/GroovyInterpreter.java	(original)
+++ cocoon/trunk/src/blocks/scratchpad/java/org/apache/cocoon/components/flow/groovy/GroovyInterpreter.java	Sun Nov 21 06:20:13 2004
@@ -45,7 +45,7 @@
 /**
  * Implementation of the groovy flow interpreter.
  *
- * @version CVS $Id: GroovyInterpreter.java,v 1.1 2004/06/07 01:04:18 antonio Exp $
+ * @version CVS $Id$
  */
 public class GroovyInterpreter extends AbstractInterpreter implements Configurable {
 
@@ -172,7 +172,8 @@
 
         Continuation continuation = new Continuation(context);
 
-        WebContinuation wk = continuationsMgr.createWebContinuation(continuation, null, timeToLive, null);
+        WebContinuation wk = continuationsMgr.createWebContinuation(continuation, null, timeToLive, 
+                                                                    getInterpreterID(), null);
         FlowHelper.setWebContinuation(ContextHelper.getObjectModel(this.avalonContext), wk);
 
         continuation.registerThread();
@@ -215,7 +216,7 @@
         if (!initialized) {
             initialize();
         }
-        WebContinuation parentwk = continuationsMgr.lookupWebContinuation(id);
+        WebContinuation parentwk = continuationsMgr.lookupWebContinuation(id, getInterpreterID());
         if (parentwk == null) {
         /*
          * Throw an InvalidContinuationException to be handled inside the
@@ -241,7 +242,8 @@
         Continuable flow = (Continuable) context.getObject();
         Method method = context.getMethod();
 
-        WebContinuation wk = continuationsMgr.createWebContinuation(continuation, parentwk, timeToLive, null);
+        WebContinuation wk = continuationsMgr.createWebContinuation(continuation, parentwk, timeToLive, 
+                                                                    getInterpreterID(), null);
         FlowHelper.setWebContinuation(ContextHelper.getObjectModel(this.avalonContext), wk);
 
         continuation.registerThread();

Modified: cocoon/trunk/src/blocks/scratchpad/java/org/apache/cocoon/components/flow/javascript/fom/AO_FOM_Cocoon.java
==============================================================================
--- cocoon/trunk/src/blocks/scratchpad/java/org/apache/cocoon/components/flow/javascript/fom/AO_FOM_Cocoon.java	(original)
+++ cocoon/trunk/src/blocks/scratchpad/java/org/apache/cocoon/components/flow/javascript/fom/AO_FOM_Cocoon.java	Sun Nov 21 06:20:13 2004
@@ -124,6 +124,7 @@
                 contMgr.createWebContinuation(continuation,
                                               lastContinuation,
                                               0,
+                                              interpreter.getInterpreterID(),
                                               null);
         }
         
@@ -248,7 +249,7 @@
         public FOM_Request(Object request) {
             this.request = (Request)unwrap(request);
         }
-		
+        
         public String getClassName() {
             return "FOM_Request";
         }
@@ -675,7 +676,7 @@
         
         /* TODO: Vote on the inclusion of this method
         public String jsFunction_getRealPath(String path) {
-        	return context.getRealPath(path);
+            return context.getRealPath(path);
         }
         */
     }
@@ -926,6 +927,7 @@
         wk = contMgr.createWebContinuation(unwrap(k),
                                            (parent == null ? null : parent.getWebContinuation()),
                                            timeToLive,
+                                           interpreter.getInterpreterID(),
                                            null);
         FOM_WebContinuation result = new FOM_WebContinuation(wk);
         result.setParentScope(getParentScope());

Modified: cocoon/trunk/src/blocks/scratchpad/java/org/apache/cocoon/components/flow/javascript/fom/AO_FOM_JavaScriptInterpreter.java
==============================================================================
--- cocoon/trunk/src/blocks/scratchpad/java/org/apache/cocoon/components/flow/javascript/fom/AO_FOM_JavaScriptInterpreter.java	(original)
+++ cocoon/trunk/src/blocks/scratchpad/java/org/apache/cocoon/components/flow/javascript/fom/AO_FOM_JavaScriptInterpreter.java	Sun Nov 21 06:20:13 2004
@@ -652,7 +652,7 @@
                                    Redirector redirector)
         throws Exception
     {
-        WebContinuation wk = continuationsMgr.lookupWebContinuation(id);
+        WebContinuation wk = continuationsMgr.lookupWebContinuation(id, getInterpreterID());
 
         if (wk == null) {
 

Modified: cocoon/trunk/src/java/org/apache/cocoon/components/flow/AbstractInterpreter.java
==============================================================================
--- cocoon/trunk/src/java/org/apache/cocoon/components/flow/AbstractInterpreter.java	(original)
+++ cocoon/trunk/src/java/org/apache/cocoon/components/flow/AbstractInterpreter.java	Sun Nov 21 06:20:13 2004
@@ -102,7 +102,7 @@
      *
      * @return a unique ID for this interpreter
      */
-    protected String getInterpreterID() {
+    public String getInterpreterID() {
         return this.instanceID;
     }
 

Modified: cocoon/trunk/src/java/org/apache/cocoon/components/flow/ContinuationsManager.java
==============================================================================
--- cocoon/trunk/src/java/org/apache/cocoon/components/flow/ContinuationsManager.java	(original)
+++ cocoon/trunk/src/java/org/apache/cocoon/components/flow/ContinuationsManager.java	Sun Nov 21 06:20:13 2004
@@ -31,7 +31,7 @@
  * @author <a href="mailto:ovidiu@cup.hp.com">Ovidiu Predescu</a>
  * @since March 19, 2002
  * @see WebContinuation
- * @version CVS $Id: ContinuationsManager.java,v 1.6 2004/03/05 13:02:46 bdelacretaz Exp $
+ * @version CVS $Id$
  */
 public interface ContinuationsManager {
     public final String ROLE = ContinuationsManager.class.getName();
@@ -47,6 +47,7 @@
      * @param timeToLive an <code>int</code> value indicating how long
      * in seconds this continuation will live in the server if not
      * accessed
+     * @param interpreterId id of interpreter invoking continuation creation
      * @param disposer a <code>ContinuationsDisposer</code> instance to called when 
      * the continuation gets cleaned up.
      * @return a <code>WebContinuation</code> value
@@ -55,6 +56,7 @@
     public WebContinuation createWebContinuation(Object kont,
                                                  WebContinuation parentKont,
                                                  int timeToLive,
+                                                 String interpreterId,
                                                  ContinuationsDisposer disposer);
 
     /**
@@ -71,12 +73,16 @@
     /**
      * Given a <code>WebContinuation</code> id, retrieve the associated
      * <code>WebContinuation</code> object.
-     *
      * @param id a <code>String</code> value
-     * @return a <code>WebContinuation</code> object, or null if no such
-     * <code>WebContinuation</code> could be found.
+     * @param interpreterId Id of an interpreter that queries for 
+     * the continuation
+     *
+     * @return a <code>WebContinuation</code> object, null if no such
+     * <code>WebContinuation</code> could be found. Also null if 
+     * <code>WebContinuation</code> was found but interpreter id does 
+     * not match the one that the continuation was initialy created for.
      */
-    public WebContinuation lookupWebContinuation(String id);
+    public WebContinuation lookupWebContinuation(String id, String interpreterId);
 
     /**
      * Prints debug information about all web continuations into the log file.

Modified: cocoon/trunk/src/java/org/apache/cocoon/components/flow/ContinuationsManagerImpl.java
==============================================================================
--- cocoon/trunk/src/java/org/apache/cocoon/components/flow/ContinuationsManagerImpl.java	(original)
+++ cocoon/trunk/src/java/org/apache/cocoon/components/flow/ContinuationsManagerImpl.java	Sun Nov 21 06:20:13 2004
@@ -134,10 +134,11 @@
     public WebContinuation createWebContinuation(Object kont,
                                                  WebContinuation parent,
                                                  int timeToLive,
+                                                 String interpreterId, 
                                                  ContinuationsDisposer disposer) {
         int ttl = (timeToLive == 0 ? defaultTimeToLive : timeToLive);
 
-        WebContinuation wk = generateContinuation(kont, parent, ttl, disposer);
+        WebContinuation wk = generateContinuation(kont, parent, ttl, interpreterId, disposer);
         wk.enableLogging(getLogger());
 
         if (parent == null) {
@@ -162,10 +163,11 @@
         return wk;
     }
 
-    public WebContinuation lookupWebContinuation(String id) {
+    public WebContinuation lookupWebContinuation(String id, String interpreterId) {
         // REVISIT: Is the following check needed to avoid threading issues:
         // return wk only if !(wk.hasExpired) ?
-        return (WebContinuation) idToWebCont.get(id);
+        WebContinuation kont = (WebContinuation) idToWebCont.get(id);
+        return (kont.interpreterMatches(interpreterId)) ? kont : null;
     }
 
     /**
@@ -179,6 +181,7 @@
      * @param kont an <code>Object</code> value representing continuation
      * @param parent value representing parent <code>WebContinuation</code>
      * @param ttl <code>WebContinuation</code> time to live
+     * @param interpreterId id of interpreter invoking continuation creation
      * @param disposer <code>ContinuationsDisposer</code> instance to use for
      * cleanup of the continuation.
      * @return the generated <code>WebContinuation</code> with unique identifier
@@ -186,6 +189,7 @@
     private WebContinuation generateContinuation(Object kont,
                                                  WebContinuation parent,
                                                  int ttl,
+                                                 String interpreterId,
                                                  ContinuationsDisposer disposer) {
 
         char[] result = new char[bytes.length * 2];
@@ -203,7 +207,7 @@
             final String id = new String(result);
             synchronized (idToWebCont) {
                 if (!idToWebCont.containsKey(id)) {
-                    wk = new WebContinuation(id, kont, parent, ttl, disposer);
+                    wk = new WebContinuation(id, kont, parent, ttl, interpreterId, disposer);
                     idToWebCont.put(id, wk);
                     break;
                 }

Modified: cocoon/trunk/src/java/org/apache/cocoon/components/flow/Interpreter.java
==============================================================================
--- cocoon/trunk/src/java/org/apache/cocoon/components/flow/Interpreter.java	(original)
+++ cocoon/trunk/src/java/org/apache/cocoon/components/flow/Interpreter.java	Sun Nov 21 06:20:13 2004
@@ -93,7 +93,12 @@
 
     public static final String ROLE = Interpreter.class.getName();
 
-    /**
+	/**
+	 * @return the unique ID for this interpreter.
+	 */
+	String getInterpreterID();
+	
+	/**
      * Set the unique ID for this interpreter.
      */
     void setInterpreterID(String interpreterID);

Modified: cocoon/trunk/src/java/org/apache/cocoon/components/flow/WebContinuation.java
==============================================================================
--- cocoon/trunk/src/java/org/apache/cocoon/components/flow/WebContinuation.java	(original)
+++ cocoon/trunk/src/java/org/apache/cocoon/components/flow/WebContinuation.java	Sun Nov 21 06:20:13 2004
@@ -19,6 +19,7 @@
 import java.util.List;
 
 import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.commons.lang.StringUtils;
 
 /**
  * Representation of continuations in a Web environment.
@@ -34,7 +35,7 @@
  *
  * @author <a href="mailto:ovidiu@cup.hp.com">Ovidiu Predescu</a>
  * @since March 19, 2002
- * @version CVS $Id: WebContinuation.java,v 1.9 2004/05/17 18:50:53 vgritsenko Exp $
+ * @version CVS $Id$
  */
 public class WebContinuation extends AbstractLogEnabled
                              implements Comparable {
@@ -67,6 +68,11 @@
      * The continuation id used to represent this instance in Web pages.
      */
     protected String id;
+    
+    /**
+     * Interpreter id that this continuation is bound to
+     */
+    protected String interpreterId;
 
     /**
      * A user definable object. This is present for convenience, to
@@ -113,12 +119,14 @@
                     Object continuation,
                     WebContinuation parentContinuation,
                     int timeToLive,
+                    String interpreterId,
                     ContinuationsDisposer disposer) {
         this.id = id;
         this.continuation = continuation;
         this.parentContinuation = parentContinuation;
         this.updateLastAccessTime();
         this.timeToLive = timeToLive;
+        this.interpreterId = interpreterId;
         this.disposer = disposer;
 
         if (parentContinuation != null) {
@@ -363,5 +371,9 @@
      */
     public boolean disposed() {
         return this.continuation == null;
+    }
+    
+    public boolean interpreterMatches( String interpreterId ) {
+        return StringUtils.equals( this.interpreterId, interpreterId );
     }
 }

Modified: cocoon/trunk/src/java/org/apache/cocoon/components/flow/javascript/fom/FOM_Cocoon.java
==============================================================================
--- cocoon/trunk/src/java/org/apache/cocoon/components/flow/javascript/fom/FOM_Cocoon.java	(original)
+++ cocoon/trunk/src/java/org/apache/cocoon/components/flow/javascript/fom/FOM_Cocoon.java	Sun Nov 21 06:20:13 2004
@@ -1262,7 +1262,7 @@
 
         /* TODO: Vote on the inclusion of this method
         public String jsFunction_getRealPath(String path) {
-        	return context.getRealPath(path);
+            return context.getRealPath(path);
         }
         */
 
@@ -1485,6 +1485,14 @@
     }
 
     /**
+     * Required by FOM_WebContinuation. This way we do not make whole Interpreter public
+     * @return interpreter Id associated with this FOM.
+     */
+    public String getInterpreterId() {
+        return getInterpreter().getInterpreterID();
+    }
+    
+    /**
      * Call the Cocoon Sitemap to process a page
      * @param uri Uri to match
      * @param bean Input to page
@@ -1587,6 +1595,7 @@
         wk = contMgr.createWebContinuation(unwrap(k),
                                            (parent == null ? null : parent.getWebContinuation()),
                                            timeToLive,
+                                           getInterpreter().getInterpreterID(),
                                            null);
         FOM_WebContinuation result = new FOM_WebContinuation(wk);
         result.setParentScope(getParentScope());

Modified: cocoon/trunk/src/java/org/apache/cocoon/components/flow/javascript/fom/FOM_JavaScriptInterpreter.java
==============================================================================
--- cocoon/trunk/src/java/org/apache/cocoon/components/flow/javascript/fom/FOM_JavaScriptInterpreter.java	(original)
+++ cocoon/trunk/src/java/org/apache/cocoon/components/flow/javascript/fom/FOM_JavaScriptInterpreter.java	Sun Nov 21 06:20:13 2004
@@ -371,7 +371,7 @@
 
     /**
      * Associates a JavaScript scope, a Scriptable object, with
-     * {@link #getInterpreterID identifier} of this {@link Interpreter}
+     * {@link #getInterpreterID() identifier} of this {@link Interpreter}
      * instance.
      *
      * @param scope a <code>ThreadScope</code> value
@@ -747,7 +747,7 @@
     public void handleContinuation(String id, List params,
                                    Redirector redirector) throws Exception
     {
-        WebContinuation wk = continuationsMgr.lookupWebContinuation(id);
+        WebContinuation wk = continuationsMgr.lookupWebContinuation(id, getInterpreterID());
 
         if (wk == null) {
             /*

Modified: cocoon/trunk/src/java/org/apache/cocoon/components/flow/javascript/fom/FOM_WebContinuation.java
==============================================================================
--- cocoon/trunk/src/java/org/apache/cocoon/components/flow/javascript/fom/FOM_WebContinuation.java	(original)
+++ cocoon/trunk/src/java/org/apache/cocoon/components/flow/javascript/fom/FOM_WebContinuation.java	Sun Nov 21 06:20:13 2004
@@ -90,6 +90,7 @@
         wk = contMgr.createWebContinuation(c,
                                            (parent == null ? null : parent.getWebContinuation()),
                                            timeToLive,
+                                           cocoon.getInterpreterId(), 
                                            null);
         result = new FOM_WebContinuation(wk);
         result.setParentScope(getTopLevelScope(scope));

Modified: cocoon/trunk/status.xml
==============================================================================
--- cocoon/trunk/status.xml	(original)
+++ cocoon/trunk/status.xml	Sun Nov 21 06:20:13 2004
@@ -78,6 +78,7 @@
   <person name="Gerhard Froehlich" email="froehlich@apache.org" id="GF"/>
   <person name="Pierpaolo Fumagalli" email="pier@apache.org" id="PF"/>
   <person name="Antonio Gallardo" email="antonio@apache.org" id="AG"/>
+  <person name="Leszek Gawron" email="lgawron@apache.org" id="LG"/>
   <person name="Ralph Goers" email="rgoers@apache.org" id="RG"/>
   <person name="Vadim Gritsenko" email="vgritsenko@apache.org" id="VG"/>
   <person name="Christian Haul" email="haul@apache.org" id="CH"/>
@@ -201,6 +202,9 @@
 
   <changes>
  <release version="@version@" date="@date@">
+  <action dev="LG" type="fix">
+    Fix: Continuation can only be invoked for the interpreter it was originally created for.
+  </action>
    <action dev="CZ" type="add" due-to="Sascha-Matthias Kulawik" due-to-email="sascha@kulawik.de">
      Authentication block: Add authenticator for JAAS.
    </action>