You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "David Jencks (JIRA)" <ji...@apache.org> on 2014/08/18 08:15:18 UTC

[jira] [Updated] (FELIX-4607) [DS] Configure with nested annotations/interfaces

     [ https://issues.apache.org/jira/browse/FELIX-4607?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

David Jencks updated FELIX-4607:
--------------------------------

    Fix Version/s: scr-2.0.0

> [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)