You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by tc...@apache.org on 2006/03/10 15:19:31 UTC
svn commit: r384799 - in /jakarta/commons/sandbox/jci/trunk/src:
java/org/apache/commons/jci/compilers/ java/org/apache/commons/jci/monitor/
java/org/apache/commons/jci/utils/ test/org/apache/commons/jci/
test/org/apache/commons/jci/utils/
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: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org