Class JAXBContextImpl

java.lang.Object
javax.xml.bind.JAXBContext
com.sun.xml.bind.api.JAXBRIContext
com.sun.xml.bind.v2.runtime.JAXBContextImpl

public final class JAXBContextImpl extends JAXBRIContext
This class provides the implementation of JAXBContext.
  • Field Details

    • beanInfos

      protected Map<RuntimeTypeInfo,JaxBeanInfo> beanInfos
      All created JaxBeanInfos. Updated from each JaxBeanInfos constructors to avoid infinite recursion for a cyclic reference.

      This map is only used while the JAXBContextImpl is built and set to null to avoid keeping references too long.

    • marshallerPool

      public final Pool<javax.xml.bind.Marshaller> marshallerPool
      Pool of Marshallers.
    • unmarshallerPool

      public final Pool<javax.xml.bind.Unmarshaller> unmarshallerPool
    • nameBuilder

      public NameBuilder nameBuilder
      Used to assign indices to known names in this grammar. Reset to null once the build phase is completed.
    • nameList

      public final NameList nameList
      Keeps the list of known names. This field is set once the build pahse is completed.
    • c14nSupport

      protected final boolean c14nSupport
      true to reorder attributes lexicographically in preparation of the c14n support.
    • xmlAccessorFactorySupport

      public final boolean xmlAccessorFactorySupport
      Flag that user has provided a custom AccessorFactory for JAXB to use
    • allNillable

      public final boolean allNillable
      See Also:
    • retainPropertyInfo

      public final boolean retainPropertyInfo
      Store properties, so that they can be recovered in the run (is here because of JSON encoding of Jersey).
    • supressAccessorWarnings

      public final boolean supressAccessorWarnings
      Suppress reflection accessor warnings.
    • improvedXsiTypeHandling

      public final boolean improvedXsiTypeHandling
      Improved xsi type handling.
    • disableSecurityProcessing

      public final boolean disableSecurityProcessing
      Disable security processing.
    • fastBoot

      public final boolean fastBoot
      If true, we aim for faster JAXBContext instantiation performance, instead of going after efficient sustained unmarshalling/marshalling performance.
      Since:
      2.0.4
    • backupWithParentNamespace

      public Boolean backupWithParentNamespace
      If true, despite the specification, unmarshall child element with parent namespace, if child namespace is not specified. The default value is null for System {code}com.sun.xml.bind.backupWithParentNamespace{code} property to be used, and false is assumed if it's not set either. Boolean
      Since:
      2.3.0
    • maxErrorsCount

      public final int maxErrorsCount
      The maximum number of errors unmarshall operation reports. Use negative value to report all errors. The default value is 10.
      Since:
      2.3.3
  • Method Details

    • getXmlNsSet

      public Set<javax.xml.bind.annotation.XmlNs> getXmlNsSet()
      Returns declared XmlNs annotations (from package-level annotation XmlSchema
      Returns:
      set of all present XmlNs annotations
    • hasSwaRef

      public boolean hasSwaRef()
      True if this JAXBContext has XmlAttachmentRef.
      Specified by:
      hasSwaRef in class JAXBRIContext
    • getRuntimeTypeInfoSet

      public RuntimeTypeInfoSet getRuntimeTypeInfoSet()
      Description copied from class: JAXBRIContext
      Allows you to access the runtime model information of the JAXB XML/Java binding.

      This is useful for doing a deeper integration with the JAXB RI. For more information about the model, see https://jaxb2-reflection.dev.java.net/

      Specified by:
      getRuntimeTypeInfoSet in class JAXBRIContext
    • getTypeInfoSet

      public RuntimeTypeInfoSet getTypeInfoSet() throws IllegalAnnotationsException
      Throws:
      IllegalAnnotationsException
    • getElement

      public ElementBeanInfoImpl getElement(Class scope, QName name)
    • getOrCreate

      protected JaxBeanInfo getOrCreate(RuntimeEnumLeafInfo eli)
    • getOrCreate

      protected ClassBeanInfoImpl getOrCreate(RuntimeClassInfo ci)
    • getOrCreate

      protected JaxBeanInfo getOrCreate(RuntimeArrayInfo ai)
    • getOrCreate

      public JaxBeanInfo getOrCreate(RuntimeTypeInfo e)
    • getBeanInfo

      public final JaxBeanInfo getBeanInfo(Object o)
      Gets the JaxBeanInfo object that can handle the given JAXB-bound object.

      This method traverses the base classes of the given object.

      Returns:
      null if c isn't a JAXB-bound class and fatal==false.
    • getBeanInfo

      public final JaxBeanInfo getBeanInfo(Object o, boolean fatal) throws javax.xml.bind.JAXBException
      Gets the JaxBeanInfo object that can handle the given JAXB-bound object.
      Parameters:
      fatal - if true, the failure to look up will throw an exception. Otherwise it will just return null.
      Throws:
      javax.xml.bind.JAXBException
    • getBeanInfo

      public final <T> JaxBeanInfo<T> getBeanInfo(Class<T> clazz)
      Gets the JaxBeanInfo object that can handle the given JAXB-bound class.

      This method doesn't look for base classes.

      Returns:
      null if c isn't a JAXB-bound class and fatal==false.
    • getBeanInfo

      public final <T> JaxBeanInfo<T> getBeanInfo(Class<T> clazz, boolean fatal) throws javax.xml.bind.JAXBException
      Gets the JaxBeanInfo object that can handle the given JAXB-bound class.
      Parameters:
      fatal - if true, the failure to look up will throw an exception. Otherwise it will just return null.
      Throws:
      javax.xml.bind.JAXBException
    • selectRootLoader

      public final Loader selectRootLoader(UnmarshallingContext.State state, TagName tag)
      Based on the tag name, determine what object to unmarshal, and then set a new object and its loader to the current unmarshaller state.
      Returns:
      null if the given name pair is not recognized.
    • getGlobalType

      public JaxBeanInfo getGlobalType(QName name)
      Gets the JaxBeanInfo for the given named XML Schema type.
      Returns:
      null if the type name is not recognized. For schema languages other than XML Schema, this method always returns null.
    • getNearestTypeName

      public String getNearestTypeName(QName name)
      Finds a type name that this context recognizes which is "closest" to the given type name.

      This method is used for error recovery.

    • getValidRootNames

      public Set<QName> getValidRootNames()
      Returns the set of valid root tag names. For diagnostic use.
    • getUTF8NameTable

      public Encoded[] getUTF8NameTable()
    • getNumberOfLocalNames

      public int getNumberOfLocalNames()
    • getNumberOfElementNames

      public int getNumberOfElementNames()
    • getNumberOfAttributeNames

      public int getNumberOfAttributeNames()
    • createTransformerHandler

      public static TransformerHandler createTransformerHandler(boolean disableSecureProcessing)
      Creates a new identity transformer.
    • createMarshaller

      public MarshallerImpl createMarshaller()
      Specified by:
      createMarshaller in class javax.xml.bind.JAXBContext
    • createUnmarshaller

      public UnmarshallerImpl createUnmarshaller()
      Specified by:
      createUnmarshaller in class javax.xml.bind.JAXBContext
    • createValidator

      public javax.xml.bind.Validator createValidator()
      Specified by:
      createValidator in class javax.xml.bind.JAXBContext
    • createJAXBIntrospector

      public javax.xml.bind.JAXBIntrospector createJAXBIntrospector()
      Overrides:
      createJAXBIntrospector in class javax.xml.bind.JAXBContext
    • generateEpisode

      public void generateEpisode(Result output)
      Description copied from class: JAXBRIContext
      Generates the episode file that represents the binding known to this JAXBContext, so that XJC can later do separate compilation.

      Episode file is really just a JAXB customization file, except that currently we use the RI-specific SCD to refer to schema components.

      Specified by:
      generateEpisode in class JAXBRIContext
      Parameters:
      output - This receives the generated episode file.
    • generateSchema

      public void generateSchema(javax.xml.bind.SchemaOutputResolver outputResolver) throws IOException
      Description copied from class: JAXBRIContext
      Generates the schema documents from the model.

      The caller can use the additionalElementDecls parameter to add element declarations to the generate schema. For example, if the JAX-RPC passes in the following entry: {foo}bar -> DeclaredType for java.lang.String then JAXB generates the following element declaration (in the schema document for the namespace "foo")" <xs:element name="bar" type="xs:string" /> This can be used for generating schema components necessary for WSDL.

      Specified by:
      generateSchema in class JAXBRIContext
      Parameters:
      outputResolver - this object controls the output to which schemas will be sent.
      Throws:
      IOException - if SchemaOutputResolver throws an IOException.
    • getTypeName

      public QName getTypeName(TypeReference tr)
      Description copied from class: JAXBRIContext
      Returns the name of the XML Type bound to the specified Java type.
      Specified by:
      getTypeName in class JAXBRIContext
      Parameters:
      tr - must not be null. This must be one of the TypeReferences specified in the JAXBRIContext.newInstance(java.lang.Class[], java.util.Collection<com.sun.xml.bind.api.TypeReference>, java.util.Map<java.lang.Class, java.lang.Class>, java.lang.String, boolean, com.sun.xml.bind.v2.model.annotation.RuntimeAnnotationReader) method.
      Returns:
      null if the referenced type is an anonymous and therefore doesn't have a name.
    • createBinder

      public <T> javax.xml.bind.Binder<T> createBinder(Class<T> domType)
      Overrides:
      createBinder in class javax.xml.bind.JAXBContext
    • createBinder

      public javax.xml.bind.Binder<Node> createBinder()
      Overrides:
      createBinder in class javax.xml.bind.JAXBContext
    • getElementName

      public QName getElementName(Object o) throws javax.xml.bind.JAXBException
      Description copied from class: JAXBRIContext
      If the given object is bound to an element in XML by JAXB, returns the element name.
      Specified by:
      getElementName in class JAXBRIContext
      Returns:
      null if the object is not bound to an element.
      Throws:
      javax.xml.bind.JAXBException - if the object is not known to this context.
    • getElementName

      public QName getElementName(Class o) throws javax.xml.bind.JAXBException
      Description copied from class: JAXBRIContext
      Allows to retrieve the element name based on Class.
      Specified by:
      getElementName in class JAXBRIContext
      Returns:
      Throws:
      javax.xml.bind.JAXBException
    • createBridge

      public Bridge createBridge(TypeReference ref)
      Description copied from class: JAXBRIContext
      Creates a mini-marshaller/unmarshaller that can process a TypeReference.
      Specified by:
      createBridge in class JAXBRIContext
      Returns:
      null if the specified reference is not given to JAXBRIContext.newInstance(java.lang.Class[], java.util.Collection<com.sun.xml.bind.api.TypeReference>, java.util.Map<java.lang.Class, java.lang.Class>, java.lang.String, boolean, com.sun.xml.bind.v2.model.annotation.RuntimeAnnotationReader).
    • createBridgeContext

      @NotNull public BridgeContext createBridgeContext()
      Description copied from class: JAXBRIContext
      Creates a new BridgeContext instance.
      Specified by:
      createBridgeContext in class JAXBRIContext
      Returns:
      always a valid non-null instance.
    • getElementPropertyAccessor

      public RawAccessor getElementPropertyAccessor(Class wrapperBean, String nsUri, String localName) throws javax.xml.bind.JAXBException
      Description copied from class: JAXBRIContext
      Gets a RawAccessor for the specified element property of the specified wrapper bean class.

      This method is designed to assist the JAX-RPC RI fill in a wrapper bean (in the doc/lit/wrap mode.) In the said mode, a wrapper bean is supposed to only have properties that match elements, and for each element that appear in the content model there's one property.

      Therefore, this method takes a wrapper bean and a tag name that identifies a property on the given wrapper bean, then returns a RawAccessor that allows the caller to set/get a value from the property of the bean.

      This method is not designed for a performance. The caller is expected to cache the result.

      Specified by:
      getElementPropertyAccessor in class JAXBRIContext
      Returns:
      always return non-null valid accessor object.
      Throws:
      javax.xml.bind.JAXBException - if the specified wrapper bean is not bound by JAXB, or if it doesn't have an element property of the given name.
    • getKnownNamespaceURIs

      public List<String> getKnownNamespaceURIs()
      Description copied from class: JAXBRIContext
      Gets the namespace URIs statically known to this JAXBContext.

      When JAXB is used to marshal into sub-trees, it declares these namespace URIs at each top-level element that it marshals. To avoid repeated namespace declarations at sub-elements, the application may declare those namespaces at a higher level.

      Specified by:
      getKnownNamespaceURIs in class JAXBRIContext
      Returns:
      always non-null.
    • getBuildId

      public String getBuildId()
      Description copied from class: JAXBRIContext
      Gets the build information of the JAXB runtime.
      Specified by:
      getBuildId in class JAXBRIContext
      Returns:
      may be null, if the runtime is loaded by a class loader that doesn't support the access to the manifest informatino.
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getXMIMEContentType

      public String getXMIMEContentType(Object o)
      Gets the value of the xmime:contentType attribute on the given object, or null if for some reason it couldn't be found, including any error.
    • createAugmented

      public JAXBContextImpl createAugmented(Class<?> clazz) throws javax.xml.bind.JAXBException
      Creates a JAXBContextImpl that includes the specified additional classes.
      Throws:
      javax.xml.bind.JAXBException