[ 
https://issues.apache.org/jira/browse/SLING-6025?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15465168#comment-15465168
 ] 

Stefan Seifert commented on SLING-6025:
---------------------------------------

i first thought about this as well, but do not wanted to mix up with the OSGi 
metatype to avoid confusion whether it's a context-aware or system-level 
configuration. but it's a good idea to discuss it here if its maybe the better 
chose nevertheless.

benefits using Metatype:
* reusing the existing osgi metatype anotations {{@ObjectClassDefinition}} and 
{{@AttributeDefinition}}
* annotation classes are parsed at compile time, metadata is available at 
runtime by metatype service
* we do not need classpath scanning mechanisms at runtime because the classes 
are detected on compile time and metadata files generated for each
* the same annotation class could be used for both context-aware configuration 
and osgi declarative services

drawbacks using Metatype:
* we mix two different configuration approaches working technically completely 
different - but sharing a common configName/metatype id namespace. this may be 
especially problematic when a custom (short) configName is used instead of the 
full class name.
* both annotations currently provide much more properties that we are currently 
plan to support - e.g. @ObjectClassDefinition, 
AttributeDefinition.type/cardinality/min/max/options etc. - we may just ignore 
them, or add a usefull implementation for them
* we have no possibility to pass in additional custom properties - this is 
needed esp. on attribute level to provide metadata for a graphical GUI editor - 
e.g. to configure a "pathbrowser" widget for a string parameter instead of a 
simple text field. we may create a custom annotation only for this usecase, but 
it will not be parsed and transported by the metatype functionality.
* people may get confused with this different configuration approaches sharing 
some functionality but not all

> Context-Aware Config: Provide configuration parameter metadata
> --------------------------------------------------------------
>
>                 Key: SLING-6025
>                 URL: https://issues.apache.org/jira/browse/SLING-6025
>             Project: Sling
>          Issue Type: New Feature
>          Components: Extensions
>            Reporter: Stefan Seifert
>            Assignee: Stefan Seifert
>              Labels: contextaware-config
>             Fix For: Context-Aware Configuration 1.0.0
>
>
> in order to support configuration editors GUIs we need to provide metadata 
> which configurations with parameter metadata are defined by the applications.
> this means:
> * list of all configurations registered (singleton, collections, nested) with
> ** their respective configuration names
> ** label (optional)
> ** description (optional)
> * list of all parameters for each configuration
> * parameter metadata:
> ** name
> ** type (only supported: String,int,long,double,boolean and arrays of them)
> ** label (optional)
> ** description (optional)
> ** default value
> ** further custom properties that may customized the configuration editor 
> (e.g. widget type to use, optional)
> the applications needs a possibility to provide such configuration+parameter 
> metadata. by default the annotation interface classes are used for this. they 
> have to be detected on the runtime in the classpath when a new bundle is 
> deployed using an osgi extender pattern (quite similar to sling models). to 
> the annotation classes further annotations can be applied an class and 
> property level to provide the additional metadata (label, description etc.).
> currently we can only support automatic detection of parameter metadata for 
> configurations which are defined and accessed with annotation classes, not 
> when the application used direct valuemap access or the low-level 
> ConfigurationResourceResolver.
> by making the configuration metadata provider pluggable via an SPI we can 
> ship the default configuration providing metadata detected from the deployed 
> annotation classes, but leave a door open to add other sources as well.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to