On Fri, Oct 8, 2010 at 21:11, Guillaume Nodet <[email protected]> wrote:
> > > On Fri, Oct 8, 2010 at 20:41, Richard S. Hall <[email protected]>wrote: > >> On 10/8/10 14:08, Guillaume Nodet wrote: >> >>> On Fri, Oct 8, 2010 at 18:43, Felix Meschberger<[email protected]> >>> wrote: >>> >>> 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. >>>> >>>> The real problem is to be able to discover resources in the bundle >>> class >>> space. For example, i want to know all resources in foo/bar/**/*.xml The >>> OSGi API does not provide any way to do that atm and a lot of libraries >>> use >>> some custom things based on jars / file urls to actually iterate and >>> discover those resources. >>> >> >> BTW, are you familiar with org.osgi.framework.jarurls from R4.3...this >> sounds like it is intended to do exactly what you want, no? >> >> -> richard >> >> > No, I missed that point in the draft, thx for the pointer. So what if I > want to bring that into Felix Framework? > I guess I'd have to use an "org.apache.felix.jarurls" property for now ? > Would that work for everyone ? > > Note that I don't really see how that would be different from what I tried. It's still a containerism until it's standardized (if it is ever) ... > >> The problem is just about a way to actually do things. It seems in the >>> enterprise world (JEE, middleware), we're more keen on bending the >>> purity a >>> bit to the benfit of being able to achieve our goals and we're also more >>> keen on doing that for third party libraries. >>> >>> It's true that if you write the whole osgi application from scratch, you >>> don't really care about supporting third party libraries. Unfortunately, >>> people just won't rewrite a third party product they already use just >>> because they want to play nicely in OSGi. That's my use case, and it >>> seems >>> it doesn't fit well with Felix goals, so I guess i'll have to support a >>> custom felix version in order to do that or only support equinox. >>> >>> I think I'll revert my commit as if the plan is to ditch it in the next >>> felix version, there's really no point in even using such a hack from my >>> pov. >>> >>> >>> 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 >>>>>> >>>>>> >>>>>> >>>>>> >>>>> >>> >>> > > > -- > Cheers, > Guillaume Nodet > ------------------------ > Blog: http://gnodet.blogspot.com/ > ------------------------ > Open Source SOA > http://fusesource.com > > > -- Cheers, Guillaume Nodet ------------------------ Blog: http://gnodet.blogspot.com/ ------------------------ Open Source SOA http://fusesource.com
