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 12:32:13 UTC

svn commit: r683934 - in /myfaces/trinidad/trunk_1.2.x: trinidad-api/src/main/java/org/apache/myfaces/trinidad/resource/ trinidad-api/src/main/java/org/apache/myfaces/trinidad/webapp/ trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/shar...

Author: matzew
Date: Fri Aug  8 03:32:12 2008
New Revision: 683934

URL: http://svn.apache.org/viewvc?rev=683934&view=rev
Log:
TRINIDAD-73 - trinidad-impl.jar file is left open during execution

Thanks to Thomas Jacob for his patches.
I converted them to current 1.2 trunk and applied them.

Modified:
    myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/resource/AggregatingResourceLoader.java
    myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/resource/CachingResourceLoader.java
    myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/resource/ProxyResourceLoader.java
    myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/webapp/ResourceServlet.java
    myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/io/URLInputStreamProvider.java

Modified: myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/resource/AggregatingResourceLoader.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/resource/AggregatingResourceLoader.java?rev=683934&r1=683933&r2=683934&view=diff
==============================================================================
--- myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/resource/AggregatingResourceLoader.java (original)
+++ myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/resource/AggregatingResourceLoader.java Fri Aug  8 03:32:12 2008
@@ -31,6 +31,7 @@
 import java.util.NoSuchElementException;
 
 import org.apache.myfaces.trinidad.logging.TrinidadLogger;
+import org.apache.myfaces.trinidad.util.URLUtils;
 
 /**
  * A resource loader implementation which combines multiple resources
@@ -290,7 +291,17 @@
 
       for (int i=0, len = _connections.length; i < len; i++)
       {
-        long lastModified = _connections[i].getLastModified();
+        long lastModified;
+        try
+        {
+          lastModified = URLUtils.getLastModified(_connections[i]);
+        }
+        catch (IOException exception)
+        {
+          maxLastModified = -1;
+          break;
+        }
+
         if (lastModified < 0)
         {
           maxLastModified = lastModified;

Modified: myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/resource/CachingResourceLoader.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/resource/CachingResourceLoader.java?rev=683934&r1=683933&r2=683934&view=diff
==============================================================================
--- myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/resource/CachingResourceLoader.java (original)
+++ myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/resource/CachingResourceLoader.java Fri Aug  8 03:32:12 2008
@@ -20,19 +20,17 @@
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
-import java.io.File;
 import java.io.IOException;
 
 import java.io.InputStream;
 import java.net.URL;
 
-import java.net.UnknownServiceException;
 import java.net.URLConnection;
 import java.net.URLStreamHandler;
 import java.util.Map;
 import java.util.HashMap;
 
-
+import org.apache.myfaces.trinidad.util.URLUtils;
 
 /**
  * Base class for resource loaders.  Resource loaders can lookup resources
@@ -109,7 +107,7 @@
     protected InputStream getInputStream(
       URLConnection conn) throws IOException
     {
-      long lastModified = _getLastModified(_delegate);
+      long lastModified = URLUtils.getLastModified(_delegate);
 
       if (_contents == null || _contentsModified < lastModified)
       {
@@ -129,7 +127,7 @@
           in.close();
         }
         _contents = out.toByteArray();
-        _contentsModified = conn.getLastModified();
+        _contentsModified = URLUtils.getLastModified(conn);
       }
 
       return new ByteArrayInputStream(_contents);
@@ -182,7 +180,14 @@
     @Override
     public long getLastModified()
     {
-      return _conn.getLastModified();
+      try
+      {
+        return URLUtils.getLastModified(_conn);
+      }
+      catch (IOException exception)
+      {
+        return -1;
+      }
     }
 
     @Override
@@ -202,31 +207,4 @@
     private final URLStreamHandlerImpl _handler;
   }
 
-  static private long _getLastModified(URL url) throws IOException
-  {
-    if ("file".equals(url.getProtocol()))
-    {
-      String externalForm = url.toExternalForm();
-      // Remove the "file:"
-      File file = new File(externalForm.substring(5));
-
-      return file.lastModified();
-    }
-    else
-    {
-      URLConnection connection = url.openConnection();
-      long modified = connection.getLastModified();
-      try
-      {
-        InputStream is = connection.getInputStream();
-        if (is != null)
-          is.close();
-      }
-      catch (UnknownServiceException use)
-      {
-      }
-
-      return modified;
-    }
-  }
-}
+}
\ No newline at end of file

Modified: myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/resource/ProxyResourceLoader.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/resource/ProxyResourceLoader.java?rev=683934&r1=683933&r2=683934&view=diff
==============================================================================
--- myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/resource/ProxyResourceLoader.java (original)
+++ myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/resource/ProxyResourceLoader.java Fri Aug  8 03:32:12 2008
@@ -29,6 +29,8 @@
 import java.io.OutputStream;
 import java.security.Permission;
 
+import org.apache.myfaces.trinidad.util.URLUtils;
+
 /**
  * A resource loader implementation that proxies another
  * resource loader, controlling the URLConnection.
@@ -224,7 +226,14 @@
     @Override
     public long getLastModified()
     {
-      return getURLConnection().getLastModified();
+      try
+      {
+        return URLUtils.getLastModified(getURLConnection());
+      }
+      catch (IOException exception)
+      {
+        return -1;
+      }
     }
 
     @Override

Modified: myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/webapp/ResourceServlet.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/webapp/ResourceServlet.java?rev=683934&r1=683933&r2=683934&view=diff
==============================================================================
--- myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/webapp/ResourceServlet.java (original)
+++ myfaces/trinidad/trunk_1.2.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/webapp/ResourceServlet.java Fri Aug  8 03:32:12 2008
@@ -29,7 +29,6 @@
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
 import java.net.SocketException;
-import java.net.UnknownServiceException;
 import java.net.URL;
 import java.net.URLConnection;
 import java.util.HashMap;
@@ -56,6 +55,7 @@
 import org.apache.myfaces.trinidad.resource.DirectoryResourceLoader;
 import org.apache.myfaces.trinidad.resource.ResourceLoader;
 import org.apache.myfaces.trinidad.resource.ServletContextResourceLoader;
+import org.apache.myfaces.trinidad.util.URLUtils;
 
 /**
  * A Servlet which serves up web application resources (images, style sheets,
@@ -243,23 +243,7 @@
       if (url == null)
         return super.getLastModified(request);
 
-      URLConnection connection = url.openConnection();
-      connection.setDoInput(false);
-      connection.setDoOutput(false);
-
-      long lastModified = connection.getLastModified();
-      // Make sure the connection is closed
-      try
-      {
-        InputStream is = connection.getInputStream();
-        if (is != null)
-          is.close();
-      }
-      catch (UnknownServiceException use)
-      {
-      }
-
-      return lastModified;
+      return URLUtils.getLastModified(url);
     }
     catch (IOException e)
     {
@@ -448,7 +432,16 @@
     if (contentLength >= 0)
       response.setContentLength(contentLength);
 
-    long lastModified = connection.getLastModified();
+    long lastModified;
+    try
+    {
+      lastModified = URLUtils.getLastModified(connection);
+    }
+    catch (IOException exception)
+    {
+      lastModified = -1;
+    }
+
     if (lastModified >= 0)
       response.setDateHeader("Last-Modified", lastModified);
 

Modified: myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/io/URLInputStreamProvider.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/io/URLInputStreamProvider.java?rev=683934&r1=683933&r2=683934&view=diff
==============================================================================
--- myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/io/URLInputStreamProvider.java (original)
+++ myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/io/URLInputStreamProvider.java Fri Aug  8 03:32:12 2008
@@ -25,7 +25,7 @@
 import java.net.URL;
 import java.net.URLConnection;
 
-import org.apache.myfaces.trinidadinternal.util.URLUtils;
+import org.apache.myfaces.trinidad.util.URLUtils;
 
 /**
  * An InputStreamProvider for opening URLs.
@@ -49,8 +49,8 @@
   {
     // Get the inputstream from the connection to avoid duplicate calls
     // to URL.openConnection
+    _lastModifiedTime = URLUtils.getLastModified(_url);
     URLConnection connection = _url.openConnection();
-    _lastModifiedTime = connection.getLastModified();
     // In theory, should not need to close
     InputStream base = connection.getInputStream();