Author: pete
Date: Thu May  5 14:01:21 2011
New Revision: 1099808

URL: http://svn.apache.org/viewvc?rev=1099808&view=rev
Log:
introduce wicket-time datatype where applicable

Modified:
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/util/resource/UrlResourceStream.java
    
wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/io/Connections.java
    
wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/io/IOUtils.java

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/util/resource/UrlResourceStream.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/util/resource/UrlResourceStream.java?rev=1099808&r1=1099807&r2=1099808&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/util/resource/UrlResourceStream.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/util/resource/UrlResourceStream.java
 Thu May  5 14:01:21 2011
@@ -26,7 +26,9 @@ import java.net.URLConnection;
 import org.apache.wicket.Application;
 import org.apache.wicket.protocol.http.WebApplication;
 import org.apache.wicket.util.io.Connections;
+import org.apache.wicket.util.io.IOUtils;
 import org.apache.wicket.util.lang.Bytes;
+import org.apache.wicket.util.lang.Objects;
 import org.apache.wicket.util.time.Time;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -74,7 +76,7 @@ public class UrlResourceStream extends A
                private String contentType;
 
                /** Last known time the stream was last modified. */
-               private long lastModified;
+               private Time lastModified;
 
        }
 
@@ -218,36 +220,26 @@ public class UrlResourceStream extends A
                {
                        StreamData data = getData(true);
 
+                       final Time lastModified;
+
                        if (file != null)
                        {
-                               // in case the file has been removed by now
-                               if (file.exists() == false)
-                               {
-                                       return null;
-                               }
-
-                               long lastModified = file.lastModified();
-
-                               // if last modified changed update content 
length and last modified date
-                               if (lastModified != data.lastModified)
-                               {
-                                       data.lastModified = lastModified;
-                                       setContentLength();
-                               }
+                               // get file modification timestamp
+                               lastModified = IOUtils.getLastModified(file);
                        }
                        else
                        {
-                               long lastModified = 
Connections.getLastModified(url);
-
-                               // if last modified changed update content 
length and last modified date
-                               if (lastModified != data.lastModified)
-                               {
-                                       data.lastModified = lastModified;
+                               // get url modification timestamp
+                               lastModified = Connections.getLastModified(url);
+                       }
 
-                                       setContentLength();
-                               }
+                       // if timestamp changed: update content length and last 
modified date
+                       if (Objects.equal(lastModified, data.lastModified) == 
false)
+                       {
+                               data.lastModified = lastModified;
+                               setContentLength();
                        }
-                       return Time.milliseconds(data.lastModified);
+                       return data.lastModified;
                }
                catch (IOException e)
                {

Modified: 
wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/io/Connections.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/io/Connections.java?rev=1099808&r1=1099807&r2=1099808&view=diff
==============================================================================
--- 
wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/io/Connections.java
 (original)
+++ 
wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/io/Connections.java
 Thu May  5 14:01:21 2011
@@ -22,6 +22,8 @@ import java.net.JarURLConnection;
 import java.net.URL;
 import java.net.URLConnection;
 
+import org.apache.wicket.util.time.Time;
+
 /**
  * {@link URLConnection} related utilities
  * 
@@ -37,13 +39,15 @@ public class Connections
         * Gets last modified date of the given {@link URL}
         * 
         * @param url
-        * @return last modified timestamp
+        * @return last modified timestamp or <code>null</code> if not available
         * @throws IOException
         */
-       public static long getLastModified(final URL url) throws IOException
+       public static Time getLastModified(final URL url) throws IOException
        {
                URLConnection connection = url.openConnection();
 
+               final long milliseconds;
+               
                try
                {
                        if (connection instanceof JarURLConnection)
@@ -51,9 +55,11 @@ public class Connections
                                JarURLConnection jarUrlConnection = 
(JarURLConnection)connection;
                                URL jarFileUrl = 
jarUrlConnection.getJarFileURL();
                                URLConnection jarFileConnection = 
jarFileUrl.openConnection();
+                               
                                try
                                {
-                                       return 
jarFileConnection.getLastModified();
+                                       // get timestamp from JAR
+                                       milliseconds = 
jarFileConnection.getLastModified();
                                }
                                finally
                                {
@@ -62,8 +68,19 @@ public class Connections
                        }
                        else
                        {
-                               return connection.getLastModified();
+                               // get timestamp from URL
+                               milliseconds = connection.getLastModified();
+                       }
+                       
+                       // return null if timestamp is unavailable
+                       if (milliseconds == 0)
+                       {
+                               return null;
                        }
+                       
+                       // return UNIX timestamp
+                       return Time.milliseconds(milliseconds);
+                       
                }
                finally
                {

Modified: 
wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/io/IOUtils.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/io/IOUtils.java?rev=1099808&r1=1099807&r2=1099808&view=diff
==============================================================================
--- 
wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/io/IOUtils.java 
(original)
+++ 
wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/io/IOUtils.java 
Thu May  5 14:01:21 2011
@@ -20,6 +20,7 @@ import java.io.BufferedInputStream;
 import java.io.BufferedReader;
 import java.io.CharArrayWriter;
 import java.io.Closeable;
+import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
@@ -29,6 +30,7 @@ import java.io.Reader;
 import java.io.StringWriter;
 import java.io.Writer;
 
+import org.apache.wicket.util.time.Time;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -947,4 +949,32 @@ public final class IOUtils
                int ch2 = input2.read();
                return (ch2 == -1);
        }
+
+       /**
+        * get last modification timestamp for file
+        * 
+        * @param file
+        * 
+        * @return timestamp
+        */
+       public static Time getLastModified(File file)
+       {
+               // in case the file has been removed by now
+               if (file.exists() == false)
+               {
+                       return null;
+               }
+
+               // get file modification timestamp
+               long millis = file.lastModified();
+
+               // zero indicates the timestamp could not be retrieved
+               if (millis == 0)
+               {
+                       return null;
+               }
+
+               // last file modification timestamp
+               return Time.milliseconds(millis);
+       }
 }


Reply via email to