org.mvel2.integration.impl
Class BaseVariableResolverFactory

java.lang.Object
  extended by org.mvel2.integration.impl.BaseVariableResolverFactory
All Implemented Interfaces:
java.io.Serializable, VariableResolverFactory
Direct Known Subclasses:
CachedMapVariableResolverFactory, ClassImportResolverFactory, FunctionVariableResolverFactory, IndexedVariableResolverFactory, ItemResolverFactory, MapVariableResolverFactory, SimpleVariableResolverFactory, StaticMethodImportResolverFactory

public abstract class BaseVariableResolverFactory
extends java.lang.Object
implements VariableResolverFactory

Use this class to extend you own VariableResolverFactories. It contains most of the baseline implementation needed for the vast majority of integration needs.

See Also:
Serialized Form

Field Summary
protected  java.lang.String[] indexedVariableNames
           
protected  VariableResolver[] indexedVariableResolvers
           
protected  int indexOffset
           
protected  VariableResolverFactory nextFactory
           
protected  java.util.Map<java.lang.String,VariableResolver> variableResolvers
           
 
Constructor Summary
BaseVariableResolverFactory()
           
 
Method Summary
 void appendFactory(VariableResolverFactory resolverFactory)
           
 VariableResolver createIndexedVariable(int index, java.lang.String name, java.lang.Object value)
           
 VariableResolver createIndexedVariable(int index, java.lang.String name, java.lang.Object value, java.lang.Class<?> type)
           
 java.lang.String[] getIndexedVariableNames()
           
 VariableResolver getIndexedVariableResolver(int index)
           
 java.util.Set<java.lang.String> getKnownVariables()
          Return a list of known variables inside the factory.
 VariableResolverFactory getNextFactory()
          Returns the next factory in the factory chain.
 VariableResolver getVariableResolver(java.lang.String name)
          Return a variable resolver for the specified variable name.
 java.util.Map<java.lang.String,VariableResolver> getVariableResolvers()
           
 void insertFactory(VariableResolverFactory resolverFactory)
           
 boolean isIndexedFactory()
           
 boolean isNextResolveable(java.lang.String name)
           
 void setIndexedVariableNames(java.lang.String[] indexedVariableNames)
           
 VariableResolver setIndexedVariableResolver(int index, VariableResolver resolver)
           
 VariableResolverFactory setNextFactory(VariableResolverFactory resolverFactory)
          Sets the next factory in the chain.
 void setVariableResolvers(java.util.Map<java.lang.String,VariableResolver> variableResolvers)
           
 int variableIndexOf(java.lang.String name)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.mvel2.integration.VariableResolverFactory
createVariable, createVariable, isResolveable, isTarget
 

Field Detail

variableResolvers

protected java.util.Map<java.lang.String,VariableResolver> variableResolvers

nextFactory

protected VariableResolverFactory nextFactory

indexOffset

protected int indexOffset

indexedVariableNames

protected java.lang.String[] indexedVariableNames

indexedVariableResolvers

protected VariableResolver[] indexedVariableResolvers
Constructor Detail

BaseVariableResolverFactory

public BaseVariableResolverFactory()
Method Detail

getNextFactory

public VariableResolverFactory getNextFactory()
Description copied from interface: VariableResolverFactory
Returns the next factory in the factory chain. MVEL uses a hierarchical variable resolution strategy, much in the same way as Classloaders in Java. For performance reasons, it is the responsibility of the individual VariableResolverFactory to pass off to the next one.

Specified by:
getNextFactory in interface VariableResolverFactory
Returns:
instance of the next factory - null if none.

setNextFactory

public VariableResolverFactory setNextFactory(VariableResolverFactory resolverFactory)
Description copied from interface: VariableResolverFactory
Sets the next factory in the chain. Proper implementation:

return this.nextFactory = resolverFactory;

Specified by:
setNextFactory in interface VariableResolverFactory
Parameters:
resolverFactory - - instance of next resolver factory
Returns:
- instance of next resolver factory

getVariableResolver

public VariableResolver getVariableResolver(java.lang.String name)
Description copied from interface: VariableResolverFactory
Return a variable resolver for the specified variable name. This method is expected to traverse the heirarchy of ResolverFactories.

Specified by:
getVariableResolver in interface VariableResolverFactory
Parameters:
name - - variable name
Returns:
- instance of the VariableResolver for the specified variable

isNextResolveable

public boolean isNextResolveable(java.lang.String name)

appendFactory

public void appendFactory(VariableResolverFactory resolverFactory)

insertFactory

public void insertFactory(VariableResolverFactory resolverFactory)

getKnownVariables

public java.util.Set<java.lang.String> getKnownVariables()
Description copied from interface: VariableResolverFactory
Return a list of known variables inside the factory. This method should not recurse into other factories. But rather return only the variables living inside this factory.

Specified by:
getKnownVariables in interface VariableResolverFactory
Returns:

createIndexedVariable

public VariableResolver createIndexedVariable(int index,
                                              java.lang.String name,
                                              java.lang.Object value)
Specified by:
createIndexedVariable in interface VariableResolverFactory

getIndexedVariableResolver

public VariableResolver getIndexedVariableResolver(int index)
Specified by:
getIndexedVariableResolver in interface VariableResolverFactory

createIndexedVariable

public VariableResolver createIndexedVariable(int index,
                                              java.lang.String name,
                                              java.lang.Object value,
                                              java.lang.Class<?> type)
Specified by:
createIndexedVariable in interface VariableResolverFactory

getVariableResolvers

public java.util.Map<java.lang.String,VariableResolver> getVariableResolvers()

setVariableResolvers

public void setVariableResolvers(java.util.Map<java.lang.String,VariableResolver> variableResolvers)

getIndexedVariableNames

public java.lang.String[] getIndexedVariableNames()

setIndexedVariableNames

public void setIndexedVariableNames(java.lang.String[] indexedVariableNames)

variableIndexOf

public int variableIndexOf(java.lang.String name)
Specified by:
variableIndexOf in interface VariableResolverFactory

setIndexedVariableResolver

public VariableResolver setIndexedVariableResolver(int index,
                                                   VariableResolver resolver)
Specified by:
setIndexedVariableResolver in interface VariableResolverFactory

isIndexedFactory

public boolean isIndexedFactory()
Specified by:
isIndexedFactory in interface VariableResolverFactory


Copyright © 2011. All Rights Reserved.