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

Reply via email to