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 ?


>
>  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

Reply via email to