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);
+ }
}