diff --git a/main/src/com/google/refine/grel/controls/Filter.java b/main/src/com/google/refine/grel/controls/Filter.java index d41e7b8db..1ae69f51c 100644 --- a/main/src/com/google/refine/grel/controls/Filter.java +++ b/main/src/com/google/refine/grel/controls/Filter.java @@ -81,7 +81,11 @@ public class Filter implements Control { results = new ArrayList(values.length); for (Object v : values) { - bindings.put(name, v); + if (v != null) { + bindings.put(name, v); + } else { + bindings.remove(name); + } Object r = args[2].evaluate(bindings); if (r instanceof Boolean && ((Boolean) r).booleanValue()) { @@ -97,7 +101,11 @@ public class Filter implements Control { try { Object v = a.get(i); - bindings.put(name, v); + if (v != null) { + bindings.put(name, v); + } else { + bindings.remove(name); + } Object r = args[2].evaluate(bindings); if (r instanceof Boolean && ((Boolean) r).booleanValue()) { @@ -113,7 +121,11 @@ public class Filter implements Control { results = new ArrayList(collection.size()); for (Object v : collection) { - bindings.put(name, v); + if (v != null) { + bindings.put(name, v); + } else { + bindings.remove(name); + } Object r = args[2].evaluate(bindings); if (r instanceof Boolean && ((Boolean) r).booleanValue()) { diff --git a/main/src/com/google/refine/grel/controls/ForEach.java b/main/src/com/google/refine/grel/controls/ForEach.java index 977f4633b..c02cae44b 100644 --- a/main/src/com/google/refine/grel/controls/ForEach.java +++ b/main/src/com/google/refine/grel/controls/ForEach.java @@ -81,7 +81,11 @@ public class ForEach implements Control { results = new ArrayList(values.length); for (Object v : values) { - bindings.put(name, v); + if (v != null) { + bindings.put(name, v); + } else { + bindings.remove(name); + } Object r = args[2].evaluate(bindings); @@ -96,7 +100,11 @@ public class ForEach implements Control { try { Object v = a.get(i); - bindings.put(name, v); + if (v != null) { + bindings.put(name, v); + } else { + bindings.remove(name); + } Object r = args[2].evaluate(bindings); @@ -111,7 +119,11 @@ public class ForEach implements Control { results = new ArrayList(collection.size()); for (Object v : collection) { - bindings.put(name, v); + if (v != null) { + bindings.put(name, v); + } else { + bindings.remove(name); + } Object r = args[2].evaluate(bindings);