public void MapAccessorCompilable() { var testMap = GetSimpleTestDictionary(); var sec = new StandardEvaluationContext(); sec.AddPropertyAccessor(new DictionaryAccessor()); var sep = new SpelExpressionParser(); // basic var ex = sep.ParseExpression("foo"); Assert.Equal("bar", ex.GetValue(sec, testMap)); // assertThat(SpelCompiler.compile(ex)).isTrue(); // assertThat(ex.getValue(sec, testMap)).isEqualTo("bar"); // compound expression ex = sep.ParseExpression("foo.ToUpper()"); Assert.Equal("BAR", ex.GetValue(sec, testMap)); // assertThat(SpelCompiler.compile(ex)).isTrue(); // assertThat(ex.getValue(sec, testMap)).isEqualTo("BAR"); // nested map var nestedMap = GetNestedTestDictionary(); ex = sep.ParseExpression("aaa.foo.ToUpper()"); Assert.Equal("BAR", ex.GetValue(sec, nestedMap)); // assertThat(SpelCompiler.compile(ex)).isTrue(); // assertThat(ex.getValue(sec, nestedMap)).isEqualTo("BAR"); // avoiding inserting checkcast because first part of expression returns a Map ex = sep.ParseExpression("Map.foo"); MapGetter mapGetter = new MapGetter(); Assert.Equal("bar", ex.GetValue(sec, mapGetter)); // assertThat(SpelCompiler.compile(ex)).isTrue(); // assertThat(ex.getValue(sec, mapGetter)).isEqualTo("bar"); }
public MapController(MapGetter mapGetter) { this.mapGetter = mapGetter; }