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é (@rotty3000) >> Senior Software Architect Liferay, Inc. (@Liferay) >> Board Member & EEG Co-Chair, OSGi Alliance (@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
