Thanks Carsten!

I tried both the options (unbounded=PropertyUnbounded.ARRAY and cardinality=N)
independently, but unfortunately it doesn't seem to work. The scr xml still
generates <property name="multivalued.property" value="only-single-value"/>

I even upgraded to SCR annotations v1.9.2 and Maven SCR plugin 1.12.0, and
still it won't work. Can I have a code sample somewhere, so that I can try
it out?


Thanks,
Thomas Joseph



On Fri, May 3, 2013 at 11:44 AM, Carsten Ziegeler <[email protected]>wrote:

> Hi,
>
> unfortunately, the java annotations do not distinguish between a single
> value and an array, so it's impossible by looking at {"single value"} if
> this is should be a single value or an array. For the tooling inspecting
> the annotations "single value" looks exactly the same. Therefore the SCR
> plugin assumes a single value to be exactly this: a single value :)
> If you just want to specify a single default value for a multi value
> property, you can either use cardinality=N if you want to limit the number
> of values, or unbounded=PropertyUnbounded.ARRAY. We usually the latter
> option.
>
> Carsten
>
>
> 2013/5/3 Thomas Joseph <[email protected]>
>
> > Hi All,
> >
> > I am using Felix SCR annotations v1.7.0 and Maven SCR plugin 1.8.0, and
> > declaring a OSGi property as:
> >
> > @Property(label="Multivalued Property", value={"only-single-value"})
> > private static final String MV_PROPERTY= "multivalued.property";
> >
> > And then try to retrieve the property value as:
> >
> >
> > @Activate
> > @Modified
> > protected void activate(*final ComponentContext context*) throws
> Exception
> > {
> >    Object prop = context.getProperties().get(MV_PROPERTY);
> > }
> >
> >
> >
> > But I observe that the value is retrieved as a String and not a String
> > array. The generated SCR xml itself is generated for a String and not a
> > String array.
> >  <property name="multivalued.property" value="only-single-value"/>
> >
> > However, if I declare the property as below, I get the value as an array.
> >
> > @Property(label="Multivalued Property", value={"only-single-value"*,
> ""*})
> > private static final String MV_PROPERTY= "multivalued.property";
> >
> > I Googled around but could not find anything conclusive. Am I missing
> > something here? How can I get a String array without a workaround done
> > above.
> >
> > --
> > Thanks,
> > /Thomas Joseph
> >
>
>
>
> --
> Carsten Ziegeler
> [email protected]
>

Reply via email to