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);