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;