Author: tcurdt
Date: Fri Mar 10 06:19:29 2006
New Revision: 384799
URL: http://svn.apache.org/viewcvs?rev=384799&view=rev
Log:
extending the testcase to show the behavior Patrick Lightbody was reporting,
fixed http://issues.apache.org/bugzilla/show_bug.cgi?id=37137
Added:
jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/MyBar.java
(with props)
jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/MyFoo.java
(with props)
Removed:
jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/utils/
jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/utils/
Modified:
jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/JavaCompiler.java
jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/monitor/FilesystemAlterationMonitor.java
jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/AbstractTestCase.java
jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/CompilingClassLoaderTestCase.java
Modified:
jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/JavaCompiler.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/JavaCompiler.java?rev=384799&r1=384798&r2=384799&view=diff
==============================================================================
---
jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/JavaCompiler.java
(original)
+++
jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/JavaCompiler.java
Fri Mar 10 06:19:29 2006
@@ -29,15 +29,14 @@
void setCompilationProblemHandler( final CompilationProblemHandler
pHandler );
CompilationResult compile(
- final String[] pClazzNames,
- final ResourceReader pReader,
- final ResourceStore pStore
- );
+ final String[] pClazzNames,
+ final ResourceReader pReader,
+ final ResourceStore pStore );
+
CompilationResult compile(
final String[] pClazzNames,
final ResourceReader pReader,
final ResourceStore pStore,
- final ClassLoader classLoader
- );
+ final ClassLoader classLoader );
}
Modified:
jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/monitor/FilesystemAlterationMonitor.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/monitor/FilesystemAlterationMonitor.java?rev=384799&r1=384798&r2=384799&view=diff
==============================================================================
---
jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/monitor/FilesystemAlterationMonitor.java
(original)
+++
jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/monitor/FilesystemAlterationMonitor.java
Fri Mar 10 06:19:29 2006
@@ -17,7 +17,6 @@
import java.util.Map;
import java.util.Set;
import org.apache.commons.collections.MultiHashMap;
-import org.apache.commons.jci.utils.ThreadUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -419,7 +418,10 @@
onStop(directory);
}
}
- ThreadUtils.sleep(delay);
+ try {
+ Thread.sleep(delay);
+ } catch (final InterruptedException e) {
+ }
}
log.info("fam exiting");
}
Modified:
jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/AbstractTestCase.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/AbstractTestCase.java?rev=384799&r1=384798&r2=384799&view=diff
==============================================================================
---
jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/AbstractTestCase.java
(original)
+++
jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/AbstractTestCase.java
Fri Mar 10 06:19:29 2006
@@ -21,7 +21,6 @@
import java.io.IOException;
import junit.framework.TestCase;
import org.apache.commons.io.FileUtils;
-import org.apache.commons.jci.utils.ThreadUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -101,7 +100,10 @@
}
protected void delay() {
- ThreadUtils.sleep(1500);
+ try {
+ Thread.sleep(1500);
+ } catch (final InterruptedException e) {
+ }
}
protected File createTempDirectory() throws IOException {
Modified:
jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/CompilingClassLoaderTestCase.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/CompilingClassLoaderTestCase.java?rev=384799&r1=384798&r2=384799&view=diff
==============================================================================
---
jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/CompilingClassLoaderTestCase.java
(original)
+++
jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/CompilingClassLoaderTestCase.java
Fri Mar 10 06:19:29 2006
@@ -1,6 +1,8 @@
package org.apache.commons.jci;
import java.io.File;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
import org.apache.commons.io.FileUtils;
import org.apache.commons.jci.compilers.AbstractCompilerTestCase;
import org.apache.commons.jci.compilers.JavaSources;
@@ -18,6 +20,17 @@
private CompilingListener listener;
private FilesystemAlterationMonitor fam;
+ private final static class BeanUtils {
+
+ public static void setProperty( Object object, String property, Object
value) throws SecurityException, NoSuchMethodException,
IllegalArgumentException, IllegalAccessException, InvocationTargetException {
+ final Class clazz = object.getClass();
+
+ final Method setter = clazz.getMethod("set" + property, new
Class[]{ value.getClass()});
+ setter.invoke(object, new Object[]{ value });
+ }
+ }
+
+
protected void setUp() throws Exception {
super.setUp();
@@ -133,6 +146,109 @@
}
}
+
+
+ public void testReference1() throws Exception {
+ delay();
+ writeFile("jci/Foo.java",
+ "package jci;\n" +
+ "\n" +
+ "public class Foo {\n" +
+ " public String toString() {\n" +
+ " return \"foo1\";\n" +
+ " }\n" +
+ "}"
+ );
+ writeFile("jci/Bar.java",
+ "package jci;\n" +
+ "\n" +
+ "public class Bar {\n" +
+ " \n" +
+ " private Foo foo;\n" +
+ " \n" +
+ " public void setFoo( Foo foo) {\n" +
+ " this.foo = foo;\n" +
+ " }\n" +
+ " \n" +
+ " public String toString() {\n" +
+ " return \"bar1\";\n" +
+ " }\n" +
+ "}"
+ );
+ listener.waitForNotification();
+
+ final Object foo1 = classloader.loadClass("jci.Foo").newInstance();
+ assertTrue("foo1".equals(foo1.toString()));
+
+ final Object bar1 = classloader.loadClass("jci.Bar").newInstance();
+ assertTrue("bar1".equals(bar1.toString()));
+
+ BeanUtils.setProperty(bar1, "Foo", foo1);
+
+ delay();
+ writeFile("jci/Foo.java",
+ "package jci;\n" +
+ "\n" +
+ "public class Foo {\n" +
+ " public String toString() {\n" +
+ " return \"foo2\";\n" +
+ " }\n" +
+ "}"
+ );
+ listener.waitForNotification();
+
+ final Object foo2 = classloader.loadClass("jci.Foo").newInstance();
+ assertTrue("foo2".equals(foo2.toString()));
+
+ final Object bar2 = classloader.loadClass("jci.Bar").newInstance();
+ // has not change -> still bar1
+ assertTrue("bar1".equals(bar2.toString()));
+
+ BeanUtils.setProperty(bar2, "Foo", foo2);
+ BeanUtils.setProperty(bar1, "Foo", foo2);
+
+ }
+
+ public void testReference2() throws Exception {
+ delay();
+ writeFile("jci/Foo.java",
+ "package jci;\n" +
+ "\n" +
+ "public class Foo implements org.apache.commons.jci.MyFoo {\n"
+
+ " public String toString() {\n" +
+ " return \"foo1\";\n" +
+ " }\n" +
+ "}"
+ );
+ listener.waitForNotification();
+
+ final MyFoo foo1 = (MyFoo)
classloader.loadClass("jci.Foo").newInstance();
+ assertTrue("foo1".equals(foo1.toString()));
+
+
+ final MyBar bar1 = new MyBar();
+ bar1.setFoo(foo1);
+
+ delay();
+ writeFile("jci/Foo.java",
+ "package jci;\n" +
+ "\n" +
+ "public class Foo implements org.apache.commons.jci.MyFoo {\n"
+
+ " public String toString() {\n" +
+ " return \"foo2\";\n" +
+ " }\n" +
+ "}"
+ );
+ listener.waitForNotification();
+
+ final MyFoo foo2 = (MyFoo)
classloader.loadClass("jci.Foo").newInstance();
+ assertTrue("foo2".equals(foo2.toString()));
+
+ bar1.setFoo(foo2);
+ }
+
+
+
protected void tearDown() throws Exception {
fam.removeListener(listener);
Added:
jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/MyBar.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/MyBar.java?rev=384799&view=auto
==============================================================================
---
jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/MyBar.java
(added)
+++
jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/MyBar.java
Fri Mar 10 06:19:29 2006
@@ -0,0 +1,11 @@
+package org.apache.commons.jci;
+
+
+public class MyBar {
+
+ private MyFoo foo;
+
+ public void setFoo( MyFoo foo) {
+ this.foo = foo;
+ }
+}
Propchange:
jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/MyBar.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/MyBar.java
------------------------------------------------------------------------------
svn:keywords = Id
Added:
jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/MyFoo.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/MyFoo.java?rev=384799&view=auto
==============================================================================
---
jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/MyFoo.java
(added)
+++
jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/MyFoo.java
Fri Mar 10 06:19:29 2006
@@ -0,0 +1,5 @@
+package org.apache.commons.jci;
+
+
+public interface MyFoo {
+}
Propchange:
jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/MyFoo.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/MyFoo.java
------------------------------------------------------------------------------
svn:keywords = Id
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]