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 2014/07/29 21:32:22 UTC
[27/31] git commit: avoid NPE on rebind when locations have been
unmanaged
avoid NPE on rebind when locations have been unmanaged
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/6b4b9e5d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/6b4b9e5d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/6b4b9e5d
Branch: refs/heads/master
Commit: 6b4b9e5d31281d76b1478926e195a556592796c8
Parents: 04a18c0
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Tue Jul 29 14:37:27 2014 -0400
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Tue Jul 29 15:18:22 2014 -0400
----------------------------------------------------------------------
.../FixedListMachineProvisioningLocation.java | 25 +++++++++++++++-----
1 file changed, 19 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/6b4b9e5d/core/src/main/java/brooklyn/location/basic/FixedListMachineProvisioningLocation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/location/basic/FixedListMachineProvisioningLocation.java b/core/src/main/java/brooklyn/location/basic/FixedListMachineProvisioningLocation.java
index 242319b..595ab8a 100644
--- a/core/src/main/java/brooklyn/location/basic/FixedListMachineProvisioningLocation.java
+++ b/core/src/main/java/brooklyn/location/basic/FixedListMachineProvisioningLocation.java
@@ -28,6 +28,9 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import brooklyn.location.Location;
import brooklyn.location.LocationSpec;
import brooklyn.location.MachineLocation;
@@ -35,6 +38,7 @@ import brooklyn.location.MachineProvisioningLocation;
import brooklyn.location.NoMachinesAvailableException;
import brooklyn.management.LocationManager;
import brooklyn.util.collections.MutableMap;
+import brooklyn.util.collections.MutableSet;
import brooklyn.util.flags.SetFromFlag;
import brooklyn.util.stream.Streams;
import brooklyn.util.text.WildcardGlobs;
@@ -63,6 +67,8 @@ implements MachineProvisioningLocation<T>, Closeable {
// and getMachines() returns the real sets risking
// ConcurrentModificationException in the caller if it iterates over them etc.
+ private static final Logger log = LoggerFactory.getLogger(FixedListMachineProvisioningLocation.class);
+
private final Object lock = new Object();
@SetFromFlag
@@ -89,14 +95,21 @@ implements MachineProvisioningLocation<T>, Closeable {
public void init() {
super.init();
- for (MachineLocation location: machines) {
- // FIXME Bad casting
- Location machine = (Location) location;
- Location parent = machine.getParent();
- if (parent == null) {
- addChild(machine);
+ Set<T> machinesCopy = MutableSet.of();
+ for (T location: machines) {
+ if (location==null) {
+ log.warn(""+this+" initialized with null location, removing (may be due to rebind with reference to an unmanaged location)");
+ } else {
+ Location parent = location.getParent();
+ if (parent == null) {
+ addChild(location);
+ }
+ machinesCopy.add(location);
}
}
+ if (!machinesCopy.equals(machines)) {
+ machines = machinesCopy;
+ }
}
@Override