Author: kohsuke
Date: Wed Dec 28 12:26:50 2005
New Revision: 359625

URL: http://svn.apache.org/viewcvs?rev=359625&view=rev
Log:
added a regression test case for try/catch inside a finally block.

Added:
    
jakarta/commons/sandbox/javaflow/trunk/src/test/org/apache/commons/javaflow/flow/FinallyFlow.java
   (with props)
Modified:
    
jakarta/commons/sandbox/javaflow/trunk/src/test/org/apache/commons/javaflow/RewritingTestCase.java

Modified: 
jakarta/commons/sandbox/javaflow/trunk/src/test/org/apache/commons/javaflow/RewritingTestCase.java
URL: 
http://svn.apache.org/viewcvs/jakarta/commons/sandbox/javaflow/trunk/src/test/org/apache/commons/javaflow/RewritingTestCase.java?rev=359625&r1=359624&r2=359625&view=diff
==============================================================================
--- 
jakarta/commons/sandbox/javaflow/trunk/src/test/org/apache/commons/javaflow/RewritingTestCase.java
 (original)
+++ 
jakarta/commons/sandbox/javaflow/trunk/src/test/org/apache/commons/javaflow/RewritingTestCase.java
 Wed Dec 28 12:26:50 2005
@@ -7,6 +7,7 @@
 import org.apache.commons.javaflow.flow.NoReferenceBugFlow;
 import org.apache.commons.javaflow.flow.StackBugFlow;
 import org.apache.commons.javaflow.flow.NullVariableMethodFlow;
+import org.apache.commons.javaflow.flow.FinallyFlow;
 
 
 public final class RewritingTestCase extends AbstractTestCase {
@@ -19,6 +20,12 @@
 
     public void testNullVariableMethod() throws Exception {
         final Runnable r = new NullVariableMethodFlow();
+        final Continuation c = Continuation.startWith(r);
+        assertTrue(c == null);
+    }
+
+    public void testFinally() throws Exception {
+        final Runnable r = new FinallyFlow();
         final Continuation c = Continuation.startWith(r);
         assertTrue(c == null);
     }

Added: 
jakarta/commons/sandbox/javaflow/trunk/src/test/org/apache/commons/javaflow/flow/FinallyFlow.java
URL: 
http://svn.apache.org/viewcvs/jakarta/commons/sandbox/javaflow/trunk/src/test/org/apache/commons/javaflow/flow/FinallyFlow.java?rev=359625&view=auto
==============================================================================
--- 
jakarta/commons/sandbox/javaflow/trunk/src/test/org/apache/commons/javaflow/flow/FinallyFlow.java
 (added)
+++ 
jakarta/commons/sandbox/javaflow/trunk/src/test/org/apache/commons/javaflow/flow/FinallyFlow.java
 Wed Dec 28 12:26:50 2005
@@ -0,0 +1,42 @@
+package org.apache.commons.javaflow.flow;
+
+import java.io.InputStream;
+import java.io.IOException;
+
+/**
+ * We used to have a problem in handling an exception handler inside a finally 
block.
+ * This class tests that behavior.
+ *
+ * @author Kohsuke Kawaguchi
+ */
+public class FinallyFlow implements Runnable {
+
+    public void run() {
+        loadResource("ABC",getClass().getClassLoader());
+    }
+
+    /**
+     * The implementation of this method is mostly pointless.
+     * We just needed byte code to be generated in the right way
+     * to expose a problem in the instrumentation code.
+     *
+     * In particular, an exception handler inside a finally block.
+     * (Multiple catch blocks also seem to be related, but not exactly sure 
why.)
+     */
+    private void loadResource(String name, ClassLoader loader) {
+        InputStream clis = null;
+        try {
+            clis = loader.getResourceAsStream(name);
+        } catch (SecurityException sex) {
+            System.out.println("beep");
+        } catch (ClassCastException x) {
+            System.out.println("beep");
+        } finally {
+            try {
+                if (clis != null)
+                    clis.close();
+            } catch (IOException ex) {
+            }    // ignore it
+        }
+    }
+}

Propchange: 
jakarta/commons/sandbox/javaflow/trunk/src/test/org/apache/commons/javaflow/flow/FinallyFlow.java
------------------------------------------------------------------------------
    svn:eol-style = native



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to