public class ModelBuilder<T,C,F,M> extends Object implements ModelBuilderI<T,C,F,M>
TypeInfoSet
(a set of JAXB properties)
by using ElementInfoImpl
and ClassInfoImpl
.
from annotated Java classes.
This class uses Navigator
and AnnotationReader
to
work with arbitrary annotation source and arbitrary Java model.
For this purpose this class is parameterized.
Modifier and Type | Field and Description |
---|---|
String |
defaultNsUri
JAXB doesn't want to use namespaces unless we are told to, but WS-I BP
conformace requires JAX-RPC to always use a non-empty namespace URI.
|
boolean |
hasSwaRef
Set to true if the model includes
XmlAttachmentRef . |
com.sun.xml.bind.v2.model.nav.Navigator<T,C,F,M> |
nav |
AnnotationReader<T,C,F,M> |
reader |
Constructor and Description |
---|
ModelBuilder(AnnotationReader<T,C,F,M> reader,
com.sun.xml.bind.v2.model.nav.Navigator<T,C,F,M> navigator,
Map<C,C> subclassReplacements,
String defaultNamespaceRemap) |
public final AnnotationReader<T,C,F,M> reader
public final com.sun.xml.bind.v2.model.nav.Navigator<T,C,F,M> nav
public final String defaultNsUri
To work around this issue, we allow the use of the empty namespaces to be replaced by a particular designated namespace URI.
This field keeps the value of that replacing namespace URI. When there's no replacement, this field is set to "".
public boolean hasSwaRef
XmlAttachmentRef
. JAX-WS
needs to know this information.protected com.sun.xml.bind.v2.model.impl.TypeInfoSetImpl<T,C,F,M> createTypeInfoSet()
public com.sun.xml.bind.v2.model.core.NonElement<T,C> getClassInfo(C clazz, Locatable upstream)
public com.sun.xml.bind.v2.model.core.NonElement<T,C> getClassInfo(C clazz, boolean searchForSuperClass, Locatable upstream)
subclassReplacements
to kick in for the super class search, which will cause infinite recursion.public com.sun.xml.bind.v2.model.core.NonElement<T,C> getTypeInfo(T t, Locatable upstream)
NonElement
that represents it.public com.sun.xml.bind.v2.model.core.NonElement<T,C> getTypeInfo(com.sun.xml.bind.v2.model.core.Ref<T,C> ref)
protected com.sun.xml.bind.v2.model.impl.EnumLeafInfoImpl<T,C,F,M> createEnumLeafInfo(C clazz, Locatable upstream)
protected com.sun.xml.bind.v2.model.impl.ElementInfoImpl<T,C,F,M> createElementInfo(com.sun.xml.bind.v2.model.impl.RegistryInfoImpl<T,C,F,M> registryInfo, M m) throws IllegalAnnotationException
IllegalAnnotationException
public com.sun.xml.bind.v2.model.core.RegistryInfo<T,C> addRegistry(C registryClass, Locatable upstream)
XmlRegistry
and records all the element mappings
in it.public com.sun.xml.bind.v2.model.core.RegistryInfo<T,C> getRegistry(String packageName)
RegistryInfo
for the given package.public com.sun.xml.bind.v2.model.core.TypeInfoSet<T,C,F,M> link()
Don't expose implementation classes in the signature.
TypeInfoSet
that represents the model,
or null if there was an error.public void setErrorHandler(com.sun.xml.bind.v2.model.core.ErrorHandler errorHandler)
errorHandler
- can be null.public final void reportError(IllegalAnnotationException e)
public boolean isReplaced(C sc)
public com.sun.xml.bind.v2.model.nav.Navigator<T,C,F,M> getNavigator()
getNavigator
in interface ModelBuilderI<T,C,F,M>
Copyright © 2016 Oracle Corporation. All rights reserved.