You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by jo...@apache.org on 2008/04/01 08:20:55 UTC
svn commit: r643294 - in
/cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/components/flow:
WebContinuation.java javascript/fom/FOM_Cocoon.java
javascript/fom/FOM_JavaScriptInterpreter.java
javascript/fom/FOM_WebContinuation.java
Author: joerg
Date: Mon Mar 31 23:20:52 2008
New Revision: 643294
URL: http://svn.apache.org/viewvc?rev=643294&view=rev
Log:
remove LogEnabled from WebContinuation, change display() to toString(), logging is done "externally"
Modified:
cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/components/flow/WebContinuation.java
cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/components/flow/javascript/fom/FOM_Cocoon.java
cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/components/flow/javascript/fom/FOM_JavaScriptInterpreter.java
cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/components/flow/javascript/fom/FOM_WebContinuation.java
Modified: cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/components/flow/WebContinuation.java
URL: http://svn.apache.org/viewvc/cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/components/flow/WebContinuation.java?rev=643294&r1=643293&r2=643294&view=diff
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/components/flow/WebContinuation.java (original)
+++ cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/components/flow/WebContinuation.java Mon Mar 31 23:20:52 2008
@@ -20,10 +20,10 @@
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
import org.apache.commons.collections.iterators.IteratorEnumeration;
import org.apache.commons.lang.StringUtils;
@@ -43,8 +43,7 @@
* @since March 19, 2002
* @version CVS $Id$
*/
-public class WebContinuation extends AbstractLogEnabled
- implements Comparable {
+public class WebContinuation implements Comparable, Cloneable {
/**
* The continuation this object represents.
@@ -355,13 +354,83 @@
}
/**
+ * Update the continuation in the
+ */
+ protected void updateLastAccessTime() {
+ lastAccessTime = System.currentTimeMillis();
+ }
+
+ /**
+ * Determines whether this continuation has expired
+ *
+ * @return a <code>boolean</code> value
+ */
+ public boolean hasExpired() {
+ long currentTime = System.currentTimeMillis();
+ long expireTime = this.getLastAccessTime() + this.timeToLive;
+
+ return (currentTime > expireTime);
+ }
+
+ /**
+ * Dispose this continuation. Should be called on invalidation.
+ */
+ public void dispose() {
+ // Call possible implementation-specific clean-up on this continuation.
+ if (this.disposer != null) {
+ this.disposer.disposeContinuation(this);
+ }
+ // Remove continuation object - will also serve as "disposed" flag
+ this.continuation = null;
+ }
+
+ /**
+ * Return true if this continuation was disposed of
+ */
+ public boolean disposed() {
+ return this.continuation == null;
+ }
+
+ public boolean interpreterMatches( String interpreterId ) {
+ return StringUtils.equals( this.interpreterId, interpreterId );
+ }
+
+ public void detachFromParent() {
+ if (getParentContinuation() != null)
+ getParentContinuation().getChildren().remove(this);
+ }
+
+ /**
+ * Creates a clone of this WebContinuation without trying to clone the actual continuation, the
+ * user object or the disposer.
+ *
+ * TODO: Check continuation, user object, disposer for implementing {@link Cloneable} or
+ * {@link java.io.Serializable}.
+ */
+ public Object clone() {
+
+ WebContinuation clone = new WebContinuation(id, continuation, null, timeToLive, interpreterId, disposer);
+ // reset last access time
+ clone.lastAccessTime = this.lastAccessTime;
+ // recreate hierarchy recursively
+ for (Iterator iter = this.children.iterator(); iter.hasNext();) {
+ WebContinuation child = (WebContinuation) iter.next();
+ WebContinuation childClone = (WebContinuation) child.clone();
+ // relationships must be fixed manually
+ childClone.parentContinuation = clone;
+ clone.children.add(childClone);
+ }
+ return clone;
+ }
+
+ /**
* Debugging method.
*
* <p>Assumes the receiving instance as the root of a tree and
* displays the tree of continuations.
*/
- public void display() {
- getLogger().debug("\nWK: Tree" + display(0));
+ public String toString() {
+ return "\nWK: Tree" + display(0);
}
/**
@@ -404,50 +473,4 @@
return tree.toString();
}
- /**
- * Update the continuation in the
- */
- protected void updateLastAccessTime() {
- lastAccessTime = System.currentTimeMillis();
- }
-
- /**
- * Determines whether this continuation has expired
- *
- * @return a <code>boolean</code> value
- */
- public boolean hasExpired() {
- long currentTime = System.currentTimeMillis();
- long expireTime = this.getLastAccessTime() + this.timeToLive;
-
- return (currentTime > expireTime);
- }
-
- /**
- * Dispose this continuation. Should be called on invalidation.
- */
- public void dispose() {
- // Call possible implementation-specific clean-up on this continuation.
- if (this.disposer != null) {
- this.disposer.disposeContinuation(this);
- }
- // Remove continuation object - will also serve as "disposed" flag
- this.continuation = null;
- }
-
- /**
- * Return true if this continuation was disposed of
- */
- public boolean disposed() {
- return this.continuation == null;
- }
-
- public boolean interpreterMatches( String interpreterId ) {
- return StringUtils.equals( this.interpreterId, interpreterId );
- }
-
- public void detachFromParent() {
- if (getParentContinuation() != null)
- getParentContinuation().getChildren().remove(this);
- }
}
Modified: cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/components/flow/javascript/fom/FOM_Cocoon.java
URL: http://svn.apache.org/viewvc/cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/components/flow/javascript/fom/FOM_Cocoon.java?rev=643294&r1=643293&r2=643294&view=diff
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/components/flow/javascript/fom/FOM_Cocoon.java (original)
+++ cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/components/flow/javascript/fom/FOM_Cocoon.java Mon Mar 31 23:20:52 2008
@@ -100,6 +100,7 @@
this.lastContinuation = lastContinuation;
if (lastContinuation != null) {
fwk = new FOM_WebContinuation(lastContinuation);
+ fwk.enableLogging(this.logger);
Scriptable scope = FOM_Cocoon.this.getParentScope();
fwk.setParentScope(scope);
fwk.setPrototype(getClassPrototype(scope, fwk.getClassName()));
@@ -667,7 +668,7 @@
return currentCall.avalonContext;
}
- private Logger getLogger() {
+ protected Logger getLogger() {
return currentCall.logger;
}
@@ -735,14 +736,16 @@
/**
* Return this continuation if it is valid, or first valid parent
*/
- private FOM_WebContinuation findValidParent(FOM_WebContinuation wk) {
+ private FOM_WebContinuation findValidParent(final FOM_WebContinuation wk) {
if (wk != null) {
WebContinuation wc = wk.getWebContinuation();
while (wc != null && wc.disposed()) {
wc = wc.getParentContinuation();
}
if (wc != null) {
- return new FOM_WebContinuation(wc);
+ FOM_WebContinuation parentWk = new FOM_WebContinuation(wc);
+ parentWk.enableLogging(getLogger());
+ return wk;
}
}
@@ -793,6 +796,7 @@
getInterpreter().getInterpreterID(),
null);
FOM_WebContinuation result = new FOM_WebContinuation(wk);
+ result.enableLogging(getLogger());
result.setParentScope(getParentScope());
result.setPrototype(getClassPrototype(getParentScope(),
result.getClassName()));
Modified: cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/components/flow/javascript/fom/FOM_JavaScriptInterpreter.java
URL: http://svn.apache.org/viewvc/cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/components/flow/javascript/fom/FOM_JavaScriptInterpreter.java?rev=643294&r1=643293&r2=643294&view=diff
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/components/flow/javascript/fom/FOM_JavaScriptInterpreter.java (original)
+++ cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/components/flow/javascript/fom/FOM_JavaScriptInterpreter.java Mon Mar 31 23:20:52 2008
@@ -833,6 +833,7 @@
}
cocoon.setParameters(parameters);
FOM_WebContinuation fom_wk = new FOM_WebContinuation(wk);
+ fom_wk.enableLogging(getLogger());
fom_wk.setParentScope(kScope);
fom_wk.setPrototype(ScriptableObject.getClassPrototype(kScope,
fom_wk.getClassName()));
Modified: cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/components/flow/javascript/fom/FOM_WebContinuation.java
URL: http://svn.apache.org/viewvc/cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/components/flow/javascript/fom/FOM_WebContinuation.java?rev=643294&r1=643293&r2=643294&view=diff
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/components/flow/javascript/fom/FOM_WebContinuation.java (original)
+++ cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/components/flow/javascript/fom/FOM_WebContinuation.java Mon Mar 31 23:20:52 2008
@@ -19,6 +19,8 @@
import java.util.Iterator;
import java.util.List;
+import org.apache.avalon.framework.logger.LogEnabled;
+import org.apache.avalon.framework.logger.Logger;
import org.apache.avalon.framework.service.ServiceManager;
import org.apache.cocoon.components.flow.ContinuationsManager;
import org.apache.cocoon.components.flow.WebContinuation;
@@ -35,10 +37,11 @@
*
* @version CVS $Id$
*/
-public class FOM_WebContinuation extends ScriptableObject {
+public class FOM_WebContinuation extends ScriptableObject implements LogEnabled {
WebContinuation wk;
-
+
+ private Logger logger;
static class UserObject {
boolean isBookmark;
@@ -62,6 +65,10 @@
this.wk = wk;
}
+ public void enableLogging(Logger logger) {
+ this.logger = logger;
+ }
+
// new FOM_WebContinuation([Continuation] continuation,
// [FOM_WebContinuation] parent,
// [Number] timeToLive)
@@ -95,6 +102,7 @@
cocoon.getInterpreterId(),
null);
result = new FOM_WebContinuation(wk);
+ result.enableLogging(cocoon.getLogger());
result.setParentScope(getTopLevelScope(scope));
result.setPrototype(getClassPrototype(scope, result.getClassName()));
return result;
@@ -140,6 +148,7 @@
}
FOM_WebContinuation pwk = new FOM_WebContinuation(parent);
+ pwk.enableLogging(logger);
pwk.setParentScope(getParentScope());
pwk.setPrototype(getClassPrototype(getParentScope(),
pwk.getClassName()));
@@ -156,6 +165,7 @@
for (int i = 0; iter.hasNext(); i++) {
WebContinuation child = (WebContinuation)iter.next();
FOM_WebContinuation cwk = new FOM_WebContinuation(child);
+ cwk.enableLogging(logger);
cwk.setParentScope(getParentScope());
cwk.setPrototype(getClassPrototype(getParentScope(),
cwk.getClassName()));
@@ -175,7 +185,9 @@
}
public void jsFunction_display() {
- wk.display();
+ if (this.logger.isDebugEnabled()) {
+ this.logger.debug(wk.toString());
+ }
}
public WebContinuation getWebContinuation() {
@@ -243,6 +255,7 @@
}
FOM_WebContinuation pwk = new FOM_WebContinuation(c);
+ pwk.enableLogging(logger);
pwk.setParentScope(getParentScope());
pwk.setPrototype(getClassPrototype(getParentScope(), pwk.getClassName()));
return pwk;
@@ -254,4 +267,5 @@
public String toString() {
return "WC" + wk.getId();
}
+
}