TAMAYA-252: Unified PropertyValue builder API.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/commit/99e68500 Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/tree/99e68500 Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/diff/99e68500 Branch: refs/heads/master Commit: 99e6850022c7ce14f44e325f72edee573e7dcc65 Parents: 80d6ec2 Author: anatole <anat...@apache.org> Authored: Mon Mar 6 00:28:58 2017 +0100 Committer: anatole <anat...@apache.org> Committed: Mon Mar 6 00:28:58 2017 +0100 ---------------------------------------------------------------------- .../apache/tamaya/consul/ConsulPropertySource.java | 4 ++-- .../tamaya/metamodel/ext/FilteredPropertySource.java | 12 ++++++------ .../usagetracker/internal/DefaultConfigUsage.java | 15 ++++++++------- .../usagetracker/internal/UsageTrackerFilter.java | 4 ++-- .../tamaya/usagetracker/spi/ConfigUsageSpi.java | 8 +++++--- 5 files changed, 23 insertions(+), 20 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/99e68500/consul/src/main/java/org/apache/tamaya/consul/ConsulPropertySource.java ---------------------------------------------------------------------- diff --git a/consul/src/main/java/org/apache/tamaya/consul/ConsulPropertySource.java b/consul/src/main/java/org/apache/tamaya/consul/ConsulPropertySource.java index d65ce35..026a926 100644 --- a/consul/src/main/java/org/apache/tamaya/consul/ConsulPropertySource.java +++ b/consul/src/main/java/org/apache/tamaya/consul/ConsulPropertySource.java @@ -147,7 +147,7 @@ implements MutablePropertySource{ props.put(reqKey+".modifyIndex", String.valueOf(value.getModifyIndex())); props.put(reqKey+".lockIndex", String.valueOf(value.getLockIndex())); props.put(reqKey+".flags", String.valueOf(value.getFlags())); - return new PropertyValueBuilder(key, value.getValue().get(), getName()).setMetaEntries(props).build(); + return PropertyValue.builder(key, value.getValue().get(), getName()).setMetaEntries(props).build(); } } catch(Exception e){ LOG.log(Level.FINE, "etcd access failed on " + hostAndPort + ", trying next...", e); @@ -162,7 +162,7 @@ implements MutablePropertySource{ // try{ // Consul consul = Consul.builder().withHostAndPort(hostAndPort).build(); // KeyValueClient kvClient = consul.keyValueClient(); -// Optional<Value> valueOpt = kvClient.getValue(reqKey); +// Optional<Value> valueOpt = kvClient.getProperty(reqKey); // try{ // Map<String, String> props = kvClient.getProperties(""); // if(!props.containsKey("_ERROR")) { http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/99e68500/metamodel/src/main/java/org/apache/tamaya/metamodel/ext/FilteredPropertySource.java ---------------------------------------------------------------------- diff --git a/metamodel/src/main/java/org/apache/tamaya/metamodel/ext/FilteredPropertySource.java b/metamodel/src/main/java/org/apache/tamaya/metamodel/ext/FilteredPropertySource.java index f82e676..43d1836 100644 --- a/metamodel/src/main/java/org/apache/tamaya/metamodel/ext/FilteredPropertySource.java +++ b/metamodel/src/main/java/org/apache/tamaya/metamodel/ext/FilteredPropertySource.java @@ -18,11 +18,9 @@ */ package org.apache.tamaya.metamodel.ext; -import org.apache.tamaya.spi.FilterContext; -import org.apache.tamaya.spi.PropertyFilter; -import org.apache.tamaya.spi.PropertySource; -import org.apache.tamaya.spi.PropertyValue; +import org.apache.tamaya.spi.*; import org.apache.tamaya.spisupport.BasePropertySource; +import org.apache.tamaya.spisupport.DefaultConfigurationContextBuilder; import org.apache.tamaya.spisupport.PropertySourceComparator; import java.util.ArrayList; @@ -41,6 +39,8 @@ public final class FilteredPropertySource extends BasePropertySource { private PropertySource wrapped; private List<PropertyFilter> filters = new ArrayList<>(); + private ConfigurationContext dummyContext = new DefaultConfigurationContextBuilder() + .addPropertySources(this).build(); /** * Constructor used privately. Use {@link #of(PropertySource)} for making a {@link PropertySource} filterable. @@ -84,7 +84,7 @@ public final class FilteredPropertySource extends BasePropertySource { if(filters!=null){ PropertyValue filteredValue = value; for(PropertyFilter pf:filters){ - filteredValue = pf.filterProperty(filteredValue, new FilterContext(key, value)); + filteredValue = pf.filterProperty(filteredValue, new FilterContext(value, dummyContext)); } if(filteredValue!=null){ return filteredValue; @@ -101,7 +101,7 @@ public final class FilteredPropertySource extends BasePropertySource { Map<String, PropertyValue> result = new HashMap<>(); synchronized (filters) { for (PropertyValue value : props.values()) { - FilterContext filterContext = new FilterContext(value.getKey(), props); + FilterContext filterContext = new FilterContext(value, props, dummyContext); PropertyValue filteredValue = value; for (PropertyFilter pf : filters) { filteredValue = pf.filterProperty(filteredValue, filterContext); http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/99e68500/usagetracker/src/main/java/org/apache/tamaya/usagetracker/internal/DefaultConfigUsage.java ---------------------------------------------------------------------- diff --git a/usagetracker/src/main/java/org/apache/tamaya/usagetracker/internal/DefaultConfigUsage.java b/usagetracker/src/main/java/org/apache/tamaya/usagetracker/internal/DefaultConfigUsage.java index 247d7a6..dc6f8ed 100644 --- a/usagetracker/src/main/java/org/apache/tamaya/usagetracker/internal/DefaultConfigUsage.java +++ b/usagetracker/src/main/java/org/apache/tamaya/usagetracker/internal/DefaultConfigUsage.java @@ -18,6 +18,7 @@ */ package org.apache.tamaya.usagetracker.internal; +import org.apache.tamaya.spi.ConfigurationContext; import org.apache.tamaya.spi.PropertyValue; import org.apache.tamaya.usagetracker.UsageStat; import org.apache.tamaya.usagetracker.spi.ConfigUsageSpi; @@ -111,20 +112,20 @@ public class DefaultConfigUsage implements ConfigUsageSpi { } @Override - public void trackAllPropertiesAccess(){ - trackSingleKeyAccess("<<all>>", PropertyValue.of("<<all>>","<not stored>","-")); + public void trackAllPropertiesAccess(ConfigurationContext context){ + trackSingleKeyAccess(PropertyValue.of("<<all>>","<not stored>","-"), context); } @Override - public void trackSingleKeyAccess(String key, PropertyValue value){ + public void trackSingleKeyAccess(PropertyValue value, ConfigurationContext context){ // Ignore meta-entries - if(!isUsageTrackingEnabled() || key.startsWith("_")){ + if(!isUsageTrackingEnabled()){ return; } - UsageStat usage = this.usages.get(key); + UsageStat usage = this.usages.get(value.getKey()); if(usage==null){ - usage = new UsageStat(key); - this.usages.put(key, usage); + usage = new UsageStat(value.getKey()); + this.usages.put(value.getKey(), usage); } usage.trackUsage(value); } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/99e68500/usagetracker/src/main/java/org/apache/tamaya/usagetracker/internal/UsageTrackerFilter.java ---------------------------------------------------------------------- diff --git a/usagetracker/src/main/java/org/apache/tamaya/usagetracker/internal/UsageTrackerFilter.java b/usagetracker/src/main/java/org/apache/tamaya/usagetracker/internal/UsageTrackerFilter.java index 610f7e8..9859ff2 100644 --- a/usagetracker/src/main/java/org/apache/tamaya/usagetracker/internal/UsageTrackerFilter.java +++ b/usagetracker/src/main/java/org/apache/tamaya/usagetracker/internal/UsageTrackerFilter.java @@ -38,9 +38,9 @@ public class UsageTrackerFilter implements PropertyFilter{ public PropertyValue filterProperty(PropertyValue value, FilterContext context) { ConfigUsageSpi tracker = ServiceContextManager.getServiceContext().getService(ConfigUsageSpi.class); if (context.isSinglePropertyScoped()) { - tracker.trackSingleKeyAccess(context.getKey(), value); + tracker.trackSingleKeyAccess(value, context.getContext()); } else { - tracker.trackAllPropertiesAccess(); + tracker.trackAllPropertiesAccess(context.getContext()); } return value; } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/99e68500/usagetracker/src/main/java/org/apache/tamaya/usagetracker/spi/ConfigUsageSpi.java ---------------------------------------------------------------------- diff --git a/usagetracker/src/main/java/org/apache/tamaya/usagetracker/spi/ConfigUsageSpi.java b/usagetracker/src/main/java/org/apache/tamaya/usagetracker/spi/ConfigUsageSpi.java index b3a14bd..95b34b6 100644 --- a/usagetracker/src/main/java/org/apache/tamaya/usagetracker/spi/ConfigUsageSpi.java +++ b/usagetracker/src/main/java/org/apache/tamaya/usagetracker/spi/ConfigUsageSpi.java @@ -18,6 +18,7 @@ */ package org.apache.tamaya.usagetracker.spi; +import org.apache.tamaya.spi.ConfigurationContext; import org.apache.tamaya.spi.PropertyValue; import org.apache.tamaya.usagetracker.UsageStat; @@ -78,16 +79,17 @@ public interface ConfigUsageSpi { /** * Track the access of {@code Configuration#getProperties()} for * usage statistics. + * @param context the corresponding context. */ - void trackAllPropertiesAccess(); + void trackAllPropertiesAccess(ConfigurationContext context); /** * Track the access of {@code Configuration#get(String)} for * usage statistics. - * @param key key to track for + * @param context the corresponding context. * @param value value to track for */ - void trackSingleKeyAccess(String key, PropertyValue value); + void trackSingleKeyAccess(PropertyValue value, ConfigurationContext context); /** * Access the usage statistics for the recorded uses of configuration.