Class MapFactory

java.lang.Object
org.simpleframework.xml.core.Factory
org.simpleframework.xml.core.MapFactory

class MapFactory extends Factory
The MapFactory is used to create map instances that are compatible with the field type. This performs resolution of the map class by consulting the specified Strategy implementation. If the strategy cannot resolve the map class then this will select a type from the Java Collections framework, if a compatible one exists.
  • Constructor Details

    • MapFactory

      public MapFactory(Context context, Type type)
      Constructor for the MapFactory object. This is given the field type as taken from the owning object. The given type is used to determine the map instance created.
      Parameters:
      context - this is the context object for this factory
      type - this is the class for the owning object
  • Method Details

    • getInstance

      public Object getInstance() throws Exception
      Creates a map object that is determined from the field type. This is used for the ElementMap to get a map that does not have any overrides. This must be done as the inline list does not contain an outer element.
      Overrides:
      getInstance in class Factory
      Returns:
      a type which is used to instantiate the map
      Throws:
      Exception
    • getInstance

      public Instance getInstance(InputNode node) throws Exception
      Creates the map object to use. The Strategy object is consulted for the map object class, if one is not resolved by the strategy implementation or if the collection resolved is abstract then the Java Collections framework is consulted.
      Parameters:
      node - this is the input node representing the list
      Returns:
      this is the map object instantiated for the field
      Throws:
      Exception
    • getInstance

      public Instance getInstance(Value value) throws Exception
      This creates a Map object instance from the type provided. If the type provided is abstract or an interface then this can promote the type to a map object type that can be instantiated. This is done by asking the type to convert itself.
      Parameters:
      value - the type used to instantiate the map object
      Returns:
      this returns a compatible map object instance
      Throws:
      Exception
    • getConversion

      public Class getConversion(Class require) throws Exception
      This is used to convert the provided type to a map object type from the Java Collections framework. This will check to see if the type is a Map or SortedMap and return a HashMap or TreeSet type. If no suitable match can be found this throws an exception.
      Parameters:
      require - this is the type that is to be converted
      Returns:
      a collection that is assignable to the provided type
      Throws:
      Exception
    • isMap

      private boolean isMap(Class type)
      This determines whether the type provided is a object map type. If the type is assignable to a Map object then this returns true, otherwise this returns false.
      Parameters:
      type - given to determine whether it is a map type
      Returns:
      true if the provided type is a map object type