Hi, On 08.10.2010 21:16, Richard S. Hall wrote: > On 10/8/10 15:11, Guillaume Nodet 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 ? > > Fine by me.
+1 Even though I think this property is rather intrusive into the implementation detail of an OSGi specification .... (is that one of those bendings of purity ?) Regards Felix > > I imagine we could have figured this out if you tried to discuss it in > advance of committing your patch... > > -> richard > >> >>> 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 >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>> >> >
