less magic

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

Branch: refs/heads/master
Commit: d79f9ef0775dd426485839ee681f06b55dda7c23
Parents: ae8eb9e
Author: Svetoslav Neykov <svetoslav.ney...@cloudsoftcorp.com>
Authored: Wed Jan 25 13:48:35 2017 +0200
Committer: Svetoslav Neykov <svetoslav.ney...@cloudsoftcorp.com>
Committed: Wed Jan 25 13:48:35 2017 +0200

----------------------------------------------------------------------
 .../brooklyn/core/sensor/ReleaseableLatch.java  | 24 ++++++++++----------
 .../MachineLifecycleEffectorTasks.java          |  1 +
 .../base/SoftwareProcessEntityLatchTest.java    |  9 --------
 3 files changed, 13 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d79f9ef0/core/src/main/java/org/apache/brooklyn/core/sensor/ReleaseableLatch.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/sensor/ReleaseableLatch.java 
b/core/src/main/java/org/apache/brooklyn/core/sensor/ReleaseableLatch.java
index 41ed779..8d28f93 100644
--- a/core/src/main/java/org/apache/brooklyn/core/sensor/ReleaseableLatch.java
+++ b/core/src/main/java/org/apache/brooklyn/core/sensor/ReleaseableLatch.java
@@ -21,13 +21,13 @@ package org.apache.brooklyn.core.sensor;
 import java.util.concurrent.Semaphore;
 
 import org.apache.brooklyn.api.entity.Entity;
-import org.apache.brooklyn.util.core.task.DeferredSupplier;
-import org.apache.brooklyn.util.core.task.ImmediateSupplier;
+import org.apache.brooklyn.util.core.flags.TypeCoercions;
 import org.apache.brooklyn.util.exceptions.Exceptions;
-import org.apache.brooklyn.util.guava.Maybe;
+
+import com.google.common.base.Function;
 
 // DeferredSupplier used as a marker interface to prevent coercion. When 
resolved it must evaluate to {@code Boolean.TRUE}.
-public interface ReleaseableLatch extends DeferredSupplier<Boolean>, 
ImmediateSupplier<Boolean> {
+public interface ReleaseableLatch {
     /**
      * Increment usage count for the {@code caller} entity
      */
@@ -38,21 +38,21 @@ public interface ReleaseableLatch extends 
DeferredSupplier<Boolean>, ImmediateSu
      */
     void release(Entity caller);
 
-    static abstract class AbstractReleaseableLatch implements ReleaseableLatch 
{
-        // Instances coerce to TRUE as they are non-null.
-        @Override public Boolean get() {return Boolean.TRUE;}
-        @Override public Maybe<Boolean> getImmediately() {return 
Maybe.of(Boolean.TRUE);}
-    }
-
     ReleaseableLatch NOP = new Factory.NopLatch();
 
     static class Factory {
-        private static class NopLatch extends AbstractReleaseableLatch {
+        static {
+            TypeCoercions.registerAdapter(ReleaseableLatch.class, 
Boolean.class, new Function<ReleaseableLatch, Boolean>() {
+                @Override public Boolean apply(ReleaseableLatch input) { 
return Boolean.TRUE; }
+            });
+        }
+
+        private static class NopLatch implements ReleaseableLatch {
             @Override public void acquire(Entity caller) {}
             @Override public void release(Entity caller) {}
         }
 
-        private static class MaxConcurrencyLatch extends 
AbstractReleaseableLatch {
+        private static class MaxConcurrencyLatch implements ReleaseableLatch {
             private int permits;
             private transient final Semaphore sem;
 

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d79f9ef0/software/base/src/main/java/org/apache/brooklyn/entity/software/base/lifecycle/MachineLifecycleEffectorTasks.java
----------------------------------------------------------------------
diff --git 
a/software/base/src/main/java/org/apache/brooklyn/entity/software/base/lifecycle/MachineLifecycleEffectorTasks.java
 
b/software/base/src/main/java/org/apache/brooklyn/entity/software/base/lifecycle/MachineLifecycleEffectorTasks.java
index c0d80af..2acb604 100644
--- 
a/software/base/src/main/java/org/apache/brooklyn/entity/software/base/lifecycle/MachineLifecycleEffectorTasks.java
+++ 
b/software/base/src/main/java/org/apache/brooklyn/entity/software/base/lifecycle/MachineLifecycleEffectorTasks.java
@@ -1152,6 +1152,7 @@ public abstract class MachineLifecycleEffectorTasks {
             return ReleaseableLatch.NOP;
         } else {
             ValueResolverIterator<Boolean> iter = resolveLatchIterator(entity, 
rawValue.get(), configKey);
+            // The iterator is used to prevent coercion; the value should 
always be the last one, but iter.last() will return a coerced Boolean
             Maybe<ReleaseableLatch> releasableLatchMaybe = 
iter.next(ReleaseableLatch.class);
             if (releasableLatchMaybe.isPresent()) {
                 ReleaseableLatch latch = releasableLatchMaybe.get();

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d79f9ef0/software/base/src/test/java/org/apache/brooklyn/entity/software/base/SoftwareProcessEntityLatchTest.java
----------------------------------------------------------------------
diff --git 
a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/SoftwareProcessEntityLatchTest.java
 
b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/SoftwareProcessEntityLatchTest.java
index c5e7fc5..f53c377 100644
--- 
a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/SoftwareProcessEntityLatchTest.java
+++ 
b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/SoftwareProcessEntityLatchTest.java
@@ -56,7 +56,6 @@ import org.apache.brooklyn.test.Asserts;
 import org.apache.brooklyn.util.core.config.ConfigBag;
 import org.apache.brooklyn.util.core.task.DynamicTasks;
 import org.apache.brooklyn.util.core.task.TaskInternal;
-import org.apache.brooklyn.util.guava.Maybe;
 import org.apache.brooklyn.util.time.Duration;
 import org.apache.brooklyn.util.time.Time;
 import org.slf4j.Logger;
@@ -288,14 +287,6 @@ public class SoftwareProcessEntityLatchTest extends 
BrooklynAppUnitTestSupport {
             this.maxConcurrency = maxConcurrency;
         }
 
-        public Boolean get() {
-            return delegate.get();
-        }
-
-        public Maybe<Boolean> getImmediately() {
-            return delegate.getImmediately();
-        }
-
         public void acquire(Entity caller) {
             delegate.acquire(caller);
             assertCount(cnt.incrementAndGet());

Reply via email to