Package com.googlecode.aviator.utils
Class Env
- java.lang.Object
-
- com.googlecode.aviator.utils.Env
-
- Type Parameters:
String
-Object
-
- All Implemented Interfaces:
java.io.Serializable
,java.util.Map<java.lang.String,java.lang.Object>
public class Env extends java.lang.Object implements java.util.Map<java.lang.String,java.lang.Object>, java.io.Serializable
Expression execute environment.Modifed from ChainedMap in jibx.- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static interface
Env.GetValueTask
static class
Env.IntCounter
(package private) static class
Env.NullClass
Default Value when cannot resolve class symbol.(package private) static class
Env.TargetObjectTask
-
Field Summary
Fields Modifier and Type Field Description private Env.IntCounter
checkPoints
static java.util.Map<java.lang.String,java.lang.Object>
EMPTY_ENV
private Expression
expression
private java.util.List<java.lang.String>
importedPackages
private java.util.List<java.lang.String>
importedSymbols
private AviatorEvaluatorInstance
instance
Current evaluator instance that executes current expression.private static java.util.IdentityHashMap<java.lang.String,Env.GetValueTask>
INTERNAL_VARIABLES
Internal variable tasks to get the value.private java.util.Map<java.lang.String,java.lang.Object>
mDefaults
Default values map.private java.util.Map<java.lang.String,java.lang.Object>
mOverrides
Override values map.private java.util.Map<java.lang.String,java.lang.Class<?>>
resolvedClasses
private static long
serialVersionUID
private long
startNs
-
Constructor Summary
Constructors Constructor Description Env()
Constructs an env instance with empty state.Env(java.util.Map<java.lang.String,java.lang.Object> defaults)
Constructor.Env(java.util.Map<java.lang.String,java.lang.Object> defaults, java.util.Map<java.lang.String,java.lang.Object> overrides)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.String
addPackageSymbol(java.lang.String sym)
java.lang.String
addSymbol(java.lang.String sym)
private java.lang.Class<?>
classForName(java.lang.String name)
void
clear()
Clear all override key-value pairs.void
configure(AviatorEvaluatorInstance instance, Expression exp, long startNs, Env.IntCounter checkPoints)
boolean
containsKey(java.lang.Object key)
Check if a key has a defined value.boolean
containsValue(java.lang.Object value)
Check if a value is present.java.util.Set<java.util.Map.Entry<java.lang.String,java.lang.Object>>
entrySet()
Get the set of entries.private java.lang.String
findSymbol(java.lang.String name)
java.lang.Object
forgot(java.lang.Object key)
Remove a key-value pair from overrides.java.lang.Object
get(java.lang.Object key)
Get value for key.Env.IntCounter
getCheckPoints()
java.util.Map<java.lang.String,java.lang.Object>
getDefaults()
Expression
getExpression()
java.util.List<java.lang.String>
getImportedSymbols()
AviatorEvaluatorInstance
getInstance()
private java.util.Map<java.lang.String,java.lang.Object>
getmOverrides(boolean readOnly)
long
getStartNs()
int
incExecCheckpointsAndGet()
private void
invalidateCache()
boolean
isEmpty()
Check if no overrides are defined.java.util.Set<java.lang.String>
keySet()
Get the set of keys.java.lang.Object
override(java.lang.String key, java.lang.Object value)
Set an override value.java.lang.Object
put(java.lang.String key, java.lang.Object value)
Assign an value, if it's already in overrides, it will update it, otherwise set it to default map.private void
put2cache(java.lang.String name, java.lang.Class<?> ret)
void
putAll(java.util.Map map)
Add all key-value pairs from another map into the overrides map.java.lang.Object
remove(java.lang.Object key)
Remove a key-value pair.java.lang.Class<?>
resolveClassSymbol(java.lang.String name)
java.lang.Class<?>
resolveClassSymbol(java.lang.String name, boolean checkIfAllow)
private java.lang.Class<?>
resolveFromImportedPackages(java.lang.String name)
private java.lang.Class<?>
resolveFromImportedSymbols(java.lang.String name, java.lang.Class<?> clazz)
private java.lang.Class<?>
retrieveFromCache(java.lang.String name)
void
setExpression(Expression expression)
void
setInstance(AviatorEvaluatorInstance instance)
void
setmOverrides(java.util.Map<java.lang.String,java.lang.Object> mOverrides)
private void
setStats(long startNs, Env.IntCounter checkPoints)
int
size()
Get the number of entries in the map.java.lang.String
toString()
Gets the map as a String.java.util.Collection<java.lang.Object>
values()
Get the values.
-
-
-
Field Detail
-
serialVersionUID
private static final long serialVersionUID
- See Also:
- Constant Field Values
-
mDefaults
private final java.util.Map<java.lang.String,java.lang.Object> mDefaults
Default values map.
-
instance
private transient AviatorEvaluatorInstance instance
Current evaluator instance that executes current expression.
-
mOverrides
private java.util.Map<java.lang.String,java.lang.Object> mOverrides
Override values map.
-
expression
private Expression expression
-
importedSymbols
private java.util.List<java.lang.String> importedSymbols
-
importedPackages
private java.util.List<java.lang.String> importedPackages
-
resolvedClasses
private transient java.util.Map<java.lang.String,java.lang.Class<?>> resolvedClasses
-
EMPTY_ENV
public static final java.util.Map<java.lang.String,java.lang.Object> EMPTY_ENV
-
startNs
private long startNs
-
checkPoints
private transient Env.IntCounter checkPoints
-
INTERNAL_VARIABLES
private static final java.util.IdentityHashMap<java.lang.String,Env.GetValueTask> INTERNAL_VARIABLES
Internal variable tasks to get the value.
-
-
Constructor Detail
-
Env
public Env()
Constructs an env instance with empty state.
-
Env
public Env(java.util.Map<java.lang.String,java.lang.Object> defaults)
Constructor.- Parameters:
defaults
- map providing defaults for keys not set directly
-
Env
public Env(java.util.Map<java.lang.String,java.lang.Object> defaults, java.util.Map<java.lang.String,java.lang.Object> overrides)
-
-
Method Detail
-
setmOverrides
public void setmOverrides(java.util.Map<java.lang.String,java.lang.Object> mOverrides)
-
getStartNs
public long getStartNs()
-
incExecCheckpointsAndGet
public int incExecCheckpointsAndGet()
-
getCheckPoints
public Env.IntCounter getCheckPoints()
-
getImportedSymbols
public java.util.List<java.lang.String> getImportedSymbols()
-
getExpression
public Expression getExpression()
-
setExpression
public void setExpression(Expression expression)
-
getDefaults
public java.util.Map<java.lang.String,java.lang.Object> getDefaults()
-
addSymbol
public java.lang.String addSymbol(java.lang.String sym)
-
addPackageSymbol
public java.lang.String addPackageSymbol(java.lang.String sym)
-
invalidateCache
private void invalidateCache()
-
getInstance
public AviatorEvaluatorInstance getInstance()
-
setInstance
public void setInstance(AviatorEvaluatorInstance instance)
-
configure
public void configure(AviatorEvaluatorInstance instance, Expression exp, long startNs, Env.IntCounter checkPoints)
-
setStats
private void setStats(long startNs, Env.IntCounter checkPoints)
-
findSymbol
private java.lang.String findSymbol(java.lang.String name) throws java.lang.ClassNotFoundException
- Throws:
java.lang.ClassNotFoundException
-
resolveClassSymbol
public java.lang.Class<?> resolveClassSymbol(java.lang.String name) throws java.lang.ClassNotFoundException
- Throws:
java.lang.ClassNotFoundException
-
resolveClassSymbol
public java.lang.Class<?> resolveClassSymbol(java.lang.String name, boolean checkIfAllow) throws java.lang.ClassNotFoundException
- Throws:
java.lang.ClassNotFoundException
-
resolveFromImportedPackages
private java.lang.Class<?> resolveFromImportedPackages(java.lang.String name)
-
resolveFromImportedSymbols
private java.lang.Class<?> resolveFromImportedSymbols(java.lang.String name, java.lang.Class<?> clazz) throws java.lang.ClassNotFoundException
- Throws:
java.lang.ClassNotFoundException
-
put2cache
private void put2cache(java.lang.String name, java.lang.Class<?> ret)
-
retrieveFromCache
private java.lang.Class<?> retrieveFromCache(java.lang.String name)
-
classForName
private java.lang.Class<?> classForName(java.lang.String name)
-
clear
public void clear()
Clear all override key-value pairs. This only effects the overrides, not the defaults.- Specified by:
clear
in interfacejava.util.Map<java.lang.String,java.lang.Object>
-
containsKey
public boolean containsKey(java.lang.Object key)
Check if a key has a defined value. This will returntrue
if the key is present in the overrides map or the defaults map.- Specified by:
containsKey
in interfacejava.util.Map<java.lang.String,java.lang.Object>
- Parameters:
key
-- Returns:
true
if key defined,false
if not
-
containsValue
public boolean containsValue(java.lang.Object value)
Check if a value is present.- Specified by:
containsValue
in interfacejava.util.Map<java.lang.String,java.lang.Object>
- Parameters:
value
-- Returns:
true
if value present as an override,false
if not
-
entrySet
public java.util.Set<java.util.Map.Entry<java.lang.String,java.lang.Object>> entrySet()
Get the set of entries.- Specified by:
entrySet
in interfacejava.util.Map<java.lang.String,java.lang.Object>
- Returns:
- override entries
-
get
public java.lang.Object get(java.lang.Object key)
Get value for key. If the key is present in the overrides map, the value from that map is returned; otherwise, the value for the key in the defaults map is returned.- Specified by:
get
in interfacejava.util.Map<java.lang.String,java.lang.Object>
- Parameters:
key
-- Returns:
- value (
null
if key not present)
-
isEmpty
public boolean isEmpty()
Check if no overrides are defined.- Specified by:
isEmpty
in interfacejava.util.Map<java.lang.String,java.lang.Object>
- Returns:
true
if no overrides,false
if any present
-
keySet
public java.util.Set<java.lang.String> keySet()
Get the set of keys. This only returns the keys in the overrides map.- Specified by:
keySet
in interfacejava.util.Map<java.lang.String,java.lang.Object>
- Returns:
- keys
-
override
public java.lang.Object override(java.lang.String key, java.lang.Object value)
Set an override value.- Parameters:
key
-value
-- Returns:
-
put
public java.lang.Object put(java.lang.String key, java.lang.Object value)
Assign an value, if it's already in overrides, it will update it, otherwise set it to default map.- Specified by:
put
in interfacejava.util.Map<java.lang.String,java.lang.Object>
- Parameters:
key
-value
-- Returns:
- previous value for key (from default map, if not present in overrides)
-
putAll
public void putAll(java.util.Map map)
Add all key-value pairs from another map into the overrides map.- Specified by:
putAll
in interfacejava.util.Map<java.lang.String,java.lang.Object>
- Parameters:
map
-
-
remove
public java.lang.Object remove(java.lang.Object key)
Remove a key-value pair. If the key was previously present in the overrides map it is simply removed from that map. If it was not present in the overrides map but is present in the defaults map, a null entry is added to the overrides map for that key.- Specified by:
remove
in interfacejava.util.Map<java.lang.String,java.lang.Object>
- Parameters:
key
-- Returns:
- previous value for key
-
forgot
public java.lang.Object forgot(java.lang.Object key)
Remove a key-value pair from overrides.- Parameters:
key
-- Returns:
-
size
public int size()
Get the number of entries in the map. This returns the entry count for the overrides map only.- Specified by:
size
in interfacejava.util.Map<java.lang.String,java.lang.Object>
- Returns:
- entry count
-
values
public java.util.Collection<java.lang.Object> values()
Get the values. This returns only the values in the overrides map.- Specified by:
values
in interfacejava.util.Map<java.lang.String,java.lang.Object>
- Returns:
- values
-
toString
public java.lang.String toString()
Gets the map as a String.- Overrides:
toString
in classjava.lang.Object
- Returns:
- a string version of the map
-
getmOverrides
private java.util.Map<java.lang.String,java.lang.Object> getmOverrides(boolean readOnly)
-
-