You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@velocity.apache.org by nb...@apache.org on 2008/08/28 01:24:23 UTC

svn commit: r689660 - in /velocity/tools/trunk/src/main/java/org/apache/velocity/tools: ConversionUtils.java config/FileFactoryConfiguration.java generic/XmlTool.java

Author: nbubna
Date: Wed Aug 27 16:24:22 2008
New Revision: 689660

URL: http://svn.apache.org/viewvc?rev=689660&view=rev
Log:
move string->url conversion to ConversionUtils

Modified:
    velocity/tools/trunk/src/main/java/org/apache/velocity/tools/ConversionUtils.java
    velocity/tools/trunk/src/main/java/org/apache/velocity/tools/config/FileFactoryConfiguration.java
    velocity/tools/trunk/src/main/java/org/apache/velocity/tools/generic/XmlTool.java

Modified: velocity/tools/trunk/src/main/java/org/apache/velocity/tools/ConversionUtils.java
URL: http://svn.apache.org/viewvc/velocity/tools/trunk/src/main/java/org/apache/velocity/tools/ConversionUtils.java?rev=689660&r1=689659&r2=689660&view=diff
==============================================================================
--- velocity/tools/trunk/src/main/java/org/apache/velocity/tools/ConversionUtils.java (original)
+++ velocity/tools/trunk/src/main/java/org/apache/velocity/tools/ConversionUtils.java Wed Aug 27 16:24:22 2008
@@ -19,6 +19,8 @@
  * under the License.
  */
 
+import java.io.File;
+import java.net.URL;
 import java.text.DateFormat;
 import java.text.DecimalFormat;
 import java.text.DecimalFormatSymbols;
@@ -588,4 +590,63 @@
             return null;
         }
     }
+
+    /**
+     * Converts a string to a {@link URL}.  It will first try to
+     * treat the string as a File name, then a classpath resource,
+     * then finally as a literal URL.  If none of these work, then
+     * this will return {@code null}.
+     *
+     * @param value - the string to parse
+     * @return the {@link URL} form of the string or {@code null}
+     * @see File
+     * @see ClassUtils#getResource(String,Object)
+     * @see URL
+     */
+    public static URL toURL(String name)
+    {
+        return toURL(name, ConversionUtils.class);
+    }
+
+    /**
+     * Converts a string to a {@link URL}.  It will first try to
+     * treat the string as a File name, then a classpath resource,
+     * then finally as a literal URL.  If none of these work, then
+     * this will return {@code null}.
+     *
+     * @param value - the string to parse
+     * @param caller - the object or Class seeking the url
+     * @return the {@link URL} form of the string or {@code null}
+     * @see File
+     * @see ClassUtils#getResource(String,Object)
+     * @see URL
+     */
+    public static URL toURL(String name, Object caller)
+    {
+        try
+        {
+            File file = new File(name);
+            if (file.exists())
+            {
+                return file.toURI().toURL();
+            }
+        }
+        catch (Exception e) {}
+        try
+        {
+            URL url = ClassUtils.getResource(name, caller);
+            if (url != null)
+            {
+                return url;
+            }
+        }
+        catch (Exception e) {}
+        try
+        {
+            return new URL(name);
+        }
+        catch (Exception e) {}
+        return null;
+    }
+
 }

Modified: velocity/tools/trunk/src/main/java/org/apache/velocity/tools/config/FileFactoryConfiguration.java
URL: http://svn.apache.org/viewvc/velocity/tools/trunk/src/main/java/org/apache/velocity/tools/config/FileFactoryConfiguration.java?rev=689660&r1=689659&r2=689660&view=diff
==============================================================================
--- velocity/tools/trunk/src/main/java/org/apache/velocity/tools/config/FileFactoryConfiguration.java (original)
+++ velocity/tools/trunk/src/main/java/org/apache/velocity/tools/config/FileFactoryConfiguration.java Wed Aug 27 16:24:22 2008
@@ -19,14 +19,12 @@
  * under the License.
  */
 
-import java.io.File;
 import java.io.InputStream;
 import java.io.IOException;
-import java.net.MalformedURLException;
 import java.net.URL;
 import org.apache.velocity.exception.ResourceNotFoundException;
 import org.apache.velocity.runtime.log.Log;
-import org.apache.velocity.tools.ClassUtils;
+import org.apache.velocity.tools.ConversionUtils;
 
 /**
  * Provides support for reading a configuration file from a specified path,
@@ -108,39 +106,7 @@
 
     protected URL findURL(String path)
     {
-        // first, try the file system
-        File file = new File(path);
-        if (file.exists())
-        {
-            try
-            {
-                return file.toURI().toURL();
-            }
-            catch (MalformedURLException mue)
-            {
-                // this doesn't seem like it should happen if the file exists
-                // but i may be wrong, in which case we should change this to
-                // just log a debug message
-                throw new IllegalStateException("Could not convert existing file path \""+path+"\" to URL", mue);
-            }
-        }
-        
-        // then search the classpath
-        URL url = ClassUtils.getResource(path, this);
-        if (url != null)
-        {
-            return url;
-        }
-
-        // finally, just try directly turning it into a URL
-        try
-        {
-            return new URL(path);
-        }
-        catch (MalformedURLException mue)
-        {
-            return null;
-        }
+        return ConversionUtils.toURL(path, this);
     }
 
     protected void read(URL url, boolean required, Log log)

Modified: velocity/tools/trunk/src/main/java/org/apache/velocity/tools/generic/XmlTool.java
URL: http://svn.apache.org/viewvc/velocity/tools/trunk/src/main/java/org/apache/velocity/tools/generic/XmlTool.java?rev=689660&r1=689659&r2=689660&view=diff
==============================================================================
--- velocity/tools/trunk/src/main/java/org/apache/velocity/tools/generic/XmlTool.java (original)
+++ velocity/tools/trunk/src/main/java/org/apache/velocity/tools/generic/XmlTool.java Wed Aug 27 16:24:22 2008
@@ -19,7 +19,6 @@
  * under the License.
  */
 
-import java.io.File;
 import java.io.StringWriter;
 import java.net.URL;
 import java.util.ArrayList;
@@ -36,7 +35,6 @@
 import org.dom4j.io.XMLWriter;
 import org.dom4j.io.SAXReader;
 import org.apache.velocity.runtime.log.Log;
-import org.apache.velocity.tools.ClassUtils;
 import org.apache.velocity.tools.ConversionUtils;
 import org.apache.velocity.tools.ToolContext;
 import org.apache.velocity.tools.config.DefaultKey;
@@ -114,6 +112,10 @@
             {
                 read(file);
             }
+            catch (IllegalArgumentException iae)
+            {
+                throw iae;
+            }
             catch (Exception e)
             {
                 throw new RuntimeException("Could not read XML file at: "+file, e);
@@ -134,23 +136,6 @@
         this.nodes.add(node);
     }
 
-    //FIXME: dupe of FileFactoryConfiguration; move to one place
-    private URL getURL(String name) throws Exception
-    {
-        //TODO: grab the VelocityEngine so we can read files from there?
-        File file = new File(name);
-        if (file.exists())
-        {
-            return file.toURI().toURL();
-        }
-        URL url = ClassUtils.getResource(name, this);
-        if (url != null)
-        {
-            return url;
-        }
-        return new URL(name);
-    }
-
     private void log(Object o, Throwable t)
     {
         if (LOG != null)
@@ -164,7 +149,12 @@
      */
     protected void read(String file) throws Exception
     {
-        read(getURL(file));
+        URL url = ConversionUtils.toURL(file, this);
+        if (url == null)
+        {
+            throw new IllegalArgumentException("Could not find file, classpath resource or standard URL for '"+file+"'.");
+        }
+        read(url);
     }
 
     /**