Class AbstractExpressionEvaluator

    • Constructor Detail

      • AbstractExpressionEvaluator

        public AbstractExpressionEvaluator()
    • Method Detail

      • isStructuredResult

        protected boolean isStructuredResult​(Class<?> resultClass)
        Check if resultClass represents a structured result
        Parameters:
        resultClass -
        Returns:
      • isStructuredInput

        protected boolean isStructuredInput​(String className)
        Check if className represents a structured input
        Parameters:
        className -
        Returns:
      • createAndFillList

        protected List<Object> createAndFillList​(com.fasterxml.jackson.databind.node.ArrayNode json,
                                                 List<Object> toReturn,
                                                 String className,
                                                 List<String> genericClasses)
      • createAndFillObject

        protected Object createAndFillObject​(com.fasterxml.jackson.databind.node.ObjectNode json,
                                             Object toReturn,
                                             String className,
                                             List<String> genericClasses)
      • isNodeEmpty

        protected boolean isNodeEmpty​(com.fasterxml.jackson.databind.JsonNode json)
        Verify if given json node has all final values as empty strings
        Parameters:
        json -
        Returns:
      • isListEmpty

        protected boolean isListEmpty​(com.fasterxml.jackson.databind.node.ArrayNode json)
        Verify if all elements of given json array are empty
        Parameters:
        json -
        Returns:
      • isObjectEmpty

        protected boolean isObjectEmpty​(com.fasterxml.jackson.databind.node.ObjectNode json)
        Verify if all fields of given json object are empty
        Parameters:
        json -
        Returns:
      • isEmptyText

        protected boolean isEmptyText​(com.fasterxml.jackson.databind.JsonNode jsonNode)
        Verify if given json node text is empty
        Parameters:
        jsonNode -
        Returns:
      • isSimpleTypeNode

        protected boolean isSimpleTypeNode​(com.fasterxml.jackson.databind.JsonNode jsonNode)
        A node represent a simple type if it is an object with only one field named "value"
        Parameters:
        jsonNode -
        Returns:
      • getSimpleTypeNodeTextValue

        protected String getSimpleTypeNodeTextValue​(com.fasterxml.jackson.databind.JsonNode jsonNode)
        Return text value of a simple type node
        Parameters:
        jsonNode -
        Returns:
      • internalUnaryEvaluation

        protected abstract boolean internalUnaryEvaluation​(String rawExpression,
                                                           Object resultValue,
                                                           Class<?> resultClass,
                                                           boolean skipEmptyString)
      • internalLiteralEvaluation

        protected abstract Object internalLiteralEvaluation​(String raw,
                                                            String className)
      • extractFieldValue

        protected abstract Object extractFieldValue​(Object result,
                                                    String fieldName)
      • setField

        protected abstract void setField​(Object toReturn,
                                         String fieldName,
                                         Object fieldValue)
      • getFieldClassNameAndGenerics

        protected abstract Map.Entry<String,​List<String>> getFieldClassNameAndGenerics​(Object element,
                                                                                             String fieldName,
                                                                                             String className,
                                                                                             List<String> genericClasses)
        Return a pair with field className as key and list of generics as value
        Parameters:
        element - : instance to be populated
        fieldName - : field to analyze
        className - : canonical class name of instance
        genericClasses - : list of generics related to this field
        Returns: