You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tiles.apache.org by ap...@apache.org on 2010/09/12 13:48:01 UTC

svn commit: r996297 - /tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/dao/BaseLocaleUrlDefinitionDAO.java

Author: apetrelli
Date: Sun Sep 12 11:48:00 2010
New Revision: 996297

URL: http://svn.apache.org/viewvc?rev=996297&view=rev
Log:
TILES-515
Separated exception handling of URL.openConnection from the rest to achieve OSGi compatibility.

Modified:
    tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/dao/BaseLocaleUrlDefinitionDAO.java

Modified: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/dao/BaseLocaleUrlDefinitionDAO.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/dao/BaseLocaleUrlDefinitionDAO.java?rev=996297&r1=996296&r2=996297&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/dao/BaseLocaleUrlDefinitionDAO.java (original)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/dao/BaseLocaleUrlDefinitionDAO.java Sun Sep 12 11:48:00 2010
@@ -23,6 +23,7 @@ package org.apache.tiles.definition.dao;
 
 import java.io.FileNotFoundException;
 import java.io.IOException;
+import java.io.InputStream;
 import java.net.URL;
 import java.net.URLConnection;
 import java.util.ArrayList;
@@ -265,23 +266,46 @@ public abstract class BaseLocaleUrlDefin
      */
     protected Map<String, Definition> loadDefinitionsFromURL(URL url) {
         Map<String, Definition> defsMap = null;
+
+        URLConnection connection = null;
+        try {
+            connection = url.openConnection();
+        } catch (IOException e) {
+            // File not found. continue.
+            if (log.isDebugEnabled()) {
+                log.debug("I/O exception thrown when opening URL connection to "
+                        + url.toString() + ", continue");
+            }
+            return null;
+        }
+
+        InputStream stream = null;
         try {
-            URLConnection connection = url.openConnection();
             connection.connect();
             lastModifiedDates.put(url.toExternalForm(), connection
                     .getLastModified());
 
             // Definition must be collected, starting from the base
             // source up to the last localized file.
-            defsMap = reader.read(connection.getInputStream());
+            stream = connection.getInputStream();
+            defsMap = reader.read(stream);
         } catch (FileNotFoundException e) {
             // File not found. continue.
             if (log.isDebugEnabled()) {
-                log.debug("File " + null + " not found, continue");
+                log.debug("File " + url.toString() + " not found, continue");
             }
         } catch (IOException e) {
             throw new DefinitionsFactoryException(
                     "I/O error processing configuration.", e);
+        } finally {
+            try {
+                if (stream != null) {
+                    stream.close();
+                }
+            } catch (IOException e) {
+                throw new DefinitionsFactoryException(
+                        "I/O error closing " + url.toString(), e);
+            }
         }
 
         return defsMap;