You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Pierre De Rop (JIRA)" <ji...@apache.org> on 2016/11/06 23:43:58 UTC

[jira] [Commented] (FELIX-5355) Allow to use properties having dots with configuration proxies

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

Pierre De Rop commented on FELIX-5355:
--------------------------------------

Committed in revision 1768405 a candidate fix for the support of dots in configuration proxies.

added a patch in Configurable.java where the following conventions are now used:

- when a configuration proxy is accessing a given configuration key, first javabean convention is used, as before, in order to lookup the property from the dictionary:
getFooBar() or fooBar() method will access to "fooBar" property.

- then if no property value is found from the dictionary, then camel case convention is used to lookup the property from the dictionary:
getFooBar() or fooBar() will access to "foo.bar" property

- else, if no property value is found, then metatype osgi spec is applied: any single underscore is replaced by ".", unless a double "__" is found, in this case the sequence of two underscores is replaced by a single underscore:
foo_bar() will access to "foo.bar"
foo__bar() will access to "foo_bar"
foo_BaR() will access to foo.BaR" property

See integration test in org.apache.felix.dependencymanager.itest/src/org/apache/felix/dm/itest/api/FELIX5355_ConfigTypesWithDotsTest.java

> Allow to use properties having dots with configuration proxies
> --------------------------------------------------------------
>
>                 Key: FELIX-5355
>                 URL: https://issues.apache.org/jira/browse/FELIX-5355
>             Project: Felix
>          Issue Type: Improvement
>          Components: Dependency Manager
>    Affects Versions: org.apache.felix.dependencymanager-r8
>            Reporter: Pierre De Rop
>            Assignee: Pierre De Rop
>            Priority: Minor
>             Fix For: org.apache.felix.dependencymanager-r9
>
>         Attachments: FELIX-5355.patch
>
>
> Recently, a new feature has been introduced in DM to allow injecting type-safe configuration proxies when a ConfigurationDependency is used (see FELIX-5177).
> The principle is to deduce the name of a given property from a corresponding method name of the configuration proxy interface.
> However, in some cases, you have some component depending on some configuration with properties having some dots ("."), and this character can't be used in java methods. Of course, the properties can be renamed to new names without dots, but in some cases, when you want to use configuration proxies on some legacy components, you often can't modify the existing configuration properties.
> So, I would like to propose the attached patch which allows the support of dots in properties. the patch does the same done by DS: it maps the "\_" charater to ".". And if the property contains "\_" character, then you can use a double "__" underscore:
> For example, assuming you have the two properties in the configuration:
> {code}
> foo.param1=123
> foo_param2=456
> {code}
> then you can use the following method names:
> {code}
>     public interface MyConfig {
>         public String getFoo_param1(); // maps to "foo.param1"
>         public String getFoo__param2(); // maps to "foo_param2"
>    }
> {code}
> Is there any objections if I commit the attached patch ?
> thanks.



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