Return-Path: Delivered-To: apmail-jakarta-commons-dev-archive@www.apache.org Received: (qmail 8742 invoked from network); 31 Jan 2005 00:52:11 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur-2.apache.org with SMTP; 31 Jan 2005 00:52:11 -0000 Received: (qmail 61233 invoked by uid 500); 31 Jan 2005 00:52:10 -0000 Delivered-To: apmail-jakarta-commons-dev-archive@jakarta.apache.org Received: (qmail 60697 invoked by uid 500); 31 Jan 2005 00:52:08 -0000 Mailing-List: contact commons-dev-help@jakarta.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Help: List-Post: List-Id: "Jakarta Commons Developers List" Reply-To: "Jakarta Commons Developers List" Delivered-To: mailing list commons-dev@jakarta.apache.org Received: (qmail 60684 invoked by uid 500); 31 Jan 2005 00:52:08 -0000 Received: (qmail 60681 invoked by uid 99); 31 Jan 2005 00:52:08 -0000 X-ASF-Spam-Status: No, hits=-9.8 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from minotaur.apache.org (HELO minotaur.apache.org) (209.237.227.194) by apache.org (qpsmtpd/0.28) with SMTP; Sun, 30 Jan 2005 16:52:06 -0800 Received: (qmail 8667 invoked by uid 65534); 31 Jan 2005 00:52:05 -0000 Message-ID: <20050131005205.8666.qmail@minotaur.apache.org> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Mailer: svnmailer-1.0.0-dev Date: Mon, 31 Jan 2005 00:52:05 -0000 Subject: svn commit: r149195 - in jakarta/commons/sandbox/javaflow/trunk: .classpath project.xml src/java/org/apache/commons/javaflow/Continuation.java src/test/org/apache/commons/javaflow/ContinuationClassLoaderTestCase.java src/test/org/apache/commons/javaflow/testcode/Calculator.java To: commons-cvs@jakarta.apache.org From: tcurdt@apache.org X-Virus-Checked: Checked X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N Author: tcurdt Date: Sun Jan 30 16:52:04 2005 New Revision: 149195 URL: http://svn.apache.org/viewcvs?view=3Drev&rev=3D149195 Log: added some fixes from phil@whirlycott.com Removed: jakarta/commons/sandbox/javaflow/trunk/.classpath Modified: jakarta/commons/sandbox/javaflow/trunk/project.xml jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/java= flow/Continuation.java jakarta/commons/sandbox/javaflow/trunk/src/test/org/apache/commons/java= flow/ContinuationClassLoaderTestCase.java jakarta/commons/sandbox/javaflow/trunk/src/test/org/apache/commons/java= flow/testcode/Calculator.java Modified: jakarta/commons/sandbox/javaflow/trunk/project.xml URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/javaflow/trunk/p= roject.xml?view=3Ddiff&r1=3D149194&r2=3D149195 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- jakarta/commons/sandbox/javaflow/trunk/project.xml (original) +++ jakarta/commons/sandbox/javaflow/trunk/project.xml Sun Jan 30 16:52:04 = 2005 @@ -32,7 +32,7 @@ src/test - **/*Test.java + **/*TestCase.java @@ -67,6 +67,12 @@ ant ant 1.5.3-1 + + + + junit + junit + 3.8.1 =20 Modified: jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/common= s/javaflow/Continuation.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/javaflow/trunk/s= rc/java/org/apache/commons/javaflow/Continuation.java?view=3Ddiff&r1=3D1491= 94&r2=3D149195 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/java= flow/Continuation.java (original) +++ jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/java= flow/Continuation.java Sun Jan 30 16:52:04 2005 @@ -30,7 +30,7 @@ * * @author Stephan Michels * @author Torsten Curdt - * @version CVS $Id: Continuation.java,v 1.1 2005/01/23 03:55:21 tcurdt Ex= p $ + * @version CVS $Id:$ */ public class Continuation implements Serializable { =20 @@ -42,6 +42,7 @@ private final static transient Map continuationsMap =3D new HashMap(); =20 private boolean restoring =3D false; + private boolean capturing =3D false; =20 /** @@ -56,95 +57,87 @@ } =20 /** - * Return the stack, which is used to store the frame information. - private Stack getStack() { - return stack; - } + * Return the stack, which is used to store the frame information. pri= vate + * Stack getStack() { return stack; } */ =20 - // REVISIT private Object context; + public Object getContext() { return context; } - =20 - public static Continuation continueWith( - final Continuation parent, - final ContinuationContext context - ) { =20 - // setup context outside - =20 + /** + * Creates a new continuation to capture the + * next state. Resume where the old one was + * suspended. + *=20 + * @param parent parent continuation or null + * @param context context of the continuation + * @return new child continuation + */ + public static Continuation continueWith(final Continuation parent, fin= al ContinuationContext context) { + final Continuation newContinuation =3D new Continuation(parent); - =20 + if (parent !=3D null) { log.debug("resuming continuation " + parent); newContinuation.restoring =3D true; - } - else { + } else { log.debug("starting new flow"); // create continuable instance } =20 newContinuation.registerThread(); - newContinuation.context =3D context; - =20 + final Object instance =3D context.getInstance(); final Method method =3D context.getMethod(); =20 try { method.invoke(instance, new Object[0]); - } - catch(Exception e) { - log.error("could not execute " + instance + " " + method, e); - } - finally { - =20 + + } catch (final Exception e) { + log.error("could not execute " + instance + " " + method, e); = =20 + } finally { if (newContinuation.capturing) { newContinuation.stack.popReference(); } =20 newContinuation.context =3D null; - newContinuation.deregisterThread(); } - =20 + return newContinuation; } - =20 + /** * Stop the running continuation. */ public static void suspend() { - =09 - log.debug("suspend()"); + log.debug("suspend()"); =20 - Continuation continuation =3D Continuation.currentContinuation(); + final Continuation continuation =3D Continuation.currentContinuati= on(); =20 if (continuation =3D=3D null) throw new IllegalStateException("no continuation is running"); =20 - if (continuation.restoring) { - continuation.capturing =3D false; - } else { - continuation.capturing =3D true; - } - =20 + continuation.capturing =3D !continuation.restoring; =20 continuation.restoring =3D false; } =20 /** - * True, if the continuation restores the previous stack trace to the - * last invocation of suspend(). + * True, if the continuation restores the previous stack trace to the = last + * invocation of suspend(). */ public boolean isRestoring() { return restoring; } =20 /** - * True, is the continuation freeze the strack trace, and stops the co= ntinuation. + * True, is the continuation freeze the strack trace, and stops the + * continuation. */ public boolean isCapturing() { return capturing; @@ -153,7 +146,7 @@ public Stack getStack() { return stack; } - =20 + /** * Bind the continuation to running thread. */ @@ -173,13 +166,11 @@ } =20 /** - * Return the continuation, which is associated to the - * current thread. + * Return the continuation, which is associated to the current thread. */ public static Continuation currentContinuation() { synchronized (continuationsMap) { - Thread t =3D Thread.currentThread(); - return (Continuation) continuationsMap.get(t); + return (Continuation) continuationsMap.get(Thread.currentThrea= d()); } } } Modified: jakarta/commons/sandbox/javaflow/trunk/src/test/org/apache/common= s/javaflow/ContinuationClassLoaderTestCase.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/javaflow/trunk/s= rc/test/org/apache/commons/javaflow/ContinuationClassLoaderTestCase.java?vi= ew=3Ddiff&r1=3D149194&r2=3D149195 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- jakarta/commons/sandbox/javaflow/trunk/src/test/org/apache/commons/java= flow/ContinuationClassLoaderTestCase.java (original) +++ jakarta/commons/sandbox/javaflow/trunk/src/test/org/apache/commons/java= flow/ContinuationClassLoaderTestCase.java Sun Jan 30 16:52:04 2005 @@ -18,6 +18,8 @@ import java.lang.reflect.Method; import java.util.Map; =20 +import junit.framework.TestCase; + import org.apache.commons.javaflow.utils.ReflectionUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -27,40 +29,65 @@ * @author tcurdt * */ -public final class ContinuationClassLoaderTestCase { +public final class ContinuationClassLoaderTestCase extends TestCase { =20 + /** + * Logger. + */ private final static Log log =3D LogFactory.getLog(ContinuationClassLo= aderTestCase.class); =20 - private void testCalculator() throws Exception { + public void testCalculator() throws Exception { + log.debug("Doing testCalculator()"); + =20 + final String calculatorTestClass =3D "org.apache.commons.javaflow.= testcode.Calculator"; + + // creating object instance final ClassLoader cl =3D new ContinuationClassLoader(getClass().ge= tClassLoader()); - final Class clazz =3D cl.loadClass("org.apache.commons.javaflow.te= stcode.Calculator"); -=20 - final Map m =3D ReflectionUtils.discoverMethods(clazz); + final Class clazz =3D cl.loadClass(calculatorTestClass); + assertNotNull(clazz); final Object instance =3D clazz.newInstance(); + assertNotNull(instance); +=20 + // get method called "main" + final Map methods =3D ReflectionUtils.discoverMethods(clazz); + assertNotNull(methods); + final Method method =3D (Method) methods.get("main"); + assertNotNull(method); =20 - Continuation c =3D null; + Continuation continuation =3D null; ContinuationContext context =3D null; - + =20 =20 context =3D new ContinuationContext(); - context.setMethod((Method)m.get("main")); + context.setMethod(method); context.setInstance(instance); - - log.debug("continuation 1"); =20 - c =3D Continuation.continueWith(c, context); - =20 + log.debug("Continuation 1"); + continuation =3D Continuation.continueWith(continuation, context); + =20 + =20 + final Continuation parent =3D continuation; + context =3D new ContinuationContext(); - context.setMethod((Method)m.get("main")); + context.setMethod(method); context.setInstance(instance); =20 - log.debug("continuation 2"); - c =3D Continuation.continueWith(c, context); + log.debug("Continuation 1.1"); + final Continuation continuation11 =3D Continuation.continueWith(pa= rent, context); =20 + log.debug("Continuation 1.2"); + final Continuation continuation12 =3D Continuation.continueWith(pa= rent, context); + =20 } =20 - public static void main(String[] args) throws Exception { - ContinuationClassLoaderTestCase t =3D new ContinuationClassLoaderT= estCase(); + =20 + /** + * The junit tests are preferred over running this main() method. + * @param args + * @throws Exception + */ + public static void main(final String[] args) throws Exception { + final ContinuationClassLoaderTestCase t =3D new ContinuationClassL= oaderTestCase(); t.testCalculator(); } } Modified: jakarta/commons/sandbox/javaflow/trunk/src/test/org/apache/common= s/javaflow/testcode/Calculator.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/javaflow/trunk/s= rc/test/org/apache/commons/javaflow/testcode/Calculator.java?view=3Ddiff&r1= =3D149194&r2=3D149195 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- jakarta/commons/sandbox/javaflow/trunk/src/test/org/apache/commons/java= flow/testcode/Calculator.java (original) +++ jakarta/commons/sandbox/javaflow/trunk/src/test/org/apache/commons/java= flow/testcode/Calculator.java Sun Jan 30 16:52:04 2005 @@ -19,6 +19,8 @@ =20 import org.apache.commons.javaflow.Continuable; import org.apache.commons.javaflow.Continuation; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; =20 /** * @author tcurdt @@ -26,13 +28,18 @@ */ public final class Calculator implements Continuable, Serializable { =20 + /** + * Logger. + */ + private static final Log log =3D LogFactory.getLog(Calculator.class); + =20 public void main() { =20 - System.out.println("Calculator1"); + log.debug("Calculator1"); =20 Continuation.suspend(); =20 - System.out.println("Calculator2"); + log.debug("Calculator2"); =20 } } --------------------------------------------------------------------- To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org For additional commands, e-mail: commons-dev-help@jakarta.apache.org