On Fri, Dec 19, 2014 at 1:37 PM, Tim Ward <[email protected]> wrote:
>
> Hi Ray,
>
> Sent from my iPhone
>
> On 19 Dec 2014, at 21:23, Raymond Auge <[email protected]> wrote:
>
> Thanks Tim, I can start with this.
>
> I just want to make it clear that there are 3 actors involved for this
> scenario (perhaps that doesn't matter, let's see):
>
> 1) a JSP client bundle (has jsps)
>     Required-Capability: ...jsp.extender...
>     Required-Capability: ...jsp.taglib;filter:="(uri=foo)"
>
> 2) a taglib bundle (provides taglib)
>     Required-Capability: ...jsp.extender...
>     Provide-Capability: ... jsp.taglib;uri="foo"...
>
> 3) jsp extender (provides the JSP servlet to client bundles, ensures the
> client's required taglibs are available to the servlet)
>     Provide-Capability: ...jsp.extender...
>
>
> Between the three of these that would do the trick, although unless the
> extender bundle directly interacts with the client bundle (which it may do
> for this case)
>

it does.


> then I would only put the extender requirement in the extendee (providing
> the tag lib) not the client.
>

Got it!

Thanks you Tim. Happy Holidays!

- Ray


>
> On Fri, Dec 19, 2014 at 1:11 PM, Tim Ward <[email protected]> wrote:
>>
>> Having just noticed a couple of omissions...
>>
>> To actually match the filter in my previous email the extender would need
>> to specify:
>>
>> Provide-Capability: osgi.extender;osgi.extender=jsp.taglib;version=1.0.0
>>
>> Also, unless the extendee should be prevented from resolving in the
>> absence of the extender then it should specify effective:=active (as
>> opposed to the default of resolve)
>>
>> And now I'm done - speak to you all next year!
>>
>> Tim
>>
>>
>> Sent from my iPhone
>>
>> On 19 Dec 2014, at 20:55, Tim Ward <[email protected]> wrote:
>>
>> Hi Ray,
>>
>> There is already an osgi.extender namespace declared for this sort of
>> dependency. The extender provides a capability in the osgi.extender
>> namespace, which is required by the extendee. There's a blueprint example
>> in the spec, but this would work for your JSPs. Time for a JSP extender in
>> Enrerprise R7?
>>
>> Apologies for phone-based syntax issues!
>>
>> Extender:
>>
>> Provide-Capability: osgi.extender;osgi.extender=jsp.taglib
>>
>> Extendee:
>>
>> Require-Capability:
>> filter:=(&(osgi.extender=jsp.taglib)(version>=1.0.0)(!(version>=2.0.0)));
>> jsp.taglib.uri="http://my.uri.domain/cooltags_1_0";;
>> jsp.taglib.file="/META-INF/cooltags.tld";uses:=".....
>>
>> Regards,
>>
>> Tim
>>
>> Sent from my iPhone
>>
>> On 19 Dec 2014, at 19:38, Raymond Auge <[email protected]> wrote:
>>
>> Hey All,
>>
>> I'm wondering about modelling an extender pattern using requirements &
>> capabilities header.
>>
>> Hopefully I can explain this in a way that can be understood:
>>
>> In order to implement the extender pattern we often define a new "custom"
>> header which declares the "opt-in" on the extender.
>>
>> However, I'm wondering if instead of using a new "Custom header" if it
>> might not be better to define this "opt-in" using a Provide-Capability.
>>
>> For instance, suppose I wanted to support dynamic provision of JSP
>> taglibs.
>>
>> I could model this using pure java jars with taglibs by adding a header
>> to the jar something like:
>>
>> Provide-Capability:
>>     jsp.taglib;
>>         jsp.taglib.uri="http://my.uri.domain/cooltags_1_0";;
>>         jsp.taglib.file="/META-INF/cooltags.tld";uses:=".....",
>>     jsp.taglib;
>>         jsp.taglib.uri="http://my.uri.domain/othertags_2_0";;
>>         jsp.taglib.file="/META-INF/othertags.tld";uses:=".....",
>> Require-Capability: jsp.extender; filter:="(version=1.0)"
>>
>> This way I don't have to invent a new syntax or header and this can
>> easily be resolved against in both directions.
>>
>> The extender bundle would look for bundles providing jsp.taglib
>> capabilities and make the TLDs available to the JSP servlet it provides to
>> the clients using JSP.
>>
>> A client bundle using both JSP and using the taglib would ask for them by
>> making a Require-Capability against both
>>
>> Require-Capability: jsp.extender; filter:="(version=1.0)"
>> Require-Capability: jsp.taglib; filter:="(jsp.taglib.uri=
>> http://my.uri.domain/cooltags_1_0)"
>>
>> Thoughts?
>> --
>> *Raymond Augé* <http://www.liferay.com/web/raymond.auge/profile>
>>  (@rotty3000)
>> Senior Software Architect *Liferay, Inc.* <http://www.liferay.com>
>>  (@Liferay)
>> Board Member & EEG Co-Chair, OSGi Alliance <http://osgi.org>
>> (@OSGiAlliance)
>>
>> _______________________________________________
>> OSGi Developer Mail List
>> [email protected]
>> https://mail.osgi.org/mailman/listinfo/osgi-dev
>>
>>
>> _______________________________________________
>> OSGi Developer Mail List
>> [email protected]
>> https://mail.osgi.org/mailman/listinfo/osgi-dev
>>
>
>
> --
> *Raymond Augé* <http://www.liferay.com/web/raymond.auge/profile>
>  (@rotty3000)
> Senior Software Architect *Liferay, Inc.* <http://www.liferay.com>
>  (@Liferay)
> Board Member & EEG Co-Chair, OSGi Alliance <http://osgi.org>
> (@OSGiAlliance)
>
> _______________________________________________
> OSGi Developer Mail List
> [email protected]
> https://mail.osgi.org/mailman/listinfo/osgi-dev
>
>
> _______________________________________________
> OSGi Developer Mail List
> [email protected]
> https://mail.osgi.org/mailman/listinfo/osgi-dev
>


-- 
*Raymond Augé* <http://www.liferay.com/web/raymond.auge/profile>
 (@rotty3000)
Senior Software Architect *Liferay, Inc.* <http://www.liferay.com>
 (@Liferay)
Board Member & EEG Co-Chair, OSGi Alliance <http://osgi.org> (@OSGiAlliance)
_______________________________________________
OSGi Developer Mail List
[email protected]
https://mail.osgi.org/mailman/listinfo/osgi-dev

Reply via email to