Class CachingStdEvaluationContextFactory

java.lang.Object
com.broadleafcommerce.rulesengine.expression.context.factory.CachingStdEvaluationContextFactory
All Implemented Interfaces:
EvaluationContextFactory

public class CachingStdEvaluationContextFactory extends Object implements EvaluationContextFactory

Default implementation of EvaluationContextFactory that caches the EvaluationContexts it creates. By default, the key is generated from the root object and the ExpressionContext. The factory uses a Supplier with the generic type StandardEvaluationContext to generate new contexts.

The EvaluationContexts created by this factory support SpEL expressions evaluations on concrete objects or Maps.

Author:
Nathan Moore (nathanmoore).
See Also:
  • Field Details

    • CONTEXT_CACHE

      protected static final Map<Serializable,org.springframework.expression.EvaluationContext> CONTEXT_CACHE
    • evaluationContextSupplier

      protected final Supplier<org.springframework.expression.spel.support.StandardEvaluationContext> evaluationContextSupplier
    • defaultPropertyAccessors

      protected final List<org.springframework.expression.PropertyAccessor> defaultPropertyAccessors
    • defaultExpressionVariables

      protected final Map<String,Object> defaultExpressionVariables
  • Constructor Details

    • CachingStdEvaluationContextFactory

      public CachingStdEvaluationContextFactory(List<org.springframework.expression.PropertyAccessor> blDefaultPropertyAccessors, Map<String,Object> blDefaultExpressionVariables, Supplier<org.springframework.expression.spel.support.StandardEvaluationContext> blEvaluationContextSupplier)
  • Method Details

    • getEvaluationContext

      public org.springframework.expression.EvaluationContext getEvaluationContext(Object rootObject, ExpressionContext expressionContext)
      Gets an EvaluationContext.
      Specified by:
      getEvaluationContext in interface EvaluationContextFactory
      Parameters:
      rootObject - root object to evaluate an expression against
      expressionContext - DTO for data required to evaluate an expression
      Returns:
      an EvaluationContext
    • buildEvaluationContext

      protected org.springframework.expression.EvaluationContext buildEvaluationContext(Object rootObject, ExpressionContext expressionContext)