Package org.mvel2.util
Class ParseTools
- java.lang.Object
-
- org.mvel2.util.ParseTools
-
public class ParseTools extends Object
-
-
Field Summary
Fields Modifier and Type Field Description static Class[]EMPTY_CLS_ARRstatic Object[]EMPTY_OBJ_ARR
-
Constructor Summary
Constructors Constructor Description ParseTools()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static int__resolveType(Class cls)static intbalancedCapture(char[] chars, int start, char type)This is an important aspect of the core parser tools.static intbalancedCapture(char[] chars, int start, int end, char type)static intbalancedCaptureWithLineAccounting(char[] chars, int start, int end, char type, ParserContext pCtx)static Class<?>boxPrimitive(Class cls)static String[]captureContructorAndResidual(char[] cs, int start, int offset)static intcaptureStringLiteral(char type, char[] expr, int cursor, int end)static intcaptureToEOS(char[] expr, int cursor, int end, ParserContext pCtx)static intcaptureToNextTokenJunction(char[] expr, int cursor, int end, ParserContext pCtx)static voidcheckNameSafety(String name)static booleancontainsCheck(Object compareTo, Object compareTest)static ClasscreateClass(String className, ParserContext pCtx)static char[]createShortFormOperativeAssignment(String name, char[] statement, int start, int offset, int operation)static StringcreateStringTrimmed(char[] s)static StringcreateStringTrimmed(char[] s, int start, int length)static MethoddetermineActualTargetMethod(Method method)static booleanendsWith(char[] c, int start, int offset, char[] test)static intfind(char[] c, int start, int offset, char find)static intfindAbsoluteLast(char[] array)static ClassfindClass(VariableResolverFactory factory, String name, ParserContext pCtx)static ClassImportResolverFactoryfindClassImportResolverFactory(VariableResolverFactory factory, ParserContext pCtx)static ClassfindInnerClass(String className, ClassLoader classLoader, ClassNotFoundException cnfe)static intfindLast(char[] c, int start, int offset, char find)static ClassforNameWithInner(String className, ClassLoader classLoader)static ClassgetBaseComponentType(Class cls)static MethodgetBestCandidate(Class[] arguments, String method, Class decl, Method[] methods, boolean requireExact)static MethodgetBestCandidate(Class[] arguments, String method, Class decl, Method[] methods, boolean requireExact, boolean classTarget)static MethodgetBestCandidate(Object[] arguments, String method, Class decl, Method[] methods, boolean requireExact)static ConstructorgetBestConstructorCandidate(Class[] arguments, Class cls, boolean requireExact)static ConstructorgetBestConstructorCandidate(Object[] args, Class cls, boolean requireExact)static Constructor[]getConstructors(Class cls)static FileWritergetDebugFileWriter()static MethodgetExactMatch(String name, Class[] args, Class returnType, Class cls)static ClassgetSubComponentType(Class cls)static MethodgetWidenedTarget(Class cls, Method method)static MethodgetWidenedTarget(Method method)static inthandleEscapeSequence(char[] escapeStr, int pos)Replace escape sequences and return trim required.static ObjecthandleNumericConversion(char[] val, int start, int offset)static StringhandleStringEscapes(char[] input)static booleanisArrayType(char[] array, int start, int end)static booleanisDigit(int c)static booleanisIdentifierPart(int c)static booleanisJunct(char c)static booleanisNotValidNameorLabel(String name)Check if the specfied string represents a valid name of label.static booleanisNumber(char[] val, int start, int offset)static booleanisNumber(Object val)static booleanisNumber(String val)static booleanisNumeric(Object val)static booleanisNumericallyCoercible(Class target, Class parm)static booleanisPrimitiveWrapper(Class clazz)static booleanisPropertyOnly(char[] array, int start, int end)static booleanisReservedWord(String name)Check if the specified string is a reserved word in the parser.static booleanisStatementNotManuallyTerminated(char[] expr, int cursor)static booleanisWhitespace(char c)static char[]loadFromFile(File file)static char[]loadFromFile(File file, String encoding)static ObjectnarrowType(BigDecimal result, int returnTarget)static intnextNonBlank(char[] expr, int cursor)static intnumericTest(char[] val, int start, int offset)static intopLookup(char c)static SerializableoptimizeTree(CompiledExpression compiled)static List<char[]>parseMethodOrConstructor(char[] parm)static String[]parseParameterDefList(char[] parm, int offset, int length)static List<char[]>parseParameterList(char[] parm, int offset, int length)static voidparseWithExpressions(String nestParm, char[] block, int start, int offset, Object ctx, VariableResolverFactory factory)static char[]readIn(InputStream inStream, String encoding)static Class<?>[]removeExecutionContextParam(Class<?>[] paramsTypes)static StringrepeatChar(char c, int times)static intresolveType(Object o)static intscoreInterface(Class<?> parm, Class<?> arg)static floatsimilarity(String s1, String s2)static intskipWhitespace(char[] expr, int cursor)static char[]subArray(char[] expr, int start, int end)static SerializablesubCompileExpression(char[] expression)static SerializablesubCompileExpression(char[] expression, int start, int offset, ParserContext ctx)static SerializablesubCompileExpression(char[] expression, ParserContext ctx)static SerializablesubCompileExpression(String expression, ParserContext ctx)static char[]subset(char[] array, int start)static char[]subset(char[] array, int start, int length)static char[]subsetTrimmed(char[] array, int start, int length)static inttrimLeft(char[] expr, int start, int pos)From the specified cursor position, trim out any whitespace between the current position and the end of the last non-whitespace character.static inttrimRight(char[] expr, int pos)From the specified cursor position, trim out any whitespace between the current position and beginning of the first non-whitespace character.static ClassunboxPrimitive(Class cls)static Object[]updateArgsWithExecutionContextIfNeeded(Class<?>[] paramsTypes, Object[] args, Object ctx)
-
-
-
Method Detail
-
parseMethodOrConstructor
public static List<char[]> parseMethodOrConstructor(char[] parm)
-
parseParameterDefList
public static String[] parseParameterDefList(char[] parm, int offset, int length)
-
parseParameterList
public static List<char[]> parseParameterList(char[] parm, int offset, int length)
-
getBestCandidate
public static Method getBestCandidate(Object[] arguments, String method, Class decl, Method[] methods, boolean requireExact)
-
getBestCandidate
public static Method getBestCandidate(Class[] arguments, String method, Class decl, Method[] methods, boolean requireExact)
-
getBestCandidate
public static Method getBestCandidate(Class[] arguments, String method, Class decl, Method[] methods, boolean requireExact, boolean classTarget)
-
removeExecutionContextParam
public static Class<?>[] removeExecutionContextParam(Class<?>[] paramsTypes)
-
updateArgsWithExecutionContextIfNeeded
public static Object[] updateArgsWithExecutionContextIfNeeded(Class<?>[] paramsTypes, Object[] args, Object ctx)
-
getExactMatch
public static Method getExactMatch(String name, Class[] args, Class returnType, Class cls)
-
getBestConstructorCandidate
public static Constructor getBestConstructorCandidate(Object[] args, Class cls, boolean requireExact)
-
getBestConstructorCandidate
public static Constructor getBestConstructorCandidate(Class[] arguments, Class cls, boolean requireExact)
-
createClass
public static Class createClass(String className, ParserContext pCtx) throws ClassNotFoundException
- Throws:
ClassNotFoundException
-
getConstructors
public static Constructor[] getConstructors(Class cls)
-
captureContructorAndResidual
public static String[] captureContructorAndResidual(char[] cs, int start, int offset)
-
handleEscapeSequence
public static int handleEscapeSequence(char[] escapeStr, int pos)Replace escape sequences and return trim required.- Parameters:
escapeStr- -pos- -- Returns:
- -
-
createShortFormOperativeAssignment
public static char[] createShortFormOperativeAssignment(String name, char[] statement, int start, int offset, int operation)
-
findClassImportResolverFactory
public static ClassImportResolverFactory findClassImportResolverFactory(VariableResolverFactory factory, ParserContext pCtx)
-
findClass
public static Class findClass(VariableResolverFactory factory, String name, ParserContext pCtx) throws ClassNotFoundException
- Throws:
ClassNotFoundException
-
subsetTrimmed
public static char[] subsetTrimmed(char[] array, int start, int length)
-
subset
public static char[] subset(char[] array, int start, int length)
-
subset
public static char[] subset(char[] array, int start)
-
resolveType
public static int resolveType(Object o)
-
__resolveType
public static int __resolveType(Class cls)
-
narrowType
public static Object narrowType(BigDecimal result, int returnTarget)
-
captureToNextTokenJunction
public static int captureToNextTokenJunction(char[] expr, int cursor, int end, ParserContext pCtx)
-
nextNonBlank
public static int nextNonBlank(char[] expr, int cursor)
-
skipWhitespace
public static int skipWhitespace(char[] expr, int cursor)
-
isStatementNotManuallyTerminated
public static boolean isStatementNotManuallyTerminated(char[] expr, int cursor)
-
captureToEOS
public static int captureToEOS(char[] expr, int cursor, int end, ParserContext pCtx)
-
trimLeft
public static int trimLeft(char[] expr, int start, int pos)From the specified cursor position, trim out any whitespace between the current position and the end of the last non-whitespace character.- Parameters:
expr- -start- -pos- - current position- Returns:
- new position.
-
trimRight
public static int trimRight(char[] expr, int pos)From the specified cursor position, trim out any whitespace between the current position and beginning of the first non-whitespace character.- Parameters:
expr- -pos- -- Returns:
- -
-
subArray
public static char[] subArray(char[] expr, int start, int end)
-
balancedCapture
public static int balancedCapture(char[] chars, int start, char type)This is an important aspect of the core parser tools. This method is used throughout the core parser and sub-lexical parsers to capture a balanced capture between opening and terminating tokens such as: ( [ { ' "
For example: ((foo + bar + (bar - foo)) * 20;
If a balanced capture is performed from position 2, we get "(foo + bar + (bar - foo))" back.
If a balanced capture is performed from position 15, we get "(bar - foo)" back.
Etc.- Parameters:
chars- -start- -type- -- Returns:
- -
-
balancedCapture
public static int balancedCapture(char[] chars, int start, int end, char type)
-
balancedCaptureWithLineAccounting
public static int balancedCaptureWithLineAccounting(char[] chars, int start, int end, char type, ParserContext pCtx)
-
handleStringEscapes
public static String handleStringEscapes(char[] input)
-
captureStringLiteral
public static int captureStringLiteral(char type, char[] expr, int cursor, int end)
-
parseWithExpressions
public static void parseWithExpressions(String nestParm, char[] block, int start, int offset, Object ctx, VariableResolverFactory factory)
-
handleNumericConversion
public static Object handleNumericConversion(char[] val, int start, int offset)
-
isNumeric
public static boolean isNumeric(Object val)
-
numericTest
public static int numericTest(char[] val, int start, int offset)
-
isNumber
public static boolean isNumber(Object val)
-
isNumber
public static boolean isNumber(String val)
-
isNumber
public static boolean isNumber(char[] val, int start, int offset)
-
find
public static int find(char[] c, int start, int offset, char find)
-
findLast
public static int findLast(char[] c, int start, int offset, char find)
-
createStringTrimmed
public static String createStringTrimmed(char[] s)
-
createStringTrimmed
public static String createStringTrimmed(char[] s, int start, int length)
-
endsWith
public static boolean endsWith(char[] c, int start, int offset, char[] test)
-
isIdentifierPart
public static boolean isIdentifierPart(int c)
-
isDigit
public static boolean isDigit(int c)
-
findAbsoluteLast
public static int findAbsoluteLast(char[] array)
-
isJunct
public static boolean isJunct(char c)
-
opLookup
public static int opLookup(char c)
-
isReservedWord
public static boolean isReservedWord(String name)
Check if the specified string is a reserved word in the parser.- Parameters:
name- -- Returns:
- -
-
isNotValidNameorLabel
public static boolean isNotValidNameorLabel(String name)
Check if the specfied string represents a valid name of label.- Parameters:
name- -- Returns:
- -
-
isPropertyOnly
public static boolean isPropertyOnly(char[] array, int start, int end)
-
isArrayType
public static boolean isArrayType(char[] array, int start, int end)
-
checkNameSafety
public static void checkNameSafety(String name)
-
getDebugFileWriter
public static FileWriter getDebugFileWriter() throws IOException
- Throws:
IOException
-
isPrimitiveWrapper
public static boolean isPrimitiveWrapper(Class clazz)
-
subCompileExpression
public static Serializable subCompileExpression(char[] expression)
-
subCompileExpression
public static Serializable subCompileExpression(char[] expression, ParserContext ctx)
-
subCompileExpression
public static Serializable subCompileExpression(char[] expression, int start, int offset, ParserContext ctx)
-
subCompileExpression
public static Serializable subCompileExpression(String expression, ParserContext ctx)
-
optimizeTree
public static Serializable optimizeTree(CompiledExpression compiled)
-
isWhitespace
public static boolean isWhitespace(char c)
-
repeatChar
public static String repeatChar(char c, int times)
-
loadFromFile
public static char[] loadFromFile(File file) throws IOException
- Throws:
IOException
-
loadFromFile
public static char[] loadFromFile(File file, String encoding) throws IOException
- Throws:
IOException
-
readIn
public static char[] readIn(InputStream inStream, String encoding) throws IOException
- Throws:
IOException
-
forNameWithInner
public static Class forNameWithInner(String className, ClassLoader classLoader) throws ClassNotFoundException
- Throws:
ClassNotFoundException
-
findInnerClass
public static Class findInnerClass(String className, ClassLoader classLoader, ClassNotFoundException cnfe) throws ClassNotFoundException
- Throws:
ClassNotFoundException
-
-