Class Introspector


  • public final class Introspector
    extends java.lang.Object
    A Helper class for the Marshaller and Unmarshaller, basically the common code base between the two. This class handles the introspection to dynamically create descriptors.
    Version:
    $Revision: 8145 $ $Date: 2006-04-14 04:14:43 -0600 (Fri, 14 Apr 2006) $
    Author:
    Keith Visco
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      (package private) class  Introspector.IdentityConvertor
      A special TypeConvertor that simply returns the object given.
      (package private) class  Introspector.MethodSet
      A simple struct for holding a set of accessor methods.
    • Constructor Summary

      Constructors 
      Constructor Description
      Introspector()
      Creates a new instance of the Introspector.
      Introspector​(java.lang.ClassLoader classLoader)
      Creates a new instance of the Introspector.
    • Constructor Detail

      • Introspector

        public Introspector()
        Creates a new instance of the Introspector.
      • Introspector

        public Introspector​(java.lang.ClassLoader classLoader)
        Creates a new instance of the Introspector.
        Parameters:
        classLoader -
    • Method Detail

      • setInternalContext

        public void setInternalContext​(InternalContext internalContext)
      • addFieldHandlerFactory

        public void addFieldHandlerFactory​(FieldHandlerFactory factory)
        Registers the given "generalized" FieldHandlerFactory with this Introspector.
        Parameters:
        factory - the FieldHandlerFactory to add to this introspector
        Throws:
        java.lang.IllegalArgumentException - if the given factory is null
      • getPrimitiveNodeType

        public NodeType getPrimitiveNodeType()
        Returns the NodeType for java primitives
        Returns:
        the NodeType for java primitives
      • generateClassDescriptor

        public XMLClassDescriptor generateClassDescriptor​(java.lang.Class c)
                                                   throws MarshalException
        Creates an XMLClassDescriptor for the given class by using Reflection.
        Parameters:
        c - the Class to create the XMLClassDescriptor for
        Returns:
        the new XMLClassDescriptor created for the given class
        Throws:
        MarshalException - when an error occurs during the creation of the ClassDescriptor.
      • generateClassDescriptor

        public XMLClassDescriptor generateClassDescriptor​(java.lang.Class c,
                                                          java.io.PrintWriter errorWriter)
                                                   throws MarshalException
        Creates an XMLClassDescriptor for the given class by using Reflection.
        Parameters:
        c - the Class to create the XMLClassDescriptor for
        errorWriter - a PrintWriter to print error information to
        Returns:
        the new XMLClassDescriptor created for the given class
        Throws:
        MarshalException - when an error occurs during the creation of the ClassDescriptor.
      • removeFieldHandlerFactory

        public boolean removeFieldHandlerFactory​(FieldHandlerFactory factory)
        Removes the given FieldHandlerFactory from this Introspector
        Parameters:
        factory - the FieldHandlerFactory to remove
        Returns:
        true if the given FieldHandlerFactory was removed, or false otherwise.
        Throws:
        java.lang.IllegalArgumentException - if the given factory is null
      • setWrapCollections

        public void setWrapCollections​(boolean wrapCollections)
        Sets whether or not collections (arrays, vectors, etc) should be wrapped in a container element. For example:
        
            <foos>
               <foo>foo1</foo>
               <foo>foo2</foo>
            </foos>
        
           instead of the default:
        
            <foos>foo1<foos>
            <foos>foo2</foos>
        
         
        Parameters:
        wrapCollections - a boolean that when true indicates collections should be wrapped in a container element.
      • introspected

        public static boolean introspected​(XMLClassDescriptor descriptor)
        Returns true if the given XMLClassDescriptor was created via introspection
      • marshallable

        public static boolean marshallable​(java.lang.Class type)
        Returns true if the given Class can be marshalled.
        Parameters:
        type - the Class to check marshallability for.
        Returns:
        true if the given Class can be marshalled.
      • setNaming

        public void setNaming​(XMLNaming naming)
        Sets the Naming conventions to be used by the Introspector
        Parameters:
        naming - the implementation of Naming to use. A value of null, will reset the XMLNaming to the default specified in the castor.properties file.
      • setPrimitiveNodeType

        public void setPrimitiveNodeType​(NodeType nodeType)
        Sets the NodeType for primitives. If the NodeType is NodeType.Element, all primitives will be treated as Elements, otherwise all primitives will be treated as Attributes.
        Parameters:
        nodeType - the NodeType to use for primitive values.
      • setSaveMapKeys

        public void setSaveMapKeys​(boolean saveMapKeys)
        Sets whether or not keys from Hastable / Map instances should be saved in the XML.

        Note: This is true by default since Castor 0.9.5.3

        Parameters:
        saveMapKeys - a boolean that when true indicates keys from Hashtable or Map instances should be saved. Otherwise only the value object is saved.
      • toJavaName

        public static java.lang.String toJavaName​(java.lang.String name,
                                                  boolean upperFirst)
        Converts the given xml name to a Java name.
        Parameters:
        name - the name to convert to a Java Name
        upperFirst - a flag to indicate whether or not the the first character should be converted to uppercase.
      • isCollection

        public static boolean isCollection​(java.lang.Class clazz)
        Returns true if the given Class is an instance of a collection class.
      • isMapCollection

        public static boolean isMapCollection​(java.lang.Class clazz)
        Returns true if the given Class is an instance of a collection class.