org.exolab.castor.xml

Class Introspector

public final class Introspector extends 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: 1.3 $ $Date: 2003/04/23 06:42:51 $

Author: Keith Visco

Nested Class Summary
classIntrospector.MethodSet
A simple struct for holding a set of accessor methods
Field Summary
static StringWRAP_COLLECTIONS_PROPERTY
The property name for enabling collection wrapping.
Constructor Summary
Introspector()
Method Summary
XMLClassDescriptorgenerateClassDescriptor(Class c)
Creates an XMLClassDescriptor for the given class by using Reflection.
XMLClassDescriptorgenerateClassDescriptor(Class c, PrintWriter errorWriter)
Creates an XMLClassDescriptor for the given class by using Reflection.
NodeTypegetPrimitiveNodeType()
Returns the NodeType for java primitives
static booleanintrospected(XMLClassDescriptor descriptor)
Returns true if the given XMLClassDescriptor was created via introspection
static booleanisCollection(Class clazz)
Returns true if the given Class is an instance of a collection class.
static booleanmarshallable(Class type)
Returns true if the given Class can be marshalled.
voidsetNaming(XMLNaming naming)
Sets the Naming conventions to be used by the Introspector
voidsetPrimitiveNodeType(NodeType nodeType)
Sets the NodeType for primitives.
voidsetWrapCollections(boolean wrapCollections)
Sets whether or not collections (arrays, vectors, etc) should be wrapped in a container element.
static StringtoJavaName(String name, boolean upperFirst)
Converts the given xml name to a Java name.

Field Detail

WRAP_COLLECTIONS_PROPERTY

public static final String WRAP_COLLECTIONS_PROPERTY
The property name for enabling collection wrapping. The property controls 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>

 
Use this property with a value of true or false in the castor.properties file org.exolab.castor.xml.introspector.wrapCollections=true -or- org.exolab.castor.xml.introspector.wrapCollections=false This property is false by default.

Constructor Detail

Introspector

public Introspector()

Method Detail

generateClassDescriptor

public XMLClassDescriptor generateClassDescriptor(Class c)
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(Class c, PrintWriter errorWriter)
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.

getPrimitiveNodeType

public NodeType getPrimitiveNodeType()
Returns the NodeType for java primitives

Returns: the NodeType for java primitives

introspected

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

isCollection

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

See Also: loadCollections

marshallable

public static boolean marshallable(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.

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.

toJavaName

public static String toJavaName(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.

Intalio Inc. (C) 1999-2003. All rights reserved http://www.intalio.com