diff --git a/compute/src/main/java/org/jclouds/compute/domain/internal/TemplateBuilderImpl.java b/compute/src/main/java/org/jclouds/compute/domain/internal/TemplateBuilderImpl.java index 17f1da2d43..ae483158dd 100644 --- a/compute/src/main/java/org/jclouds/compute/domain/internal/TemplateBuilderImpl.java +++ b/compute/src/main/java/org/jclouds/compute/domain/internal/TemplateBuilderImpl.java @@ -139,17 +139,20 @@ public class TemplateBuilderImpl implements TemplateBuilder { * * If the input location is null, then the data isn't location sensitive * - * If the input location is a parent of the specified location, then we are ok. + * If the input location is a child (descendent, recursively) of the specified location, then we are ok. */ final Predicate locationPredicate = new Predicate() { @Override public boolean apply(ComputeMetadata input) { - boolean returnVal = true; - if (location != null && input.getLocation() != null) - returnVal = location.equals(input.getLocation()) || location.getParent() != null - && location.getParent().equals(input.getLocation()) || location.getParent().getParent() != null - && location.getParent().getParent().equals(input.getLocation()); - return returnVal; + if (location == null) return true; + Location inputLocation = input.getLocation(); + if (inputLocation == null) return true; + while (inputLocation!=null) { + if (location.equals(inputLocation)) + return true; + inputLocation = inputLocation.getParent(); + } + return false; } @Override