Repository: incubator-tamaya-sandbox Updated Branches: refs/heads/master 57e984010 -> 99e685002
TAMAYA-252: Unified PropertyValue API and usage, also separating key, value, source and other meta-data and defining a clear builder policy. 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/80d6ec20 Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/tree/80d6ec20 Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/diff/80d6ec20 Branch: refs/heads/master Commit: 80d6ec20ca5a7773efde56c509a0d25e3d49d091 Parents: 57e9840 Author: anatole <anat...@apache.org> Authored: Sun Mar 5 21:29:39 2017 +0100 Committer: anatole <anat...@apache.org> Committed: Sun Mar 5 21:29:39 2017 +0100 ---------------------------------------------------------------------- .../commons/CommonsConfigPropertySource.java | 12 +-- .../tamaya/consul/ConsulPropertySource.java | 4 +- .../tamaya/consul/ConsulPropertySourceTest.java | 7 +- .../apache/tamaya/consul/ConsulWriteTest.java | 3 +- .../apache/tamaya/etcd/EtcdPropertySource.java | 102 +++++++++++++------ .../tamaya/etcd/EtcdPropertySourceTest.java | 7 +- .../hazelcast/HazelcastPropertySource.java | 15 +-- .../tamaya/metamodel/EnabledPropertySource.java | 3 +- .../metamodel/ext/FilteredPropertySource.java | 32 +++--- .../ext/RefreshablePropertySource.java | 3 +- .../propertysources/PropertySourceBuilder.java | 5 +- .../tamaya/remote/BaseRemotePropertySource.java | 6 +- .../apache/tamaya/usagetracker/UsageStat.java | 12 ++- .../internal/DefaultConfigUsage.java | 5 +- .../internal/UsageTrackerFilter.java | 3 +- .../tamaya/usagetracker/spi/ConfigUsageSpi.java | 3 +- 16 files changed, 139 insertions(+), 83 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/80d6ec20/apache-commons/src/main/java/org/apache/tamaya/commons/CommonsConfigPropertySource.java ---------------------------------------------------------------------- diff --git a/apache-commons/src/main/java/org/apache/tamaya/commons/CommonsConfigPropertySource.java b/apache-commons/src/main/java/org/apache/tamaya/commons/CommonsConfigPropertySource.java index 8e8ea2f..2383e68 100644 --- a/apache-commons/src/main/java/org/apache/tamaya/commons/CommonsConfigPropertySource.java +++ b/apache-commons/src/main/java/org/apache/tamaya/commons/CommonsConfigPropertySource.java @@ -22,10 +22,7 @@ import org.apache.commons.configuration.Configuration; import org.apache.tamaya.spi.PropertySource; import org.apache.tamaya.spi.PropertyValue; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; -import java.util.Objects; +import java.util.*; /** * PropertySource that wraps {@link org.apache.commons.configuration.Configuration}. @@ -52,6 +49,7 @@ public class CommonsConfigPropertySource implements PropertySource { } } + @Override public int getOrdinal() { return ordinal; } @@ -68,12 +66,12 @@ public class CommonsConfigPropertySource implements PropertySource { } @Override - public Map<String, String> getProperties() { - Map<String, String> config = new HashMap<>(); + public Map<String, PropertyValue> getProperties() { + Map<String,PropertyValue> config = new HashMap<>(); Iterator<String> keyIter = commonsConfig.getKeys(); while (keyIter.hasNext()) { String key = keyIter.next(); - config.put(key, commonsConfig.getString(key)); + config.put(key, PropertyValue.of(key, commonsConfig.getString(key), getName())); } return config; } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/80d6ec20/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 7c0b017..d65ce35 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()).setContextData(props).build(); + return new PropertyValueBuilder(key, value.getValue().get(), getName()).setMetaEntries(props).build(); } } catch(Exception e){ LOG.log(Level.FINE, "etcd access failed on " + hostAndPort + ", trying next...", e); @@ -157,7 +157,7 @@ implements MutablePropertySource{ } @Override - public Map<String, String> getProperties() { + public Map<String, PropertyValue> getProperties() { // for(HostAndPort hostAndPort: getConsulBackends()){ // try{ // Consul consul = Consul.builder().withHostAndPort(hostAndPort).build(); http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/80d6ec20/consul/src/test/java/org/apache/tamaya/consul/ConsulPropertySourceTest.java ---------------------------------------------------------------------- diff --git a/consul/src/test/java/org/apache/tamaya/consul/ConsulPropertySourceTest.java b/consul/src/test/java/org/apache/tamaya/consul/ConsulPropertySourceTest.java index 0c649a8..a71f577 100644 --- a/consul/src/test/java/org/apache/tamaya/consul/ConsulPropertySourceTest.java +++ b/consul/src/test/java/org/apache/tamaya/consul/ConsulPropertySourceTest.java @@ -19,6 +19,7 @@ package org.apache.tamaya.consul; import org.apache.tamaya.consul.ConsulPropertySource; +import org.apache.tamaya.spi.PropertyValue; import org.junit.BeforeClass; import org.junit.Test; @@ -56,15 +57,15 @@ public class ConsulPropertySourceTest { @Test public void testGet() throws Exception { - Map<String,String> props = propertySource.getProperties(); - for(Map.Entry<String,String> en:props.entrySet()){ + Map<String,PropertyValue> props = propertySource.getProperties(); + for(Map.Entry<String,PropertyValue> en:props.entrySet()){ assertNotNull("Key not found: " + en.getKey(), propertySource.get(en.getKey())); } } @Test public void testGetProperties() throws Exception { - Map<String,String> props = propertySource.getProperties(); + Map<String,PropertyValue> props = propertySource.getProperties(); assertNotNull(props); } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/80d6ec20/consul/src/test/java/org/apache/tamaya/consul/ConsulWriteTest.java ---------------------------------------------------------------------- diff --git a/consul/src/test/java/org/apache/tamaya/consul/ConsulWriteTest.java b/consul/src/test/java/org/apache/tamaya/consul/ConsulWriteTest.java index b66d68c..4b3452d 100644 --- a/consul/src/test/java/org/apache/tamaya/consul/ConsulWriteTest.java +++ b/consul/src/test/java/org/apache/tamaya/consul/ConsulWriteTest.java @@ -20,6 +20,7 @@ package org.apache.tamaya.consul; import com.google.common.net.HostAndPort; import org.apache.tamaya.mutableconfig.ConfigChangeRequest; +import org.apache.tamaya.spi.PropertyValue; import org.junit.BeforeClass; import java.net.MalformedURLException; @@ -73,7 +74,7 @@ public class ConsulWriteTest { @org.junit.Test public void testGetProperties() throws Exception { if(!execute)return; - Map<String,String> result = propertySource.getProperties(); + Map<String,PropertyValue> result = propertySource.getProperties(); assertTrue(result.isEmpty()); } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/80d6ec20/etcd/src/main/java/org/apache/tamaya/etcd/EtcdPropertySource.java ---------------------------------------------------------------------- diff --git a/etcd/src/main/java/org/apache/tamaya/etcd/EtcdPropertySource.java b/etcd/src/main/java/org/apache/tamaya/etcd/EtcdPropertySource.java index b3469fc..e6175b7 100644 --- a/etcd/src/main/java/org/apache/tamaya/etcd/EtcdPropertySource.java +++ b/etcd/src/main/java/org/apache/tamaya/etcd/EtcdPropertySource.java @@ -47,6 +47,8 @@ public class EtcdPropertySource extends BasePropertySource private List<EtcdAccessor> etcdBackends; + private Map<String,String> metaData = new HashMap<>(); + public EtcdPropertySource(String prefix, Collection<String> backends){ this.prefix = prefix==null?"":prefix; etcdBackends = new ArrayList<>(); @@ -55,6 +57,11 @@ public class EtcdPropertySource extends BasePropertySource } setDefaultOrdinal(1000); setName("etcd"); + if(!prefix.isEmpty()){ + metaData.put("prefix", prefix); + } + metaData.put("backend", "etcd"); + metaData.put("backends", backends.toString()); } public EtcdPropertySource(Collection<String> backends){ @@ -64,12 +71,27 @@ public class EtcdPropertySource extends BasePropertySource } setDefaultOrdinal(1000); setName("etcd"); + metaData.put("backend", "etcd"); + metaData.put("backends", backends.toString()); } public EtcdPropertySource(){ prefix = System.getProperty("tamaya.etcd.prefix", ""); setDefaultOrdinal(1000); setName("etcd"); + if(!prefix.isEmpty()){ + metaData.put("prefix", prefix); + } + metaData.put("backend", "etcd"); + String backendProp = ""; + for(EtcdAccessor acc:getEtcdBackends()){ + if(backendProp.isEmpty()){ + backendProp += acc.getUrl(); + }else{ + backendProp += ", " + acc.getUrl(); + } + } + metaData.put("backends", backendProp); } public EtcdPropertySource(String... backends){ @@ -79,6 +101,11 @@ public class EtcdPropertySource extends BasePropertySource } setDefaultOrdinal(1000); setName("etcd"); + if(!prefix.isEmpty()){ + metaData.put("prefix", prefix); + } + metaData.put("backend", "etcd"); + metaData.put("backends", backends.toString()); } public String getPrefix() { @@ -86,7 +113,12 @@ public class EtcdPropertySource extends BasePropertySource } public EtcdPropertySource setPrefix(String prefix) { - this.prefix = prefix; + this.prefix = prefix==null?"":prefix; + if(!prefix.isEmpty()){ + metaData.put("prefix", prefix); + }else{ + metaData.remove("prefix"); + } return this; } @@ -114,27 +146,13 @@ public class EtcdPropertySource extends BasePropertySource key = key.substring(prefix.length()); } Map<String,String> props; - String reqKey = key; - if(key.startsWith("_")){ - reqKey = key.substring(1); - if(reqKey.endsWith(".createdIndex")){ - reqKey = reqKey.substring(0,reqKey.length()-".createdIndex".length()); - } else if(reqKey.endsWith(".modifiedIndex")){ - reqKey = reqKey.substring(0,reqKey.length()-".modifiedIndex".length()); - } else if(reqKey.endsWith(".ttl")){ - reqKey = reqKey.substring(0,reqKey.length()-".ttl".length()); - } else if(reqKey.endsWith(".expiration")){ - reqKey = reqKey.substring(0,reqKey.length()-".expiration".length()); - } else if(reqKey.endsWith(".source")){ - reqKey = reqKey.substring(0,reqKey.length()-".source".length()); - } - } for(EtcdAccessor accessor: EtcdBackendConfig.getEtcdBackends()){ try{ - props = accessor.get(reqKey); + props = accessor.get(key); if(!props.containsKey("_ERROR")) { // No repfix mapping necessary here, since we only access/return the value... - return new PropertyValueBuilder(key, props.get(reqKey), getName()).setContextData(props).build(); + return PropertyValue.builder(key, props.get(key), getName()).setMetaEntries(metaData) + .addMetaEntries(props).removeMetaEntry(key).build(); } else{ LOG.log(Level.FINE, "etcd error on " + accessor.getUrl() + ": " + props.get("_ERROR")); } @@ -146,7 +164,7 @@ public class EtcdPropertySource extends BasePropertySource } @Override - public Map<String, String> getProperties() { + public Map<String, PropertyValue> getProperties() { for(EtcdAccessor accessor: getEtcdBackends()){ try{ Map<String, String> props = accessor.getProperties(""); @@ -162,19 +180,45 @@ public class EtcdPropertySource extends BasePropertySource return Collections.emptyMap(); } - private Map<String, String> mapPrefix(Map<String, String> props) { - if(prefix.isEmpty()){ - return props; + private Map<String, PropertyValue> mapPrefix(Map<String, String> props) { + + Map<String, PropertyValueBuilder> builders = new HashMap<>(); + // Evaluate keys + for(Map.Entry<String,String> entry:props.entrySet()) { + if (!entry.getKey().startsWith("_")) { + PropertyValueBuilder builder = builders.get(entry.getKey()); + if (builder == null) { + builder = PropertyValue.builder(entry.getKey(), "", getName()).setMetaEntries(metaData); + builders.put(entry.getKey(), builder); + } + } + } + // add meta entries + for(Map.Entry<String,String> entry:props.entrySet()) { + if (entry.getKey().startsWith("_")) { + String key = entry.getKey().substring(1); + for(String field:new String[]{".createdIndex", ".modifiedIndex", ".ttl", + ".expiration", ".source"}) { + if (key.endsWith(field)) { + key = key.substring(0, key.length() - field.length()); + PropertyValueBuilder builder = builders.get(key); + if (builder != null) { + builder.addMetaEntry(field, entry.getValue()); + } + } + } + } } - Map<String,String> map = new HashMap<>(); - for(Map.Entry<String,String> entry:props.entrySet()){ - if(entry.getKey().startsWith("_")){ - map.put("_" + prefix + entry.getKey().substring(1), entry.getValue()); - } else{ - map.put(prefix+ entry.getKey(), entry.getValue()); + // Map to value map. + Map<String, PropertyValue> values = new HashMap<>(); + for(Map.Entry<String,PropertyValueBuilder> en:builders.entrySet()) { + if(prefix.isEmpty()){ + values.put(en.getKey(), en.getValue().build()); + }else{ + values.put(prefix + en.getKey(), en.getValue().setKey(prefix + en.getKey()).build()); } } - return map; + return values; } @Override http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/80d6ec20/etcd/src/test/java/org/apache/tamaya/etcd/EtcdPropertySourceTest.java ---------------------------------------------------------------------- diff --git a/etcd/src/test/java/org/apache/tamaya/etcd/EtcdPropertySourceTest.java b/etcd/src/test/java/org/apache/tamaya/etcd/EtcdPropertySourceTest.java index 898a963..3766c1e 100644 --- a/etcd/src/test/java/org/apache/tamaya/etcd/EtcdPropertySourceTest.java +++ b/etcd/src/test/java/org/apache/tamaya/etcd/EtcdPropertySourceTest.java @@ -18,6 +18,7 @@ */ package org.apache.tamaya.etcd; +import org.apache.tamaya.spi.PropertyValue; import org.junit.BeforeClass; import org.junit.Test; @@ -55,15 +56,15 @@ public class EtcdPropertySourceTest { @Test public void testGet() throws Exception { - Map<String,String> props = propertySource.getProperties(); - for(Map.Entry<String,String> en:props.entrySet()){ + Map<String,PropertyValue> props = propertySource.getProperties(); + for(Map.Entry<String,PropertyValue> en:props.entrySet()){ assertNotNull("Key not found: " + en.getKey(), propertySource.get(en.getKey())); } } @Test public void testGetProperties() throws Exception { - Map<String,String> props = propertySource.getProperties(); + Map<String,PropertyValue> props = propertySource.getProperties(); assertNotNull(props); } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/80d6ec20/hazelcast/src/main/java/org/apache/tamaya/hazelcast/HazelcastPropertySource.java ---------------------------------------------------------------------- diff --git a/hazelcast/src/main/java/org/apache/tamaya/hazelcast/HazelcastPropertySource.java b/hazelcast/src/main/java/org/apache/tamaya/hazelcast/HazelcastPropertySource.java index 20d23f2..f883cc5 100644 --- a/hazelcast/src/main/java/org/apache/tamaya/hazelcast/HazelcastPropertySource.java +++ b/hazelcast/src/main/java/org/apache/tamaya/hazelcast/HazelcastPropertySource.java @@ -28,7 +28,6 @@ import org.apache.tamaya.mutableconfig.spi.MutablePropertySource; import org.apache.tamaya.spi.PropertyValue; import org.apache.tamaya.spisupport.BasePropertySource; -import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Objects; @@ -166,15 +165,19 @@ implements MutablePropertySource{ return null; } return PropertyValue.builder(key, value, getName()) - .addContextData("backend", "Hazelcast") - .addContextData("instance", hcConfig.getInstanceName()) - .addContextData("mapReference", mapReference) + .addMetaEntry("backend", "Hazelcast") + .addMetaEntry("instance", hcConfig.getInstanceName()) + .addMetaEntry("mapReference", mapReference) .build(); } @Override - public Map<String, String> getProperties() { - return Collections.unmodifiableMap(this.configMap); + public Map<String, PropertyValue> getProperties() { + Map<String,String> meta = new HashMap<>(); + meta.put("backend", "Hazelcast"); + meta.put("instance", hazelcastInstance.getConfig().getInstanceName()); + meta.put("mapReference", mapReference); + return PropertyValue.map(this.configMap, getName(), meta); } @Override http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/80d6ec20/metamodel/src/main/java/org/apache/tamaya/metamodel/EnabledPropertySource.java ---------------------------------------------------------------------- diff --git a/metamodel/src/main/java/org/apache/tamaya/metamodel/EnabledPropertySource.java b/metamodel/src/main/java/org/apache/tamaya/metamodel/EnabledPropertySource.java index b425464..7e04499 100644 --- a/metamodel/src/main/java/org/apache/tamaya/metamodel/EnabledPropertySource.java +++ b/metamodel/src/main/java/org/apache/tamaya/metamodel/EnabledPropertySource.java @@ -95,6 +95,7 @@ public final class EnabledPropertySource this.enabled = enabled; } + @Override public int getOrdinal() { return PropertySourceComparator.getOrdinal(this.wrapped); } @@ -113,7 +114,7 @@ public final class EnabledPropertySource } @Override - public Map<String, String> getProperties() { + public Map<String, PropertyValue> getProperties() { if(!isEnabled()){ return Collections.emptyMap(); } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/80d6ec20/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 0ad7dd2..f82e676 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 @@ -27,6 +27,7 @@ import org.apache.tamaya.spisupport.PropertySourceComparator; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -62,6 +63,7 @@ public final class FilteredPropertySource extends BasePropertySource { return new FilteredPropertySource(propertySource); } + @Override public int getOrdinal() { int ordinalSet = super.getOrdinal(); if(ordinalSet == 0){ @@ -80,42 +82,38 @@ public final class FilteredPropertySource extends BasePropertySource { PropertyValue value = wrapped.get(key); if(value != null && value.getValue()!=null){ if(filters!=null){ - String filteredValue = value.getValue(); + PropertyValue filteredValue = value; for(PropertyFilter pf:filters){ - filteredValue = pf.filterProperty(filteredValue, new FilterContext(key, value.getConfigEntries(), true)); + filteredValue = pf.filterProperty(filteredValue, new FilterContext(key, value)); } if(filteredValue!=null){ - return PropertyValue.builder(key, filteredValue, getName()) - .setContextData(value.getConfigEntries()).build(); + return filteredValue; } } } - return value; + return null; } @Override - public Map<String, String> getProperties() { - Map<String, String> wrappedProps = wrapped.getProperties(); - if(!filters.isEmpty()){ - Map<String, String> result = new HashMap<>(); + public Map<String, PropertyValue> getProperties() { + Map<String, PropertyValue> props = wrapped.getProperties(); + if(!props.isEmpty()){ + Map<String, PropertyValue> result = new HashMap<>(); synchronized (filters) { - for (String key : wrappedProps.keySet()) { - PropertyValue value = wrapped.get(key); - FilterContext filterContext = new FilterContext(key, value.getConfigEntries(), true); - String filteredValue = value.getValue(); + for (PropertyValue value : props.values()) { + FilterContext filterContext = new FilterContext(value.getKey(), props); + PropertyValue filteredValue = value; for (PropertyFilter pf : filters) { filteredValue = pf.filterProperty(filteredValue, filterContext); } if (filteredValue != null) { - result.putAll(value.getConfigEntries()); - result.put(key, filteredValue); + result.put(filteredValue.getKey(), filteredValue); } - } } return result; } - return wrappedProps; + return Collections.emptyMap(); } @Override http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/80d6ec20/metamodel/src/main/java/org/apache/tamaya/metamodel/ext/RefreshablePropertySource.java ---------------------------------------------------------------------- diff --git a/metamodel/src/main/java/org/apache/tamaya/metamodel/ext/RefreshablePropertySource.java b/metamodel/src/main/java/org/apache/tamaya/metamodel/ext/RefreshablePropertySource.java index 0ebbf45..b5152c7 100644 --- a/metamodel/src/main/java/org/apache/tamaya/metamodel/ext/RefreshablePropertySource.java +++ b/metamodel/src/main/java/org/apache/tamaya/metamodel/ext/RefreshablePropertySource.java @@ -117,6 +117,7 @@ public final class RefreshablePropertySource } } + @Override public int getOrdinal() { return PropertySourceComparator.getOrdinal(this.wrapped); } @@ -132,7 +133,7 @@ public final class RefreshablePropertySource } @Override - public Map<String, String> getProperties() { + public Map<String, PropertyValue> getProperties() { return this.wrapped.getProperties(); } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/80d6ec20/propertysources/src/main/java/org/apache/tamaya/propertysources/PropertySourceBuilder.java ---------------------------------------------------------------------- diff --git a/propertysources/src/main/java/org/apache/tamaya/propertysources/PropertySourceBuilder.java b/propertysources/src/main/java/org/apache/tamaya/propertysources/PropertySourceBuilder.java index ea81cbc..3d35863 100644 --- a/propertysources/src/main/java/org/apache/tamaya/propertysources/PropertySourceBuilder.java +++ b/propertysources/src/main/java/org/apache/tamaya/propertysources/PropertySourceBuilder.java @@ -20,6 +20,7 @@ package org.apache.tamaya.propertysources; import org.apache.tamaya.core.propertysource.SimplePropertySource; import org.apache.tamaya.spi.PropertySource; +import org.apache.tamaya.spi.PropertyValue; import java.util.HashMap; import java.util.Map; @@ -96,7 +97,9 @@ public final class PropertySourceBuilder { * @return the bulder for chaining. */ public PropertySourceBuilder putAll(PropertySource propertySource){ - this.properties.putAll(propertySource.getProperties()); + for(PropertyValue val:propertySource.getProperties().values()) { + this.properties.put(val.getKey(), val.getValue()); + } return this; } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/80d6ec20/remote/src/main/java/org/apache/tamaya/remote/BaseRemotePropertySource.java ---------------------------------------------------------------------- diff --git a/remote/src/main/java/org/apache/tamaya/remote/BaseRemotePropertySource.java b/remote/src/main/java/org/apache/tamaya/remote/BaseRemotePropertySource.java index fcf2256..de65fb7 100644 --- a/remote/src/main/java/org/apache/tamaya/remote/BaseRemotePropertySource.java +++ b/remote/src/main/java/org/apache/tamaya/remote/BaseRemotePropertySource.java @@ -53,8 +53,8 @@ public abstract class BaseRemotePropertySource implements PropertySource{ } @Override - public Map<String, String> getProperties() { - return properties; + public Map<String, PropertyValue> getProperties() { + return PropertyValue.map(properties, getName()); } /** @@ -121,7 +121,7 @@ public abstract class BaseRemotePropertySource implements PropertySource{ @Override public PropertyValue get(String key) { - return PropertyValue.of(key,getProperties().get(key),getName()); + return getProperties().get(key); } public int getOrdinal(){ http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/80d6ec20/usagetracker/src/main/java/org/apache/tamaya/usagetracker/UsageStat.java ---------------------------------------------------------------------- diff --git a/usagetracker/src/main/java/org/apache/tamaya/usagetracker/UsageStat.java b/usagetracker/src/main/java/org/apache/tamaya/usagetracker/UsageStat.java index 6161644..d04f787 100644 --- a/usagetracker/src/main/java/org/apache/tamaya/usagetracker/UsageStat.java +++ b/usagetracker/src/main/java/org/apache/tamaya/usagetracker/UsageStat.java @@ -18,6 +18,8 @@ */ package org.apache.tamaya.usagetracker; +import org.apache.tamaya.spi.PropertyValue; + import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -167,7 +169,7 @@ public final class UsageStat { * stacktrace is shortened to a maximal size of 20 items. * @param value the value returned, not null. */ - public void trackUsage(String value){ + public void trackUsage(PropertyValue value){ trackUsage(value, maxTrace); } @@ -177,7 +179,7 @@ public final class UsageStat { * @param value the value returned, not null. * @param maxTraceLength the maximal length of the stored stacktrace. */ - public void trackUsage(String value, int maxTraceLength){ + public void trackUsage(PropertyValue value, int maxTraceLength){ String accessPoint = null; if(maxTraceLength>0) { Exception e = new Exception(); @@ -230,7 +232,7 @@ public final class UsageStat { private long firstAccessTS; private String[] stackTrace; private String accessPoint; - private Map<Long, String> trackedValues; + private Map<Long, PropertyValue> trackedValues; public AccessDetail(String key, String accessPoint, String[] stackTrace){ this.key = Objects.requireNonNull(key); @@ -244,7 +246,7 @@ public final class UsageStat { accessCount.set(0); } - public long trackAccess(String value){ + public long trackAccess(PropertyValue value){ long count = accessCount.incrementAndGet(); lastAccessTS = System.currentTimeMillis(); if(firstAccessTS==0){ @@ -285,7 +287,7 @@ public final class UsageStat { return stackTrace.clone(); } - public Map<Long, String> getTrackedValues(){ + public Map<Long, PropertyValue> getTrackedValues(){ synchronized (this) { if (trackedValues == null) { return Collections.emptyMap(); http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/80d6ec20/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 f268cc7..247d7a6 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.PropertyValue; import org.apache.tamaya.usagetracker.UsageStat; import org.apache.tamaya.usagetracker.spi.ConfigUsageSpi; @@ -111,11 +112,11 @@ public class DefaultConfigUsage implements ConfigUsageSpi { @Override public void trackAllPropertiesAccess(){ - trackSingleKeyAccess("<<all>>", "<not stored>"); + trackSingleKeyAccess("<<all>>", PropertyValue.of("<<all>>","<not stored>","-")); } @Override - public void trackSingleKeyAccess(String key, String value){ + public void trackSingleKeyAccess(String key, PropertyValue value){ // Ignore meta-entries if(!isUsageTrackingEnabled() || key.startsWith("_")){ return; http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/80d6ec20/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 30a643d..610f7e8 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 @@ -20,6 +20,7 @@ package org.apache.tamaya.usagetracker.internal; import org.apache.tamaya.spi.FilterContext; import org.apache.tamaya.spi.PropertyFilter; +import org.apache.tamaya.spi.PropertyValue; import org.apache.tamaya.spi.ServiceContextManager; import org.apache.tamaya.usagetracker.spi.ConfigUsageSpi; @@ -34,7 +35,7 @@ import javax.annotation.Priority; public class UsageTrackerFilter implements PropertyFilter{ @Override - public String filterProperty(String value, FilterContext context) { + public PropertyValue filterProperty(PropertyValue value, FilterContext context) { ConfigUsageSpi tracker = ServiceContextManager.getServiceContext().getService(ConfigUsageSpi.class); if (context.isSinglePropertyScoped()) { tracker.trackSingleKeyAccess(context.getKey(), value); http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/80d6ec20/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 f76586c..b3a14bd 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.PropertyValue; import org.apache.tamaya.usagetracker.UsageStat; import java.util.Collection; @@ -86,7 +87,7 @@ public interface ConfigUsageSpi { * @param key key to track for * @param value value to track for */ - void trackSingleKeyAccess(String key, String value); + void trackSingleKeyAccess(String key, PropertyValue value); /** * Access the usage statistics for the recorded uses of configuration.