You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by ri...@apache.org on 2014/06/01 22:15:32 UTC

[17/25] git commit: make enricher-impls rebindable

make enricher-impls rebindable


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

Branch: refs/heads/master
Commit: ade78fad7cffc8b15ce79c91117a1b6a734093cc
Parents: 284743a
Author: Aled Sage <al...@gmail.com>
Authored: Wed May 28 19:14:21 2014 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Fri May 30 10:24:39 2014 +0100

----------------------------------------------------------------------
 .../enricher/basic/AbstractTransformingEnricher.java      |  3 +++
 .../enricher/basic/AbstractTypeTransformingEnricher.java  | 10 ++++++++++
 policy/src/main/java/brooklyn/enricher/DeltaEnricher.java |  3 +++
 .../main/java/brooklyn/enricher/HttpLatencyDetector.java  |  2 +-
 .../main/java/brooklyn/enricher/RollingMeanEnricher.java  |  5 +++++
 .../brooklyn/enricher/RollingTimeWindowMeanEnricher.java  |  7 ++++++-
 .../java/brooklyn/enricher/TimeFractionDeltaEnricher.java |  8 +++++++-
 .../java/brooklyn/enricher/TimeWeightedDeltaEnricher.java | 10 +++++++++-
 8 files changed, 44 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/ade78fad/core/src/main/java/brooklyn/enricher/basic/AbstractTransformingEnricher.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/enricher/basic/AbstractTransformingEnricher.java b/core/src/main/java/brooklyn/enricher/basic/AbstractTransformingEnricher.java
index 60e5e73..cfc9a08 100644
--- a/core/src/main/java/brooklyn/enricher/basic/AbstractTransformingEnricher.java
+++ b/core/src/main/java/brooklyn/enricher/basic/AbstractTransformingEnricher.java
@@ -10,6 +10,9 @@ import brooklyn.event.Sensor;
  */
 public abstract class AbstractTransformingEnricher<T> extends AbstractTypeTransformingEnricher<T,T> {
 
+    public AbstractTransformingEnricher() { // for rebinding
+    }
+    
     public AbstractTransformingEnricher(Entity producer, Sensor<T> source, Sensor<T> target) {
         super(producer, source, target);
     }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/ade78fad/core/src/main/java/brooklyn/enricher/basic/AbstractTypeTransformingEnricher.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/enricher/basic/AbstractTypeTransformingEnricher.java b/core/src/main/java/brooklyn/enricher/basic/AbstractTypeTransformingEnricher.java
index 64bc365..fc42d03 100644
--- a/core/src/main/java/brooklyn/enricher/basic/AbstractTypeTransformingEnricher.java
+++ b/core/src/main/java/brooklyn/enricher/basic/AbstractTypeTransformingEnricher.java
@@ -6,6 +6,7 @@ import brooklyn.event.AttributeSensor;
 import brooklyn.event.Sensor;
 import brooklyn.event.SensorEventListener;
 import brooklyn.event.basic.BasicSensorEvent;
+import brooklyn.util.flags.SetFromFlag;
 
 /**
  * Convenience base for transforming a single sensor into a single new sensor of the same type
@@ -13,9 +14,18 @@ import brooklyn.event.basic.BasicSensorEvent;
  * @deprecated since 0.7.0; use {@link Enrichers.builder()}
  */
 public abstract class AbstractTypeTransformingEnricher<T,U> extends AbstractEnricher implements SensorEventListener<T> {
+    
+    @SetFromFlag
     private Entity producer;
+    
+    @SetFromFlag
     private Sensor<T> source;
+    
+    @SetFromFlag
     protected Sensor<U> target;
+
+    public AbstractTypeTransformingEnricher() { // for rebind
+    }
     
     public AbstractTypeTransformingEnricher(Entity producer, Sensor<T> source, Sensor<U> target) {
         this.producer = producer;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/ade78fad/policy/src/main/java/brooklyn/enricher/DeltaEnricher.java
----------------------------------------------------------------------
diff --git a/policy/src/main/java/brooklyn/enricher/DeltaEnricher.java b/policy/src/main/java/brooklyn/enricher/DeltaEnricher.java
index 33411ef..0c210ce 100644
--- a/policy/src/main/java/brooklyn/enricher/DeltaEnricher.java
+++ b/policy/src/main/java/brooklyn/enricher/DeltaEnricher.java
@@ -13,6 +13,9 @@ import brooklyn.util.flags.TypeCoercions;
  */
 public class DeltaEnricher<T extends Number> extends AbstractTransformingEnricher<T> {
     Number last = 0;
+
+    public DeltaEnricher() { // for rebinding
+    }
     
     public DeltaEnricher(Entity producer, Sensor<T> source, AttributeSensor<T> target) {
         super(producer, source, target);

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/ade78fad/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 e2c7a63..2614d38 100644
--- a/policy/src/main/java/brooklyn/enricher/HttpLatencyDetector.java
+++ b/policy/src/main/java/brooklyn/enricher/HttpLatencyDetector.java
@@ -82,7 +82,7 @@ public class HttpLatencyDetector extends AbstractEnricher {
     final AtomicReference<String> url = new AtomicReference<String>();
     HttpFeed httpFeed = null;
 
-    HttpLatencyDetector() {
+    public HttpLatencyDetector() { // for rebinding, and for EnricherSpec usage
     }
     
     protected HttpLatencyDetector(Map flags) {

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/ade78fad/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 606e9a8..81de4d9 100644
--- a/policy/src/main/java/brooklyn/enricher/RollingMeanEnricher.java
+++ b/policy/src/main/java/brooklyn/enricher/RollingMeanEnricher.java
@@ -6,6 +6,7 @@ import brooklyn.enricher.basic.AbstractTypeTransformingEnricher;
 import brooklyn.entity.Entity;
 import brooklyn.event.AttributeSensor;
 import brooklyn.event.SensorEvent;
+import brooklyn.util.flags.SetFromFlag;
 
 
 /**
@@ -15,7 +16,11 @@ import brooklyn.event.SensorEvent;
 public class RollingMeanEnricher<T extends Number> extends AbstractTypeTransformingEnricher<T,Double> {
     private LinkedList<T> values = new LinkedList<T>();
     
+    @SetFromFlag
     int windowSize;
+
+    public RollingMeanEnricher() { // for rebinding
+    }
     
     public RollingMeanEnricher(Entity producer, AttributeSensor<T> source, AttributeSensor<Double> target,
             int windowSize) {

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/ade78fad/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 9e960e0..48a3750 100644
--- a/policy/src/main/java/brooklyn/enricher/RollingTimeWindowMeanEnricher.java
+++ b/policy/src/main/java/brooklyn/enricher/RollingTimeWindowMeanEnricher.java
@@ -10,6 +10,7 @@ import brooklyn.entity.Entity;
 import brooklyn.event.AttributeSensor;
 import brooklyn.event.Sensor;
 import brooklyn.event.SensorEvent;
+import brooklyn.util.flags.SetFromFlag;
 import brooklyn.util.time.Duration;
 
 /**
@@ -50,8 +51,12 @@ public class RollingTimeWindowMeanEnricher<T extends Number> extends AbstractTyp
     private final LinkedList<Long> timestamps = new LinkedList<Long>();
     volatile ConfidenceQualifiedNumber lastAverage = new ConfidenceQualifiedNumber(0d,0d);
     
+    @SetFromFlag
     Duration timePeriod;
-    
+
+    public RollingTimeWindowMeanEnricher() { // for rebinding
+    }
+
     public RollingTimeWindowMeanEnricher(Entity producer, AttributeSensor<T> source, 
         AttributeSensor<Double> target, Duration timePeriod) {
         super(producer, source, target);

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/ade78fad/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 63c28c4..2e1c920 100644
--- a/policy/src/main/java/brooklyn/enricher/TimeFractionDeltaEnricher.java
+++ b/policy/src/main/java/brooklyn/enricher/TimeFractionDeltaEnricher.java
@@ -10,6 +10,7 @@ import brooklyn.entity.Entity;
 import brooklyn.event.AttributeSensor;
 import brooklyn.event.Sensor;
 import brooklyn.event.SensorEvent;
+import brooklyn.util.flags.SetFromFlag;
 
 /**
  * Converts an absolute measure of time into a fraction of time, based on the delta between consecutive values 
@@ -23,9 +24,14 @@ import brooklyn.event.SensorEvent;
 public class TimeFractionDeltaEnricher<T extends Number> extends AbstractTypeTransformingEnricher<T,Double> {
     private static final Logger LOG = LoggerFactory.getLogger(TimeFractionDeltaEnricher.class);
     
-    private final long nanosPerOrigUnit;
+    @SetFromFlag
+    private long nanosPerOrigUnit;
+    
     protected Number lastValue;
     protected long lastTimestamp = -1;
+
+    public TimeFractionDeltaEnricher() { // for rebinding
+    }
     
     public TimeFractionDeltaEnricher(Entity producer, Sensor<T> source, Sensor<Double> target, TimeUnit origUnits) {
         this(producer, source, target, origUnits.toNanos(1));

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/ade78fad/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 3e58aec..f15296b 100644
--- a/policy/src/main/java/brooklyn/enricher/TimeWeightedDeltaEnricher.java
+++ b/policy/src/main/java/brooklyn/enricher/TimeWeightedDeltaEnricher.java
@@ -11,6 +11,7 @@ import brooklyn.event.AttributeSensor;
 import brooklyn.event.Sensor;
 import brooklyn.event.SensorEvent;
 import brooklyn.util.GroovyJavaMethods;
+import brooklyn.util.flags.SetFromFlag;
 
 import com.google.common.base.Function;
 import com.google.common.base.Functions;
@@ -26,10 +27,14 @@ public class TimeWeightedDeltaEnricher<T extends Number> extends AbstractTypeTra
     
     Number lastValue;
     long lastTime = -1;
+    
     /** unitMillis is the number of milliseconds to apply for the conversion from input to output;
      * e.g. 1000 for counting things per second; 
-     * NB for time (e.g. "total milliseconds consumed") use {@link TimeFractionDeltaEnricher} */ 
+     * NB for time (e.g. "total milliseconds consumed") use {@link TimeFractionDeltaEnricher} */
+    @SetFromFlag
     int unitMillis;
+    
+    @SetFromFlag
     Function<Double,Double> postProcessor;
     
     // default 1 second
@@ -37,6 +42,8 @@ public class TimeWeightedDeltaEnricher<T extends Number> extends AbstractTypeTra
         return new TimeWeightedDeltaEnricher<T>(producer, source, target, 1000);
     }
 
+    public TimeWeightedDeltaEnricher() { // for rebind
+    }
     public TimeWeightedDeltaEnricher(Entity producer, Sensor<T> source, Sensor<Double> target, int unitMillis) {
         this(producer, source, target, unitMillis, Functions.<Double>identity());
     }
@@ -74,6 +81,7 @@ public class TimeWeightedDeltaEnricher<T extends Number> extends AbstractTypeTra
                 if (LOG.isTraceEnabled()) LOG.trace("{} received event but no last value so will not emit, null -> {} at {}", new Object[] {this, current, eventTime}); 
             } else {
                 double duration = (lastTime < 0) ? unitMillis : eventTime - lastTime;
+                if (eventTime == lastTime) duration = 0.1; // 0.1 of a millisecond is a relatively small number: 
                 double delta = (current.doubleValue() - lastValue.doubleValue()) / (duration / unitMillis);
                 double deltaPostProcessed = postProcessor.apply(delta);
                 entity.setAttribute((AttributeSensor<Double>)target, deltaPostProcessed);