Example usage for org.springframework.expression.spel.support StandardEvaluationContext setPropertyAccessors

List of usage examples for org.springframework.expression.spel.support StandardEvaluationContext setPropertyAccessors

Introduction

In this page you can find the example usage for org.springframework.expression.spel.support StandardEvaluationContext setPropertyAccessors.

Prototype

public void setPropertyAccessors(List<PropertyAccessor> propertyAccessors) 

Source Link

Usage

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;

}