Modified IContentLoader to include a getResourceFromContent() method to
avoid the class cast exception being reported in FELIX-149.
git-svn-id: https://svn.apache.org/repos/asf/incubator/felix/trunk@449768 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/framework/src/main/java/org/apache/felix/framework/Felix.java b/framework/src/main/java/org/apache/felix/framework/Felix.java
index 7680824..0a30700 100644
--- a/framework/src/main/java/org/apache/felix/framework/Felix.java
+++ b/framework/src/main/java/org/apache/felix/framework/Felix.java
@@ -1003,8 +1003,8 @@
{
throw new IllegalStateException("The bundle is uninstalled.");
}
- return ((ContentLoaderImpl) bundle.getInfo().getCurrentModule()
- .getContentLoader()).getResourceFromContent(name);
+ return bundle.getInfo().getCurrentModule()
+ .getContentLoader().getResourceFromContent(name);
}
/**
diff --git a/framework/src/main/java/org/apache/felix/framework/FindEntriesEnumeration.java b/framework/src/main/java/org/apache/felix/framework/FindEntriesEnumeration.java
index 62ef743..1f73b6a 100644
--- a/framework/src/main/java/org/apache/felix/framework/FindEntriesEnumeration.java
+++ b/framework/src/main/java/org/apache/felix/framework/FindEntriesEnumeration.java
@@ -119,9 +119,8 @@
if (checkSubstring(m_filePattern, lastElement))
{
// Convert entry name into an entry URL.
- return ((ContentLoaderImpl) m_bundle.getInfo()
- .getCurrentModule().getContentLoader())
- .getResourceFromContent(entryName);
+ return m_bundle.getInfo().getCurrentModule()
+ .getContentLoader().getResourceFromContent(entryName);
}
}
}
diff --git a/framework/src/main/java/org/apache/felix/framework/SystemBundleContentLoader.java b/framework/src/main/java/org/apache/felix/framework/SystemBundleContentLoader.java
index 2712065..2809b2d 100644
--- a/framework/src/main/java/org/apache/felix/framework/SystemBundleContentLoader.java
+++ b/framework/src/main/java/org/apache/felix/framework/SystemBundleContentLoader.java
@@ -91,6 +91,12 @@
return getClass().getClassLoader().getResource(name);
}
+ public URL getResourceFromContent(String name)
+ {
+ // There is no content for the system bundle, so return null.
+ return null;
+ }
+
public boolean hasInputStream(String urlPath) throws IOException
{
return (getClass().getClassLoader().getResource(urlPath) != null);
diff --git a/framework/src/main/java/org/apache/felix/framework/searchpolicy/ContentLoaderImpl.java b/framework/src/main/java/org/apache/felix/framework/searchpolicy/ContentLoaderImpl.java
index d70d0b5..de81ed0 100644
--- a/framework/src/main/java/org/apache/felix/framework/searchpolicy/ContentLoaderImpl.java
+++ b/framework/src/main/java/org/apache/felix/framework/searchpolicy/ContentLoaderImpl.java
@@ -176,7 +176,8 @@
return v.elements();
}
- // TODO: API: Investigate making this an API call.
+ // TODO: API: Investigate how to handle this better, perhaps we need
+ // multiple URL policies, one for content -- one for class path.
public URL getResourceFromContent(String name)
{
URL url = null;
diff --git a/framework/src/main/java/org/apache/felix/moduleloader/IContentLoader.java b/framework/src/main/java/org/apache/felix/moduleloader/IContentLoader.java
index 5ea5ffd..746388e 100644
--- a/framework/src/main/java/org/apache/felix/moduleloader/IContentLoader.java
+++ b/framework/src/main/java/org/apache/felix/moduleloader/IContentLoader.java
@@ -37,6 +37,7 @@
public Class getClass(String name);
public URL getResource(String name);
+ public URL getResourceFromContent(String name);
public boolean hasInputStream(String urlPath)
throws IOException;