algairim commented on a change in pull request #1297:
URL: https://github.com/apache/brooklyn-server/pull/1297#discussion_r800508180
##########
File path:
utils/common/src/main/java/org/apache/brooklyn/util/collections/CollectionFunctionals.java
##########
@@ -119,6 +115,35 @@ public T apply(Iterable<? extends T> input) {
@Override public String toString() { return "firstElementFunction"; }
}
+ public static class AllEqualsFunction implements Function<Iterable<?>,
Comparable<?>> {
+ private final Comparable<?> value;
+
+ public AllEqualsFunction(Comparable<?> value) {
+ if (Objects.isNull(value)) {
+ throw new IllegalArgumentException("The value to compare all
to must be defined");
+ }
+ this.value = value;
+ }
+
+ @Override
+ public Boolean apply(@Nullable Iterable<?> input) {
+ if (Objects.isNull(input) || Iterables.isEmpty(input)) return null;
Review comment:
In the real scenario we cannot say if it is true or false since there is
nothing to compare yet, hence, we return null. This will mean that the result
sensor will have no value until there is something certain to compare, as in
example below:
```
# Calculates process status of the group - all must be 'RUNNING'
- type: org.apache.brooklyn.enricher.stock.Aggregator
brooklyn.config:
enricher.sourceSensor: $brooklyn:sensor("my.custom.app.isRunning")
enricher.targetSensor: $brooklyn:sensor("service.process.isRunning")
enricher.aggregating.fromMembers: true
enricher.transformation:
$brooklyn:object:
type:
"org.apache.brooklyn.util.collections.CollectionFunctionals$AllTrueFunction"
```
Returning `false` prematurely could be misleading @jcabrerizo.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]