You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ma...@apache.org on 2008/08/08 11:55:28 UTC
svn commit: r683924 -
/myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/util/URLUtils.java
Author: matzew
Date: Fri Aug 8 02:55:27 2008
New Revision: 683924
URL: http://svn.apache.org/viewvc?rev=683924&view=rev
Log:
made internal URLUtils clazz deprecated
Modified:
myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/util/URLUtils.java
Modified: myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/util/URLUtils.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/util/URLUtils.java?rev=683924&r1=683923&r2=683924&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/util/URLUtils.java (original)
+++ myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/util/URLUtils.java Fri Aug 8 02:55:27 2008
@@ -18,22 +18,21 @@
*/
package org.apache.myfaces.trinidadinternal.util;
-import java.io.InputStream;
-import java.io.IOException;
import java.io.File;
+import java.io.IOException;
-import java.net.UnknownServiceException;
+import java.net.JarURLConnection;
import java.net.URL;
import java.net.URLConnection;
-public class URLUtils
+@Deprecated
+public final class URLUtils
{
private URLUtils()
{
}
-
- static public long getLastModified(URL url) throws IOException
+ public static long getLastModified(URL url) throws IOException
{
if ("file".equals(url.getProtocol()))
{
@@ -45,25 +44,49 @@
}
else
{
- URLConnection connection = url.openConnection();
- long modified = connection.getLastModified();
+ return getLastModified(url.openConnection());
+ }
+ }
+
+ public static long getLastModified(URLConnection connection) throws IOException
+ {
+ long modified;
+ if (connection instanceof JarURLConnection)
+ {
+ // The following hack is required to work-around a JDK bug.
+ // getLastModified() on a JAR entry URL delegates to the actual JAR file
+ // rather than the JAR entry.
+ // This opens internally, and does not close, an input stream to the JAR
+ // file.
+ // In turn, you cannot close it by yourself, because it's internal.
+ // The work-around is to get the modification date of the JAR file
+ // manually,
+ // and then close that connection again.
+
+ URL jarFileUrl = ((JarURLConnection) connection).getJarFileURL();
+ URLConnection jarFileConnection = jarFileUrl.openConnection();
+
try
{
- InputStream is = connection.getInputStream();
- if (is != null)
- is.close();
- }
- // If the connection doesn't support getInputStream(),
- // or there's an IOException (Tomcat throws an exception
- // on directory views, for example), that's OK.
- catch (UnknownServiceException use)
- {
+ modified = jarFileConnection.getLastModified();
}
- catch (IOException ioe)
+ finally
{
+ try
+ {
+ jarFileConnection.getInputStream().close();
+ }
+ catch (Exception exception)
+ {
+ // Ignored
+ }
}
-
- return modified;
}
+ else
+ {
+ modified = connection.getLastModified();
+ }
+
+ return modified;
}
-}
+}
\ No newline at end of file