On Tue, Jan 13, 2015 at 2:20 PM, Peter Kriens <[email protected]>
wrote:

> Yup, the first incarnation did not copy the fields of the annotated
> annotation as attributes. This feature is only on 3.0
>

Got it!

.. It's still super cool!

Thx


>
> Kind regards,
>
> Peter Kriens
>
>
>
> On 13 jan. 2015, at 16:27, Raymond Auge <[email protected]> wrote:
>
> On the topic of @ProvideCapability, I was not able to create
> a parameterized annotation such as:
>
> @Retention(RetentionPolicy.CLASS)
> @ProvideCapability(
>   name="jsp.taglib", ns = "osgi.extender", version = "${@version}"
>  )
> public @interface JspTagLib {
> String value();
> }
>
> Such that I could then apply it as:
>
> @JspTagLib("http://alloy.liferay.com/tld/aui";)
> class Foo {}
>
> Rather I had to use this
>
> @ProvideCapability(
>   ns = "osgi.extender", version = "${@version}",
>         value = "uri=http://alloy.liferay.com/tld/aui";
>  )
> class Foo {}
>
> Is this because I'm using at bnd 2.3?
>
> Is it possible to make a parameterized extensions of @ProviderCapability?
>
> - Ray
>
> On Fri, Dec 19, 2014 at 5:06 PM, Raymond Auge <[email protected]>
> wrote:
>
>>
>>
>> On Fri, Dec 19, 2014 at 1:59 PM, Neil Bartlett <[email protected]>
>> wrote:
>>>
>>> Incidentally, if you use the latest bnd(tools) development builds, you
>>> can get some of the nasty Require-Capability syntax generated from Java
>>> annotations. For example, you can define your own annotation and add it to
>>> a class in your bundle:
>>>
>>> @JspTagLib(uri = “foo”)
>>> public class MyTagLib extends …
>>>
>>> Where the annotation is itself annotated as follows:
>>>
>>> @Retention(RetentionPolicy.CLASS)
>>> @RequireCapability(
>>> ns = "osgi.extender",
>>> filter = "(&(osgi.extender=jsp.taglib)(version>=1.0))”,
>>> effective = "active")
>>> public @interface JspTagLib {
>>> String uri();
>>> }
>>>
>>>
>>> When bnd sees the annotated class in your bundle, it adds the following
>>> to the generated manifest:
>>>
>>> Require-Capability:
>>> osgi.extender;uri=foo;filter:="(&(osgi.extender=jsp.taglib)(version>=1.0))";effective:=active
>>>
>>
>> Yes this is brilliant stuff that Peter has already submitted as a RFC for
>> R7.
>>
>>
>> https://github.com/osgi/design/blob/master/rfps/rfp-0167-Manifest-Annotations.pdf
>>
>> This brings an exciting ease of use to the req&cap model!
>>
>> - Ray
>>
>>
>>>
>>> Regards
>>> Neil
>>>
>>>
>>> On 19 Dec 2014, at 21:41, Raymond Auge <[email protected]> wrote:
>>>
>>>
>>>
>>> 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
>>>
>>>
>>>
>>> _______________________________________________
>>> 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)
>>
>
>
>
> --
> *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