@Override public void setValue(@Nullable Object newValue) { this.evaluationContext.setVariable(this.name, newValue); }
public void setVariable(String name, @Nullable Object value) { this.relatedContext.setVariable(name, value); }
@Override public void setValue(@Nullable Object newValue) { this.evaluationContext.setVariable(this.name, newValue); }
public void setVariable(String name, @Nullable Object value) { this.relatedContext.setVariable(name, value); }
@Override public Object apply(Object rootObject) { EvaluationContext context = new StandardEvaluationContext(rootObject); CacheInvokeContext cic = (CacheInvokeContext) rootObject; if (parameterNames != null) { for (int i = 0; i < parameterNames.length; i++) { context.setVariable(parameterNames[i], cic.getArgs()[i]); } } context.setVariable("result", cic.getResult()); return expression.getValue(context); } }
@Test public void SPR16032() { EvaluationContext context = new StandardEvaluationContext(); context.setVariable("str", "a\0b"); Expression ex = parser.parseExpression("#str?.split('\0')"); Object result = ex.getValue(context); assertTrue(ObjectUtils.nullSafeEquals(result, new String[] {"a", "b"})); }
@Test @SuppressWarnings({ "unchecked", "rawtypes" }) public void SPR10417_maps() { Map map1 = new HashMap(); map1.put("A", 65); map1.put("B", 66); map1.put("X", 66); Map map2 = new HashMap(); map2.put("X", 66); EvaluationContext context = new StandardEvaluationContext(); context.setVariable("map1", map1); context.setVariable("map2", map2); // #this should be the element from list1 Expression ex = parser.parseExpression("#map1.?[#map2.containsKey(#this.getKey())]"); Object result = ex.getValue(context); assertEquals("{X=66}", result.toString()); ex = parser.parseExpression("#map1.?[#map2.containsKey(key)]"); result = ex.getValue(context); assertEquals("{X=66}", result.toString()); }
@Test public void operatorVariants() { SpelExpression e = (SpelExpression)parser.parseExpression("#a < #b"); EvaluationContext ctx = new StandardEvaluationContext(); ctx.setVariable("a", (short) 3); ctx.setVariable("b", (short) 6); assertTrue(e.getValue(ctx, Boolean.class)); ctx.setVariable("b", (byte) 6); assertTrue(e.getValue(ctx, Boolean.class)); ctx.setVariable("a", (byte) 9); ctx.setVariable("b", (byte) 6); assertFalse(e.getValue(ctx, Boolean.class)); ctx.setVariable("a", 10L); ctx.setVariable("b", (short) 30); assertTrue(e.getValue(ctx, Boolean.class)); ctx.setVariable("a", (byte) 3); ctx.setVariable("b", (short) 30); assertTrue(e.getValue(ctx, Boolean.class)); ctx.setVariable("a", (byte) 3); ctx.setVariable("b", 30L); assertTrue(e.getValue(ctx, Boolean.class)); ctx.setVariable("a", (byte) 3); ctx.setVariable("b", 30f); assertTrue(e.getValue(ctx, Boolean.class)); ctx.setVariable("a", new BigInteger("10")); ctx.setVariable("b", new BigInteger("20")); assertTrue(e.getValue(ctx, Boolean.class)); }
@Test public void SPR13918() { EvaluationContext context = new StandardEvaluationContext(); context.setVariable("encoding", "UTF-8"); Expression ex = parser.parseExpression("T(java.nio.charset.Charset).forName(#encoding)"); Object result = ex.getValue(context); assertEquals(StandardCharsets.UTF_8, result); }
@Test public void functionReferenceVarargs() throws Exception { EvaluationContext ctx = new StandardEvaluationContext(); Method m = getClass().getDeclaredMethod("join", String[].class); ctx.setVariable("join", m); expression = parser.parseExpression("#join('a','b','c')"); assertEquals("abc", expression.getValue(ctx)); assertCanCompile(expression); assertEquals("abc", expression.getValue(ctx)); }
list2.add("x"); EvaluationContext context = new StandardEvaluationContext(); context.setVariable("list1", list1); context.setVariable("list2", list2); context.setVariable("list3", list3); ex = parser.parseExpression("#list3.?[#this > 2]"); result = ex.getValue(context);
@Test public void functionReference() throws Exception { EvaluationContext ctx = new StandardEvaluationContext(); Method m = getClass().getDeclaredMethod("concat", String.class, String.class); ctx.setVariable("concat",m); expression = parser.parseExpression("#concat('a','b')"); assertEquals("ab", expression.getValue(ctx)); assertCanCompile(expression); assertEquals("ab", expression.getValue(ctx)); expression = parser.parseExpression("#concat(#concat('a','b'),'c').charAt(1)"); assertEquals('b', expression.getValue(ctx)); assertCanCompile(expression); assertEquals('b', expression.getValue(ctx)); expression = parser.parseExpression("#concat(#a,#b)"); ctx.setVariable("a", "foo"); ctx.setVariable("b", "bar"); assertEquals("foobar", expression.getValue(ctx)); assertCanCompile(expression); assertEquals("foobar", expression.getValue(ctx)); ctx.setVariable("b", "boo"); assertEquals("fooboo", expression.getValue(ctx)); m = Math.class.getDeclaredMethod("pow", Double.TYPE, Double.TYPE); ctx.setVariable("kapow",m); expression = parser.parseExpression("#kapow(2.0d,2.0d)"); assertEquals("4.0", expression.getValue(ctx).toString()); assertCanCompile(expression); assertEquals("4.0", expression.getValue(ctx).toString()); }
@Test public void variableReference_userDefined() throws Exception { EvaluationContext ctx = new StandardEvaluationContext(); ctx.setVariable("target", "abc"); expression = parser.parseExpression("#target"); assertEquals("abc", expression.getValue(ctx)); assertCanCompile(expression); assertEquals("abc", expression.getValue(ctx)); ctx.setVariable("target", "123"); assertEquals("123", expression.getValue(ctx)); ctx.setVariable("target", 42); try { assertEquals(42, expression.getValue(ctx)); ctx.setVariable("target", "abc"); expression = parser.parseExpression("#target.charAt(0)"); assertEquals('a', expression.getValue(ctx)); assertCanCompile(expression); assertEquals('a', expression.getValue(ctx)); ctx.setVariable("target", "1"); assertEquals('1', expression.getValue(ctx)); ctx.setVariable("target", 42); try { assertEquals('4', expression.getValue(ctx));
@Test public void projectionWithList() throws Exception { Expression expression = new SpelExpressionParser().parseRaw("#testList.![wrapper.value]"); EvaluationContext context = new StandardEvaluationContext(); context.setVariable("testList", IntegerTestBean.createList()); Object value = expression.getValue(context); assertTrue(value instanceof List); List<?> list = (List<?>) value; assertEquals(3, list.size()); assertEquals(5, list.get(0)); assertEquals(6, list.get(1)); assertEquals(7, list.get(2)); }
@Test public void projectionWithSet() throws Exception { Expression expression = new SpelExpressionParser().parseRaw("#testList.![wrapper.value]"); EvaluationContext context = new StandardEvaluationContext(); context.setVariable("testList", IntegerTestBean.createSet()); Object value = expression.getValue(context); assertTrue(value instanceof List); List<?> list = (List<?>) value; assertEquals(3, list.size()); assertEquals(5, list.get(0)); assertEquals(6, list.get(1)); assertEquals(7, list.get(2)); }
@Test public void projectionWithIterable() throws Exception { Expression expression = new SpelExpressionParser().parseRaw("#testList.![wrapper.value]"); EvaluationContext context = new StandardEvaluationContext(); context.setVariable("testList", IntegerTestBean.createIterable()); Object value = expression.getValue(context); assertTrue(value instanceof List); List<?> list = (List<?>) value; assertEquals(3, list.size()); assertEquals(5, list.get(0)); assertEquals(6, list.get(1)); assertEquals(7, list.get(2)); }
@Test public void projectionWithArray() throws Exception { Expression expression = new SpelExpressionParser().parseRaw("#testArray.![wrapper.value]"); EvaluationContext context = new StandardEvaluationContext(); context.setVariable("testArray", IntegerTestBean.createArray()); Object value = expression.getValue(context); assertTrue(value.getClass().isArray()); TypedValue typedValue = new TypedValue(value); assertEquals(Number.class, typedValue.getTypeDescriptor().getElementTypeDescriptor().getType()); Number[] array = (Number[]) value; assertEquals(3, array.length); assertEquals(new Integer(5), array[0]); assertEquals(5.9f, array[1]); assertEquals(new Integer(7), array[2]); }
@Test public void SPR9735() { Item item = new Item(); item.setName("parent"); Item item1 = new Item(); item1.setName("child1"); Item item2 = new Item(); item2.setName("child2"); item.add(item1); item.add(item2); ExpressionParser parser = new SpelExpressionParser(); EvaluationContext context = new StandardEvaluationContext(); Expression exp = parser.parseExpression("#item[0].name"); context.setVariable("item", item); assertEquals("child1", exp.getValue(context)); }
protected void evaluateRemoteDirectory() { if (this.evaluationContext != null) { this.evaluatedRemoteDirectory = this.remoteDirectoryExpression.getValue(this.evaluationContext, String.class); this.evaluationContext.setVariable("remoteDirectory", this.evaluatedRemoteDirectory); } }
private String generateLocalFileName(Message<?> message, String remoteFileName) { if (this.localFilenameGeneratorExpression != null) { EvaluationContext evaluationContext = ExpressionUtils.createStandardEvaluationContext(getBeanFactory()); evaluationContext.setVariable("remoteFileName", remoteFileName); return this.localFilenameGeneratorExpression.getValue(evaluationContext, message, String.class); } return remoteFileName; }