Class ElementBeanInfoImpl

java.lang.Object
com.sun.xml.bind.v2.runtime.JaxBeanInfo<javax.xml.bind.JAXBElement>
com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl

public final class ElementBeanInfoImpl extends JaxBeanInfo<javax.xml.bind.JAXBElement>
JaxBeanInfo implementation for RuntimeElementInfo.
Author:
Kohsuke Kawaguchi
  • Field Details

    • expectedType

      public final Class expectedType
  • Constructor Details

    • ElementBeanInfoImpl

      protected ElementBeanInfoImpl(JAXBContextImpl grammar)
      The constructor for the sole instanceof JaxBeanInfo for handling user-created JAXBElement. Such JaxBeanInfo is used only for marshalling. This is a hack.
  • Method Details

    • getElementNamespaceURI

      public String getElementNamespaceURI(javax.xml.bind.JAXBElement e)
      Description copied from class: JaxBeanInfo
      Returns the namespace URI portion of the element name, if the bean that this class represents is mapped from/to an XML element.
      Specified by:
      getElementNamespaceURI in class JaxBeanInfo<javax.xml.bind.JAXBElement>
    • getElementLocalName

      public String getElementLocalName(javax.xml.bind.JAXBElement e)
      Description copied from class: JaxBeanInfo
      Returns the local name portion of the element name, if the bean that this class represents is mapped from/to an XML element.
      Specified by:
      getElementLocalName in class JaxBeanInfo<javax.xml.bind.JAXBElement>
    • getLoader

      public Loader getLoader(JAXBContextImpl context, boolean typeSubstitutionCapable)
      Description copied from class: JaxBeanInfo
      Gets the Loader that will unmarshall the given object.
      Specified by:
      getLoader in class JaxBeanInfo<javax.xml.bind.JAXBElement>
      Parameters:
      context - The JAXBContextImpl object that governs this object. This object is taken as a parameter so that JaxBeanInfo doesn't have to store them on its own. When this method is invoked from within the unmarshaller, tihs parameter can be null (because the loader is constructed already.)
      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 info is guaranteed not to have a type substitution. If false, the returned Loader doesn't look for @xsi:type.
      Returns:
      must return non-null valid object
    • createInstance

      public final javax.xml.bind.JAXBElement createInstance(UnmarshallingContext context) throws IllegalAccessException, InvocationTargetException, InstantiationException
      Description copied from class: JaxBeanInfo
      Creates a new instance of the bean.

      This operation is only supported when JaxBeanInfo.isImmutable() is false.

      Specified by:
      createInstance in class JaxBeanInfo<javax.xml.bind.JAXBElement>
      Parameters:
      context - Sometimes the created bean remembers the corresponding source location,
      Throws:
      IllegalAccessException
      InvocationTargetException
      InstantiationException
    • createInstanceFromValue

      public final javax.xml.bind.JAXBElement createInstanceFromValue(Object o) throws IllegalAccessException, InvocationTargetException, InstantiationException
      Throws:
      IllegalAccessException
      InvocationTargetException
      InstantiationException
    • reset

      public boolean reset(javax.xml.bind.JAXBElement e, UnmarshallingContext context)
      Description copied from class: JaxBeanInfo
      Resets the object to the initial state, as if the object is created fresh.

      This is used to reuse an existing object for unmarshalling.

      Specified by:
      reset in class JaxBeanInfo<javax.xml.bind.JAXBElement>
      context - used for reporting any errors.
      Returns:
      true if the object was successfuly resetted. False if the object is not resettable, in which case the object will be discarded 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.

    • getId

      public String getId(javax.xml.bind.JAXBElement e, XMLSerializer target)
      Description copied from class: JaxBeanInfo
      Gets the ID value of the given bean, if it has an ID value. Otherwise return null.
      Specified by:
      getId in class JaxBeanInfo<javax.xml.bind.JAXBElement>
    • serializeBody

      public void serializeBody(javax.xml.bind.JAXBElement element, XMLSerializer target) throws SAXException, IOException, XMLStreamException
      Description copied from class: JaxBeanInfo
      Serializes child elements and texts into the specified target.
      Specified by:
      serializeBody in class JaxBeanInfo<javax.xml.bind.JAXBElement>
      Throws:
      SAXException
      IOException
      XMLStreamException
    • serializeRoot

      public void serializeRoot(javax.xml.bind.JAXBElement e, XMLSerializer target) throws SAXException, IOException, XMLStreamException
      Description copied from class: JaxBeanInfo
      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).

      Specified by:
      serializeRoot in class JaxBeanInfo<javax.xml.bind.JAXBElement>
      Throws:
      SAXException
      IOException
      XMLStreamException
    • serializeAttributes

      public void serializeAttributes(javax.xml.bind.JAXBElement e, XMLSerializer target)
      Description copied from class: JaxBeanInfo
      Serializes attributes into the specified target.
      Specified by:
      serializeAttributes in class JaxBeanInfo<javax.xml.bind.JAXBElement>
    • serializeURIs

      public void serializeURIs(javax.xml.bind.JAXBElement e, XMLSerializer target)
      Description copied from class: JaxBeanInfo
      Declares all the namespace URIs this object is using at its top-level scope into the specified target.
      Specified by:
      serializeURIs in class JaxBeanInfo<javax.xml.bind.JAXBElement>
    • getTransducer

      public final Transducer<javax.xml.bind.JAXBElement> getTransducer()
      Description copied from class: JaxBeanInfo
      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.
      Specified by:
      getTransducer in class JaxBeanInfo<javax.xml.bind.JAXBElement>
    • wrapUp

      public void wrapUp()
      Description copied from class: JaxBeanInfo
      Called at the end of the JAXBContext initialization phase to clean up any unnecessary references.
      Overrides:
      wrapUp in class JaxBeanInfo<javax.xml.bind.JAXBElement>
    • link

      public void link(JAXBContextImpl grammar)
      Description copied from class: JaxBeanInfo
      Called after all the JaxBeanInfos are created.
      Overrides:
      link in class JaxBeanInfo<javax.xml.bind.JAXBElement>