List of usage examples for org.springframework.expression.spel.support StandardEvaluationContext setPropertyAccessors
public void setPropertyAccessors(List<PropertyAccessor> propertyAccessors)
From source file:it.geosolutions.opensdi2.workflow.ForkAction.java
@Override public void executeAction(WorkflowContext ctx) throws WorkflowException { StandardEvaluationContext inputEvaluationContext = new StandardEvaluationContext(ctx); inputEvaluationContext.setPropertyAccessors(inputPropertyAccessors); if (branches != null) { for (String rule : branches.keySet()) { Expression conversionExpression = expressionParser.parseExpression(rule); boolean parseResult = conversionExpression.getValue(inputEvaluationContext, Boolean.class); if (parseResult) { branches.get(rule).execute(ctx); }/*from w w w . ja v a 2 s .c om*/ } } }
From source file:com.enonic.cms.core.portal.datasource.el.ExpressionFunctionsExecutor.java
public String evaluate(final String expression) { final ExpressionRootObject rootObject = new ExpressionRootObject(); rootObject.setSession(new SessionAccessor(verticalSession)); rootObject.setCookie(new CookieAccessor(httpRequest)); rootObject.setProperties(new CmsAndSitePropertiesAccessor(rootProperties, siteProperties)); rootObject.setPortal(new PortalAccessor(expressionContext)); rootObject.setUser(new UserAccessor(expressionContext.getUser())); rootObject.setParam(new ParamAccessor(requestParameters)); rootObject.setParams(new ParamsAccessor(requestParameters)); final String evaluatedString; try {// w w w .j a va 2s . c o m final StandardEvaluationContext context = new StandardEvaluationContext(rootObject); context.setPropertyAccessors(PROPERTY_ACCESSORS); ExpressionFunctionsFactory.get().setContext(expressionContext); Object result; try { final Expression exp = EXPR_FACTORY.parseExpression(expression, TEMPLATE_PARSER_CONTEXT); result = exp.getValue(context); } catch (SpelEvaluationException e) { result = null; } catch (Exception e) { LOG.error(e.getMessage()); result = "ERROR: " + e.getMessage(); } // must be converted here, because param.x[0] will not work if (result instanceof String[]) { evaluatedString = StringUtils.join((String[]) result, ','); } else { evaluatedString = result != null ? result.toString() : null; } } finally { ExpressionFunctionsFactory.get().removeContext(); } return evaluatedString; }
From source file:it.geosolutions.opensdi2.workflow.transform.spel.SpelTransformer.java
@Override public DESTTYPE transform(SOURCETYPE source) throws IllegalArgumentException { //create the output object DESTTYPE output = null;/*ww w .java 2 s .c o m*/ if (outputObject == null && outputPreBuilder != null) { output = outputPreBuilder.build(rules); } else if (outputPreBuilder != null) { output = outputPreBuilder.build(outputObject, rules); } else if (outputObject != null) { output = outputObject; } else { throw new IllegalArgumentException("no outputObject or outPrebuilder provided"); } //create evaluation Context StandardEvaluationContext inputEvaluationContext = new StandardEvaluationContext(source); StandardEvaluationContext outputevaluationContext = new StandardEvaluationContext(output); //set property accessors for input and output inputEvaluationContext.setPropertyAccessors(inputaccessors); outputevaluationContext.setPropertyAccessors(outputaccessors); if (rules != null) { Set<String> attributes = rules.keySet(); //parse rules to create output for (String attribute : attributes) { String expression = rules.get(attribute); //create expressions for in and out Expression conversionExpression = expressionParser.parseExpression(expression); Expression outputAttribute = expressionParser.parseExpression(attribute); //evaluate input value Object value = conversionExpression.getValue(inputEvaluationContext); //TODO create a second evaulationContext for output //set the attribute value using the output context outputAttribute.setValue(outputevaluationContext, value); } } return output; }