You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2010/09/01 02:02:02 UTC

svn commit: r991404 - in /tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc: ReloadTest.java internal/util/URLChangeTrackerTest.java

Author: hlship
Date: Wed Sep  1 00:02:02 2010
New Revision: 991404

URL: http://svn.apache.org/viewvc?rev=991404&view=rev
Log:
TAP5-1188: Add test to demonstrate that changing a base class reloads the service

Modified:
    tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ReloadTest.java
    tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/URLChangeTrackerTest.java

Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ReloadTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ReloadTest.java?rev=991404&r1=991403&r2=991404&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ReloadTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ReloadTest.java Wed Sep  1 00:02:02 2010
@@ -15,17 +15,20 @@
 package org.apache.tapestry5.ioc;
 
 import java.io.File;
+import java.io.IOException;
 import java.lang.reflect.Modifier;
 import java.net.URL;
 import java.net.URLClassLoader;
 
+import javassist.CannotCompileException;
 import javassist.ClassPool;
 import javassist.CtClass;
 import javassist.CtConstructor;
 import javassist.CtMethod;
+import javassist.NotFoundException;
 
+import org.apache.tapestry5.ioc.services.ClassFabUtils;
 import org.apache.tapestry5.ioc.test.IOCTestCase;
-import org.apache.tapestry5.ioc.test.TestBase;
 import org.apache.tapestry5.services.UpdateListenerHub;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
@@ -43,6 +46,8 @@ public class ReloadTest extends IOCTestC
 
     private static final String CLASS = PACKAGE + ".ReloadableServiceImpl";
 
+    private static final String BASE_CLASS = PACKAGE + ".BaseReloadableServiceImpl";
+
     private File classesDir;
 
     private ClassLoader classLoader;
@@ -103,6 +108,42 @@ public class ReloadTest extends IOCTestC
     }
 
     @Test
+    public void reload_a_base_class() throws Exception
+    {
+        createImplementationClass(BASE_CLASS, "initial from base");
+
+        ClassPool pool = new ClassPool(null);
+
+        pool.appendSystemPath();
+        pool.appendClassPath(classesDir.getAbsolutePath());
+
+        CtClass ctClass = pool.makeClass(CLASS);
+
+        ctClass.setSuperclass(pool.get(BASE_CLASS));
+
+        ctClass.writeFile(classesDir.getAbsolutePath());
+
+        Registry registry = createRegistry();
+
+        ReloadableService reloadable = registry.getService(ReloadableService.class);
+
+        fireUpdateCheck(registry);
+
+        assertEquals(reloadable.getStatus(), "initial from base");
+
+        touch(new File(classesDir, ClassFabUtils.getPathForClassNamed(BASE_CLASS)));
+
+        createImplementationClass(BASE_CLASS, "updated from base");
+
+        fireUpdateCheck(registry);
+
+        assertEquals(reloadable.getStatus(), "updated from base");
+
+        registry.shutdown();
+
+    }
+
+    @Test
     public void delete_class() throws Exception
     {
         createImplementationClass("before delete");
@@ -202,11 +243,17 @@ public class ReloadTest extends IOCTestC
 
     private void createImplementationClass(String status) throws Exception
     {
+        createImplementationClass(CLASS, status);
+    }
+
+    private void createImplementationClass(String className, String status) throws NotFoundException,
+            CannotCompileException, IOException
+    {
         ClassPool pool = new ClassPool(null);
 
         pool.appendSystemPath();
 
-        CtClass ctClass = pool.makeClass(CLASS);
+        CtClass ctClass = pool.makeClass(className);
 
         ctClass.addInterface(pool.get(ReloadableService.class.getName()));
 

Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/URLChangeTrackerTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/URLChangeTrackerTest.java?rev=991404&r1=991403&r2=991404&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/URLChangeTrackerTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/URLChangeTrackerTest.java Wed Sep  1 00:02:02 2010
@@ -20,7 +20,6 @@ import java.net.URL;
 import org.apache.tapestry5.ioc.internal.services.ClasspathURLConverterImpl;
 import org.apache.tapestry5.ioc.services.ClasspathURLConverter;
 import org.apache.tapestry5.ioc.test.IOCTestCase;
-import org.apache.tapestry5.ioc.test.TestBase;
 import org.testng.annotations.Test;
 
 public class URLChangeTrackerTest extends IOCTestCase