Class PlexusXmlBeanConverter

java.lang.Object
org.eclipse.sisu.plexus.PlexusXmlBeanConverter
All Implemented Interfaces:
PlexusBeanConverter

public final class PlexusXmlBeanConverter extends Object implements PlexusBeanConverter
PlexusBeanConverter Module that converts Plexus XML configuration into beans.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private static final String
     
    private final Collection<com.google.inject.spi.TypeConverterBinding>
     
  • Constructor Summary

    Constructors
    Constructor
    Description
    PlexusXmlBeanConverter(com.google.inject.Injector injector)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    convert(com.google.inject.TypeLiteral role, String value)
    Converts the given constant value to a bean of the given type.
    private Object
    convertText(String value, com.google.inject.TypeLiteral<?> toType)
    Converts the given string to the target type, using TypeConverters registered with the Injector.
    private static Class<?>
    loadImplementation(String name, Class<?> defaultClazz)
    Attempts to load the named implementation, uses default implementation if no name is given.
    private static <T> T
    Creates an instance of the given implementation using the default constructor.
    private static <T> T
    newImplementation(Class<T> clazz, String value)
    Creates an instance of the given implementation using the given string, assumes a public string constructor.
    private static <T> T
    newImplementation(org.codehaus.plexus.util.xml.pull.XmlPullParser parser, Class<T> defaultClazz)
    Creates an instance of the implementation named in the current XML element, or the default if no name is given.
    private Object
    parse(org.codehaus.plexus.util.xml.pull.MXParser parser, com.google.inject.TypeLiteral<?> toType)
    Parses a sequence of XML elements and converts them to the given target type.
    private Object
    parseArray(org.codehaus.plexus.util.xml.pull.MXParser parser, com.google.inject.TypeLiteral<?> toType)
    Parses a sequence of XML elements and converts them to the appropriate array type.
    private Object
    parseBean(org.codehaus.plexus.util.xml.pull.MXParser parser, com.google.inject.TypeLiteral<?> toType, Class<?> rawType)
    Parses a sequence of XML elements and converts them to the appropriate bean type.
    parseCollection(org.codehaus.plexus.util.xml.pull.MXParser parser, com.google.inject.TypeLiteral<?> toType)
    Parses a sequence of XML elements and converts them to the appropriate Collection type.
    private static String
    parseImplementation(org.codehaus.plexus.util.xml.pull.XmlPullParser parser)
    Parses an XML element looking for the name of a custom implementation.
    private Map<String,Object>
    parseMap(org.codehaus.plexus.util.xml.pull.MXParser parser, com.google.inject.TypeLiteral<?> toType)
    Parses a sequence of XML elements and converts them to the appropriate Map type.
    private static Properties
    parseProperties(org.codehaus.plexus.util.xml.pull.XmlPullParser parser)
    Parses a sequence of XML elements and converts them to the appropriate Properties type.
    private static org.codehaus.plexus.util.xml.Xpp3Dom
    parseXpp3Dom(org.codehaus.plexus.util.xml.pull.XmlPullParser parser)
    Parses an XML subtree and converts it to the Xpp3Dom type.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • CONVERSION_ERROR

      private static final String CONVERSION_ERROR
      See Also:
    • typeConverterBindings

      private final Collection<com.google.inject.spi.TypeConverterBinding> typeConverterBindings
  • Constructor Details

    • PlexusXmlBeanConverter

      @Inject PlexusXmlBeanConverter(com.google.inject.Injector injector)
  • Method Details

    • convert

      public Object convert(com.google.inject.TypeLiteral role, String value)
      Description copied from interface: PlexusBeanConverter
      Converts the given constant value to a bean of the given type.
      Specified by:
      convert in interface PlexusBeanConverter
      Parameters:
      role - The expected bean type
      value - The constant value
      Returns:
      Bean of the given type, based on the given constant value
    • parse

      private Object parse(org.codehaus.plexus.util.xml.pull.MXParser parser, com.google.inject.TypeLiteral<?> toType) throws Exception
      Parses a sequence of XML elements and converts them to the given target type.
      Parameters:
      parser - The XML parser
      toType - The target type
      Returns:
      Converted instance of the target type
      Throws:
      Exception
    • parseXpp3Dom

      private static org.codehaus.plexus.util.xml.Xpp3Dom parseXpp3Dom(org.codehaus.plexus.util.xml.pull.XmlPullParser parser) throws Exception
      Parses an XML subtree and converts it to the Xpp3Dom type.
      Parameters:
      parser - The XML parser
      Returns:
      Converted Xpp3Dom instance
      Throws:
      Exception
    • parseProperties

      private static Properties parseProperties(org.codehaus.plexus.util.xml.pull.XmlPullParser parser) throws Exception
      Parses a sequence of XML elements and converts them to the appropriate Properties type.
      Parameters:
      parser - The XML parser
      Returns:
      Converted Properties instance
      Throws:
      Exception
    • parseMap

      private Map<String,Object> parseMap(org.codehaus.plexus.util.xml.pull.MXParser parser, com.google.inject.TypeLiteral<?> toType) throws Exception
      Parses a sequence of XML elements and converts them to the appropriate Map type.
      Parameters:
      parser - The XML parser
      Returns:
      Converted Map instance
      Throws:
      Exception
    • parseCollection

      private Collection<Object> parseCollection(org.codehaus.plexus.util.xml.pull.MXParser parser, com.google.inject.TypeLiteral<?> toType) throws Exception
      Parses a sequence of XML elements and converts them to the appropriate Collection type.
      Parameters:
      parser - The XML parser
      Returns:
      Converted Collection instance
      Throws:
      Exception
    • parseArray

      private Object parseArray(org.codehaus.plexus.util.xml.pull.MXParser parser, com.google.inject.TypeLiteral<?> toType) throws Exception
      Parses a sequence of XML elements and converts them to the appropriate array type.
      Parameters:
      parser - The XML parser
      Returns:
      Converted array instance
      Throws:
      Exception
    • parseBean

      private Object parseBean(org.codehaus.plexus.util.xml.pull.MXParser parser, com.google.inject.TypeLiteral<?> toType, Class<?> rawType) throws Exception
      Parses a sequence of XML elements and converts them to the appropriate bean type.
      Parameters:
      parser - The XML parser
      Returns:
      Converted bean instance
      Throws:
      Exception
    • parseImplementation

      private static String parseImplementation(org.codehaus.plexus.util.xml.pull.XmlPullParser parser)
      Parses an XML element looking for the name of a custom implementation.
      Parameters:
      parser - The XML parser
      Returns:
      Name of the custom implementation; otherwise null
    • loadImplementation

      private static Class<?> loadImplementation(String name, Class<?> defaultClazz)
      Attempts to load the named implementation, uses default implementation if no name is given.
      Parameters:
      name - The optional implementation name
      defaultClazz - The default implementation type
      Returns:
      Custom implementation type if one was given; otherwise default implementation type
    • newImplementation

      private static <T> T newImplementation(Class<T> clazz)
      Creates an instance of the given implementation using the default constructor.
      Parameters:
      clazz - The implementation type
      Returns:
      Instance of given implementation
    • newImplementation

      private static <T> T newImplementation(Class<T> clazz, String value)
      Creates an instance of the given implementation using the given string, assumes a public string constructor.
      Parameters:
      clazz - The implementation type
      value - The string argument
      Returns:
      Instance of given implementation, constructed using the the given string
    • newImplementation

      private static <T> T newImplementation(org.codehaus.plexus.util.xml.pull.XmlPullParser parser, Class<T> defaultClazz)
      Creates an instance of the implementation named in the current XML element, or the default if no name is given.
      Parameters:
      parser - The XML parser
      defaultClazz - The default implementation type
      Returns:
      Instance of custom implementation if one was given; otherwise instance of default type
    • convertText

      private Object convertText(String value, com.google.inject.TypeLiteral<?> toType)
      Converts the given string to the target type, using TypeConverters registered with the Injector.
      Parameters:
      value - The string value
      toType - The target type
      Returns:
      Converted instance of the target type