You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2014/08/06 23:16:56 UTC

[04/11] git commit: set uniqueTags for many enrichers and policies

set uniqueTags for many enrichers and policies


Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/427d4e1a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/427d4e1a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/427d4e1a

Branch: refs/heads/master
Commit: 427d4e1a6889527ce37df94160ebbeaf5227d51b
Parents: 72b52e1
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Sat Aug 2 11:44:49 2014 -0400
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Tue Aug 5 10:40:46 2014 -0400

----------------------------------------------------------------------
 .../main/java/brooklyn/enricher/Enrichers.java  | 23 ++++++++++++++++++++
 .../basic/SensorTransformingEnricher.java       | 12 +++++-----
 .../group/AbstractMembershipTrackingPolicy.java |  4 ++++
 .../brooklyn/enricher/HttpLatencyDetector.java  | 11 ++++++++--
 .../brooklyn/enricher/RollingMeanEnricher.java  |  3 +++
 .../enricher/RollingTimeWindowMeanEnricher.java |  4 ++++
 .../enricher/TimeFractionDeltaEnricher.java     |  5 +++++
 .../enricher/TimeWeightedDeltaEnricher.java     |  5 +++++
 .../java/brooklyn/util/guava/TypeTokens.java    |  6 +++++
 9 files changed, 65 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/427d4e1a/core/src/main/java/brooklyn/enricher/Enrichers.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/enricher/Enrichers.java b/core/src/main/java/brooklyn/enricher/Enrichers.java
index e6f903e..dab423c 100644
--- a/core/src/main/java/brooklyn/enricher/Enrichers.java
+++ b/core/src/main/java/brooklyn/enricher/Enrichers.java
@@ -36,11 +36,13 @@ import brooklyn.event.Sensor;
 import brooklyn.event.SensorEvent;
 import brooklyn.policy.Enricher;
 import brooklyn.policy.EnricherSpec;
+import brooklyn.util.collections.MutableList;
 import brooklyn.util.collections.MutableMap;
 import brooklyn.util.flags.TypeCoercions;
 import brooklyn.util.text.Strings;
 
 import com.google.common.base.Function;
+import com.google.common.base.Joiner;
 import com.google.common.base.Objects;
 import com.google.common.base.Predicate;
 import com.google.common.collect.ImmutableList;
@@ -190,6 +192,7 @@ public class Enrichers {
             }
             // FIXME excludingBlank; use valueFilter? exclude means ignored entirely or substituted for defaultMemberValue?
             return EnricherSpec.create(Aggregator.class)
+                    .uniqueTag("aggregator:"+publishing)
                     .configure(MutableMap.builder()
                             .putIfNotNull(Aggregator.PRODUCER, fromEntity)
                             .put(Aggregator.TARGET_SENSOR, publishing)
@@ -288,6 +291,7 @@ public class Enrichers {
         }
         public EnricherSpec<?> build() {
             return EnricherSpec.create(Combiner.class)
+                    .uniqueTag("combiner:"+publishing)
                     .configure(MutableMap.builder()
                             .putIfNotNull(Combiner.PRODUCER, fromEntity)
                             .put(Combiner.TARGET_SENSOR, publishing)
@@ -347,6 +351,7 @@ public class Enrichers {
         }
         public EnricherSpec<?> build() {
             return EnricherSpec.create(Transformer.class)
+                    .uniqueTag("transformer:"+publishing)
                     .configure(MutableMap.builder()
                             .putIfNotNull(Transformer.PRODUCER, fromEntity)
                             .put(Transformer.TARGET_SENSOR, publishing)
@@ -399,7 +404,25 @@ public class Enrichers {
             return self();
         }
         public EnricherSpec<? extends Enricher> build() {
+            List<String> summary = MutableList.of();
+            if (propagating!=null) {
+                for (Map.Entry<? extends Sensor<?>, ? extends Sensor<?>> entry: propagating.entrySet()) {
+                    if (entry.getKey().getName().equals(entry.getValue().getName()))
+                        summary.add(entry.getKey().getName());
+                    else
+                        summary.add(entry.getKey().getName()+"->"+entry.getValue().getName());
+                }
+            }
+            if (Boolean.TRUE.equals(propagatingAll))
+                summary.add("ALL");
+            if (propagatingAllBut!=null && !Iterables.isEmpty(propagatingAllBut)) {
+                List<String> allBut = MutableList.of();
+                for (Sensor<?> s: propagatingAllBut) allBut.add(s.getName());
+                summary.add("ALL_BUT:"+Joiner.on(",").join(allBut));
+            }
+            
             return EnricherSpec.create(Propagator.class)
+                    .uniqueTag("propagating["+fromEntity.getId()+":"+Joiner.on(",").join(summary)+"]")
                     .configure(MutableMap.builder()
                             .putIfNotNull(Propagator.PRODUCER, fromEntity)
                             .putIfNotNull(Propagator.SENSOR_MAPPING, propagating)

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/427d4e1a/core/src/main/java/brooklyn/enricher/basic/SensorTransformingEnricher.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/enricher/basic/SensorTransformingEnricher.java b/core/src/main/java/brooklyn/enricher/basic/SensorTransformingEnricher.java
index 806b5a7..314e833 100644
--- a/core/src/main/java/brooklyn/enricher/basic/SensorTransformingEnricher.java
+++ b/core/src/main/java/brooklyn/enricher/basic/SensorTransformingEnricher.java
@@ -24,6 +24,8 @@ import brooklyn.event.AttributeSensor;
 import brooklyn.event.Sensor;
 import brooklyn.event.SensorEvent;
 import brooklyn.util.GroovyJavaMethods;
+import brooklyn.util.javalang.JavaClassNames;
+import brooklyn.util.time.Duration;
 
 import com.google.common.base.Function;
 
@@ -38,21 +40,19 @@ public class SensorTransformingEnricher<T,U> extends AbstractTypeTransformingEnr
     public SensorTransformingEnricher(Entity producer, Sensor<T> source, Sensor<U> target, Function<? super T, ? extends U> transformation) {
         super(producer, source, target);
         this.transformation = transformation;
+        this.uniqueTag = JavaClassNames.simpleClassName(getClass())+":"+source.getName()+"*->"+target.getName();;
     }
 
     public SensorTransformingEnricher(Entity producer, Sensor<T> source, Sensor<U> target, Closure transformation) {
-        super(producer, source, target);
-        this.transformation = GroovyJavaMethods.functionFromClosure(transformation);
+        this(producer, source, target, GroovyJavaMethods.functionFromClosure(transformation));
     }
 
     public SensorTransformingEnricher(Sensor<T> source, Sensor<U> target, Function<T,U> transformation) {
-        super(null, source, target);
-        this.transformation = transformation;
+        this(null, source, target, transformation);
     }
 
     public SensorTransformingEnricher(Sensor<T> source, Sensor<U> target, Closure transformation) {
-        super(null, source, target);
-        this.transformation = GroovyJavaMethods.functionFromClosure(transformation);
+        this(null, source, target, GroovyJavaMethods.functionFromClosure(transformation));
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/427d4e1a/core/src/main/java/brooklyn/entity/group/AbstractMembershipTrackingPolicy.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/group/AbstractMembershipTrackingPolicy.java b/core/src/main/java/brooklyn/entity/group/AbstractMembershipTrackingPolicy.java
index e3f0dce..12100cd 100644
--- a/core/src/main/java/brooklyn/entity/group/AbstractMembershipTrackingPolicy.java
+++ b/core/src/main/java/brooklyn/entity/group/AbstractMembershipTrackingPolicy.java
@@ -38,6 +38,7 @@ import brooklyn.event.SensorEvent;
 import brooklyn.event.SensorEventListener;
 import brooklyn.policy.basic.AbstractPolicy;
 import brooklyn.util.collections.MutableMap;
+import brooklyn.util.javalang.JavaClassNames;
 
 import com.google.common.base.Objects;
 import com.google.common.base.Preconditions;
@@ -85,6 +86,9 @@ public abstract class AbstractMembershipTrackingPolicy extends AbstractPolicy {
         super.setEntity(entity);
         Group group = getGroup();
         if (group != null) {
+            if (uniqueTag==null) {
+                uniqueTag = JavaClassNames.simpleClassName(this)+":"+group;
+            }
             subscribeToGroup(group);
         } else {
             LOG.warn("Deprecated use of "+AbstractMembershipTrackingPolicy.class.getSimpleName()+"; group should be set as config");

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/427d4e1a/policy/src/main/java/brooklyn/enricher/HttpLatencyDetector.java
----------------------------------------------------------------------
diff --git a/policy/src/main/java/brooklyn/enricher/HttpLatencyDetector.java b/policy/src/main/java/brooklyn/enricher/HttpLatencyDetector.java
index 7645980..bd1dd00 100644
--- a/policy/src/main/java/brooklyn/enricher/HttpLatencyDetector.java
+++ b/policy/src/main/java/brooklyn/enricher/HttpLatencyDetector.java
@@ -44,8 +44,10 @@ import brooklyn.event.feed.http.HttpPollConfig;
 import brooklyn.event.feed.http.HttpValueFunctions;
 import brooklyn.util.collections.MutableMap;
 import brooklyn.util.flags.SetFromFlag;
+import brooklyn.util.guava.TypeTokens;
 import brooklyn.util.javalang.AtomicReferences;
 import brooklyn.util.javalang.Boxing;
+import brooklyn.util.javalang.JavaClassNames;
 import brooklyn.util.math.MathFunctions;
 import brooklyn.util.net.Urls;
 import brooklyn.util.text.StringFunctions;
@@ -72,12 +74,13 @@ public class HttpLatencyDetector extends AbstractEnricher {
     @SetFromFlag("url")
     public static final ConfigKey<String> URL = ConfigKeys.newStringConfigKey("latencyDetector.url");
     
+    @SuppressWarnings("serial")
     @SetFromFlag("urlSensor")
     public static final ConfigKey<AttributeSensor<String>> URL_SENSOR = ConfigKeys.newConfigKey(new TypeToken<AttributeSensor<String>>() {}, "latencyDetector.urlSensor");
 
     @SetFromFlag("urlPostProcessing")
     public static final ConfigKey<Function<String,String>> URL_POST_PROCESSING = ConfigKeys.newConfigKey(
-            new TypeToken<Function<String,String>>() {}, 
+            TypeTokens.functionOf(String.class, String.class), 
             "latencyDetector.urlPostProcessing",
             "Function applied to the urlSensor value, to determine the URL to use");
 
@@ -103,7 +106,7 @@ public class HttpLatencyDetector extends AbstractEnricher {
     public HttpLatencyDetector() { // for rebinding, and for EnricherSpec usage
     }
     
-    protected HttpLatencyDetector(Map flags) {
+    protected HttpLatencyDetector(Map<?,?> flags) {
         super(flags);
     }
     
@@ -139,6 +142,10 @@ public class HttpLatencyDetector extends AbstractEnricher {
                         .setOnException(null))
                 .suspended()
                 .build();
+        
+        if (getUniqueTag()==null) 
+            uniqueTag = JavaClassNames.simpleClassName(getClass())+":"+
+                (getConfig(URL)!=null ? getConfig(URL) : getConfig(URL_SENSOR));
     }
 
     protected void startSubscriptions(EntityLocal entity) {

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/427d4e1a/policy/src/main/java/brooklyn/enricher/RollingMeanEnricher.java
----------------------------------------------------------------------
diff --git a/policy/src/main/java/brooklyn/enricher/RollingMeanEnricher.java b/policy/src/main/java/brooklyn/enricher/RollingMeanEnricher.java
index 8f5452c..49e1241 100644
--- a/policy/src/main/java/brooklyn/enricher/RollingMeanEnricher.java
+++ b/policy/src/main/java/brooklyn/enricher/RollingMeanEnricher.java
@@ -25,6 +25,7 @@ import brooklyn.entity.Entity;
 import brooklyn.event.AttributeSensor;
 import brooklyn.event.SensorEvent;
 import brooklyn.util.flags.SetFromFlag;
+import brooklyn.util.javalang.JavaClassNames;
 
 
 /**
@@ -44,6 +45,8 @@ public class RollingMeanEnricher<T extends Number> extends AbstractTypeTransform
             int windowSize) {
         super(producer, source, target);
         this.windowSize = windowSize;
+        if (source!=null && target!=null)
+            this.uniqueTag = JavaClassNames.simpleClassName(getClass())+":"+source.getName()+"->"+target.getName();
     }
     
     /** @returns null when no data has been received or windowSize is 0 */

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/427d4e1a/policy/src/main/java/brooklyn/enricher/RollingTimeWindowMeanEnricher.java
----------------------------------------------------------------------
diff --git a/policy/src/main/java/brooklyn/enricher/RollingTimeWindowMeanEnricher.java b/policy/src/main/java/brooklyn/enricher/RollingTimeWindowMeanEnricher.java
index 2485abc..b196efa 100644
--- a/policy/src/main/java/brooklyn/enricher/RollingTimeWindowMeanEnricher.java
+++ b/policy/src/main/java/brooklyn/enricher/RollingTimeWindowMeanEnricher.java
@@ -29,6 +29,7 @@ import brooklyn.event.AttributeSensor;
 import brooklyn.event.Sensor;
 import brooklyn.event.SensorEvent;
 import brooklyn.util.flags.SetFromFlag;
+import brooklyn.util.javalang.JavaClassNames;
 import brooklyn.util.time.Duration;
 
 /**
@@ -79,6 +80,9 @@ public class RollingTimeWindowMeanEnricher<T extends Number> extends AbstractTyp
         AttributeSensor<Double> target, Duration timePeriod) {
         super(producer, source, target);
         this.timePeriod = Preconditions.checkNotNull(timePeriod, "timePeriod");
+        
+        if (source!=null && target!=null)
+            this.uniqueTag = JavaClassNames.simpleClassName(getClass())+":"+source.getName()+"/"+timePeriod+"->"+target.getName();
     }
 
     /** @deprecated since 0.6.0 use Duration parameter rather than long with millis */

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/427d4e1a/policy/src/main/java/brooklyn/enricher/TimeFractionDeltaEnricher.java
----------------------------------------------------------------------
diff --git a/policy/src/main/java/brooklyn/enricher/TimeFractionDeltaEnricher.java b/policy/src/main/java/brooklyn/enricher/TimeFractionDeltaEnricher.java
index f6af440..253cdc6 100644
--- a/policy/src/main/java/brooklyn/enricher/TimeFractionDeltaEnricher.java
+++ b/policy/src/main/java/brooklyn/enricher/TimeFractionDeltaEnricher.java
@@ -29,6 +29,8 @@ import brooklyn.event.AttributeSensor;
 import brooklyn.event.Sensor;
 import brooklyn.event.SensorEvent;
 import brooklyn.util.flags.SetFromFlag;
+import brooklyn.util.javalang.JavaClassNames;
+import brooklyn.util.time.Duration;
 
 /**
  * Converts an absolute measure of time into a fraction of time, based on the delta between consecutive values 
@@ -58,6 +60,9 @@ public class TimeFractionDeltaEnricher<T extends Number> extends AbstractTypeTra
     public TimeFractionDeltaEnricher(Entity producer, Sensor<T> source, Sensor<Double> target, long nanosPerOrigUnit) {
         super(producer, source, target);
         this.nanosPerOrigUnit = nanosPerOrigUnit;
+        
+        if (source!=null && target!=null)
+            this.uniqueTag = JavaClassNames.simpleClassName(getClass())+":"+source.getName()+"*"+Duration.nanos(nanosPerOrigUnit)+"->"+target.getName();
     }
     
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/427d4e1a/policy/src/main/java/brooklyn/enricher/TimeWeightedDeltaEnricher.java
----------------------------------------------------------------------
diff --git a/policy/src/main/java/brooklyn/enricher/TimeWeightedDeltaEnricher.java b/policy/src/main/java/brooklyn/enricher/TimeWeightedDeltaEnricher.java
index 73d1389..d344dd4 100644
--- a/policy/src/main/java/brooklyn/enricher/TimeWeightedDeltaEnricher.java
+++ b/policy/src/main/java/brooklyn/enricher/TimeWeightedDeltaEnricher.java
@@ -30,6 +30,8 @@ import brooklyn.event.Sensor;
 import brooklyn.event.SensorEvent;
 import brooklyn.util.GroovyJavaMethods;
 import brooklyn.util.flags.SetFromFlag;
+import brooklyn.util.javalang.JavaClassNames;
+import brooklyn.util.time.Duration;
 
 import com.google.common.base.Function;
 import com.google.common.base.Functions;
@@ -73,6 +75,9 @@ public class TimeWeightedDeltaEnricher<T extends Number> extends AbstractTypeTra
         super(producer, source, target);
         this.unitMillis = unitMillis;
         this.postProcessor = postProcessor;
+        
+        if (source!=null && target!=null)
+            this.uniqueTag = JavaClassNames.simpleClassName(getClass())+":"+source.getName()+"/"+Duration.millis(unitMillis)+"->"+target.getName();
     }
     
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/427d4e1a/utils/common/src/main/java/brooklyn/util/guava/TypeTokens.java
----------------------------------------------------------------------
diff --git a/utils/common/src/main/java/brooklyn/util/guava/TypeTokens.java b/utils/common/src/main/java/brooklyn/util/guava/TypeTokens.java
index d16d2df..ee7099b 100644
--- a/utils/common/src/main/java/brooklyn/util/guava/TypeTokens.java
+++ b/utils/common/src/main/java/brooklyn/util/guava/TypeTokens.java
@@ -24,6 +24,7 @@ import java.util.Set;
 
 import javax.annotation.Nullable;
 
+import com.google.common.base.Function;
 import com.google.common.reflect.TypeToken;
 
 public class TypeTokens {
@@ -87,5 +88,10 @@ public class TypeTokens {
     public static <T> TypeToken<List<T>> listOf(Class<T> type) {
         return (TypeToken) TypeToken.of(List.class);
     }
+
+    @SuppressWarnings("serial")
+    public static <I,O> TypeToken<Function<I,O>> functionOf(Class<I> input, Class<O> output) {
+        return new TypeToken<Function<I,O>>() {};
+    }
     
 }