Refine search
@Test public void SPR12808() { SpelExpressionParser parser = new SpelExpressionParser(); Expression expression = parser.parseExpression("T(org.springframework.expression.spel.SpelReproTests.DistanceEnforcer).from(#no)"); StandardEvaluationContext sec = new StandardEvaluationContext(); sec.setVariable("no", new Integer(1)); assertTrue(expression.getValue(sec).toString().startsWith("Integer")); sec = new StandardEvaluationContext(); sec.setVariable("no", new Float(1.0)); assertTrue(expression.getValue(sec).toString().startsWith("Number")); sec = new StandardEvaluationContext(); sec.setVariable("no", "1.0"); assertTrue(expression.getValue(sec).toString().startsWith("Object")); }
static Object getValue(SpelExpressionParser parser, BeanFactory beanFactory, String entryValue) { Object value; String rawValue = entryValue; if (rawValue != null) { rawValue = rawValue.trim(); } if (rawValue != null && rawValue.startsWith("#{") && entryValue.endsWith("}")) { // assume it's spel StandardEvaluationContext context = new StandardEvaluationContext(); context.setBeanResolver(new BeanFactoryResolver(beanFactory)); Expression expression = parser.parseExpression(entryValue, new TemplateParserContext()); value = expression.getValue(context); } else { value = entryValue; } return value; }
@Nullable protected String createContent(InstanceEvent event, Instance instance) { Map<String, Object> root = new HashMap<>(); root.put("event", event); root.put("instance", instance); root.put("lastStatus", getLastStatus(event.getInstance())); StandardEvaluationContext context = new StandardEvaluationContext(root); context.addPropertyAccessor(new MapAccessor()); return message.getValue(context, String.class); }
private EvaluationContext createEvaluationContext(PageContext pageContext) { StandardEvaluationContext context = new StandardEvaluationContext(); context.addPropertyAccessor(new JspPropertyAccessor(pageContext)); context.addPropertyAccessor(new MapAccessor()); context.addPropertyAccessor(new EnvironmentAccessor()); context.setBeanResolver(new BeanFactoryResolver(getRequestContext().getWebApplicationContext())); ConversionService conversionService = getConversionService(pageContext); if (conversionService != null) { context.setTypeConverter(new StandardTypeConverter(conversionService)); } return context; }
sec = new StandardEvaluationContext(evalContext); sec.addPropertyAccessor(new BeanExpressionContextAccessor()); sec.addPropertyAccessor(new BeanFactoryAccessor()); sec.addPropertyAccessor(new MapAccessor()); sec.addPropertyAccessor(new EnvironmentAccessor()); sec.setBeanResolver(new BeanFactoryResolver(evalContext.getBeanFactory())); sec.setTypeLocator(new StandardTypeLocator(evalContext.getBeanFactory().getBeanClassLoader())); ConversionService conversionService = evalContext.getBeanFactory().getConversionService(); if (conversionService != null) { sec.setTypeConverter(new StandardTypeConverter(conversionService)); return expr.getValue(sec);
@Test public void SPR9486_floatDivideByDouble() { Number expectedNumber = -10.21f / -10.2; ExpressionParser parser = new SpelExpressionParser(); StandardEvaluationContext context = new StandardEvaluationContext(); Expression expression = parser.parseExpression("-10.21f / -10.2"); Number result = expression.getValue(context, null, Number.class); assertEquals(expectedNumber, result); }
@Test public void testVariables() throws Exception { Inventor tesla = new Inventor("Nikola Tesla", "Serbian"); StandardEvaluationContext context = new StandardEvaluationContext(); context.setVariable("newName", "Mike Tesla"); context.setRootObject(tesla); parser.parseExpression("foo = #newName").getValue(context); assertEquals("Mike Tesla",tesla.getFoo()); }
@Test public void indexIntoGenericPropertyContainingMapObject() { Map<String, Map<String, String>> property = new HashMap<>(); Map<String, String> map = new HashMap<>(); map.put("foo", "bar"); property.put("property", map); SpelExpressionParser parser = new SpelExpressionParser(); StandardEvaluationContext context = new StandardEvaluationContext(); context.addPropertyAccessor(new MapAccessor()); context.setRootObject(property); Expression expression = parser.parseExpression("property"); assertEquals("java.util.HashMap<?, ?>", expression.getValueTypeDescriptor(context).toString()); assertEquals(map, expression.getValue(context)); assertEquals(map, expression.getValue(context, Map.class)); expression = parser.parseExpression("property['foo']"); assertEquals("bar", expression.getValue(context)); }
@Override public void setApplicationContext(ApplicationContext context) { Assert.notNull(context, "ApplicationContext must not be null"); this.spelContext = new StandardEvaluationContext(); this.spelContext.addPropertyAccessor(new BeanFactoryAccessor()); this.spelContext.setBeanResolver(new BeanFactoryResolver(context)); this.spelContext.setRootObject(context); }
@Test public void testConstructors() throws Exception { StandardEvaluationContext societyContext = new StandardEvaluationContext(); societyContext.setRootObject(new IEEE()); Inventor einstein = parser.parseExpression("new org.springframework.expression.spel.testresources.Inventor('Albert Einstein',new java.util.Date(), 'German')").getValue(Inventor.class); assertEquals("Albert Einstein", einstein.getName()); //create new inventor instance within add method of List parser.parseExpression("Members2.add(new org.springframework.expression.spel.testresources.Inventor('Albert Einstein', 'German'))").getValue(societyContext); }
@Test public void incrementAllNodeTypes() throws SecurityException, NoSuchMethodException { Spr9751 helper = new Spr9751(); StandardEvaluationContext ctx = new StandardEvaluationContext(helper); ExpressionParser parser = new SpelExpressionParser(new SpelParserConfiguration(true, true)); Expression e; ctx.registerFunction("isEven", Spr9751.class.getDeclaredMethod("isEven", Integer.TYPE)); ctx.setVariable("wibble", "hello world"); expectFailNotIncrementable(parser, ctx, "#wibble++"); expectFailNotDecrementable(parser, ctx, "--#wibble"); assertEquals("hello worldhello world",ctx.lookupVariable("wibble")); ctx.setVariable("wobble", 3); e = parser.parseExpression("#wobble++"); assertEquals(3, ((Integer) ctx.lookupVariable("wobble")).intValue()); assertEquals(4, ((Integer) ctx.lookupVariable("wobble")).intValue()); assertEquals(4, ((Integer) ctx.lookupVariable("wobble")).intValue()); assertEquals(3, ((Integer) ctx.lookupVariable("wobble")).intValue()); assertEquals(3, ((Integer) ctx.lookupVariable("wobble")).intValue()); assertEquals(34, ((Integer) ctx.lookupVariable("wobble")).intValue()); ctx.setBeanResolver(new MyBeanResolver());
@Test public void SPR10210() { StandardEvaluationContext context = new StandardEvaluationContext(); context.setVariable("bridgeExample", new org.springframework.expression.spel.spr10210.D()); Expression parseExpression = parser.parseExpression("#bridgeExample.bridgeMethod()"); parseExpression.getValue(context); }
@Test public void functionReferenceNonCompilableArguments_SPR12359() throws Exception { StandardEvaluationContext context = new StandardEvaluationContext(new Object[] {"1"}); context.registerFunction("negate", SomeCompareMethod2.class.getDeclaredMethod( "negate", Integer.TYPE)); context.setVariable("arg", "2"); int[] ints = new int[] {1,2,3}; context.setVariable("ints",ints); expression = parser.parseExpression("#negate(#ints.?[#this<2][0])"); assertEquals("-1", expression.getValue(context, Integer.class).toString()); // Selection isn't compilable. assertFalse(((SpelNodeImpl)((SpelExpression) expression).getAST()).isCompilable()); }
@Test public void invokeMethodWithoutConversion() throws Exception { final BytesService service = new BytesService(); byte[] bytes = new byte[100]; StandardEvaluationContext context = new StandardEvaluationContext(bytes); context.setBeanResolver(new BeanResolver() { @Override public Object resolve(EvaluationContext context, String beanName) throws AccessException { if ("service".equals(beanName)) { return service; } return null; } }); Expression expression = parser.parseExpression("@service.handleBytes(#root)"); byte[] outBytes = expression.getValue(context, byte[].class); assertSame(bytes, outBytes); }
@Test public void testVariableMapAccess() throws Exception { ExpressionParser parser = new SpelExpressionParser(); StandardEvaluationContext ctx = TestScenarioCreator.getTestEvaluationContext(); ctx.setVariable("day", "saturday"); Expression expr = parser.parseExpression("testMap[#day]"); Object value = expr.getValue(ctx, String.class); assertEquals("samstag", value); }
@Test public void testCustomMapAccessor() throws Exception { ExpressionParser parser = new SpelExpressionParser(); StandardEvaluationContext ctx = TestScenarioCreator.getTestEvaluationContext(); ctx.addPropertyAccessor(new MapAccessor()); Expression expr = parser.parseExpression("testMap.monday"); Object value = expr.getValue(ctx, String.class); assertEquals("montag", value); }
@Test public void SPR10091_primitiveTestValueType() { ExpressionParser parser = new SpelExpressionParser(); StandardEvaluationContext evaluationContext = new StandardEvaluationContext(new BooleanHolder()); Class<?> valueType = parser.parseExpression("primitiveProperty").getValueType(evaluationContext); assertNotNull(valueType); }
@Test public void testSetParameterizedList() throws Exception { StandardEvaluationContext context = TestScenarioCreator.getTestEvaluationContext(); Expression e = parser.parseExpression("listOfInteger.size()"); assertEquals(0,e.getValue(context,Integer.class).intValue()); context.setTypeConverter(new TypeConvertorUsingConversionService()); // Assign a List<String> to the List<Integer> field - the component elements should be converted parser.parseExpression("listOfInteger").setValue(context,listOfString); assertEquals(3,e.getValue(context,Integer.class).intValue()); // size now 3 Class<?> clazz = parser.parseExpression("listOfInteger[1].getClass()").getValue(context, Class.class); // element type correctly Integer assertEquals(Integer.class,clazz); }
@Override public StandardEvaluationContext getObject() throws Exception { StandardEvaluationContext evaluationContext = new StandardEvaluationContext(); if (this.typeLocator != null) { evaluationContext.setTypeLocator(this.typeLocator); } evaluationContext.setBeanResolver(this.beanResolver); evaluationContext.setTypeConverter(getTypeConverter()); for (PropertyAccessor propertyAccessor : getPropertyAccessors().values()) { evaluationContext.addPropertyAccessor(propertyAccessor); } evaluationContext.addPropertyAccessor(new MapAccessor()); for (Entry<String, Method> functionEntry : getFunctions().entrySet()) { evaluationContext.registerFunction(functionEntry.getKey(), functionEntry.getValue()); } return evaluationContext; }
private EvaluationContext createEvaluationContext(Exchange exchange) { StandardEvaluationContext evaluationContext = new StandardEvaluationContext(new RootObject(exchange)); if (beanResolver != null) { evaluationContext.setBeanResolver(beanResolver); } else if (exchange.getContext() instanceof SpringCamelContext) { // Support references (like @foo) in expressions to beans defined in the Registry/ApplicationContext ApplicationContext applicationContext = ((SpringCamelContext) exchange.getContext()).getApplicationContext(); evaluationContext.setBeanResolver(new BeanFactoryResolver(applicationContext)); } else { evaluationContext.setBeanResolver(new RegistryBeanResolver(exchange.getContext().getRegistry())); } return evaluationContext; }