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
