Merge pull request #446 from ahgittin/1.4.x-fix-location-npe-and-containment-direction-semantics

Fix location npe and containment direction semantics
This commit is contained in:
Andrei Savu 2012-03-15 00:23:33 -07:00
commit 76f8e9e354

View File

@ -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 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<ComputeMetadata> locationPredicate = new Predicate<ComputeMetadata>() { final Predicate<ComputeMetadata> locationPredicate = new Predicate<ComputeMetadata>() {
@Override @Override
public boolean apply(ComputeMetadata input) { public boolean apply(ComputeMetadata input) {
boolean returnVal = true; if (location == null) return true;
if (location != null && input.getLocation() != null) Location inputLocation = input.getLocation();
returnVal = location.equals(input.getLocation()) || location.getParent() != null if (inputLocation == null) return true;
&& location.getParent().equals(input.getLocation()) || location.getParent().getParent() != null while (inputLocation!=null) {
&& location.getParent().getParent().equals(input.getLocation()); if (location.equals(inputLocation))
return returnVal; return true;
inputLocation = inputLocation.getParent();
}
return false;
} }
@Override @Override