Class ModelBuilder<T,​C,​F,​M>

  • All Implemented Interfaces:
    ModelBuilderI<T,​C,​F,​M>
    Direct Known Subclasses:
    RuntimeModelBuilder

    public class ModelBuilder<T,​C,​F,​M>
    extends Object
    implements ModelBuilderI<T,​C,​F,​M>
    Builds a 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.

    Author:
    Kohsuke Kawaguchi (kohsuke.kawaguchi@sun.com)
    • Field Detail

      • defaultNsUri

        public final 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. (see http://www.ws-i.org/Profiles/BasicProfile-1.0-2004-04-16.html#WSDLTYPES R2105)

        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 "".

      • hasSwaRef

        public boolean hasSwaRef
        Set to true if the model includes XmlAttachmentRef. JAX-WS needs to know this information.
    • Method Detail

      • createTypeInfoSet

        protected com.sun.xml.bind.v2.model.impl.TypeInfoSetImpl<T,​C,​F,​M> createTypeInfoSet()
      • getClassInfo

        public NonElement<T,​C> getClassInfo​(C clazz,
                                                  boolean searchForSuperClass,
                                                  Locatable upstream)
        For limited cases where the caller needs to search for a super class. This is necessary because we don't want subclassReplacements to kick in for the super class search, which will cause infinite recursion.
      • getTypeInfo

        public NonElement<T,​C> getTypeInfo​(T t,
                                                 Locatable upstream)
        Have the builder recognize the type (if it hasn't done so yet), and returns a NonElement that represents it.
        Returns:
        always non-null.
      • getTypeInfo

        public NonElement<T,​C> getTypeInfo​(Ref<T,​C> ref)
        This method is used to add a root reference to a model.
      • createEnumLeafInfo

        protected com.sun.xml.bind.v2.model.impl.EnumLeafInfoImpl<T,​C,​F,​M> createEnumLeafInfo​(C clazz,
                                                                                                                Locatable upstream)
      • getRegistry

        public RegistryInfo<T,​C> getRegistry​(String packageName)
        Gets a RegistryInfo for the given package.
        Returns:
        null if no registry exists for the package. unlike other getXXX methods on this class, this method is side-effect free.
      • link

        public TypeInfoSet<T,​C,​F,​M> link()
        Called after all the classes are added to the type set to "link" them together.

        Don't expose implementation classes in the signature.

        Returns:
        fully built TypeInfoSet that represents the model, or null if there was an error.
      • setErrorHandler

        public void setErrorHandler​(ErrorHandler errorHandler)
        Sets the error handler that receives errors discovered during the model building.
        Parameters:
        errorHandler - can be null.
      • isReplaced

        public boolean isReplaced​(C sc)