예제 #1
0
        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");
        }
예제 #2
0
 public MapController(MapGetter mapGetter)
 {
     this.mapGetter = mapGetter;
 }