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]