You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2006/06/05 18:55:00 UTC

svn commit: r411856 - /tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/BaseTestCase.java

Author: hlship
Date: Mon Jun  5 09:54:59 2006
New Revision: 411856

URL: http://svn.apache.org/viewvc?rev=411856&view=rev
Log:
Make the touch() method wait until a real timestamp change is observed (needed for faster machines).

Modified:
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/BaseTestCase.java

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/BaseTestCase.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/BaseTestCase.java?rev=411856&r1=411855&r2=411856&view=diff
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/BaseTestCase.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/BaseTestCase.java Mon Jun  5 09:54:59 2006
@@ -15,9 +15,7 @@
 package org.apache.tapestry.test;
 
 import java.io.File;
-import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
-import java.io.IOException;
 import java.io.OutputStream;
 import java.lang.annotation.Annotation;
 import java.net.MalformedURLException;
@@ -28,13 +26,13 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.hivemind.Resource;
-import org.apache.hivemind.util.ClasspathResource;
 import org.apache.tapestry.internal.InternalComponentResources;
 import org.apache.tapestry.internal.annotations.SuppressNullCheck;
 import org.apache.tapestry.internal.parser.ComponentTemplate;
 import org.apache.tapestry.model.MutableComponentModel;
 import org.apache.tapestry.transform.ClassTransformation;
 
+import static java.lang.Thread.sleep;
 import static org.apache.tapestry.util.CollectionFactory.newList;
 
 /**
@@ -101,14 +99,26 @@
         setReturnValue(fieldNames);
     }
 
-
-
     /** Writes a change to a file. */
-    protected final void touch(File f) throws FileNotFoundException, IOException
+    protected final void touch(File f) throws Exception
     {
-        OutputStream o = new FileOutputStream(f);
-        o.write(0);
-        o.close();
+        long startModified = f.lastModified();
+
+        while (true)
+        {
+            OutputStream o = new FileOutputStream(f);
+            o.write(0);
+            o.close();
+
+            long newModified = f.lastModified();
+
+            if (newModified != startModified)
+                return;
+
+            // Sleep 1/4 second and try again
+
+            sleep(250);
+        }
     }
 
     /**
@@ -117,12 +127,13 @@
      * 
      * @see #createClasspathRoot()
      */
-    protected final URLClassLoader newLoaderWithClasspathRoot(File rootDir) throws MalformedURLException
+    protected final URLClassLoader newLoaderWithClasspathRoot(File rootDir)
+            throws MalformedURLException
     {
         String urlPath = rootDir.toURL().toString();
         // URLs for folders must end with a slash to make URLClassLoader happy.
         URL url = new URL(urlPath + "/");
-    
+
         return new URLClassLoader(new URL[]
         { url }, Thread.currentThread().getContextClassLoader());
     }
@@ -136,7 +147,7 @@
     {
         String temp = System.getProperty("java.io.tmpdir");
         String rootDirPath = temp + "/" + UUID.randomUUID().toString();
-    
+
         return new File(rootDirPath);
     }