Class EvalHelper


  • public class EvalHelper
    extends java.lang.Object
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static org.slf4j.Logger LOG  
    • Constructor Summary

      Constructors 
      Constructor Description
      EvalHelper()  
    • Method Summary

      All Methods Static Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      static void clearGenericAccessorCache()  
      static java.lang.Object coerceNumber​(java.lang.Object value)  
      static java.lang.Boolean compare​(java.lang.Object left, java.lang.Object right, EvaluationContext ctx, java.util.function.BiPredicate<java.lang.Comparable,​java.lang.Comparable> op)
      Compares left and right operands using the given predicate and returns TRUE/FALSE accordingly
      static java.lang.reflect.Method getAccessor​(java.lang.Class<?> clazz, java.lang.String field)
      JavaBean -spec compliant accessor.
      static java.math.BigDecimal getBigDecimalOrNull​(java.lang.Object value)  
      static java.lang.Boolean getBooleanOrNull​(java.lang.Object value)  
      static EvalHelper.PropertyValueResult getDefinedValue​(java.lang.Object current, java.lang.String property)  
      static java.lang.reflect.Method getGenericAccessor​(java.lang.Class<?> clazz, java.lang.String field)
      FEEL annotated or else Java accessor.
      static java.lang.Object getValue​(java.lang.Object current, java.lang.String property)
      Deprecated.
      this method cannot distinguish null because: 1. property undefined for current, 2. an error, 3. a properly defined property value valorized to null.
      static java.lang.Boolean isEqual​(java.lang.Object left, java.lang.Object right, EvaluationContext ctx)
      Compares left and right for equality applying FEEL semantics to specific data types
      static java.lang.Boolean isEqualDateTimeInSemanticD​(java.time.temporal.TemporalAccessor left, java.time.temporal.TemporalAccessor right)
      DMNv1.2 Table 48: Specific semantics of equality DMNv1.3 Table 71: Semantic of date and time functions
      static java.lang.Boolean isEqualTimeInSemanticD​(java.time.temporal.TemporalAccessor left, java.time.temporal.TemporalAccessor right)
      DMNv1.2 Table 48: Specific semantics of equality DMNv1.3 Table 71: Semantic of date and time functions
      static java.lang.String lcFirst​(java.lang.String name)  
      static java.lang.String normalizeVariableName​(java.lang.String name)  
      static java.util.Optional<java.lang.String> propertyFromAccessor​(java.lang.reflect.Method accessor)
      static java.lang.String ucFirst​(java.lang.String name)  
      static java.lang.String unescapeString​(java.lang.String text)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • LOG

        public static final org.slf4j.Logger LOG
    • Constructor Detail

      • EvalHelper

        public EvalHelper()
    • Method Detail

      • normalizeVariableName

        public static java.lang.String normalizeVariableName​(java.lang.String name)
      • getBigDecimalOrNull

        public static java.math.BigDecimal getBigDecimalOrNull​(java.lang.Object value)
      • coerceNumber

        public static java.lang.Object coerceNumber​(java.lang.Object value)
      • getBooleanOrNull

        public static java.lang.Boolean getBooleanOrNull​(java.lang.Object value)
      • unescapeString

        public static java.lang.String unescapeString​(java.lang.String text)
      • getValue

        public static java.lang.Object getValue​(java.lang.Object current,
                                                java.lang.String property)
        Deprecated.
        this method cannot distinguish null because: 1. property undefined for current, 2. an error, 3. a properly defined property value valorized to null.
      • getGenericAccessor

        public static java.lang.reflect.Method getGenericAccessor​(java.lang.Class<?> clazz,
                                                                  java.lang.String field)
        FEEL annotated or else Java accessor.
        Parameters:
        clazz -
        field -
        Returns:
      • clearGenericAccessorCache

        public static void clearGenericAccessorCache()
      • getAccessor

        public static java.lang.reflect.Method getAccessor​(java.lang.Class<?> clazz,
                                                           java.lang.String field)
        JavaBean -spec compliant accessor.
        Parameters:
        clazz -
        field -
        Returns:
      • propertyFromAccessor

        public static java.util.Optional<java.lang.String> propertyFromAccessor​(java.lang.reflect.Method accessor)
      • ucFirst

        public static java.lang.String ucFirst​(java.lang.String name)
      • lcFirst

        public static java.lang.String lcFirst​(java.lang.String name)
      • compare

        public static java.lang.Boolean compare​(java.lang.Object left,
                                                java.lang.Object right,
                                                EvaluationContext ctx,
                                                java.util.function.BiPredicate<java.lang.Comparable,​java.lang.Comparable> op)
        Compares left and right operands using the given predicate and returns TRUE/FALSE accordingly
        Parameters:
        left -
        right -
        ctx -
        op -
        Returns:
      • isEqual

        public static java.lang.Boolean isEqual​(java.lang.Object left,
                                                java.lang.Object right,
                                                EvaluationContext ctx)
        Compares left and right for equality applying FEEL semantics to specific data types
        Parameters:
        left -
        right -
        ctx -
        Returns:
      • isEqualDateTimeInSemanticD

        public static java.lang.Boolean isEqualDateTimeInSemanticD​(java.time.temporal.TemporalAccessor left,
                                                                   java.time.temporal.TemporalAccessor right)
        DMNv1.2 Table 48: Specific semantics of equality DMNv1.3 Table 71: Semantic of date and time functions
      • isEqualTimeInSemanticD

        public static java.lang.Boolean isEqualTimeInSemanticD​(java.time.temporal.TemporalAccessor left,
                                                               java.time.temporal.TemporalAccessor right)
        DMNv1.2 Table 48: Specific semantics of equality DMNv1.3 Table 71: Semantic of date and time functions