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 2021/11/13 11:14:00 UTC

[brooklyn-server] 04/28: more guava updates

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 36849ea7e9652e91e891e7629f8fc5afab01c0b9
Author: Alex Heneveld <al...@cloudsoftcorp.com>
AuthorDate: Tue Nov 9 13:30:00 2021 +0000

    more guava updates
---
 .../core/config/internal/AbstractConfigMapImpl.java |  4 ++--
 .../apache/brooklyn/core/entity/AbstractEntity.java | 11 ++++++-----
 .../core/internal/BrooklynPropertiesImpl.java       |  2 +-
 .../brooklyn/core/location/AbstractLocation.java    |  6 +++---
 .../location/access/PortForwardManagerImpl.java     | 21 +++++++++------------
 .../core/network/AbstractOnNetworkEnricher.java     |  2 +-
 .../core/resolve/jackson/BeanWithTypeUtils.java     |  6 +++---
 .../apache/brooklyn/enricher/stock/Enrichers.java   |  8 ++++----
 .../enricher/stock/MathAggregatorFunctions.java     |  4 ++--
 .../brooklyn/enricher/stock/PercentageEnricher.java |  3 ++-
 .../brooklyn/entity/group/DynamicClusterImpl.java   |  2 +-
 .../location/byon/ByonLocationResolver.java         | 10 +++++-----
 .../brooklyn/location/ssh/SshMachineLocation.java   |  2 +-
 .../policy/AbstractInvokeEffectorPolicy.java        |  2 +-
 .../brooklyn/util/core/file/ArchiveBuilder.java     |  2 +-
 .../internal/ssh/sshj/SshjClientConnection.java     |  2 +-
 .../brooklyn/util/core/task/ValueResolver.java      |  2 +-
 17 files changed, 44 insertions(+), 45 deletions(-)

diff --git a/core/src/main/java/org/apache/brooklyn/core/config/internal/AbstractConfigMapImpl.java b/core/src/main/java/org/apache/brooklyn/core/config/internal/AbstractConfigMapImpl.java
index f9e8536..39edafe 100644
--- a/core/src/main/java/org/apache/brooklyn/core/config/internal/AbstractConfigMapImpl.java
+++ b/core/src/main/java/org/apache/brooklyn/core/config/internal/AbstractConfigMapImpl.java
@@ -499,11 +499,11 @@ public abstract class AbstractConfigMapImpl<TContainer extends BrooklynObject> i
         
         TypeToken<?> ownType = ownKey.getTypeToken();
         TypeToken<?> queryType = queryKey.getTypeToken();
-        if (queryType.isAssignableFrom(ownType)) {
+        if (queryType.isSupertypeOf(ownType)) {
             // own type is same or more specific, normal path
             return ownType;
         }
-        if (ownType.isAssignableFrom(queryType)) {
+        if (ownType.isSupertypeOf(queryType)) {
             // query type is more specific than type defined; unusual but workable
             LOG.debug("Query for "+queryKey+" wants more specific type than key "+ownKey+" declared on "+context+" (unusual but clear what to do)");
             // previously (to 2017-11) we used the less specific type, only issue noticed was if an anonymous key is persisted
diff --git a/core/src/main/java/org/apache/brooklyn/core/entity/AbstractEntity.java b/core/src/main/java/org/apache/brooklyn/core/entity/AbstractEntity.java
index fe2a8d9..586bac2 100644
--- a/core/src/main/java/org/apache/brooklyn/core/entity/AbstractEntity.java
+++ b/core/src/main/java/org/apache/brooklyn/core/entity/AbstractEntity.java
@@ -18,6 +18,8 @@
  */
 package org.apache.brooklyn.core.entity;
 
+import com.google.common.base.MoreObjects;
+import com.google.common.base.MoreObjects.ToStringHelper;
 import static com.google.common.base.Preconditions.checkNotNull;
 
 import java.util.Collection;
@@ -108,7 +110,6 @@ import org.slf4j.LoggerFactory;
 import com.google.common.annotations.Beta;
 import com.google.common.base.Function;
 import com.google.common.base.Objects;
-import com.google.common.base.Objects.ToStringHelper;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
@@ -120,7 +121,7 @@ import com.google.common.collect.Sets;
 /**
  * Default {@link Entity} implementation, which should be extended whenever implementing an entity.
  * <p>
- * Provides several common fields ({@link #displayName}, {@link #id}), and supports the core features of
+ * Provides several common fields ({@link #displayName}, {@link #getId()}), and supports the core features of
  * an entity such as configuration keys, attributes, subscriptions and effector invocation.
  * <p>
  * If a sub-class is creating other entities, this should be done in an overridden {@link #init()}
@@ -136,9 +137,9 @@ import com.google.common.collect.Sets;
  *   <li>Call {@link #setProxy(Entity)}; the proxy should be used by everything else when referring 
  *       to this entity (except for drivers/policies that are attached to the entity, which can be  
  *       given a reference to this entity itself).
- *   <li>Call {@link #configure(Map)} and then {@link #setConfig(ConfigKey, Object)}
+ *   <li>Configure properties eg {@link #configure(Map)}
  *   <li>Call {@link #init()}
- *   <li>Call {@link #addPolicy(Policy)} (for any policies defined in the {@link EntitySpec})
+ *   <li>Add adjucts (egfor any policies defined in the {@link EntitySpec})
  *   <li>Call {@link #setParent(Entity)}, if a parent is specified in the {@link EntitySpec}
  * </ol>
  * <p>
@@ -1313,7 +1314,7 @@ public abstract class AbstractEntity extends AbstractBrooklynObject implements E
      * Cannot be used in combination with overriding the deprecated toStringFieldsToInclude.
      */
     protected ToStringHelper toStringHelper() {
-        ToStringHelper result = Objects.toStringHelper(this).omitNullValues().add("id", getId());
+        ToStringHelper result = MoreObjects.toStringHelper(this).omitNullValues().add("id", getId());
         if (!displayNameAutoGenerated && !Objects.equal(getDisplayName(), getAutogeneratedDefaultDisplayName())) {
             result.add("name", getDisplayName());
         }
diff --git a/core/src/main/java/org/apache/brooklyn/core/internal/BrooklynPropertiesImpl.java b/core/src/main/java/org/apache/brooklyn/core/internal/BrooklynPropertiesImpl.java
index 2c8d282..b7b7483 100644
--- a/core/src/main/java/org/apache/brooklyn/core/internal/BrooklynPropertiesImpl.java
+++ b/core/src/main/java/org/apache/brooklyn/core/internal/BrooklynPropertiesImpl.java
@@ -268,7 +268,7 @@ public class BrooklynPropertiesImpl implements BrooklynProperties {
                 if (Strings.isBlank(s)) {
                     s = Strings.EMPTY;
                 } else {
-                    s = CharMatcher.BREAKING_WHITESPACE.trimFrom(s);
+                    s = CharMatcher.breakingWhitespace().trimFrom(s);
                 }
                 return BrooklynPropertiesImpl.this.put(key, s);
             }
diff --git a/core/src/main/java/org/apache/brooklyn/core/location/AbstractLocation.java b/core/src/main/java/org/apache/brooklyn/core/location/AbstractLocation.java
index cd42a37..c4dff5e 100644
--- a/core/src/main/java/org/apache/brooklyn/core/location/AbstractLocation.java
+++ b/core/src/main/java/org/apache/brooklyn/core/location/AbstractLocation.java
@@ -18,6 +18,8 @@
  */
 package org.apache.brooklyn.core.location;
 
+import com.google.common.base.MoreObjects;
+import com.google.common.base.MoreObjects.ToStringHelper;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static org.apache.brooklyn.util.JavaGroovyEquivalents.groovyTruth;
@@ -72,8 +74,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.google.common.annotations.Beta;
-import com.google.common.base.Objects;
-import com.google.common.base.Objects.ToStringHelper;
 import com.google.common.base.Splitter;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
@@ -605,7 +605,7 @@ public abstract class AbstractLocation extends AbstractBrooklynObject implements
 
     /** override this, adding to the returned value, to supply additional fields to include in the toString */
     protected ToStringHelper string() {
-        return Objects.toStringHelper(getClass()).add("id", getId()).add("name", name);
+        return MoreObjects.toStringHelper(getClass()).add("id", getId()).add("name", name);
     }
     
     @Override
diff --git a/core/src/main/java/org/apache/brooklyn/core/location/access/PortForwardManagerImpl.java b/core/src/main/java/org/apache/brooklyn/core/location/access/PortForwardManagerImpl.java
index f2c73ee..157eee4 100644
--- a/core/src/main/java/org/apache/brooklyn/core/location/access/PortForwardManagerImpl.java
+++ b/core/src/main/java/org/apache/brooklyn/core/location/access/PortForwardManagerImpl.java
@@ -18,8 +18,14 @@
  */
 package org.apache.brooklyn.core.location.access;
 
+import com.google.common.base.MoreObjects.ToStringHelper;
+import com.google.common.base.Preconditions;
 import static com.google.common.base.Preconditions.checkNotNull;
-
+import com.google.common.base.Predicate;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Lists;
+import com.google.common.net.HostAndPort;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;
@@ -28,7 +34,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.atomic.AtomicInteger;
-
 import org.apache.brooklyn.api.location.Location;
 import org.apache.brooklyn.api.mgmt.rebind.RebindContext;
 import org.apache.brooklyn.api.mgmt.rebind.RebindSupport;
@@ -40,14 +45,6 @@ import org.apache.brooklyn.util.exceptions.Exceptions;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Objects.ToStringHelper;
-import com.google.common.base.Preconditions;
-import com.google.common.base.Predicate;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Lists;
-import com.google.common.net.HostAndPort;
-
 /**
  * 
  * @author aled
@@ -175,7 +172,7 @@ public class PortForwardManagerImpl extends AbstractLocation implements PortForw
 
     protected void associateImpl(String publicIpId, HostAndPort publicEndpoint, Location l, int privatePort) {
         synchronized (mutex) {
-            String publicIp = publicEndpoint.getHostText();
+            String publicIp = publicEndpoint.getHost();
             int publicPort = publicEndpoint.getPort();
             recordPublicIpHostname(publicIpId, publicIp);
             PortMapping mapping = new PortMapping(publicIpId, publicEndpoint, l, privatePort);
@@ -328,7 +325,7 @@ public class PortForwardManagerImpl extends AbstractLocation implements PortForw
     }
 
     private AssociationMetadata associationMetadataFromPortMapping(PortMapping portMapping) {
-        String publicIpId = portMapping.getPublicEndpoint().getHostText();
+        String publicIpId = portMapping.getPublicEndpoint().getHost();
         HostAndPort publicEndpoint = portMapping.getPublicEndpoint();
         Location location = portMapping.getTarget();
         int privatePort = portMapping.getPrivatePort();
diff --git a/core/src/main/java/org/apache/brooklyn/core/network/AbstractOnNetworkEnricher.java b/core/src/main/java/org/apache/brooklyn/core/network/AbstractOnNetworkEnricher.java
index 8bd91d9..7c4b2f5 100644
--- a/core/src/main/java/org/apache/brooklyn/core/network/AbstractOnNetworkEnricher.java
+++ b/core/src/main/java/org/apache/brooklyn/core/network/AbstractOnNetworkEnricher.java
@@ -308,7 +308,7 @@ public abstract class AbstractOnNetworkEnricher extends AbstractEnricher {
             }
             URI result;
             try {
-                result = new URI(uri.getScheme(), uri.getUserInfo(), mappedEndpoint.get().getHostText(), mappedEndpoint.get().getPort(), uri.getPath(), uri.getQuery(), uri.getFragment());
+                result = new URI(uri.getScheme(), uri.getUserInfo(), mappedEndpoint.get().getHost(), mappedEndpoint.get().getPort(), uri.getPath(), uri.getQuery(), uri.getFragment());
             } catch (URISyntaxException e) {
                 LOG.debug("Error transforming URI "+uri+", using target "+mappedEndpoint+"; rethrowing");
                 throw Exceptions.propagateAnnotated("Error transforming URI "+uri+", using target "+mappedEndpoint, e);
diff --git a/core/src/main/java/org/apache/brooklyn/core/resolve/jackson/BeanWithTypeUtils.java b/core/src/main/java/org/apache/brooklyn/core/resolve/jackson/BeanWithTypeUtils.java
index 9fe31ed..1b78fbd 100644
--- a/core/src/main/java/org/apache/brooklyn/core/resolve/jackson/BeanWithTypeUtils.java
+++ b/core/src/main/java/org/apache/brooklyn/core/resolve/jackson/BeanWithTypeUtils.java
@@ -169,7 +169,7 @@ public class BeanWithTypeUtils {
 
         Object o = inputMap.get();
         if (!(o instanceof Map) && !(o instanceof List) && !Boxing.isPrimitiveOrBoxedObject(o)) {
-            if (type.isAssignableFrom(o.getClass())) {
+            if (type.isSupertypeOf(o.getClass())) {
                 return (Maybe<T>)inputMap;
             }  else {
                 return Maybe.absent(() -> new RuntimeException("BeanWithType cannot convert from "+o.getClass()+" to "+type));
@@ -178,13 +178,13 @@ public class BeanWithTypeUtils {
 
         Maybe<T> fallback = null;
         if (!BrooklynJacksonType.isRegisteredType(type)) {
-            if (type.isAssignableFrom(Object.class)) {
+            if (type.isSupertypeOf(Object.class)) {
                 // the input is already valid, so use it as the fallback result
                 fallback = (Maybe<T>) inputMap;
 
                 // there isn't a 'type' key so little obvious point in converting .. might make a difference _inside_ a map or list, but we've not got any generics so it won't
                 if (!(o instanceof Map) || !((Map<?, ?>) o).containsKey("type")) return fallback;
-            } else if (type.isAssignableFrom(Map.class)) {
+            } else if (type.isSupertypeOf(Map.class)) {
                 // skip conversion for a map if it isn't an object
                 return (Maybe<T>) inputMap;
             }
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 cd438cb..ab87437 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
@@ -846,9 +846,9 @@ public class Enrichers {
         public ComputingNumber(Number defaultValueForUnreportedSensors, Number valueToReportIfNoSensors, TypeToken<T> typeToken) {
             this.defaultValueForUnreportedSensors = defaultValueForUnreportedSensors;
             this.valueToReportIfNoSensors = valueToReportIfNoSensors;
-            if (typeToken!=null && TypeToken.of(Number.class).isAssignableFrom(typeToken.getType())) {
+            if (typeToken!=null && TypeToken.of(Number.class).isSupertypeOf(typeToken.getType())) {
                 this.typeToken = typeToken;
-            } else if (typeToken==null || typeToken.isAssignableFrom(Number.class)) {
+            } else if (typeToken==null || typeToken.isSupertypeOf(Number.class)) {
                 // use double if e.g. Object is supplied
                 this.typeToken = (TypeToken)TypeToken.of(Double.class);
             } else {
@@ -948,9 +948,9 @@ public class Enrichers {
             this.quorumCheck = quorumCheck;
             this.totalSize = totalSize;
 
-            if (typeToken!=null && TypeToken.of(Boolean.class).isAssignableFrom(typeToken.getType())) {
+            if (typeToken!=null && TypeToken.of(Boolean.class).isSupertypeOf(typeToken.getType())) {
                 this.typeToken = typeToken;
-            } else if (typeToken==null || typeToken.isAssignableFrom(Boolean.class)) {
+            } else if (typeToken==null || typeToken.isSupertypeOf(Boolean.class)) {
                 this.typeToken = (TypeToken)TypeToken.of(Boolean.class);
             } else {
                 throw new IllegalArgumentException("Type " + typeToken + " is not valid for " + this + " -- expected " + TypeToken.of(Boolean.class));
diff --git a/core/src/main/java/org/apache/brooklyn/enricher/stock/MathAggregatorFunctions.java b/core/src/main/java/org/apache/brooklyn/enricher/stock/MathAggregatorFunctions.java
index 8efa427..19be40d 100644
--- a/core/src/main/java/org/apache/brooklyn/enricher/stock/MathAggregatorFunctions.java
+++ b/core/src/main/java/org/apache/brooklyn/enricher/stock/MathAggregatorFunctions.java
@@ -98,9 +98,9 @@ public class MathAggregatorFunctions {
         public AbstractComputingNumber(Number defaultValueForUnreportedSensors, Number valueToReportIfNoSensors, TypeToken<T> typeToken) {
             this.defaultValueForUnreportedSensors = defaultValueForUnreportedSensors;
             this.valueToReportIfNoSensors = valueToReportIfNoSensors;
-            if (typeToken != null && TypeToken.of(Number.class).isAssignableFrom(typeToken.getType())) {
+            if (typeToken != null && TypeToken.of(Number.class).isSupertypeOf(typeToken.getType())) {
                 this.typeToken = typeToken;
-            } else if (typeToken == null || typeToken.isAssignableFrom(Number.class)) {
+            } else if (typeToken == null || typeToken.isSupertypeOf(Number.class)) {
                 // use double if e.g. Object is supplied
                 this.typeToken = (TypeToken)TypeToken.of(Double.class);
             } else {
diff --git a/core/src/main/java/org/apache/brooklyn/enricher/stock/PercentageEnricher.java b/core/src/main/java/org/apache/brooklyn/enricher/stock/PercentageEnricher.java
index 496dfaf..74f680c 100644
--- a/core/src/main/java/org/apache/brooklyn/enricher/stock/PercentageEnricher.java
+++ b/core/src/main/java/org/apache/brooklyn/enricher/stock/PercentageEnricher.java
@@ -18,6 +18,7 @@
  */
 package org.apache.brooklyn.enricher.stock;
 
+import com.google.common.base.MoreObjects;
 import org.apache.brooklyn.api.catalog.Catalog;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -87,7 +88,7 @@ public class PercentageEnricher extends AbstractEnricher implements SensorEventL
         sourceCurrentSensor = Preconditions.checkNotNull(config().get(SOURCE_CURRENT_SENSOR), "Can't add percentage enricher to entity %s as it has no %s", entity, SOURCE_CURRENT_SENSOR.getName());
         sourceTotalSensor = Preconditions.checkNotNull(config().get(SOURCE_TOTAL_SENSOR), "Can't add percentage enricher to entity %s as it has no %s", entity, SOURCE_TOTAL_SENSOR.getName());
         targetSensor = Preconditions.checkNotNull(config().get(TARGET_SENSOR), "Can't add percentage enricher to entity %s as it has no %s", entity, TARGET_SENSOR.getName());
-        producer = Objects.firstNonNull(config().get(PRODUCER), entity);
+        producer = MoreObjects.firstNonNull(config().get(PRODUCER), entity);
 
         if (targetSensor.equals(sourceCurrentSensor) && entity.equals(producer)) {
             throw new IllegalArgumentException("Can't add percentage enricher to entity " + entity + " as cycle detected with " + SOURCE_CURRENT_SENSOR.getName());
diff --git a/core/src/main/java/org/apache/brooklyn/entity/group/DynamicClusterImpl.java b/core/src/main/java/org/apache/brooklyn/entity/group/DynamicClusterImpl.java
index ba59b84..47db417 100644
--- a/core/src/main/java/org/apache/brooklyn/entity/group/DynamicClusterImpl.java
+++ b/core/src/main/java/org/apache/brooklyn/entity/group/DynamicClusterImpl.java
@@ -1168,7 +1168,7 @@ public class DynamicClusterImpl extends AbstractGroupImpl implements DynamicClus
                         "Waiting for permit then running " + effector.getName() + " on " + target,
                         obtainMutex, effectorTask);
             }
-            toSubmit.addListener(new ReleasePermit(getChildTaskSemaphore(), permitObtained), MoreExecutors.sameThreadExecutor());
+            toSubmit.addListener(new ReleasePermit(getChildTaskSemaphore(), permitObtained), /* same thread */ r -> r.run());
         } else {
             toSubmit = effectorTask;
         }
diff --git a/core/src/main/java/org/apache/brooklyn/location/byon/ByonLocationResolver.java b/core/src/main/java/org/apache/brooklyn/location/byon/ByonLocationResolver.java
index 156b720..40a998f 100644
--- a/core/src/main/java/org/apache/brooklyn/location/byon/ByonLocationResolver.java
+++ b/core/src/main/java/org/apache/brooklyn/location/byon/ByonLocationResolver.java
@@ -73,7 +73,7 @@ public class ByonLocationResolver extends AbstractLocationResolver {
 
     /**
      * @todo Reimplement via a registry:
-     * {@link org.apache.brooklyn.location.winrm.WinRmMachineLocation}
+     * org.apache.brooklyn.location.winrm.WinRmMachineLocation
      * {@link org.apache.brooklyn.location.ssh.SshMachineLocation}
      */
     public static final Map<String, String> OS_TO_MACHINE_LOCATION_TYPE = ImmutableMap.of(
@@ -176,9 +176,9 @@ public class ByonLocationResolver extends AbstractLocationResolver {
                 throw new IllegalArgumentException("Invalid portMapping ('"+override+"') for port "+port+" in "+specForErrMsg);
             }
             port = hostAndPortOverride.getPort();
-            host = hostAndPortOverride.getHostText().trim();
+            host = hostAndPortOverride.getHost().trim();
         } else {
-            host = userAndHostAndPort.getHostAndPort().getHostText().trim();
+            host = userAndHostAndPort.getHostAndPort().getHost().trim();
         }
         
         machineConfig.put("address", host);
@@ -225,7 +225,7 @@ public class ByonLocationResolver extends AbstractLocationResolver {
         
         UserAndHostAndPort userAndHostAndPort = parseUserAndHostAndPort(val);
         
-        String host = userAndHostAndPort.getHostAndPort().getHostText().trim();
+        String host = userAndHostAndPort.getHostAndPort().getHost().trim();
         machineConfig.put("address", host);
         try {
             InetAddress.getByName(host.trim());
@@ -261,7 +261,7 @@ public class ByonLocationResolver extends AbstractLocationResolver {
     private UserAndHostAndPort parseUserAndHostAndPort(String val, int defaultPort) {
         UserAndHostAndPort result = parseUserAndHostAndPort(val);
         if (!result.getHostAndPort().hasPort()) {
-            result = UserAndHostAndPort.fromParts(result.getUser(), result.getHostAndPort().getHostText(), defaultPort);
+            result = UserAndHostAndPort.fromParts(result.getUser(), result.getHostAndPort().getHost(), defaultPort);
         }
         return result;
     }
diff --git a/core/src/main/java/org/apache/brooklyn/location/ssh/SshMachineLocation.java b/core/src/main/java/org/apache/brooklyn/location/ssh/SshMachineLocation.java
index 9acee3d..666f2ba 100644
--- a/core/src/main/java/org/apache/brooklyn/location/ssh/SshMachineLocation.java
+++ b/core/src/main/java/org/apache/brooklyn/location/ssh/SshMachineLocation.java
@@ -288,7 +288,7 @@ public class SshMachineLocation extends AbstractMachineLocation implements Machi
                 if (!publicEndpoint.hasPort()) {
                     throw new IllegalArgumentException("Invalid portMapping ('"+entry.getValue()+"') for port "+targetPort+" in machine "+this);
                 }
-                pfm.associate(publicEndpoint.getHostText(), publicEndpoint, this, targetPort);
+                pfm.associate(publicEndpoint.getHost(), publicEndpoint, this, targetPort);
             }
         }
     }
diff --git a/core/src/main/java/org/apache/brooklyn/policy/AbstractInvokeEffectorPolicy.java b/core/src/main/java/org/apache/brooklyn/policy/AbstractInvokeEffectorPolicy.java
index d0b5e67..d4a238d 100644
--- a/core/src/main/java/org/apache/brooklyn/policy/AbstractInvokeEffectorPolicy.java
+++ b/core/src/main/java/org/apache/brooklyn/policy/AbstractInvokeEffectorPolicy.java
@@ -83,7 +83,7 @@ public abstract class AbstractInvokeEffectorPolicy extends AbstractPolicy {
         }
         Task<T> task = entity.invoke(effector, parameters);
         if (isBusySensorEnabled()) {
-            task.addListener(new EffectorListener(), MoreExecutors.sameThreadExecutor());
+            task.addListener(new EffectorListener(), /* same thread */ Runnable::run);
         }
         return task;
     }
diff --git a/core/src/main/java/org/apache/brooklyn/util/core/file/ArchiveBuilder.java b/core/src/main/java/org/apache/brooklyn/util/core/file/ArchiveBuilder.java
index 19cecac..3b11555 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/file/ArchiveBuilder.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/file/ArchiveBuilder.java
@@ -332,7 +332,7 @@ public class ArchiveBuilder {
                 if (!source.isDirectory()) {
                     throw new IllegalStateException("Cannot add multiple items at a path in archive unless they are directories: "+sources+" at "+path+" is not valid.");
                 }
-                Iterable<File> children = Files.fileTreeTraverser().children(source);
+                Iterable<File> children = Files.fileTraverser().breadthFirst(source);
                 for (File child : children) {
                     addToArchive(Os.mergePaths(name, child.getName()), Collections.singleton(child), target);
                 }
diff --git a/core/src/main/java/org/apache/brooklyn/util/core/internal/ssh/sshj/SshjClientConnection.java b/core/src/main/java/org/apache/brooklyn/util/core/internal/ssh/sshj/SshjClientConnection.java
index 22a5d70..ddad016 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/internal/ssh/sshj/SshjClientConnection.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/internal/ssh/sshj/SshjClientConnection.java
@@ -187,7 +187,7 @@ public class SshjClientConnection implements SshAction<SSHClient> {
         if (sessionTimeout != 0) {
             ssh.setTimeout(sessionTimeout);
         }
-        ssh.connect(hostAndPort.getHostText(), hostAndPort.getPortOrDefault(22));
+        ssh.connect(hostAndPort.getHost(), hostAndPort.getPortOrDefault(22));
         
         if (password != null) {
             ssh.authPassword(username, password);
diff --git a/core/src/main/java/org/apache/brooklyn/util/core/task/ValueResolver.java b/core/src/main/java/org/apache/brooklyn/util/core/task/ValueResolver.java
index fcbd928..c2a4af2 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/task/ValueResolver.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/task/ValueResolver.java
@@ -215,7 +215,7 @@ public class ValueResolver<T> implements DeferredSupplier<T>, Iterable<Maybe<Obj
     
     <S> ValueResolver<S> cloneReplacingValueAndType(Object newValue, TypeToken<S> superType) {
         // superType expected to be either type or Object.class
-        if (!superType.isAssignableFrom(typeT)) {
+        if (!superType.isSupertypeOf(typeT)) {
             throw new IllegalStateException("superType must be assignable from " + typeT);
         }
         ValueResolver<S> result = new ValueResolver<S>(newValue, superType);