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.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
JAXBContextImpl.JAXBContextBuilder
-
Field Summary
Fields Modifier and Type Field Description boolean
allNillable
Boolean
backupWithParentNamespace
If true, despite the specification, unmarshall child element with parent namespace, if child namespace is not specified.protected Map<RuntimeTypeInfo,JaxBeanInfo>
beanInfos
All createdJaxBeanInfo
s.protected boolean
c14nSupport
true to reorder attributes lexicographically in preparation of the c14n support.boolean
disableSecurityProcessing
Disable security processing.boolean
fastBoot
If true, we aim for fasterJAXBContext
instantiation performance, instead of going after efficient sustained unmarshalling/marshalling performance.boolean
improvedXsiTypeHandling
Improved xsi type handling.com.sun.istack.Pool<Marshaller>
marshallerPool
Pool ofMarshaller
s.NameBuilder
nameBuilder
Used to assign indices to known names in this grammar.NameList
nameList
Keeps the list of known names.boolean
retainPropertyInfo
Store properties, so that they can be recovered in the run (is here because of JSON encoding of Jersey).boolean
supressAccessorWarnings
Suppress reflection accessor warnings.com.sun.istack.Pool<Unmarshaller>
unmarshallerPool
boolean
xmlAccessorFactorySupport
Flag that user has provided a custom AccessorFactory for JAXB to use-
Fields inherited from class com.sun.xml.bind.api.JAXBRIContext
ANNOTATION_READER, BACKUP_WITH_PARENT_NAMESPACE, CANONICALIZATION_SUPPORT, DEFAULT_NAMESPACE_REMAP, DISABLE_XML_SECURITY, ENABLE_XOP, IMPROVED_XSI_TYPE_HANDLING, RETAIN_REFERENCE_TO_INFO, SUBCLASS_REPLACEMENTS, SUPRESS_ACCESSOR_WARNINGS, TREAT_EVERYTHING_NILLABLE, TYPE_REFERENCES, XMLACCESSORFACTORY_SUPPORT
-
Fields inherited from class javax.xml.bind.JAXBContext
JAXB_CONTEXT_FACTORY
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description JAXBContextImpl
createAugmented(Class<?> clazz)
Creates aJAXBContextImpl
that includes the specified additional classes.Binder<Node>
createBinder()
<T> Binder<T>
createBinder(Class<T> domType)
Bridge
createBridge(TypeReference ref)
Creates a mini-marshaller/unmarshaller that can process aTypeReference
.BridgeContext
createBridgeContext()
Creates a newBridgeContext
instance.JAXBIntrospector
createJAXBIntrospector()
MarshallerImpl
createMarshaller()
static TransformerHandler
createTransformerHandler(boolean disableSecureProcessing)
Creates a new identity transformer.UnmarshallerImpl
createUnmarshaller()
Validator
createValidator()
void
generateEpisode(Result output)
Generates the episode file that represents the binding known to thisJAXBContext
, so that XJC can later do separate compilation.void
generateSchema(SchemaOutputResolver outputResolver)
Generates the schema documents from the model.<T> JaxBeanInfo<T>
getBeanInfo(Class<T> clazz)
Gets theJaxBeanInfo
object that can handle the given JAXB-bound class.<T> JaxBeanInfo<T>
getBeanInfo(Class<T> clazz, boolean fatal)
Gets theJaxBeanInfo
object that can handle the given JAXB-bound class.JaxBeanInfo
getBeanInfo(Object o)
Gets theJaxBeanInfo
object that can handle the given JAXB-bound object.JaxBeanInfo
getBeanInfo(Object o, boolean fatal)
Gets theJaxBeanInfo
object that can handle the given JAXB-bound object.String
getBuildId()
Gets the build information of the JAXB runtime.ElementBeanInfoImpl
getElement(Class scope, QName name)
QName
getElementName(Class o)
Allows to retrieve the element name based on Class.QName
getElementName(Object o)
If the given object is bound to an element in XML by JAXB, returns the element name.RawAccessor
getElementPropertyAccessor(Class wrapperBean, String nsUri, String localName)
Gets aRawAccessor
for the specified element property of the specified wrapper bean class.JaxBeanInfo
getGlobalType(QName name)
Gets theJaxBeanInfo
for the given named XML Schema type.List<String>
getKnownNamespaceURIs()
Gets the namespace URIs statically known to thisJAXBContext
.String
getNearestTypeName(QName name)
Finds a type name that this context recognizes which is "closest" to the given type name.int
getNumberOfAttributeNames()
int
getNumberOfElementNames()
int
getNumberOfLocalNames()
protected JaxBeanInfo
getOrCreate(RuntimeArrayInfo ai)
protected ClassBeanInfoImpl
getOrCreate(RuntimeClassInfo ci)
protected JaxBeanInfo
getOrCreate(RuntimeEnumLeafInfo eli)
JaxBeanInfo
getOrCreate(RuntimeTypeInfo e)
RuntimeTypeInfoSet
getRuntimeTypeInfoSet()
Allows you to access the runtime model information of the JAXB XML/Java binding.RuntimeTypeInfoSet
getTypeInfoSet()
Creates aRuntimeTypeInfoSet
.QName
getTypeName(TypeReference tr)
Returns the name of the XML Type bound to the specified Java type.Encoded[]
getUTF8NameTable()
Set<QName>
getValidRootNames()
Returns the set of valid root tag names.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.Set<XmlNs>
getXmlNsSet()
Returns declared XmlNs annotations (from package-level annotation XmlSchemaboolean
hasSwaRef()
True if this JAXBContext hasXmlAttachmentRef
.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.String
toString()
-
Methods inherited from class com.sun.xml.bind.api.JAXBRIContext
getBaseType, mangleNameToClassName, mangleNameToPropertyName, mangleNameToVariableName, newInstance, newInstance, newInstance
-
Methods inherited from class javax.xml.bind.JAXBContext
newInstance, newInstance, newInstance, newInstance, newInstance
-
-
-
-
Field Detail
-
beanInfos
protected Map<RuntimeTypeInfo,JaxBeanInfo> beanInfos
All createdJaxBeanInfo
s. Updated from eachJaxBeanInfo
s 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 com.sun.istack.Pool<Marshaller> marshallerPool
Pool ofMarshaller
s.
-
unmarshallerPool
public final com.sun.istack.Pool<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:
JAXBRIContext.TREAT_EVERYTHING_NILLABLE
-
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 fasterJAXBContext
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
-
-
Method Detail
-
getXmlNsSet
public Set<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 hasXmlAttachmentRef
.- Specified by:
hasSwaRef
in classJAXBRIContext
-
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 classJAXBRIContext
-
getTypeInfoSet
public RuntimeTypeInfoSet getTypeInfoSet() throws IllegalAnnotationsException
Creates aRuntimeTypeInfoSet
.- 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 theJaxBeanInfo
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 andfatal==false
.
-
getBeanInfo
public final JaxBeanInfo getBeanInfo(Object o, boolean fatal) throws JAXBException
Gets theJaxBeanInfo
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:
JAXBException
-
getBeanInfo
public final <T> JaxBeanInfo<T> getBeanInfo(Class<T> clazz)
Gets theJaxBeanInfo
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 andfatal==false
.
-
getBeanInfo
public final <T> JaxBeanInfo<T> getBeanInfo(Class<T> clazz, boolean fatal) throws JAXBException
Gets theJaxBeanInfo
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:
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 theJaxBeanInfo
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 classJAXBContext
-
createUnmarshaller
public UnmarshallerImpl createUnmarshaller()
- Specified by:
createUnmarshaller
in classJAXBContext
-
createValidator
public Validator createValidator()
- Specified by:
createValidator
in classJAXBContext
-
createJAXBIntrospector
public JAXBIntrospector createJAXBIntrospector()
- Overrides:
createJAXBIntrospector
in classJAXBContext
-
generateEpisode
public void generateEpisode(Result output)
Description copied from class:JAXBRIContext
Generates the episode file that represents the binding known to thisJAXBContext
, 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 classJAXBRIContext
- Parameters:
output
- This receives the generated episode file.
-
generateSchema
public void generateSchema(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 classJAXBRIContext
- Parameters:
outputResolver
- this object controls the output to which schemas will be sent.- Throws:
IOException
- ifSchemaOutputResolver
throws anIOException
.
-
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 classJAXBRIContext
- Parameters:
tr
- must not be null. This must be one of theTypeReference
s specified in theJAXBRIContext.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> Binder<T> createBinder(Class<T> domType)
- Overrides:
createBinder
in classJAXBContext
-
createBinder
public Binder<Node> createBinder()
- Overrides:
createBinder
in classJAXBContext
-
getElementName
public QName getElementName(Object o) throws 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 classJAXBRIContext
- Returns:
- null if the object is not bound to an element.
- Throws:
JAXBException
- if the object is not known to this context.
-
getElementName
public QName getElementName(Class o) throws JAXBException
Description copied from class:JAXBRIContext
Allows to retrieve the element name based on Class.- Specified by:
getElementName
in classJAXBRIContext
- Returns:
- Throws:
JAXBException
-
createBridge
public Bridge createBridge(TypeReference ref)
Description copied from class:JAXBRIContext
Creates a mini-marshaller/unmarshaller that can process aTypeReference
.- Specified by:
createBridge
in classJAXBRIContext
- 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 newBridgeContext
instance.- Specified by:
createBridgeContext
in classJAXBRIContext
- Returns:
- always a valid non-null instance.
-
getElementPropertyAccessor
public RawAccessor getElementPropertyAccessor(Class wrapperBean, String nsUri, String localName) throws JAXBException
Description copied from class:JAXBRIContext
Gets aRawAccessor
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 classJAXBRIContext
- Returns:
- always return non-null valid accessor object.
- Throws:
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 thisJAXBContext
.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 classJAXBRIContext
- 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 classJAXBRIContext
- Returns:
- may be null, if the runtime is loaded by a class loader that doesn't support the access to the manifest informatino.
-
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 JAXBException
Creates aJAXBContextImpl
that includes the specified additional classes.- Throws:
JAXBException
-
-