From 2b337b87705a2a6298fde33d59465598901535b4 Mon Sep 17 00:00:00 2001 From: Tom Insam Date: Wed, 22 Aug 2012 15:19:00 +0100 Subject: [PATCH] null values can shadow parent context now. Improve test a little. --- src/main/java/com/samskivert/mustache/BasicCollector.java | 6 +++++- src/main/java/com/samskivert/mustache/Template.java | 4 ---- src/test/java/com/samskivert/mustache/MustacheTest.java | 3 ++- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/samskivert/mustache/BasicCollector.java b/src/main/java/com/samskivert/mustache/BasicCollector.java index a444cee..8e2918e 100644 --- a/src/main/java/com/samskivert/mustache/BasicCollector.java +++ b/src/main/java/com/samskivert/mustache/BasicCollector.java @@ -37,7 +37,11 @@ public class BasicCollector implements Mustache.Collector protected static final Mustache.VariableFetcher MAP_FETCHER = new Mustache.VariableFetcher() { public Object get (Object ctx, String name) throws Exception { - return ((Map)ctx).get(name); + if (((Map)ctx).containsKey(name)) { + return ((Map)ctx).get(name); + } else { + return Template.NO_FETCHER_FOUND; + } } }; diff --git a/src/main/java/com/samskivert/mustache/Template.java b/src/main/java/com/samskivert/mustache/Template.java index ea0f629..ec61d50 100644 --- a/src/main/java/com/samskivert/mustache/Template.java +++ b/src/main/java/com/samskivert/mustache/Template.java @@ -140,10 +140,6 @@ public class Template Object value = getValueIn(ctx.data, name, line); if (value == NO_FETCHER_FOUND) { // preserve variableMissing - } else if (value == null) { - // we found a fetcher, and it returned null; so we keep searching our parents, but - // we won't freak out about a missing variable if we have a nullValue configured - variableMissing = false; } else { return value; } diff --git a/src/test/java/com/samskivert/mustache/MustacheTest.java b/src/test/java/com/samskivert/mustache/MustacheTest.java index 9d54ac5..a6f755e 100644 --- a/src/test/java/com/samskivert/mustache/MustacheTest.java +++ b/src/test/java/com/samskivert/mustache/MustacheTest.java @@ -357,7 +357,8 @@ public class MustacheTest } @Test public void testShadowedContextWithNull () { - test("outer", "{{foo}}{{#inner}}{{foo}}{{/inner}}", + test(Mustache.compiler().nullValue("(null)"), + "outer(null)", "{{foo}}{{#inner}}{{foo}}{{/inner}}", context("foo", "outer", "inner", context("foo", null)) ); }