package org.jtwig.render.expression.calculator.operation.binary.calculators; import org.jtwig.exceptions.CalculationException; import org.jtwig.model.expression.Expression; import org.jtwig.model.expression.InjectableExpression; import org.jtwig.render.expression.CalculateExpressionService; import static org.jtwig.util.ErrorMessageFormatter.errorMessage; public class CompositionOperationCalculator implements BinaryOperationCalculator { @Override public Object calculate(Request request) { if (request.getRightOperand() instanceof InjectableExpression) { Expression expression = ((InjectableExpression) request.getRightOperand()).inject(request.getLeftOperand()); CalculateExpressionService calculateExpressionService = request.getEnvironment().getRenderEnvironment().getCalculateExpressionService(); return calculateExpressionService.calculate(request, expression); } else { throw new CalculationException(errorMessage(request.getPosition(), "Invalid composition expression")); } } }