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

David Jencks commented on FELIX-4607:
-------------------------------------

So, there are 2 kinds of inheritance support (using interfaces rather than 
annotations):
1. The type of the configuration interface is known statically: it is either 
the interface in the lifecycle method or an the type or array component type of 
an element in a nesting interface.  This doesn't require any extra information 
in the config properties.  It might work now or it might need better method 
search in superclasses.

2. The type of the configuration interface is not known statically: you want 
the actual implementation object to be a subtype of the statically known 
interface.  This requires specifying the desired type in the configuration map.

> [DS] Configure with nested annotations/interfaces
> -------------------------------------------------
>
>                 Key: FELIX-4607
>                 URL: https://issues.apache.org/jira/browse/FELIX-4607
>             Project: Felix
>          Issue Type: New Feature
>          Components: Declarative Services (SCR)
>    Affects Versions: scr-2.0.0
>            Reporter: David Jencks
>            Assignee: David Jencks
>             Fix For: scr-2.0.0
>
>
> RFC 190 has the unfortunate limitation that annotations used for 
> configuration cannot have annotation field values.  This is easy to remedy if 
> we pick a format for mapping typed data trees into a map.  I'm going to 
> implement this following James Strachan's system for creating an xml DSL for 
> spring configuration for ActiveMQ (see also geronimo's xbean-spring and 
> xbean-blueprint) and inspired by xpath. 
> Here's an example of how the mapping works.  Lets say you have annotations
> A { B[] b();} and B { String foo();}.  The configuration map will have 
> entries with keys of the form:
> b.0.foo
> b.1.foo
> b.2.foo
> b.<arrayIndex>.foo
> <element name of outer class>.<arrayIndex>.<element name of inner class>
> Obviously this can be extended to any level of nesting.  Non array annotation 
> valued elements will correspond to arrayIndex 0.
> To extend support to interfaces with inheritance, it's also necessary to 
> include the class of the desired sub-interface in the source map.  I don't 
> have a proposal yet for the name of the sub key.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to