Repository: incubator-brooklyn
Updated Branches:
  refs/heads/master c6e09bf0d -> 683bee980


Add description for tasks running a repeater


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

Branch: refs/heads/master
Commit: 1f98ea2c0ef6f7b26f7b35fdf94f4761fdf454dc
Parents: 1f3bff4
Author: Svetoslav Neykov <[email protected]>
Authored: Fri Mar 6 17:39:32 2015 +0200
Committer: Svetoslav Neykov <[email protected]>
Committed: Fri Mar 6 17:39:32 2015 +0200

----------------------------------------------------------------------
 .../src/main/java/brooklyn/util/task/Tasks.java | 11 ++++++++--
 .../test/java/brooklyn/util/task/TasksTest.java | 22 ++++++++++++++++++++
 2 files changed, 31 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1f98ea2c/core/src/main/java/brooklyn/util/task/Tasks.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/util/task/Tasks.java 
b/core/src/main/java/brooklyn/util/task/Tasks.java
index bce2887..f644441 100644
--- a/core/src/main/java/brooklyn/util/task/Tasks.java
+++ b/core/src/main/java/brooklyn/util/task/Tasks.java
@@ -445,7 +445,14 @@ public class Tasks {
 
         @Override
         public Boolean call() {
-            ReferenceWithError<Boolean> result = repeater.runKeepingError();
+            ReferenceWithError<Boolean> result;
+            Tasks.setBlockingDetails(repeater.getDescription());
+            try {
+               result = repeater.runKeepingError();
+            } finally {
+                Tasks.resetBlockingDetails();
+            }
+
             if (Boolean.TRUE.equals(result.getWithoutError()))
                 return true;
             if (result.hasError()) 
@@ -469,7 +476,7 @@ public class Tasks {
     public static TaskBuilder<?> requiring(Repeater repeater) {
         return Tasks.<Boolean>builder().body(new 
WaitForRepeaterCallable(repeater, true))
             .name("waiting for condition")
-            .description("Requiring " + getTimeoutString(repeater) + ": 
"+repeater);
+            .description("Requiring " + getTimeoutString(repeater) + ": " + 
repeater.getDescription());
     }
     
     private static String getTimeoutString(Repeater repeater) {

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1f98ea2c/core/src/test/java/brooklyn/util/task/TasksTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/util/task/TasksTest.java 
b/core/src/test/java/brooklyn/util/task/TasksTest.java
index d5e2bb4..c74278a 100644
--- a/core/src/test/java/brooklyn/util/task/TasksTest.java
+++ b/core/src/test/java/brooklyn/util/task/TasksTest.java
@@ -20,9 +20,11 @@ package brooklyn.util.task;
 
 import static brooklyn.event.basic.DependentConfiguration.attributeWhenReady;
 import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertTrue;
 
 import java.util.Map;
 import java.util.Set;
+import java.util.concurrent.Callable;
 
 import org.testng.Assert;
 import org.testng.annotations.BeforeMethod;
@@ -156,4 +158,24 @@ public class TasksTest extends BrooklynAppUnitTestSupport {
         Assert.assertEquals(t.get(Duration.TEN_SECONDS), false);
     }
 
+    @Test
+    public void testRepeaterDescription() throws Exception{
+        final String description = "task description";
+        Repeater repeater = Repeater.create(description)
+            .repeat(Callables.returning(null))
+            .every(Duration.ONE_MILLISECOND)
+            .limitIterationsTo(1)
+            .until(new Callable<Boolean>() {
+                @Override
+                public Boolean call() {
+                    TaskInternal<?> current = (TaskInternal<?>)Tasks.current();
+                    assertEquals(current.getBlockingDetails(), description);
+                    return true;
+                }
+            });
+        Task<Boolean> t = Tasks.testing(repeater).build();
+        app.getExecutionContext().submit(t);
+        assertTrue(t.get(Duration.TEN_SECONDS));
+    }
+
 }

Reply via email to