felix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Guillaume Nodet <gno...@gmail.com>
Subject Re: [DISCUSS] Containerisms
Date Mon, 11 Oct 2010 07:51:06 GMT
I've committed the addition of the org.apache.felix.jarurls property, though
after some testing, it does not really solve my problem anyway ...
I've removed one "TODO: remove that when class path scanning is implemented"
as the new method I added on the Module is necessary in order to implement
this behavior.

On Fri, Oct 8, 2010 at 21:22, Richard S. Hall <heavy@ungoverned.org> wrote:

>
>
> On 10/8/10 15:16, Guillaume Nodet wrote:
>
>> On Fri, Oct 8, 2010 at 21:11, Guillaume Nodet<gnodet@gmail.com>  wrote:
>>
>>
>>> On Fri, Oct 8, 2010 at 20:41, Richard S. Hall<heavy@ungoverned.org
>>> >wrote:
>>>
>>>   On 10/8/10 14:08, Guillaume Nodet wrote:
>>>>
>>>>  On Fri, Oct 8, 2010 at 18:43, Felix Meschberger<fmeschbe@gmail.com>
>>>>>  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) ...
>>
>
> Yeah, except we have it on pretty good authority that this is going into
> the spec. For example, we never started prototyping composite bundles based
> on the old proposed API, since it wasn't clear where it was going, but once
> things become more certain then that's a different story.
>
> And this property will still go away once the spec is final and may go away
> if it doesn't come to pass. This is the whole "provisional API" discussion
> again.
>
> And for the record, I was against this property during the spec discussions
> too.
>
> -> 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,<rickhall@apache.org>   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

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message