Class AbstractExpressionEvaluator
- java.lang.Object
-
- org.drools.scenariosimulation.backend.expression.AbstractExpressionEvaluator
-
- All Implemented Interfaces:
ExpressionEvaluator
- Direct Known Subclasses:
BaseExpressionEvaluator,DMNFeelExpressionEvaluator
public abstract class AbstractExpressionEvaluator extends java.lang.Object implements ExpressionEvaluator
-
-
Constructor Summary
Constructors Constructor Description AbstractExpressionEvaluator()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected java.lang.ObjectconvertResult(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.ObjectcreateAndFillObject(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.ObjectcreateObject(java.lang.String className, java.util.List<java.lang.String> genericClasses)java.lang.ObjectevaluateLiteralExpression(java.lang.String rawExpression, java.lang.String className, java.util.List<java.lang.String> genericClasses)ExpressionEvaluatorResultevaluateUnaryExpression(java.lang.String rawExpression, java.lang.Object resultValue, java.lang.Class<?> resultClass)protected abstract java.lang.ObjectextractFieldValue(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 valueprotected java.lang.StringgetSimpleTypeNodeTextValue(com.fasterxml.jackson.databind.JsonNode jsonNode)Return text value of a simple type nodeprotected abstract java.lang.ObjectinternalLiteralEvaluation(java.lang.String raw, java.lang.String className)protected abstract booleaninternalUnaryEvaluation(java.lang.String rawExpression, java.lang.Object resultValue, java.lang.Class<?> resultClass, boolean skipEmptyString)protected booleanisEmptyText(com.fasterxml.jackson.databind.JsonNode jsonNode)Verify if given json node text is emptyprotected booleanisListEmpty(com.fasterxml.jackson.databind.node.ArrayNode json)Verify if all elements of given json array are emptyprotected booleanisNodeEmpty(com.fasterxml.jackson.databind.JsonNode json)Verify if given json node has all final values as empty stringsprotected booleanisObjectEmpty(com.fasterxml.jackson.databind.node.ObjectNode json)Verify if all fields of given json object are emptyprotected booleanisSimpleTypeNode(com.fasterxml.jackson.databind.JsonNode jsonNode)A node represent a simple type if it is an object with only one field named "value"protected booleanisStructuredInput(java.lang.String className)Check if className represents a structured inputprotected booleanisStructuredResult(java.lang.Class<?> resultClass)Check if resultClass represents a structured resultprotected abstract voidsetField(java.lang.Object toReturn, java.lang.String fieldName, java.lang.Object fieldValue)protected ExpressionEvaluatorResultverifyList(com.fasterxml.jackson.databind.node.ArrayNode json, java.util.List<java.lang.Object> resultRaw)protected ExpressionEvaluatorResultverifyObject(com.fasterxml.jackson.databind.node.ObjectNode json, java.lang.Object resultRaw)protected ExpressionEvaluatorResultverifyResult(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
-
Methods inherited from interface org.drools.scenariosimulation.backend.expression.ExpressionEvaluator
fromObjectToExpression
-
-
-
-
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:
evaluateLiteralExpressionin interfaceExpressionEvaluator
-
evaluateUnaryExpression
public ExpressionEvaluatorResult evaluateUnaryExpression(java.lang.String rawExpression, java.lang.Object resultValue, java.lang.Class<?> resultClass)
- Specified by:
evaluateUnaryExpressionin interfaceExpressionEvaluator
-
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 populatedfieldName- : field to analyzeclassName- : canonical class name of instancegenericClasses- : list of generics related to this field- Returns:
-
-