Class GenericData

  • All Implemented Interfaces:
    java.lang.Cloneable, java.util.Map<java.lang.String,​java.lang.Object>
    Direct Known Subclasses:
    GenericJson, GenericUrl, GenericXml, HttpHeaders, JsonRpcRequest

    public class GenericData
    extends java.util.AbstractMap<java.lang.String,​java.lang.Object>
    implements java.lang.Cloneable
    Generic data that stores all unknown data key name/value pairs.

    Subclasses can declare fields for known data keys using the Key annotation. Each field can be of any visibility (private, package private, protected, or public) and must not be static. null unknown data key names are not allowed, but null data values are allowed.

    Iteration order of the data keys is based on the sorted (ascending) key names of the declared fields, followed by the iteration order of all of the unknown data key name/value pairs.

    Implementation is not thread-safe. For a thread-safe choice instead use an implementation of ConcurrentMap.

    Since:
    1.0
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      (package private) class  GenericData.EntryIterator
      Iterator over the object data key/value map entries which iterates first over the fields and then over the unknown keys.
      (package private) class  GenericData.EntrySet
      Set of object data key/value map entries.
      static class  GenericData.Flags
      Flags that impact behavior of generic data.
      • 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
      (package private) ClassInfo classInfo
      Class information.
      (package private) java.util.Map<java.lang.String,​java.lang.Object> unknownFields
      Map of unknown fields.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      GenericData clone()
      Makes a "deep" clone of the generic data, in which the clone is completely independent of the original.
      java.util.Set<java.util.Map.Entry<java.lang.String,​java.lang.Object>> entrySet()  
      java.lang.Object get​(java.lang.Object name)  
      ClassInfo getClassInfo()
      Returns the class information.
      java.util.Map<java.lang.String,​java.lang.Object> getUnknownKeys()
      Returns the map of unknown data key name to value.
      java.lang.Object put​(java.lang.String fieldName, java.lang.Object value)  
      void putAll​(java.util.Map<? extends java.lang.String,​?> map)  
      java.lang.Object remove​(java.lang.Object name)  
      GenericData set​(java.lang.String fieldName, java.lang.Object value)
      Sets the given field value (may be null) for the given field name.
      void setUnknownKeys​(java.util.Map<java.lang.String,​java.lang.Object> unknownFields)
      Sets the map of unknown data key name to value.
      • Methods inherited from class java.util.AbstractMap

        clear, containsKey, containsValue, equals, hashCode, isEmpty, keySet, size, toString, values
      • 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 Detail

      • unknownFields

        java.util.Map<java.lang.String,​java.lang.Object> unknownFields
        Map of unknown fields.
      • classInfo

        final ClassInfo classInfo
        Class information.
    • Constructor Detail

      • GenericData

        public GenericData()
        Constructs with case-insensitive keys.
      • GenericData

        public GenericData​(java.util.EnumSet<GenericData.Flags> flags)
        Parameters:
        flags - flags that impact behavior of generic data
        Since:
        1.10
    • Method Detail

      • get

        public final java.lang.Object get​(java.lang.Object name)
        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>
      • put

        public final java.lang.Object put​(java.lang.String fieldName,
                                          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>
      • set

        public GenericData set​(java.lang.String fieldName,
                               java.lang.Object value)
        Sets the given field value (may be null) for the given field name. Any existing value for the field will be overwritten. It may be more slightly more efficient than put(String, Object) because it avoids accessing the field's original value.

        Overriding is only supported for the purpose of calling the super implementation and changing the return type, but nothing else.

      • putAll

        public final void putAll​(java.util.Map<? extends java.lang.String,​?> map)
        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>
      • remove

        public final java.lang.Object remove​(java.lang.Object name)
        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>
      • 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>
      • clone

        public GenericData clone()
        Makes a "deep" clone of the generic data, in which the clone is completely independent of the original.
        Overrides:
        clone in class java.util.AbstractMap<java.lang.String,​java.lang.Object>
      • getUnknownKeys

        public final java.util.Map<java.lang.String,​java.lang.Object> getUnknownKeys()
        Returns the map of unknown data key name to value.
        Since:
        1.5
      • setUnknownKeys

        public final void setUnknownKeys​(java.util.Map<java.lang.String,​java.lang.Object> unknownFields)
        Sets the map of unknown data key name to value.
        Since:
        1.5
      • getClassInfo

        public final ClassInfo getClassInfo()
        Returns the class information.
        Since:
        1.10