Class AbstractExpressionEvaluator

    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      protected java.lang.Object convertResult​(java.lang.String rawString, java.lang.String className, java.util.List<java.lang.String> genericClasses)  
      protected java.util.List<java.lang.Object> createAndFillList​(com.fasterxml.jackson.databind.node.ArrayNode json, java.util.List<java.lang.Object> toReturn, java.lang.String className, java.util.List<java.lang.String> genericClasses)  
      protected java.lang.Object createAndFillObject​(com.fasterxml.jackson.databind.node.ObjectNode json, java.lang.Object toReturn, java.lang.String className, java.util.List<java.lang.String> genericClasses)  
      protected abstract java.lang.Object createObject​(java.lang.String className, java.util.List<java.lang.String> genericClasses)  
      java.lang.Object evaluateLiteralExpression​(java.lang.String rawExpression, java.lang.String className, java.util.List<java.lang.String> genericClasses)  
      ExpressionEvaluatorResult evaluateUnaryExpression​(java.lang.String rawExpression, java.lang.Object resultValue, java.lang.Class<?> resultClass)  
      protected abstract java.lang.Object extractFieldValue​(java.lang.Object result, java.lang.String fieldName)  
      protected abstract java.util.Map.Entry<java.lang.String,​java.util.List<java.lang.String>> getFieldClassNameAndGenerics​(java.lang.Object element, java.lang.String fieldName, java.lang.String className, java.util.List<java.lang.String> genericClasses)
      Return a pair with field className as key and list of generics as value
      protected java.lang.String getSimpleTypeNodeTextValue​(com.fasterxml.jackson.databind.JsonNode jsonNode)
      Return text value of a simple type node
      protected abstract java.lang.Object internalLiteralEvaluation​(java.lang.String raw, java.lang.String className)  
      protected abstract boolean internalUnaryEvaluation​(java.lang.String rawExpression, java.lang.Object resultValue, java.lang.Class<?> resultClass, boolean skipEmptyString)  
      protected boolean isEmptyText​(com.fasterxml.jackson.databind.JsonNode jsonNode)
      Verify if given json node text is empty
      protected boolean isListEmpty​(com.fasterxml.jackson.databind.node.ArrayNode json)
      Verify if all elements of given json array are empty
      protected boolean isNodeEmpty​(com.fasterxml.jackson.databind.JsonNode json)
      Verify if given json node has all final values as empty strings
      protected boolean isObjectEmpty​(com.fasterxml.jackson.databind.node.ObjectNode json)
      Verify if all fields of given json object are empty
      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"
      protected boolean isStructuredInput​(java.lang.String className)
      Check if className represents a structured input
      protected boolean isStructuredResult​(java.lang.Class<?> resultClass)
      Check if resultClass represents a structured result
      protected abstract void setField​(java.lang.Object toReturn, java.lang.String fieldName, java.lang.Object fieldValue)  
      protected ExpressionEvaluatorResult verifyList​(com.fasterxml.jackson.databind.node.ArrayNode json, java.util.List<java.lang.Object> resultRaw)  
      protected ExpressionEvaluatorResult verifyObject​(com.fasterxml.jackson.databind.node.ObjectNode json, java.lang.Object resultRaw)  
      protected ExpressionEvaluatorResult verifyResult​(java.lang.String rawExpression, java.lang.Object resultRaw, java.lang.Class<?> resultClass)  
      • Methods inherited from class java.lang.Object

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

      • AbstractExpressionEvaluator

        public AbstractExpressionEvaluator()
    • Method Detail

      • evaluateLiteralExpression

        public java.lang.Object evaluateLiteralExpression​(java.lang.String rawExpression,
                                                          java.lang.String className,
                                                          java.util.List<java.lang.String> genericClasses)
        Specified by:
        evaluateLiteralExpression in interface ExpressionEvaluator
      • isStructuredResult

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

        protected boolean isStructuredInput​(java.lang.String className)
        Check if className represents a structured input
        Parameters:
        className -
        Returns:
      • convertResult

        protected java.lang.Object convertResult​(java.lang.String rawString,
                                                 java.lang.String className,
                                                 java.util.List<java.lang.String> genericClasses)
      • createAndFillList

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

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

        protected ExpressionEvaluatorResult verifyResult​(java.lang.String rawExpression,
                                                         java.lang.Object resultRaw,
                                                         java.lang.Class<?> resultClass)
      • verifyList

        protected ExpressionEvaluatorResult verifyList​(com.fasterxml.jackson.databind.node.ArrayNode json,
                                                       java.util.List<java.lang.Object> resultRaw)
      • verifyObject

        protected ExpressionEvaluatorResult verifyObject​(com.fasterxml.jackson.databind.node.ObjectNode json,
                                                         java.lang.Object resultRaw)
      • 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 java.lang.String getSimpleTypeNodeTextValue​(com.fasterxml.jackson.databind.JsonNode jsonNode)
        Return text value of a simple type node
        Parameters:
        jsonNode -
        Returns:
      • internalUnaryEvaluation

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

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

        protected abstract java.lang.Object extractFieldValue​(java.lang.Object result,
                                                              java.lang.String fieldName)
      • createObject

        protected abstract java.lang.Object createObject​(java.lang.String className,
                                                         java.util.List<java.lang.String> genericClasses)
      • setField

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

        protected abstract java.util.Map.Entry<java.lang.String,​java.util.List<java.lang.String>> getFieldClassNameAndGenerics​(java.lang.Object element,
                                                                                                                                     java.lang.String fieldName,
                                                                                                                                     java.lang.String className,
                                                                                                                                     java.util.List<java.lang.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: