You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2008/10/07 01:37:52 UTC
svn commit: r702304 -
/myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/resource/ClassLoaderResourceLoader.java
Author: lu4242
Date: Mon Oct 6 16:37:51 2008
New Revision: 702304
URL: http://svn.apache.org/viewvc?rev=702304&view=rev
Log:
enhance jar opening for getResourceVersion
Modified:
myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/resource/ClassLoaderResourceLoader.java
Modified: myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/resource/ClassLoaderResourceLoader.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/resource/ClassLoaderResourceLoader.java?rev=702304&r1=702303&r2=702304&view=diff
==============================================================================
--- myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/resource/ClassLoaderResourceLoader.java (original)
+++ myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/resource/ClassLoaderResourceLoader.java Mon Oct 6 16:37:51 2008
@@ -298,50 +298,71 @@
if (url != null)
{
JarURLConnection conn = (JarURLConnection)url.openConnection();
+ // See DIGESTER-29 for related problem
+ conn.setUseCaches(false);
- if (conn.getJarEntry().isDirectory())
+ try
{
- // Unfortunately, we have to scan all entry files
- JarFile file = conn.getJarFile();
- for (Enumeration<JarEntry> en = file.entries(); en.hasMoreElements();)
+ if (conn.getJarEntry().isDirectory())
{
- JarEntry entry = en.nextElement();
- String entryName = entry.getName();
-
- if (entryName.startsWith(path + '/'))
+ // Unfortunately, we have to scan all entry files
+ JarFile file = conn.getJarFile();
+ for (Enumeration<JarEntry> en = file.entries(); en.hasMoreElements();)
{
- if (entryName.length() == path.length() + 1)
- {
- // the same string, just skip it
- continue;
- }
-
- if (entryName.charAt(entryName.length() - 1) != '/')
- {
- // Skip files
- continue;
- }
-
- entryName = entryName.substring(path.length() + 1, entryName.length() - 1);
-
- if (entryName.indexOf('/') >= 0)
- {
- // Inner Directory
- continue;
- }
-
- String version = entryName;
- if (resourceVersion == null)
- {
- resourceVersion = version;
- }
- else if (getVersionComparator().compare(resourceVersion, version) < 0)
+ JarEntry entry = en.nextElement();
+ String entryName = entry.getName();
+
+ if (entryName.startsWith(path + '/'))
{
- resourceVersion = version;
+ if (entryName.length() == path.length() + 1)
+ {
+ // the same string, just skip it
+ continue;
+ }
+
+ if (entryName.charAt(entryName.length() - 1) != '/')
+ {
+ // Skip files
+ continue;
+ }
+
+ entryName = entryName.substring(path.length() + 1, entryName.length() - 1);
+
+ if (entryName.indexOf('/') >= 0)
+ {
+ // Inner Directory
+ continue;
+ }
+
+ String version = entryName;
+ if (resourceVersion == null)
+ {
+ resourceVersion = version;
+ }
+ else if (getVersionComparator().compare(resourceVersion, version) < 0)
+ {
+ resourceVersion = version;
+ }
}
}
}
}
+ finally
+ {
+ //See TRINIDAD-73
+ //just close the input stream again if
+ //by inspecting the entries the stream
+ //was let open.
+ try
+ {
+ conn.getInputStream().close();
+ }
+ catch (Exception exception)
+ {
+ // Ignored
+ }
+ }
+
}
}
catch (IOException e)