[ https://issues.apache.org/jira/browse/TAMAYA-252?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Anatole Tresch updated TAMAYA-252: ---------------------------------- Description: As of now accessing multiple properties (aka the Map) from a {{PropertySource}} returns {{Map<String,String>}}. This has several drawbacks: * When combining maps from multiple sources it may not always be clear, which properties belong to which source, especially when meta-properties are added as well. This quite probably ends up in mix of meta-properties. * The exact formatting of meta-properties can be delayed as well, since with {{PropertyValue}} a multi-value capable abstraction is already in place. * Similarly combining values from multiple property sources is simpler because it is possible to more easily add meta-data entries, which may be necessary, e.g. when evaluating collection entries. * This also allows evaluation of the raw values (single or all) to be extracted into a separate SPI: This could be added transparently as a core SPI, so the API is not affected here. The only disadvantage is that this change *actually breaks the current PropertySource interface*. Similarly it is also useful to adapt the *PropertyValueCombinationPolicy* to operate on {{PropertyValue·}} instead of {{Map<String,String}}. Proposed API change: *Old:* {noformat} public interface PropertySource{ [...] Map<String,String> getProperties(); } public interface PropertyValueCombinationPolicy{ Map<String,String> collect(Map<String,String> currentValue, String key, PropertySource propertySource); } public interface PropertyFilter{ String filterProperty(String value, FilterContext context); } {noformat} *New:* {noformat} public interface PropertySource{ [...] Map<String,PropertyValue> getProperties(); } public interface PropertyFilter{ PropertyValue filterProperty(PropertyValue value, FilterContext context); } public interface PropertyValueCombinationPolicy{ PropertyValue collect(PropertyValue currentValue, String key, PropertySource propertySource); } {noformat} was: As of now accessing multiple properties (aka the Map) from a {{PropertySource}} returns {{Map<String,String>}}. This has several drawbacks: * When combining maps from multiple sources it may not always be clear, which properties belong to which source, especially when meta-properties are added as well. This quite probably ends up in mix of meta-properties. * The exact formatting of meta-properties can be delayed as well, since with {{PropertyValue}} a multi-value capable abstraction is already in place. * Similarly combining values from multiple property sources is simpler because it is possible to more easily add meta-data entries, which may be necessary, e.g. when evaluating collection entries. * This also allows evaluation of the raw values (single or all) to be extracted into a separate SPI: This could be added transparently as a core SPI, so the API is not affected here. The only disadvantage is that this change *actually breaks the current PropertySource interface*. Similarly it is also useful to adapt the *PropertyValueCombinationPolicy* to operate on {{PropertyValue·}} instead of {{Map<String,String}}. Proposed API change: *Old:* {noformat} public interface PropertySource{ [...] Map<String,String> getProperties(); } public interface PropertyValueCombinationPolicy{ Map<String,String> collect(Map<String,String> currentValue, String key, PropertySource propertySource); } {noformat} *New:* {noformat} public interface PropertySource{ [...] Iterable<PropertyValue> getProperties(); } public interface PropertyValueCombinationPolicy{ PropertyValue collect(PropertyValue currentValue, String key, PropertySource propertySource); } {noformat} > Use PropertyValue also as SPI for listing of properties in a PropertySource > --------------------------------------------------------------------------- > > Key: TAMAYA-252 > URL: https://issues.apache.org/jira/browse/TAMAYA-252 > Project: Tamaya > Issue Type: Improvement > Components: API, Core > Affects Versions: 0.2-incubating > Reporter: Anatole Tresch > Assignee: Anatole Tresch > Priority: Critical > Labels: API, Meta-Values, Multi-Values > Fix For: 0.3-incubating > > Original Estimate: 4h > Remaining Estimate: 4h > > As of now accessing multiple properties (aka the Map) from a > {{PropertySource}} returns {{Map<String,String>}}. This has several drawbacks: > * When combining maps from multiple sources it may not always be clear, which > properties belong to which source, especially when meta-properties are added > as well. This quite probably ends up in mix of meta-properties. > * The exact formatting of meta-properties can be delayed as well, since with > {{PropertyValue}} a multi-value capable abstraction is already in place. > * Similarly combining values from multiple property sources is simpler > because it is possible to more easily add meta-data entries, which may be > necessary, e.g. when evaluating collection entries. > * This also allows evaluation of the raw values (single or all) to be > extracted into a separate SPI: This could be added transparently as a core > SPI, so the API is not affected here. > The only disadvantage is that this change *actually breaks the current > PropertySource interface*. Similarly it is also useful to adapt the > *PropertyValueCombinationPolicy* to operate on {{PropertyValue·}} instead of > {{Map<String,String}}. > Proposed API change: > *Old:* > {noformat} > public interface PropertySource{ > [...] > Map<String,String> getProperties(); > } > public interface PropertyValueCombinationPolicy{ > Map<String,String> collect(Map<String,String> currentValue, String key, > PropertySource propertySource); > } > public interface PropertyFilter{ > String filterProperty(String value, FilterContext context); > } > {noformat} > *New:* > {noformat} > public interface PropertySource{ > [...] > Map<String,PropertyValue> getProperties(); > } > public interface PropertyFilter{ > PropertyValue filterProperty(PropertyValue value, FilterContext context); > } > public interface PropertyValueCombinationPolicy{ > PropertyValue collect(PropertyValue currentValue, String key, > PropertySource propertySource); > } > {noformat} -- This message was sent by Atlassian JIRA (v6.3.15#6346)