You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by al...@apache.org on 2015/10/09 10:37:16 UTC
[5/8] incubator-brooklyn git commit: uses sensor predicate for
equality check
uses sensor predicate for equality check
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/401ab13a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/401ab13a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/401ab13a
Branch: refs/heads/master
Commit: 401ab13a77f3df2dc747eb553a0c0c6d818aa746
Parents: ae488e6
Author: Robert Moss <ro...@gmail.com>
Authored: Fri Oct 2 09:46:22 2015 +0100
Committer: Robert Moss <ro...@gmail.com>
Committed: Fri Oct 2 09:46:22 2015 +0100
----------------------------------------------------------------------
.../brooklyn/enricher/stock/Enrichers.java | 4 +-
.../brooklyn/enricher/stock/Propagator.java | 9 ++--
.../brooklyn/enricher/stock/Transformer.java | 2 -
.../stock/reducer/GenericStringReducer.java | 3 +-
.../enricher/stock/reducer/Reducer.java | 14 ++++--
.../stock/reducer/StringStringReducer.java | 3 +-
.../util/core/sensor/SensorPredicates.java | 49 ++++++++++++++++++++
.../util/core/sensor/SensorPredicatesTest.java | 38 +++++++++++++++
8 files changed, 106 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/401ab13a/core/src/main/java/org/apache/brooklyn/enricher/stock/Enrichers.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/enricher/stock/Enrichers.java b/core/src/main/java/org/apache/brooklyn/enricher/stock/Enrichers.java
index 8c73653..18bae9c 100644
--- a/core/src/main/java/org/apache/brooklyn/enricher/stock/Enrichers.java
+++ b/core/src/main/java/org/apache/brooklyn/enricher/stock/Enrichers.java
@@ -691,7 +691,7 @@ public class Enrichers {
private Map<String, Object> parameters;
public AbstractReducerBuilder(Class<? extends Reducer<S, T>> clazz, List<AttributeSensor<S>> val) {
- super(clazz);
+ super(checkNotNull(clazz));
this.reducing = checkNotNull(val);
}
@@ -726,7 +726,7 @@ public class Enrichers {
.put(Reducer.PRODUCER, fromEntity)
.put(Reducer.TARGET_SENSOR, publishing)
.putIfNotNull(Reducer.REDUCER_FUNCTION, computing)
- .putIfNotNull(Reducer.REDUCER_FUNCTION_UNTYPED, functionName)
+ .putIfNotNull(Reducer.REDUCER_FUNCTION_TRANSFORMATION, functionName)
.putIfNotNull(Reducer.PARAMETERS, parameters)
.build()
);
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/401ab13a/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 0cf601c..711635e 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
@@ -34,6 +34,7 @@ import org.apache.brooklyn.core.enricher.AbstractEnricher;
import org.apache.brooklyn.core.entity.Attributes;
import org.apache.brooklyn.util.collections.MutableMap;
import org.apache.brooklyn.util.core.flags.SetFromFlag;
+import org.apache.brooklyn.util.core.sensor.SensorPredicates;
import org.apache.brooklyn.util.core.task.Tasks;
import org.apache.brooklyn.util.core.task.ValueResolver;
import org.slf4j.Logger;
@@ -198,12 +199,8 @@ public class Propagator extends AbstractEnricher implements SensorEventListener<
private Sensor<?> getDestinationSensor(final Sensor<?> sourceSensor) {
// sensor equality includes the type; we want just name-equality so will use predicate.
- Optional<? extends Sensor<?>> mappingSensor = Iterables.tryFind(sensorMapping.keySet(), new Predicate<Sensor<?>>() {
- @Override
- public boolean apply(Sensor<?> sensor) {
- return sourceSensor.getName().equals(sensor.getName());
- }
- });
+ Optional<? extends Sensor<?>> mappingSensor = Iterables.tryFind(sensorMapping.keySet(),
+ SensorPredicates.sensorNameEqualTo(sourceSensor.getName()));
return mappingSensor.isPresent() ? sensorMapping.get(mappingSensor.get()) : sourceSensor;
}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/401ab13a/core/src/main/java/org/apache/brooklyn/enricher/stock/Transformer.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/enricher/stock/Transformer.java b/core/src/main/java/org/apache/brooklyn/enricher/stock/Transformer.java
index f15b2b2..ef23ab4 100644
--- a/core/src/main/java/org/apache/brooklyn/enricher/stock/Transformer.java
+++ b/core/src/main/java/org/apache/brooklyn/enricher/stock/Transformer.java
@@ -23,8 +23,6 @@ import static com.google.common.base.Preconditions.checkArgument;
import org.apache.brooklyn.api.sensor.SensorEvent;
import org.apache.brooklyn.config.ConfigKey;
import org.apache.brooklyn.core.config.ConfigKeys;
-import org.apache.brooklyn.core.entity.Attributes;
-import org.apache.brooklyn.core.sensor.Sensors;
import org.apache.brooklyn.util.collections.MutableSet;
import org.apache.brooklyn.util.core.task.Tasks;
import org.apache.brooklyn.util.core.task.ValueResolver;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/401ab13a/core/src/main/java/org/apache/brooklyn/enricher/stock/reducer/GenericStringReducer.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/enricher/stock/reducer/GenericStringReducer.java b/core/src/main/java/org/apache/brooklyn/enricher/stock/reducer/GenericStringReducer.java
index 09cec13..3dacb60 100644
--- a/core/src/main/java/org/apache/brooklyn/enricher/stock/reducer/GenericStringReducer.java
+++ b/core/src/main/java/org/apache/brooklyn/enricher/stock/reducer/GenericStringReducer.java
@@ -20,6 +20,7 @@ package org.apache.brooklyn.enricher.stock.reducer;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import com.google.common.base.Function;
import com.google.common.base.Preconditions;
@@ -29,7 +30,7 @@ public abstract class GenericStringReducer<T> extends Reducer<T, String>{
@Override
protected Function<List<T>, String> createReducerFunction(
String reducerName, Map<String, ?> parameters) {
- if (reducerName.equals("formatString")){
+ if (Objects.equals(reducerName, "formatString")){
String format = Preconditions.checkNotNull((String)parameters.get("format"), "format");
return new FormatStringReducerFunction<T>(format);
}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/401ab13a/core/src/main/java/org/apache/brooklyn/enricher/stock/reducer/Reducer.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/enricher/stock/reducer/Reducer.java b/core/src/main/java/org/apache/brooklyn/enricher/stock/reducer/Reducer.java
index dfce94e..2c1c4c7 100644
--- a/core/src/main/java/org/apache/brooklyn/enricher/stock/reducer/Reducer.java
+++ b/core/src/main/java/org/apache/brooklyn/enricher/stock/reducer/Reducer.java
@@ -32,6 +32,7 @@ import org.apache.brooklyn.config.ConfigKey;
import org.apache.brooklyn.core.config.ConfigKeys;
import org.apache.brooklyn.core.enricher.AbstractEnricher;
import org.apache.brooklyn.util.core.flags.SetFromFlag;
+import org.apache.brooklyn.util.core.sensor.SensorPredicates;
import org.apache.brooklyn.util.core.task.Tasks;
import org.apache.brooklyn.util.core.task.ValueResolver;
import org.slf4j.Logger;
@@ -39,8 +40,10 @@ import org.slf4j.LoggerFactory;
import com.google.api.client.util.Lists;
import com.google.common.base.Function;
+import com.google.common.base.Optional;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Iterables;
import com.google.common.reflect.TypeToken;
@SuppressWarnings("serial")
@@ -54,8 +57,8 @@ public abstract class Reducer<S, T> extends AbstractEnricher implements SensorEv
public static ConfigKey<List<? extends AttributeSensor<?>>> SOURCE_SENSORS = ConfigKeys.newConfigKey(new TypeToken<List<? extends AttributeSensor<?>>>() {}, "enricher.sourceSensors");
public static ConfigKey<Function<List<?>,?>> REDUCER_FUNCTION = ConfigKeys.newConfigKey(new TypeToken<Function<List<?>, ?>>() {}, "enricher.reducerFunction");
@SetFromFlag("transformation")
- public static final ConfigKey<String> REDUCER_FUNCTION_UNTYPED = ConfigKeys.newStringConfigKey("enricher.reducerFunction.untyped",
- "A string matching a pre-defined named reducer function, such as join");
+ public static final ConfigKey<String> REDUCER_FUNCTION_TRANSFORMATION = ConfigKeys.newStringConfigKey("enricher.reducerFunction.transformation",
+ "A string matching a pre-defined named reducer function, such as joiner");
public static final ConfigKey<Map<String, Object>> PARAMETERS = ConfigKeys.newConfigKey(new TypeToken<Map<String, Object>>() {}, "enricher.reducerFunction.parameters",
"A map of parameters to pass into the reducer function");
@@ -75,12 +78,15 @@ public abstract class Reducer<S, T> extends AbstractEnricher implements SensorEv
for (Object sensorO : getConfig(SOURCE_SENSORS)) {
AttributeSensor<S> sensor = Tasks.resolving(sensorO).as(AttributeSensor.class).timeout(ValueResolver.REAL_QUICK_WAIT).context(producer).get();
- if(!sensorListTemp.contains(sensor)) {
+ Optional<? extends Sensor<?>> foundSensor = Iterables.tryFind(sensorListTemp,
+ SensorPredicates.sensorNameEqualTo(sensor.getName()));
+
+ if(!foundSensor.isPresent()) {
sensorListTemp.add(sensor);
}
}
- String reducerName = config().get(REDUCER_FUNCTION_UNTYPED);
+ String reducerName = config().get(REDUCER_FUNCTION_TRANSFORMATION);
Function<List<S>, T> reducerFunction = (Function) config().get(REDUCER_FUNCTION);
if(reducerFunction == null){
Map<String, ?> parameters = config().get(PARAMETERS);
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/401ab13a/core/src/main/java/org/apache/brooklyn/enricher/stock/reducer/StringStringReducer.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/enricher/stock/reducer/StringStringReducer.java b/core/src/main/java/org/apache/brooklyn/enricher/stock/reducer/StringStringReducer.java
index 163f483..3180240 100644
--- a/core/src/main/java/org/apache/brooklyn/enricher/stock/reducer/StringStringReducer.java
+++ b/core/src/main/java/org/apache/brooklyn/enricher/stock/reducer/StringStringReducer.java
@@ -20,6 +20,7 @@ package org.apache.brooklyn.enricher.stock.reducer;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import com.google.common.base.Function;
@@ -33,7 +34,7 @@ public class StringStringReducer extends GenericStringReducer<String> {
Function<List<String>, String> function = super.createReducerFunction(reducerName, parameters);
if(function != null) return function;
- if(reducerName.equals("joiner")){
+ if(Objects.equals(reducerName, "joiner")){
return new JoinerFunction(parameters.get("separator"));
}
throw new IllegalStateException("unknown function: " + reducerName);
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/401ab13a/core/src/main/java/org/apache/brooklyn/util/core/sensor/SensorPredicates.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/util/core/sensor/SensorPredicates.java b/core/src/main/java/org/apache/brooklyn/util/core/sensor/SensorPredicates.java
new file mode 100644
index 0000000..5106557
--- /dev/null
+++ b/core/src/main/java/org/apache/brooklyn/util/core/sensor/SensorPredicates.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.brooklyn.util.core.sensor;
+
+import org.apache.brooklyn.api.sensor.Sensor;
+
+import com.google.common.base.Predicate;
+
+public class SensorPredicates {
+
+ private SensorPredicates() {
+ // not instantiable
+ }
+
+ public static Predicate<Sensor<?>> sensorNameEqualTo(String sensorName) {
+ return new SensorNameEquals(sensorName);
+ }
+
+ private static class SensorNameEquals implements Predicate<Sensor<?>> {
+
+ private String sensor;
+
+ public SensorNameEquals(String sensor) {
+ this.sensor = sensor;
+ }
+
+ @Override
+ public boolean apply(Sensor<?> other) {
+ return this.sensor.equals(other.getName());
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/401ab13a/core/src/test/java/org/apache/brooklyn/util/core/sensor/SensorPredicatesTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/util/core/sensor/SensorPredicatesTest.java b/core/src/test/java/org/apache/brooklyn/util/core/sensor/SensorPredicatesTest.java
new file mode 100644
index 0000000..d9cd186
--- /dev/null
+++ b/core/src/test/java/org/apache/brooklyn/util/core/sensor/SensorPredicatesTest.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.brooklyn.util.core.sensor;
+
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertTrue;
+
+import org.apache.brooklyn.api.sensor.Sensor;
+import org.apache.brooklyn.core.sensor.Sensors;
+import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
+import org.testng.annotations.Test;
+
+public class SensorPredicatesTest extends BrooklynAppUnitTestSupport {
+
+ @Test
+ public void testDisplayNameEqualTo() throws Exception {
+ Sensor<Object> task = Sensors.newSensor(Object.class, "myname");
+ assertTrue(SensorPredicates.sensorNameEqualTo("myname").apply(task));
+ assertFalse(SensorPredicates.sensorNameEqualTo("wrong").apply(task));
+ }
+
+}