Package org.mvel2

Class ParserContext

  • All Implemented Interfaces:
    Serializable

    public class ParserContext
    extends Object
    implements Serializable
    The ParserContext is the main environment object used for sharing state throughout the entire parser/compileShared process. The ParserContext is used to configure the parser/compiler. For example:
    
     ParserContext parserContext = new ParserContext();
     parserContext.setStrongTyping(true); // turn on strong typing.
    
     Serializable comp = MVEL.compileExpression("foo.bar", parserContext);
     
    See Also:
    Serialized Form
    • Field Detail

      • variablesEscape

        protected boolean variablesEscape
    • Method Detail

      • disableSandboxedMode

        public static void disableSandboxedMode()
      • createColoringSubcontext

        public ParserContext createColoringSubcontext()
      • hasVarOrInput

        public boolean hasVarOrInput​(String name)
        Tests whether or not a variable or input exists in the current parser context.
        Parameters:
        name - The name of the identifier.
        Returns:
        boolean
      • getVarOrInputType

        public Class getVarOrInputType​(String name)
        Return the variable or input type froom the current parser context. Returns Object.class if the type cannot be determined.
        Parameters:
        name - The name of the identifier
        Returns:
        boolean
      • getVarOrInputTypeOrNull

        public Class getVarOrInputTypeOrNull​(String name)
      • getLineCount

        public int getLineCount()
        Get total number of lines declared in the current context.
        Returns:
        int of lines
      • setLineCount

        public int setLineCount​(int lineCount)
        Set the current number of lines in the current context. (Generally only used by the compiler)
        Parameters:
        lineCount - The number of lines
        Returns:
        int of lines
      • incrementLineCount

        public int incrementLineCount​(int increment)
        Increments the current line count by the specified amount
        Parameters:
        increment - The number of lines to increment
        Returns:
        int of lines
      • getLineOffset

        public int getLineOffset()
        Get the current line offset. This measures the number of cursor positions back to the beginning of the line.
        Returns:
        int offset
      • setLineOffset

        public void setLineOffset​(int lineOffset)
        Sets the current line offset. (Generally only used by the compiler)
        Parameters:
        lineOffset - The offset amount
      • setLineAndOffset

        public void setLineAndOffset​(int lineCount,
                                     int lineOffset)
        Sets both the current line count and line offset
        Parameters:
        lineCount - The line count
        lineOffset - The line offset
      • getImport

        public Class getImport​(String name)
        Get an import that has been declared, either in the parsed script or programatically
        Parameters:
        name - The name identifier for the imported class (ie. "HashMap")
        Returns:
        An instance of Class denoting the imported class.
      • getStaticImport

        public MethodStub getStaticImport​(String name)
        Get a MethodStub which wraps a static method import.
        Parameters:
        name - The name identifier
        Returns:
        An instance of MethodStub
      • getStaticOrClassImport

        public Object getStaticOrClassImport​(String name)
        Returns either an instance of Class or MethodStub (whichever matches).
        Parameters:
        name - The name identifier.
        Returns:
        An instance of Class or MethodStub
      • addPackageImport

        public void addPackageImport​(String packageName)
        Adds a package import to a parse session.
        Parameters:
        packageName - A fully qualified package (eg. java.util.concurrent).
      • hasImport

        public boolean hasImport​(String name)
        Tests to see if the specified import exists.
        Parameters:
        name - A name identifier
        Returns:
        boolean
      • hasProtoImport

        public boolean hasProtoImport​(String name)
      • getProtoImport

        public Proto getProtoImport​(String name)
      • addImport

        public void addImport​(Class cls)
        Adds an import for the specified Class.
        Parameters:
        cls - The instance of the Class which represents the imported class.
      • addImport

        public void addImport​(Proto proto)
      • addImport

        public void addImport​(String name,
                              Class cls)
        Adds an import for a specified Class using an alias. For example:
        
         parserContext.addImport("sys", System.class);
         
        ... doing this would allow an MVEL script to be written as such:
        
         sys.currentTimeMillis();
         
        Parameters:
        name - The alias to use
        cls - The instance of the Class which represents the imported class.
      • addImport

        public void addImport​(String name,
                              Method method)
        Adds an import for a specified Method representing a static method import using an alias. For example:
        
         parserContext.addImport("time", MVEL.getStaticMethod(System.class, "currentTimeMillis", new Class[0]));
         
        ... doing this allows the System.currentTimeMillis() method to be executed in a script simply by writing time().
        Parameters:
        name - The alias to use
        method - The instance of Method which represents the static import.
      • initializeTables

        public void initializeTables()
        Initializes internal Maps. Called by the compiler.
      • addVariable

        public void addVariable​(String name,
                                Class type,
                                boolean failIfNewAssignment)
      • addVariable

        public void addVariable​(String name,
                                Class type)
      • addVariables

        public void addVariables​(Map<String,​Class> variables)
      • addInput

        public void addInput​(String name,
                             Class type)
      • addInput

        public void addInput​(String name,
                             Class type,
                             Class[] typeParameters)
      • processTables

        public void processTables()
      • addError

        public void addError​(ErrorDetail errorDetail)
      • isFatalError

        public boolean isFatalError()
      • setFatalError

        public void setFatalError​(boolean fatalError)
      • isStrictTypeEnforcement

        public boolean isStrictTypeEnforcement()
      • setStrictTypeEnforcement

        public void setStrictTypeEnforcement​(boolean strictTypeEnforcement)
        Enables strict type enforcement -
        Parameters:
        strictTypeEnforcement - -
      • isStrongTyping

        public boolean isStrongTyping()
      • setStrongTyping

        public void setStrongTyping​(boolean strongTyping)
        Enables strong type enforcement.
        Parameters:
        strongTyping - -
      • isRetainParserState

        public boolean isRetainParserState()
      • setRetainParserState

        public void setRetainParserState​(boolean retainParserState)
      • getRootParser

        public Parser getRootParser()
      • setRootParser

        public void setRootParser​(Parser rootParser)
      • getSourceFile

        public String getSourceFile()
      • setSourceFile

        public void setSourceFile​(String sourceFile)
      • pushVariableScope

        public void pushVariableScope()
      • popVariableScope

        public void popVariableScope()
      • makeVisible

        public void makeVisible​(String var)
      • getVariableScope

        public Set<String> getVariableScope()
      • isVariableVisible

        public boolean isVariableVisible​(String var)
      • isCompiled

        public boolean isCompiled()
      • setCompiled

        public void setCompiled​(boolean compiled)
      • isDebugSymbols

        public boolean isDebugSymbols()
      • setDebugSymbols

        public void setDebugSymbols​(boolean debugSymbols)
      • isLineMapped

        public boolean isLineMapped​(String sourceName)
      • initLineMapping

        public void initLineMapping​(String sourceName,
                                    char[] expr)
      • getLineFor

        public int getLineFor​(String sourceName,
                              int cursor)
      • isVisitedLine

        public boolean isVisitedLine​(String sourceName,
                                     int lineNumber)
      • visitLine

        public void visitLine​(String sourceName,
                              int lineNumber)
      • getLastLineLabel

        public LineLabel getLastLineLabel()
      • hasImports

        public boolean hasImports()
      • declareFunction

        public void declareFunction​(Function function)
      • getFunctions

        public Map getFunctions()
      • hasFunction

        public boolean hasFunction​(String name)
      • hasFunction

        public boolean hasFunction()
      • getTypeParametersAsArray

        public Type[] getTypeParametersAsArray​(String name)
      • isBlockSymbols

        public boolean isBlockSymbols()
      • setBlockSymbols

        public void setBlockSymbols​(boolean blockSymbols)
      • isVariablesEscape

        public boolean isVariablesEscape()
      • isExecutableCodeReached

        public boolean isExecutableCodeReached()
      • setExecutableCodeReached

        public void setExecutableCodeReached​(boolean executableCodeReached)
      • optimizationNotify

        public void optimizationNotify()
      • isOptimizerNotified

        public boolean isOptimizerNotified()
      • hasLiteral

        public boolean hasLiteral​(String property)
      • getLiteral

        public Object getLiteral​(String property)
      • setLiterals

        public void setLiterals​(Map<String,​Object> literals)
      • addIndexedInput

        public void addIndexedInput​(String[] variables)
      • addIndexedLocals

        public void addIndexedLocals​(String[] variables)
      • addLocalDeclaration

        public void addLocalDeclaration​(String variable)
      • addIndexedLocals

        public void addIndexedLocals​(Collection<String> variables)
      • addIndexedInput

        public void addIndexedInput​(String variable)
      • addIndexedInputs

        public void addIndexedInputs​(Collection<String> variables)
      • variableIndexOf

        public int variableIndexOf​(String name)
      • hasLocalDeclaration

        public boolean hasLocalDeclaration​(String name)
      • getEvaluationContext

        public Object getEvaluationContext()
      • hasIndexedInputs

        public boolean hasIndexedInputs()
      • isIndexAllocation

        public boolean isIndexAllocation()
      • setIndexAllocation

        public void setIndexAllocation​(boolean indexAllocation)
      • isFunctionContext

        public boolean isFunctionContext()
      • getLastTypeParameters

        public Type[] getLastTypeParameters()
      • setLastTypeParameters

        public void setLastTypeParameters​(Type[] lastTypeParameters)
      • isAllowBootstrapBypass

        public boolean isAllowBootstrapBypass()
      • setAllowBootstrapBypass

        public void setAllowBootstrapBypass​(boolean allowBootstrapBypass)
      • getIndexedVarNames

        public String[] getIndexedVarNames()
      • getReturnTypeCache

        public Map<String,​Class> getReturnTypeCache()
      • isMethodAllowed

        public boolean isMethodAllowed​(Method method)