Class ExpressionEvalMap

java.lang.Object
java.util.AbstractMap<java.lang.String,​java.lang.Object>
org.springframework.integration.expression.ExpressionEvalMap
All Implemented Interfaces:
java.util.Map<java.lang.String,​java.lang.Object>

public final class ExpressionEvalMap
extends java.util.AbstractMap<java.lang.String,​java.lang.Object>

An immutable AbstractMap implementation that wraps a Map<String, Object>, where values must be instances of String or Expression, and evaluates an expression for the provided key from the underlying original Map.

Any mutating operations (put(String, Object), remove(Object) etc.) are not allowed on instances of this class. Mutation can be performed on underlying Map if it supports it.

A ExpressionEvalMap.ExpressionEvalMapBuilder must be used to instantiate this class via its from(Map) method:

 
ExpressionEvalMap evalMap = ExpressionEvalMap
    .from(expressions)
    .usingCallback(new EvaluationCallback() {
        Object evaluate(Expression expression) {
	            // return some expression evaluation
        }
    })
    .build();

 

Thread-safety depends on the original underlying Map. Objects of this class are not serializable.

Since:
3.0
  • Nested Class Summary

    Nested Classes 
    Modifier and Type Class Description
    static class  ExpressionEvalMap.ComponentsEvaluationCallback
    The ExpressionEvalMap.EvaluationCallback implementation which evaluates an expression using the provided context, root and returnType variables.
    static interface  ExpressionEvalMap.EvaluationCallback
    Implementations of this interface can be provided to build 'on demand get(Object) logic' for ExpressionEvalMap.
    static class  ExpressionEvalMap.ExpressionEvalMapBuilder
    The builder class to instantiate ExpressionEvalMap.
    static interface  ExpressionEvalMap.ExpressionEvalMapComponentsBuilder  
    static interface  ExpressionEvalMap.ExpressionEvalMapFinalBuilder  

    Nested classes/interfaces inherited from class java.util.AbstractMap

    java.util.AbstractMap.SimpleEntry<K extends java.lang.Object,​V extends java.lang.Object>, java.util.AbstractMap.SimpleImmutableEntry<K extends java.lang.Object,​V extends java.lang.Object>

    Nested classes/interfaces inherited from interface java.util.Map

    java.util.Map.Entry<K extends java.lang.Object,​V extends java.lang.Object>
  • Field Summary

    Fields 
    Modifier and Type Field Description
    static ExpressionEvalMap.EvaluationCallback SIMPLE_CALLBACK  
  • Method Summary

    Modifier and Type Method Description
    void clear()  
    boolean containsKey​(java.lang.Object key)  
    boolean containsValue​(java.lang.Object value)  
    java.util.Set<java.util.Map.Entry<java.lang.String,​java.lang.Object>> entrySet()  
    boolean equals​(java.lang.Object o)  
    static ExpressionEvalMap.ExpressionEvalMapBuilder from​(java.util.Map<java.lang.String,​?> expressions)  
    java.lang.Object get​(java.lang.Object key)
    Gets the value(Expression) for the provided key from original and returns the result of evaluation using evaluationCallback.
    int hashCode()  
    boolean isEmpty()  
    java.util.Set<java.lang.String> keySet()  
    java.lang.Object put​(java.lang.String key, java.lang.Object value)  
    void putAll​(java.util.Map<? extends java.lang.String,​?> m)  
    java.lang.Object remove​(java.lang.Object key)  
    int size()  
    java.lang.String toString()  
    java.util.Collection<java.lang.Object> values()  

    Methods inherited from class java.util.AbstractMap

    clone

    Methods inherited from class java.lang.Object

    finalize, getClass, notify, notifyAll, wait, wait, wait

    Methods inherited from interface java.util.Map

    compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll
  • Field Details

  • Method Details

    • get

      @Nullable public java.lang.Object get​(java.lang.Object key)
      Gets the value(Expression) for the provided key from original and returns the result of evaluation using evaluationCallback.
      Specified by:
      get in interface java.util.Map<java.lang.String,​java.lang.Object>
      Overrides:
      get in class java.util.AbstractMap<java.lang.String,​java.lang.Object>
    • entrySet

      public java.util.Set<java.util.Map.Entry<java.lang.String,​java.lang.Object>> entrySet()
      Specified by:
      entrySet in interface java.util.Map<java.lang.String,​java.lang.Object>
      Specified by:
      entrySet in class java.util.AbstractMap<java.lang.String,​java.lang.Object>
    • values

      public java.util.Collection<java.lang.Object> values()
      Specified by:
      values in interface java.util.Map<java.lang.String,​java.lang.Object>
      Overrides:
      values in class java.util.AbstractMap<java.lang.String,​java.lang.Object>
    • containsKey

      public boolean containsKey​(java.lang.Object key)
      Specified by:
      containsKey in interface java.util.Map<java.lang.String,​java.lang.Object>
      Overrides:
      containsKey in class java.util.AbstractMap<java.lang.String,​java.lang.Object>
    • keySet

      public java.util.Set<java.lang.String> keySet()
      Specified by:
      keySet in interface java.util.Map<java.lang.String,​java.lang.Object>
      Overrides:
      keySet in class java.util.AbstractMap<java.lang.String,​java.lang.Object>
    • isEmpty

      public boolean isEmpty()
      Specified by:
      isEmpty in interface java.util.Map<java.lang.String,​java.lang.Object>
      Overrides:
      isEmpty in class java.util.AbstractMap<java.lang.String,​java.lang.Object>
    • size

      public int size()
      Specified by:
      size in interface java.util.Map<java.lang.String,​java.lang.Object>
      Overrides:
      size in class java.util.AbstractMap<java.lang.String,​java.lang.Object>
    • equals

      public boolean equals​(java.lang.Object o)
      Specified by:
      equals in interface java.util.Map<java.lang.String,​java.lang.Object>
      Overrides:
      equals in class java.util.AbstractMap<java.lang.String,​java.lang.Object>
    • hashCode

      public int hashCode()
      Specified by:
      hashCode in interface java.util.Map<java.lang.String,​java.lang.Object>
      Overrides:
      hashCode in class java.util.AbstractMap<java.lang.String,​java.lang.Object>
    • toString

      public java.lang.String toString()
      Overrides:
      toString in class java.util.AbstractMap<java.lang.String,​java.lang.Object>
    • put

      public java.lang.Object put​(java.lang.String key, java.lang.Object value)
      Specified by:
      put in interface java.util.Map<java.lang.String,​java.lang.Object>
      Overrides:
      put in class java.util.AbstractMap<java.lang.String,​java.lang.Object>
    • putAll

      public void putAll​(java.util.Map<? extends java.lang.String,​?> m)
      Specified by:
      putAll in interface java.util.Map<java.lang.String,​java.lang.Object>
      Overrides:
      putAll in class java.util.AbstractMap<java.lang.String,​java.lang.Object>
    • clear

      public void clear()
      Specified by:
      clear in interface java.util.Map<java.lang.String,​java.lang.Object>
      Overrides:
      clear in class java.util.AbstractMap<java.lang.String,​java.lang.Object>
    • containsValue

      public boolean containsValue​(java.lang.Object value)
      Specified by:
      containsValue in interface java.util.Map<java.lang.String,​java.lang.Object>
      Overrides:
      containsValue in class java.util.AbstractMap<java.lang.String,​java.lang.Object>
    • remove

      public java.lang.Object remove​(java.lang.Object key)
      Specified by:
      remove in interface java.util.Map<java.lang.String,​java.lang.Object>
      Overrides:
      remove in class java.util.AbstractMap<java.lang.String,​java.lang.Object>
    • from

      public static ExpressionEvalMap.ExpressionEvalMapBuilder from​(java.util.Map<java.lang.String,​?> expressions)