I actually do not understand your argument. The class space compatibility 
mentioned in 121.3.1 of the compendium spec is actually fulfilled better if the 
blueprint apis are imported and exported by the extender bundle. In this case 
the class loader of the extender and the class loader of the blueprint bundle 
actually reference to the same class, whereas if the packages are not imported 
but only exported by the extender bundle this class space compatibility will 
break as soon as the blueprint bundle is wired with any other bundle exporting 
the api is present.

Sure: with your model you can have two different blueprint extender bundles 
active at the at the same time and the blueprint bundle is extended by 
whichever blueprint bundle it is wired to (if both implement the same blueprint 
version this is random usually depending on the start order of the bundles), 
but I actually do not really see a use case for that.

Why would you need additional bundles to deploy? Importing a bundle you do also 
provide does not require you to have another bundle present that exports the 
packages, it just means that you don't have these class space compatibility 
issues if another bundle is present that is exporting the same API (e.g. and 
API bundle containing the compendium or enterprise APIs).

-----Original Message-----
From: Guillaume Nodet [mailto:[email protected]] 
Sent: Dienstag, 22. Mai 2012 08:42
To: [email protected]
Subject: Re: svn commit: r1340184 - 
/aries/branches/blueprint-0.3.2-fixes/blueprint-bundle/pom.xml

The rule you mentioned is the general rule, and I agree with it in
most of the cases for API packages.
However, as I mentioned, for blueprint, things are a bit different.
You can see that by checking 121.3.1 which specifically talks about
class space compatibility, and there's a reason for that as I
explained (I can go though it with more details if necessary).   The
overall goal is to actually split the class space into separate
portions.

So first, that's would be incompatible with 0.3 because it would needs
an additional bundle to deploy (that will the case in 1.0 anyway with
the small bundles, so please can we try to at least keep one version
clean ?).
Second, it would lead to serious problems when trying to have multiple
blueprint extenders in the same container, which is supposed to work
to some degree.
And last, the only benefit of sharing API is that you should be able
to update the extender without having to refresh the blueprint
bundles.  However, in real cases, that's rarely the case and the all
the blueprint beans have to be recreated anyway, so the benefit is
very low.

On Tue, May 22, 2012 at 7:52 AM, Siano, Stephan <[email protected]> wrote:
>
> AFAIK the OSGi spec proposes to do the import and export in such cases 
> (section 3.5.6 of the 4.3 core spec). Personally I find it much more probable 
> that the compendium or enterprise bundles are present, than having two 
> different blueprint implementations on the same stack. I also do not see any 
> issues with the different blueprint implementation importing the same 
> org.osgi.blueprint APIs. They are specified in the spec and should always be 
> the same wherever they come from.
>
> So I essentially do think that it's a good idea to import the osgi api.
>
> -----Original Message-----
> From: Guillaume Nodet [mailto:[email protected]]
> Sent: Dienstag, 22. Mai 2012 00:44
> To: [email protected]
> Subject: Re: svn commit: r1340184 - 
> /aries/branches/blueprint-0.3.2-fixes/blueprint-bundle/pom.xml
>
> I don't think that's a good idea to import the osgi api.
>
> It may lead to problems if multiple blueprint implementations are
> deployed for some reason.
> To support such a case, the blueprint bundles are supposed to import
> the org.osgi.blueprint package iirc, so that the osgi framework wiring
> will be correctly split and only the blueprint extender which has been
> imported will actually extend the bundle.  By importing the api, two
> extenders can then be compatible and both would extend the bundle.
>
> IF the main reason is that people have the compendium bundle deployed,
> well, that's a bad idea because the same problem also tend to apply
> with other osgi services such as ConfigAdmin and others which usually
> ship their own version of the package.
>
>
> On Fri, May 18, 2012 at 7:42 PM,  <[email protected]> wrote:
>> Author: dkulp
>> Date: Fri May 18 17:42:46 2012
>> New Revision: 1340184
>>
>> URL: http://svn.apache.org/viewvc?rev=1340184&view=rev
>> Log:
>> Import the osgi blueprint stuff so it can work with a wider range of 
>> containers
>>
>> Modified:
>>    aries/branches/blueprint-0.3.2-fixes/blueprint-bundle/pom.xml
>>
>> Modified: aries/branches/blueprint-0.3.2-fixes/blueprint-bundle/pom.xml
>> URL: 
>> http://svn.apache.org/viewvc/aries/branches/blueprint-0.3.2-fixes/blueprint-bundle/pom.xml?rev=1340184&r1=1340183&r2=1340184&view=diff
>> ==============================================================================
>> --- aries/branches/blueprint-0.3.2-fixes/blueprint-bundle/pom.xml (original)
>> +++ aries/branches/blueprint-0.3.2-fixes/blueprint-bundle/pom.xml Fri May 18 
>> 17:42:46 2012
>> @@ -40,7 +40,6 @@
>>         </aries.osgi.activator>
>>         <aries.osgi.import>
>>             !org.apache.aries.blueprint*,
>> -            !org.osgi.service.blueprint*,
>>             org.eclipse.osgi.internal.loader;resolution:=optional,
>>             org.eclipse.osgi.framework.internal.core;resolution:=optional,
>>             org.eclipse.osgi.framework.adaptor;resolution:=optional,
>>
>>
>
>
>
> --
> ------------------------
> Guillaume Nodet
> ------------------------
> Blog: http://gnodet.blogspot.com/
> ------------------------
> FuseSource, Integration everywhere
> http://fusesource.com



-- 
------------------------
Guillaume Nodet
------------------------
Blog: http://gnodet.blogspot.com/
------------------------
FuseSource, Integration everywhere
http://fusesource.com

Reply via email to