I was planning to start a discussion around that, so let's do that now.

I'm not convinced we should remove this hack when classpath scanning is
implemented, mostly because even if then ultimately try to solve the same
problem, they will certainly do it in a different way.  What I mean is that
AFAIK, the classpath scanning stuff will result in a new api on the bundle
or bundleContext to iterate through resources, which means that in order to
support existing libraries, you kinda have to rewrite the whole thing in
order to accomodate those apis (especially if they are written so that they
work outside of osgi).
I think the hack i've written allows a smoother integration of those
libraries, with the drawback that you know it can break in certain
conditions.

Also, your comment says "Do not make containerisms public."
In that case, it's not really public because the public face of the Felix
Framework is the OSGi api.
I guess the question comes down to wether we want Felix to remain pure
(without containerisms) or make it easier for people to use it (by bending
the edges when it makes sense to allow people to deploy their existing
libraries without rewriting the whole thing).
Imho, Felix is not a research prototype, nor supposed to be the cleaneest
reference implementation of OSGi, so adapting to the users makes sense imho,
provided that it's done conciensouly by the user by activating a flag or
accessing a non public api (we fall in that case here imho).

Thoughts?

On Fri, Oct 8, 2010 at 16:22, <[email protected]> wrote:

> Author: rickhall
> Date: Fri Oct  8 14:22:39 2010
> New Revision: 1005843
>
> URL: http://svn.apache.org/viewvc?rev=1005843&view=rev
> Log:
> Do not make containerisms public. (FELIX-2645)
>
> Modified:
>
>  
> felix/trunk/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java
>
>  
> felix/trunk/framework/src/main/java/org/apache/felix/framework/ModuleImpl.java
>
>  
> felix/trunk/framework/src/main/java/org/apache/felix/framework/URLHandlersBundleURLConnection.java
>
>  
> felix/trunk/framework/src/main/java/org/apache/felix/framework/cache/ContentDirectoryContent.java
>
>  
> felix/trunk/framework/src/main/java/org/apache/felix/framework/cache/DirectoryContent.java
>
>  
> felix/trunk/framework/src/main/java/org/apache/felix/framework/cache/JarContent.java
>
>  
> felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/Content.java
>
>  
> felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/Module.java
>
> Modified:
> felix/trunk/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java
> URL:
> http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java?rev=1005843&r1=1005842&r2=1005843&view=diff
>
> ==============================================================================
> ---
> felix/trunk/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java
> (original)
> +++
> felix/trunk/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java
> Fri Oct  8 14:22:39 2010
> @@ -610,6 +610,7 @@ class ExtensionManager extends URLStream
>         return null;
>     }
>
> +    // TODO: REMOVE - Remove when class path scanning is implemented.
>     public URL getEntryAsURL(String name)
>     {
>         return null;
> @@ -763,6 +764,7 @@ class ExtensionManager extends URLStream
>             return
> getClass().getClassLoader().getResourceAsStream(urlPath);
>         }
>
> +        // TODO: REMOVE - Remove when class path scanning is implemented.
>         public URL getLocalURL(int index, String urlPath)
>         {
>             return getClass().getClassLoader().getResource(urlPath);
>
> Modified:
> felix/trunk/framework/src/main/java/org/apache/felix/framework/ModuleImpl.java
> URL:
> http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/ModuleImpl.java?rev=1005843&r1=1005842&r2=1005843&view=diff
>
> ==============================================================================
> ---
> felix/trunk/framework/src/main/java/org/apache/felix/framework/ModuleImpl.java
> (original)
> +++
> felix/trunk/framework/src/main/java/org/apache/felix/framework/ModuleImpl.java
> Fri Oct  8 14:22:39 2010
> @@ -1091,6 +1091,7 @@ public class ModuleImpl implements Modul
>         return getContentPath()[index - 1].getEntryAsStream(urlPath);
>     }
>
> +    // TODO: REMOVE - Remove when class path scanning is implemented.
>     public URL getLocalURL(int index, String urlPath)
>     {
>         if (urlPath.startsWith("/"))
>
> Modified:
> felix/trunk/framework/src/main/java/org/apache/felix/framework/URLHandlersBundleURLConnection.java
> URL:
> http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/URLHandlersBundleURLConnection.java?rev=1005843&r1=1005842&r2=1005843&view=diff
>
> ==============================================================================
> ---
> felix/trunk/framework/src/main/java/org/apache/felix/framework/URLHandlersBundleURLConnection.java
> (original)
> +++
> felix/trunk/framework/src/main/java/org/apache/felix/framework/URLHandlersBundleURLConnection.java
> Fri Oct  8 14:22:39 2010
> @@ -28,7 +28,7 @@ import org.apache.felix.framework.resolv
>
>  import org.apache.felix.framework.util.Util;
>
> -public class URLHandlersBundleURLConnection extends URLConnection
> +class URLHandlersBundleURLConnection extends URLConnection
>  {
>     private Felix m_framework;
>     private Module m_targetModule;
> @@ -201,7 +201,8 @@ public class URLHandlersBundleURLConnect
>      *
>      * @return the local URL
>      */
> -    public URL getLocalURL()
> +    // TODO: REMOVE - Remove when class path scanning is implemented.
> +    URL getLocalURL()
>     {
>         if ((m_targetModule == null) || (m_classPathIdx < 0))
>         {
>
> Modified:
> felix/trunk/framework/src/main/java/org/apache/felix/framework/cache/ContentDirectoryContent.java
> URL:
> http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/cache/ContentDirectoryContent.java?rev=1005843&r1=1005842&r2=1005843&view=diff
>
> ==============================================================================
> ---
> felix/trunk/framework/src/main/java/org/apache/felix/framework/cache/ContentDirectoryContent.java
> (original)
> +++
> felix/trunk/framework/src/main/java/org/apache/felix/framework/cache/ContentDirectoryContent.java
> Fri Oct  8 14:22:39 2010
> @@ -82,6 +82,7 @@ public class ContentDirectoryContent imp
>         return m_content.getEntryAsStream(m_rootPath + name);
>     }
>
> +    // TODO: REMOVE - Remove when class path scanning is implemented.
>     public URL getEntryAsURL(String name)
>     {
>         return m_content.getEntryAsURL(m_rootPath + name);
>
> Modified:
> felix/trunk/framework/src/main/java/org/apache/felix/framework/cache/DirectoryContent.java
> URL:
> http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/cache/DirectoryContent.java?rev=1005843&r1=1005842&r2=1005843&view=diff
>
> ==============================================================================
> ---
> felix/trunk/framework/src/main/java/org/apache/felix/framework/cache/DirectoryContent.java
> (original)
> +++
> felix/trunk/framework/src/main/java/org/apache/felix/framework/cache/DirectoryContent.java
> Fri Oct  8 14:22:39 2010
> @@ -133,6 +133,7 @@ public class DirectoryContent implements
>         return new FileInputStream(new File(m_dir, name));
>     }
>
> +    // TODO: REMOVE - Remove when class path scanning is implemented.
>     public URL getEntryAsURL(String name)
>     {
>         if ((name.length() > 0) && (name.charAt(0) == '/'))
>
> Modified:
> felix/trunk/framework/src/main/java/org/apache/felix/framework/cache/JarContent.java
> URL:
> http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/cache/JarContent.java?rev=1005843&r1=1005842&r2=1005843&view=diff
>
> ==============================================================================
> ---
> felix/trunk/framework/src/main/java/org/apache/felix/framework/cache/JarContent.java
> (original)
> +++
> felix/trunk/framework/src/main/java/org/apache/felix/framework/cache/JarContent.java
> Fri Oct  8 14:22:39 2010
> @@ -192,6 +192,7 @@ public class JarContent implements Conte
>         return is;
>     }
>
> +    // TODO: REMOVE - Remove when class path scanning is implemented.
>     public URL getEntryAsURL(String name)
>     {
>         try
>
> Modified:
> felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/Content.java
> URL:
> http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/Content.java?rev=1005843&r1=1005842&r2=1005843&view=diff
>
> ==============================================================================
> ---
> felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/Content.java
> (original)
> +++
> felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/Content.java
> Fri Oct  8 14:22:39 2010
> @@ -120,5 +120,6 @@ public interface Content
>      * @return A URL using a standard protocol such as file, jar
>      *           or null if not possible.
>      */
> +    // TODO: REMOVE - Remove when class path scanning is implemented.
>     URL getEntryAsURL(String name);
>  }
> \ No newline at end of file
>
> Modified:
> felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/Module.java
> URL:
> http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/Module.java?rev=1005843&r1=1005842&r2=1005843&view=diff
>
> ==============================================================================
> ---
> felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/Module.java
> (original)
> +++
> felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/Module.java
> Fri Oct  8 14:22:39 2010
> @@ -72,5 +72,6 @@ public interface Module
>         throws IOException;
>     InputStream getInputStream(int index, String urlPath)
>         throws IOException;
> +    // TODO: REMOVE - Remove when class path scanning is implemented.
>     URL getLocalURL(int index, String urlPath);
>  }
> \ No newline at end of file
>
>
>


-- 
Cheers,
Guillaume Nodet
------------------------
Blog: http://gnodet.blogspot.com/
------------------------
Open Source SOA
http://fusesource.com

Reply via email to