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.

Reply via email to