Cannot override getResources() pre-Java 1.5 and some other minor cleanup.
(FELIX-2645)
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1022936 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/framework/src/main/java/org/apache/felix/framework/ModuleImpl.java b/framework/src/main/java/org/apache/felix/framework/ModuleImpl.java
index 7e0a395..8502047 100644
--- a/framework/src/main/java/org/apache/felix/framework/ModuleImpl.java
+++ b/framework/src/main/java/org/apache/felix/framework/ModuleImpl.java
@@ -1653,44 +1653,6 @@
return (parent == null) ? m_bootClassLoader : parent;
}
- static Enumeration convertToLocalUrls(Enumeration urls) {
- return new ToLocalUrlEnumeration(urls);
- }
-
- static URL convertToLocalUrl(URL url) {
- if (url.getProtocol().equals("bundle"))
- {
- try
- {
- url = ((URLHandlersBundleURLConnection)
- url.openConnection()).getLocalURL();
- }
- catch (IOException ex)
- {
- // Ignore and add original url.
- }
- }
- return url;
- }
-
- static class ToLocalUrlEnumeration implements Enumeration
- {
- final Enumeration enumeration;
-
- ToLocalUrlEnumeration(Enumeration enumeration) {
- this.enumeration = enumeration;
- }
-
- public boolean hasMoreElements() {
- return enumeration.hasMoreElements();
- }
-
- public Object nextElement() {
- URL url = (URL) enumeration.nextElement();
- return convertToLocalUrl(url);
- }
- }
-
private static final Constructor m_dexFileClassConstructor;
private static final Method m_dexFileClassLoadDex;
private static final Method m_dexFileClassLoadClass;
@@ -1749,7 +1711,7 @@
Enumeration urls = ModuleImpl.this.getResourcesByDelegation(name);
if (m_useLocalURLs)
{
- urls = convertToLocalUrls(urls);
+ urls = new ToLocalUrlEnumeration(urls);
}
return urls;
}
@@ -2060,16 +2022,6 @@
return url;
}
- public Enumeration getResources(String name) throws IOException
- {
- Enumeration urls = super.getResources(name);
- if (m_useLocalURLs)
- {
- urls = convertToLocalUrls(urls);
- }
- return urls;
- }
-
protected URL findResource(String name)
{
return ModuleImpl.this.getResourceLocal(name);
@@ -2082,7 +2034,12 @@
// can't. As a workaround, we make findResources() delegate instead.
protected Enumeration findResources(String name)
{
- return ModuleImpl.this.getResourcesByDelegation(name);
+ Enumeration urls = ModuleImpl.this.getResourcesByDelegation(name);
+ if (m_useLocalURLs)
+ {
+ urls = new ToLocalUrlEnumeration(urls);
+ }
+ return urls;
}
protected String findLibrary(String name)
@@ -2152,6 +2109,43 @@
}
}
+ static URL convertToLocalUrl(URL url)
+ {
+ if (url.getProtocol().equals("bundle"))
+ {
+ try
+ {
+ url = ((URLHandlersBundleURLConnection)
+ url.openConnection()).getLocalURL();
+ }
+ catch (IOException ex)
+ {
+ // Ignore and add original url.
+ }
+ }
+ return url;
+ }
+
+ static class ToLocalUrlEnumeration implements Enumeration
+ {
+ final Enumeration m_enumeration;
+
+ ToLocalUrlEnumeration(Enumeration enumeration)
+ {
+ m_enumeration = enumeration;
+ }
+
+ public boolean hasMoreElements()
+ {
+ return m_enumeration.hasMoreElements();
+ }
+
+ public Object nextElement()
+ {
+ return convertToLocalUrl((URL) m_enumeration.nextElement());
+ }
+ }
+
private static String diagnoseClassLoadError(
FelixResolver resolver, ModuleImpl module, String name)
{