Hi, First of all: I agree with Richard in that we should at all cost prevent containerisms.
Second: I do not really understand what the problem is, that must be solved with this containerism and which cannot be solved with regular OSGi API. Third: For us outsiders of the specification process it is very hard to understand what insiders are talking of with respect to upcoming specifications (I only learned 5 minutes ago, that there is a public draft for 4.3). This issue must probably be solved by OSGi... Regards Felix On 08.10.2010 16:37, Guillaume Nodet wrote: > 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 >> >> >> > >
