Class 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  
      • Nested classes/interfaces inherited from interface java.util.Map

        java.util.Map.Entry<K extends java.lang.Object,​V extends java.lang.Object>
    • 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.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface java.util.Map

        compute, computeIfAbsent, computeIfPresent, equals, forEach, getOrDefault, hashCode, merge, putIfAbsent, remove, replace, replace, replaceAll
    • Field Detail

      • 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.
      • 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
      • 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()
      • 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()
      • 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 interface java.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 return true if the key is present in the overrides map or the defaults map.
        Specified by:
        containsKey in interface java.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 interface java.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 interface java.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 interface java.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 interface java.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 interface java.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 interface java.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 interface java.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 interface java.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 interface java.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 interface java.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 class java.lang.Object
        Returns:
        a string version of the map
      • getmOverrides

        private java.util.Map<java.lang.String,​java.lang.Object> getmOverrides​(boolean readOnly)