Author: nbubna
Date: Wed Aug 8 16:24:31 2007
New Revision: 564044
URL: http://svn.apache.org/viewvc?view=rev&rev=564044
Log:
using URLs in a Set can be a big performance hit due to DNS lookups on equals()
and hashCode() (FindBugs)
Modified:
velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/ClassUtils.java
Modified:
velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/ClassUtils.java
URL:
http://svn.apache.org/viewvc/velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/ClassUtils.java?view=diff&rev=564044&r1=564043&r2=564044
==============================================================================
---
velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/ClassUtils.java
(original)
+++
velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/ClassUtils.java
Wed Aug 8 16:24:31 2007
@@ -22,6 +22,7 @@
import java.io.InputStream;
import java.io.IOException;
import java.lang.reflect.Method;
+import java.net.MalformedURLException;
import java.net.URL;
import java.text.NumberFormat;
import java.text.ParseException;
@@ -124,7 +125,7 @@
*/
public static List<URL> getResources(String name, Object caller)
{
- Set<URL> urls = new LinkedHashSet<URL>();
+ Set<String> urls = new LinkedHashSet<String>();
// try to load all from the current thread context classloader
addResources(name, urls, getThreadContextLoader());
@@ -146,7 +147,17 @@
if (!urls.isEmpty())
{
List<URL> result = new ArrayList<URL>(urls.size());
- result.addAll(urls);
+ try
+ {
+ for (String url : urls)
+ {
+ result.add(new URL(url));
+ }
+ }
+ catch (MalformedURLException mue)
+ {
+ throw new IllegalStateException("A URL could not be recreated
from its own toString() form", mue);
+ }
return result;
}
else if (!name.startsWith("/"))
@@ -160,16 +171,16 @@
}
}
- private static final void addResource(String name, Set<URL> urls, Class c)
+ private static final void addResource(String name, Set<String> urls, Class
c)
{
URL url = c.getResource(name);
if (url != null)
{
- urls.add(url);
+ urls.add(url.toString());
}
}
- private static final boolean addResources(String name, Set<URL> urls,
+ private static final boolean addResources(String name, Set<String> urls,
ClassLoader loader)
{
boolean foundSome = false;
@@ -178,7 +189,7 @@
Enumeration<URL> e = loader.getResources(name);
while (e.hasMoreElements())
{
- urls.add(e.nextElement());
+ urls.add(e.nextElement().toString());
foundSome = true;
}
}