| java.lang.Object com.sun.xml.bind.v2.runtime.JaxBeanInfo
All known Subclasses: com.sun.xml.bind.v2.runtime.ArrayBeanInfoImpl, com.sun.xml.bind.v2.runtime.ValueListBeanInfoImpl,
JaxBeanInfo | abstract public class JaxBeanInfo (Code) | | Encapsulates various JAXB operations on objects bound by JAXB.
Immutable and thread-safe.
Each JAXB-bound class has a corresponding
JaxBeanInfo object,
which performs all the JAXB related operations on behalf of
the JAXB-bound object.
Given a class, the corresponding
JaxBeanInfo can be located
via
JAXBContextImpl.getBeanInfo(Classboolean) .
Typically,
JaxBeanInfo implementations should be generated
by XJC/JXC. Those impl classes will register themselves to their
master ObjectFactory class.
The type parameter BeanT is the Java class of the bean that this represents.
author: Kohsuke Kawaguchi (kohsuke.kawaguchi@sun.com) |
Field Summary | |
protected short | flag Various boolean flags combined into one field to improve memory footprint. | final public Class<BeanT> | jaxbType Gets the JAXB bound class type that this
JaxBeanInfo handles. |
Constructor Summary | |
protected | JaxBeanInfo(JAXBContextImpl grammar, RuntimeTypeInfo rti, Class<BeanT> jaxbType, QName[] typeNames, boolean isElement, boolean isImmutable, boolean hasLifecycleEvents) For
JaxBeanInfo that has multiple type names. | protected | JaxBeanInfo(JAXBContextImpl grammar, RuntimeTypeInfo rti, Class<BeanT> jaxbType, QName typeName, boolean isElement, boolean isImmutable, boolean hasLifecycleEvents) For
JaxBeanInfo that has one type name. | protected | JaxBeanInfo(JAXBContextImpl grammar, RuntimeTypeInfo rti, Class<BeanT> jaxbType, boolean isElement, boolean isImmutable, boolean hasLifecycleEvents) For
JaxBeanInfo that has no type names. |
Method Summary | |
abstract public BeanT | createInstance(UnmarshallingContext context) Creates a new instance of the bean. | abstract public String | getElementLocalName(BeanT o) Returns the local name portion of the element name,
if the bean that this class represents is mapped from/to
an XML element. | abstract public String | getElementNamespaceURI(BeanT o) Returns the namespace URI portion of the element name,
if the bean that this class represents is mapped from/to
an XML element. | abstract public String | getId(BeanT o, XMLSerializer target) Gets the ID value of the given bean, if it has an ID value. | final public LifecycleMethods | getLifecycleMethods() Return the LifecycleMethods cache for this ClassBeanInfo's corresponding
jaxbType if it exists, else return null. | abstract public Loader | getLoader(JAXBContextImpl context, boolean typeSubstitutionCapable) Gets the
Loader that will unmarshall the given object.
Parameters: context - The JAXBContextImpl object that governs this object.This object is taken as a parameter so that JaxBeanInfo doesn't haveto store them on its own.When this method is invoked from within the unmarshaller, tihs parameter can benull (because the loader is constructed already.) Parameters: typeSubstitutionCapable - If true, the returned Loader is capable of recognizing @xsi:type (if necessary)and unmarshals a subtype. | abstract public Transducer<BeanT> | getTransducer() If the bean's representation in XML is just a text,
this method return a
Transducer that lets you convert
values between the text and the bean. | public QName | getTypeName(BeanT instance) Returns the XML type name to be used to marshal the specified instance. | public Collection<QName> | getTypeNames() Returns XML Schema type names if the bean is mapped from
a complex/simple type of XML Schema.
This is an ugly necessity to correctly handle
the type substitution semantics of XML Schema.
A single Java class maybe mapped to more than one
XML types. | final public boolean | hasAfterMarshalMethod() True if
JaxBeanInfo.jaxbType has the lifecycle method. | final public boolean | hasAfterUnmarshalMethod() True if
JaxBeanInfo.jaxbType has the lifecycle method. | final public boolean | hasBeforeMarshalMethod() True if
JaxBeanInfo.jaxbType has the lifecycle method. | final public boolean | hasBeforeUnmarshalMethod() True if
JaxBeanInfo.jaxbType has the lifecycle method. | final public boolean | hasElementOnlyContentModel() True if this bean has an element-only content model. | final protected void | hasElementOnlyContentModel(boolean value) True if this bean has an element-only content model. | final public void | invokeAfterUnmarshalMethod(UnmarshallerImpl unm, Object child, Object parent) Invokes the afterUnmarshal method if applicable. | final public void | invokeBeforeUnmarshalMethod(UnmarshallerImpl unm, Object child, Object parent) Invokes the beforeUnmarshal method if applicable. | final public boolean | isElement() Returns true if the bean is mapped to/from an XML element. | final public boolean | isImmutable() Returns true if the bean is immutable. | protected void | link(JAXBContextImpl grammar) Called after all the
JaxBeanInfo s are created. | public boolean | lookForLifecycleMethods() This method is used to determine which of the sub-classes should be
interrogated for the existence of lifecycle methods. | abstract public boolean | reset(BeanT o, UnmarshallingContext context) Resets the object to the initial state, as if the object
is created fresh.
This is used to reuse an existing object for unmarshalling.
Parameters: context - used for reporting any errors.true if the object was successfuly resetted.False if the object is not resettable, in which case the object will bediscarded and new one will be created. If the object is resettable but failed by an error, it should be reported to the context,then return false. | abstract public void | serializeAttributes(BeanT o, XMLSerializer target) Serializes attributes into the specified target. | abstract public void | serializeBody(BeanT o, XMLSerializer target) Serializes child elements and texts into the specified target. | abstract public void | serializeRoot(BeanT o, XMLSerializer target) Serializes the bean as the root element. | abstract public void | serializeURIs(BeanT o, XMLSerializer target) Declares all the namespace URIs this object is using at
its top-level scope into the specified target. | final protected void | setLifecycleFlags() use reflection to determine which of the 4 object lifecycle methods exist on
the JAXB bound type. | public void | wrapUp() Called at the end of the
JAXBContext initialization phase
to clean up any unnecessary references. |
flag | protected short flag(Code) | | Various boolean flags combined into one field to improve memory footprint.
|
jaxbType | final public Class<BeanT> jaxbType(Code) | | Gets the JAXB bound class type that this
JaxBeanInfo handles.
IOW, when a bean info object is requested for T,
sometimes the bean info for one of its base classes might be
returned.
|
getLifecycleMethods | final public LifecycleMethods getLifecycleMethods()(Code) | | Return the LifecycleMethods cache for this ClassBeanInfo's corresponding
jaxbType if it exists, else return null.
|
getLoader | abstract public Loader getLoader(JAXBContextImpl context, boolean typeSubstitutionCapable)(Code) | | Gets the
Loader that will unmarshall the given object.
Parameters: context - The JAXBContextImpl object that governs this object.This object is taken as a parameter so that JaxBeanInfo doesn't haveto store them on its own.When this method is invoked from within the unmarshaller, tihs parameter can benull (because the loader is constructed already.) Parameters: typeSubstitutionCapable - If true, the returned Loader is capable of recognizing @xsi:type (if necessary)and unmarshals a subtype. This allowes an optimization where this bean infois guaranteed not to have a type substitution.If false, the returned Loader doesn't look for @xsi:type.must return non-null valid object |
getTransducer | abstract public Transducer<BeanT> getTransducer()(Code) | | If the bean's representation in XML is just a text,
this method return a
Transducer that lets you convert
values between the text and the bean.
|
getTypeName | public QName getTypeName(BeanT instance)(Code) | | Returns the XML type name to be used to marshal the specified instance.
Most of the times the type can be determined regardless of the actual
instance, but there's a few exceptions (most notably
XMLGregorianCalendar ),
so as a general rule we need an instance to determine it.
|
getTypeNames | public Collection<QName> getTypeNames()(Code) | | Returns XML Schema type names if the bean is mapped from
a complex/simple type of XML Schema.
This is an ugly necessity to correctly handle
the type substitution semantics of XML Schema.
A single Java class maybe mapped to more than one
XML types. All the types listed here are recognized
when we are unmarshalling XML.
null if the class is not bound to a named schema type.
|
hasAfterUnmarshalMethod | final public boolean hasAfterUnmarshalMethod()(Code) | | True if
JaxBeanInfo.jaxbType has the lifecycle method.
|
hasBeforeUnmarshalMethod | final public boolean hasBeforeUnmarshalMethod()(Code) | | True if
JaxBeanInfo.jaxbType has the lifecycle method.
|
hasElementOnlyContentModel | final public boolean hasElementOnlyContentModel()(Code) | | True if this bean has an element-only content model.
If this flag is true, the unmarshaller can work
faster by ignoring whitespaces more efficiently.
|
hasElementOnlyContentModel | final protected void hasElementOnlyContentModel(boolean value)(Code) | | True if this bean has an element-only content model.
Should be considered immutable, though I can't mark it final
because it cannot be computed in this constructor.
|
isImmutable | final public boolean isImmutable()(Code) | | Returns true if the bean is immutable.
If this is true, Binder won't try to ueuse this object, and the unmarshaller
won't create a new instance of it before it starts.
|
lookForLifecycleMethods | public boolean lookForLifecycleMethods()(Code) | | This method is used to determine which of the sub-classes should be
interrogated for the existence of lifecycle methods.
true if the un|marshaller should look for lifecycle methodson this beanInfo, false otherwise. |
reset | abstract public boolean reset(BeanT o, UnmarshallingContext context) throws SAXException(Code) | | Resets the object to the initial state, as if the object
is created fresh.
This is used to reuse an existing object for unmarshalling.
Parameters: context - used for reporting any errors.true if the object was successfuly resetted.False if the object is not resettable, in which case the object will bediscarded and new one will be created. If the object is resettable but failed by an error, it should be reported to the context,then return false. If the object is not resettable to begin with, do not report an error. throws: SAXException - as a result of reporting an error, the context may throw a SAXException. |
serializeRoot | abstract public void serializeRoot(BeanT o, XMLSerializer target) throws SAXException, IOException, XMLStreamException(Code) | | Serializes the bean as the root element.
In the java-to-schema binding, an object might marshal in two different
ways depending on whether it is used as the root of the graph or not.
In the former case, an object could marshal as an element, whereas
in the latter case, it marshals as a type.
This method is used to marshal the root of the object graph to allow
this semantics to be implemented.
It is doubtful to me if it's a good idea for an object to marshal
in two ways depending on the context.
For schema-to-java, this is equivalent to
JaxBeanInfo.serializeBody(Object,XMLSerializer) .
|
serializeURIs | abstract public void serializeURIs(BeanT o, XMLSerializer target) throws SAXException(Code) | | Declares all the namespace URIs this object is using at
its top-level scope into the specified target.
|
setLifecycleFlags | final protected void setLifecycleFlags()(Code) | | use reflection to determine which of the 4 object lifecycle methods exist on
the JAXB bound type.
|
wrapUp | public void wrapUp()(Code) | | Called at the end of the
JAXBContext initialization phase
to clean up any unnecessary references.
|
|
|