You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2022/07/04 11:05:05 UTC
[brooklyn-server] 02/03: Extending extends AddEffectorInitializerAbstract per @Ahgittin comment
This is an automated email from the ASF dual-hosted git repository.
heneveld pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-server.git
commit 390d7477cc9d366796a824385c5792f4b17efb1c
Author: Juan Cabrerizo <ju...@cabrerizo.es>
AuthorDate: Mon Jul 4 11:28:51 2022 +0100
Extending extends AddEffectorInitializerAbstract per @Ahgittin comment
---
.../core/effector/util/ChildrenBatchEffector.java | 22 +++++++++++-----------
.../effector/util/ChildrenBatchEffectorTest.java | 8 ++++++++
2 files changed, 19 insertions(+), 11 deletions(-)
diff --git a/core/src/main/java/org/apache/brooklyn/core/effector/util/ChildrenBatchEffector.java b/core/src/main/java/org/apache/brooklyn/core/effector/util/ChildrenBatchEffector.java
index c464967387..991e575cba 100644
--- a/core/src/main/java/org/apache/brooklyn/core/effector/util/ChildrenBatchEffector.java
+++ b/core/src/main/java/org/apache/brooklyn/core/effector/util/ChildrenBatchEffector.java
@@ -20,11 +20,11 @@ package org.apache.brooklyn.core.effector.util;
import org.apache.brooklyn.api.effector.Effector;
import org.apache.brooklyn.api.entity.Entity;
-import org.apache.brooklyn.api.entity.EntityInitializer;
import org.apache.brooklyn.api.mgmt.Task;
import org.apache.brooklyn.config.ConfigKey;
import org.apache.brooklyn.core.config.ConfigKeys;
import org.apache.brooklyn.core.config.MapConfigKey;
+import org.apache.brooklyn.core.effector.AddEffectorInitializerAbstract;
import org.apache.brooklyn.core.effector.EffectorBody;
import org.apache.brooklyn.core.effector.EffectorTasks.EffectorBodyTaskFactory;
import org.apache.brooklyn.core.effector.Effectors;
@@ -40,14 +40,13 @@ import org.apache.brooklyn.util.time.Time;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
* Effector to invoking an effector across children or members,
*/
-public class ChildrenBatchEffector implements EntityInitializer {
+public class ChildrenBatchEffector extends AddEffectorInitializerAbstract {
public static final Effector<Object> EFFECTOR = Effectors.effector(Object.class, "childrenBatchEffector").
description("Invokes an effector e.g. across children or members").buildAbstract();
public static final ConfigKey<String> EFFECTOR_NAME = ConfigKeys.builder(String.class)
@@ -78,12 +77,17 @@ public class ChildrenBatchEffector implements EntityInitializer {
public static final MapConfigKey<Object> EFFECTOR_ARGS = new MapConfigKey.Builder<Object>(Object.class, "effectorArgs")
.build();
private static final Logger log = LoggerFactory.getLogger(ChildrenBatchEffector.class);
- private final ConfigBag paramsCreationTime;
public ChildrenBatchEffector(ConfigBag params) {
- this.paramsCreationTime = params;
+ super(params);
}
+ @Override
+ protected Effectors.EffectorBuilder<Object> newEffectorBuilder() {
+ Effectors.EffectorBuilder<Object> eff = newAbstractEffectorBuilder(Object.class);
+ eff.impl(new ChildrenBatchEffector.ChildrenBatchEffectorBody(initParams()));
+ return eff; }
+
public ChildrenBatchEffector(Map<String, String> params) {
this(ConfigBag.newInstance(params));
}
@@ -104,7 +108,7 @@ public class ChildrenBatchEffector implements EntityInitializer {
@Override
public void apply(@SuppressWarnings("deprecation") org.apache.brooklyn.api.entity.EntityLocal entity) {
- ((EntityInternal) entity).getMutableEntityType().addEffector(makeEffector(paramsCreationTime));
+ ((EntityInternal) entity).getMutableEntityType().addEffector(makeEffector(initParams()));
}
protected static class ChildrenBatchEffectorBody extends EffectorBody<Object> {
@@ -162,11 +166,7 @@ public class ChildrenBatchEffector implements EntityInitializer {
if (batchSize > 0 && !items.isEmpty()) {
while (activeTasks.size() >= batchSize) {
- Iterator<Task<?>> ati = activeTasks.iterator();
- while (ati.hasNext()) {
- final Task<?> task = ati.next();
- if (task.isDone()) ati.remove();
- }
+ activeTasks.removeIf(Task::isDone);
if (activeTasks.size() >= batchSize) {
try {
Tasks.withBlockingDetails("Waiting for something in current batch of " + batchSize + " to complete "
diff --git a/core/src/test/java/org/apache/brooklyn/core/effector/util/ChildrenBatchEffectorTest.java b/core/src/test/java/org/apache/brooklyn/core/effector/util/ChildrenBatchEffectorTest.java
index 2e0d9b81d5..5628fe93dc 100644
--- a/core/src/test/java/org/apache/brooklyn/core/effector/util/ChildrenBatchEffectorTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/effector/util/ChildrenBatchEffectorTest.java
@@ -27,6 +27,7 @@ import org.apache.brooklyn.core.config.ConfigKeys;
import org.apache.brooklyn.core.effector.AddEffector;
import org.apache.brooklyn.core.effector.EffectorBody;
import org.apache.brooklyn.core.effector.Effectors;
+import org.apache.brooklyn.core.effector.http.HttpCommandEffector;
import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
import org.apache.brooklyn.core.test.entity.TestEntity;
import org.apache.brooklyn.util.core.config.ConfigBag;
@@ -75,6 +76,13 @@ public class ChildrenBatchEffectorTest extends BrooklynAppUnitTestSupport {
assertEquals(DoNothingEffector.correctExecutions, 2);
}
+ @Test(expectedExceptions = NullPointerException.class)
+ public void testMissingName() {
+ new HttpCommandEffector(ConfigBag.newInstance()
+ .configure(ChildrenBatchEffector.BATCH_SIZE, 1)
+ .configure(ChildrenBatchEffector.EFFECTOR_TO_INVOKE, EFFECTOR_CHILDREN.getName())
+ ).newEffectorBuilder();
+ }
@Test
public void testContinueInvocationsWhenOneEffectorFail() {