Repository: brooklyn-server
Updated Branches:
  refs/heads/master 746a81906 -> a941963c9


Propagator defaults to producer=self, if not specified

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

Branch: refs/heads/master
Commit: db4249245e3e2d4c749b458c94f834903ad7dc51
Parents: 4b11f50
Author: Aled Sage <[email protected]>
Authored: Thu Jun 23 14:08:12 2016 +0100
Committer: Aled Sage <[email protected]>
Committed: Thu Jun 23 14:08:12 2016 +0100

----------------------------------------------------------------------
 .../brooklyn/enricher/stock/Propagator.java     |  3 ++-
 .../stock/SensorPropagatingEnricherTest.java    | 26 +++++++++++++++++++-
 2 files changed, 27 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/db424924/core/src/main/java/org/apache/brooklyn/enricher/stock/Propagator.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/brooklyn/enricher/stock/Propagator.java 
b/core/src/main/java/org/apache/brooklyn/enricher/stock/Propagator.java
index 5e0bc8a..a8f9f97 100644
--- a/core/src/main/java/org/apache/brooklyn/enricher/stock/Propagator.java
+++ b/core/src/main/java/org/apache/brooklyn/enricher/stock/Propagator.java
@@ -100,7 +100,8 @@ public class Propagator extends AbstractEnricher implements 
SensorEventListener<
         Collection<Sensor<?>> propagating = 
resolveSensorCollection(getConfig(PROPAGATING));
         
         if (producer == null) {
-            throw new IllegalStateException("Propagator enricher "+this+" 
missing config '"+PRODUCER.getName());
+            LOG.debug("Defaulting to producer==self for {}, on entity {}", 
this, entity);
+            producer = entity;
         }
         if (propagating.isEmpty() && sensorMapping.isEmpty() && 
!propagatingAll) {
             throw new IllegalStateException("Propagator enricher "+this+" must 
have 'propagating' and/or 'sensorMapping', or 'propagatingAll' or 
'propagatingAllBut' set");

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/db424924/core/src/test/java/org/apache/brooklyn/enricher/stock/SensorPropagatingEnricherTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/enricher/stock/SensorPropagatingEnricherTest.java
 
b/core/src/test/java/org/apache/brooklyn/enricher/stock/SensorPropagatingEnricherTest.java
index fdbba94..0f5d028 100644
--- 
a/core/src/test/java/org/apache/brooklyn/enricher/stock/SensorPropagatingEnricherTest.java
+++ 
b/core/src/test/java/org/apache/brooklyn/enricher/stock/SensorPropagatingEnricherTest.java
@@ -273,6 +273,30 @@ public class SensorPropagatingEnricherTest extends 
BrooklynAppUnitTestSupport {
     }
     
     @Test
+    public void testPropagatorDefaultsToProducerAsSelf() throws Exception {
+        AttributeSensor<String> sourceSensor = Sensors.newSensor(String.class, 
"mySensor");
+        AttributeSensor<String> targetSensor = Sensors.newSensor(String.class, 
"myTarget");
+
+        app.enrichers().add(EnricherSpec.create(Propagator.class)
+                .configure(Propagator.PRODUCER, app)
+                .configure(Propagator.SENSOR_MAPPING, 
ImmutableMap.of(sourceSensor, targetSensor)));
+
+        app.sensors().set(sourceSensor, "myval");
+        EntityAsserts.assertAttributeEqualsEventually(app, targetSensor, 
"myval");
+    }
+
+    @Test
+    public void 
testPropagatorAvoidsInfiniteLoopInPropagateAllWithImplicitProducer() throws 
Exception {
+        AttributeSensor<String> mySensor = Sensors.newSensor(String.class, 
"mySensor");
+
+        EnricherSpec<?> spec = EnricherSpec.create(Propagator.class)
+                .configure(Propagator.PROPAGATING_ALL, true);
+
+        assertAddEnricherThrowsIllegalStateException(spec, "when publishing to 
own entity");
+        assertAttributeNotRepublished(app, mySensor);
+    }
+    
+    @Test
     public void testPropagatorAvoidsInfiniteLoopInPropagateAll() throws 
Exception {
         AttributeSensor<String> mySensor = Sensors.newSensor(String.class, 
"mySensor");
 
@@ -325,7 +349,7 @@ public class SensorPropagatingEnricherTest extends 
BrooklynAppUnitTestSupport {
     public void testPropagatorFailsWithEmptyConfig() throws Exception {
         EnricherSpec<?> spec = EnricherSpec.create(Propagator.class);
 
-        assertAddEnricherThrowsIllegalStateException(spec, "missing config");
+        assertAddEnricherThrowsIllegalStateException(spec, "must have");
     }
 
     protected void assertAttributeNotRepublished(Entity entity, 
AttributeSensor<String> sensor) {

Reply via email to