src/share/jaxws_classes/com/sun/xml/internal/ws/spi/db/OldBridge.java

Thu, 12 Oct 2017 19:44:07 +0800

author
aoqi
date
Thu, 12 Oct 2017 19:44:07 +0800
changeset 760
e530533619ec
parent 637
9c07ef4934dd
permissions
-rw-r--r--

merge

     1 /*
     2  * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.  Oracle designates this
     8  * particular file as subject to the "Classpath" exception as provided
     9  * by Oracle in the LICENSE file that accompanied this code.
    10  *
    11  * This code is distributed in the hope that it will be useful, but WITHOUT
    12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    14  * version 2 for more details (a copy is included in the LICENSE file that
    15  * accompanied this code).
    16  *
    17  * You should have received a copy of the GNU General Public License version
    18  * 2 along with this work; if not, write to the Free Software Foundation,
    19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    20  *
    21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
    22  * or visit www.oracle.com if you need additional information or have any
    23  * questions.
    24  */
    26 package com.sun.xml.internal.ws.spi.db;
    28 import java.io.InputStream;
    29 import java.io.OutputStream;
    31 import javax.xml.bind.JAXBException;
    32 import javax.xml.bind.Marshaller;
    33 import javax.xml.bind.Unmarshaller;
    34 import javax.xml.bind.attachment.AttachmentMarshaller;
    35 import javax.xml.bind.attachment.AttachmentUnmarshaller;
    36 import javax.xml.namespace.NamespaceContext;
    37 import javax.xml.stream.XMLStreamReader;
    38 import javax.xml.stream.XMLStreamWriter;
    39 import javax.xml.transform.Result;
    40 import javax.xml.transform.Source;
    42 import com.sun.istack.internal.NotNull;
    43 import com.sun.istack.internal.Nullable;
    44 import com.sun.xml.internal.bind.api.BridgeContext;
    45 import com.sun.xml.internal.bind.v2.runtime.BridgeContextImpl;
    46 import com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl;
    48 import org.w3c.dom.Node;
    49 import org.xml.sax.ContentHandler;
    51 /**
    52  * Mini-marshaller/unmarshaller that is specialized for a particular
    53  * element name and a type.
    54  *
    55  * <p>
    56  * Instances of this class is stateless and multi-thread safe.
    57  * They are reentrant.
    58  *
    59  * <p>
    60  * All the marshal operation generates fragments.
    61  *
    62  * <p>
    63  * <b>Subject to change without notice</b>.
    64  *
    65  * @since JAXB 2.0 EA1
    66  * @author Kohsuke Kawaguchi
    67  */
    68 public abstract class OldBridge<T> {
    69     protected OldBridge(JAXBContextImpl context) {
    70         this.context = context;
    71     }
    73     protected final JAXBContextImpl context;
    75     /**
    76      * Gets the {@link BindingContext} to which this object belongs.
    77      *
    78      * @since 2.1
    79      */
    80     public @NotNull BindingContext getContext() {
    81 //        return context;
    82         return null;
    83     }
    85     /**
    86      *
    87      * @throws JAXBException
    88      *      if there was an error while marshalling.
    89      *
    90      * @since 2.0 EA1
    91      */
    92     public final void marshal(T object,XMLStreamWriter output) throws JAXBException {
    93         marshal(object,output,null);
    94     }
    95     public final void marshal(T object,XMLStreamWriter output, AttachmentMarshaller am) throws JAXBException {
    96         Marshaller m = context.marshallerPool.take();
    97         m.setAttachmentMarshaller(am);
    98         marshal(m,object,output);
    99         m.setAttachmentMarshaller(null);
   100         context.marshallerPool.recycle(m);
   101     }
   103     public final void marshal(@NotNull BridgeContext context,T object,XMLStreamWriter output) throws JAXBException {
   104         marshal( ((BridgeContextImpl)context).marshaller, object, output );
   105     }
   107     public abstract void marshal(@NotNull Marshaller m,T object,XMLStreamWriter output) throws JAXBException;
   110     /**
   111      * Marshals the specified type object with the implicit element name
   112      * associated with this instance of {@link XMLBridge}.
   113      *
   114      * @param nsContext
   115      *      if this marshalling is done to marshal a subelement, this {@link NamespaceContext}
   116      *      represents in-scope namespace bindings available for that element. Can be null,
   117      *      in which case JAXB assumes no in-scope namespaces.
   118      * @throws JAXBException
   119      *      if there was an error while marshalling.
   120      *
   121      * @since 2.0 EA1
   122      */
   123     public void marshal(T object,OutputStream output, NamespaceContext nsContext) throws JAXBException {
   124         marshal(object,output,nsContext,null);
   125     }
   126     /**
   127      * @since 2.0.2
   128      */
   129     public void marshal(T object,OutputStream output, NamespaceContext nsContext, AttachmentMarshaller am) throws JAXBException {
   130         Marshaller m = context.marshallerPool.take();
   131         m.setAttachmentMarshaller(am);
   132         marshal(m,object,output,nsContext);
   133         m.setAttachmentMarshaller(null);
   134         context.marshallerPool.recycle(m);
   135     }
   137     public final void marshal(@NotNull BridgeContext context,T object,OutputStream output, NamespaceContext nsContext) throws JAXBException {
   138         marshal( ((BridgeContextImpl)context).marshaller, object, output, nsContext );
   139     }
   141     public abstract void marshal(@NotNull Marshaller m,T object,OutputStream output, NamespaceContext nsContext) throws JAXBException;
   144     public final void marshal(T object,Node output) throws JAXBException {
   145         Marshaller m = context.marshallerPool.take();
   146         marshal(m,object,output);
   147         context.marshallerPool.recycle(m);
   148     }
   150     public final void marshal(@NotNull BridgeContext context,T object,Node output) throws JAXBException {
   151         marshal( ((BridgeContextImpl)context).marshaller, object, output );
   152     }
   154     public abstract void marshal(@NotNull Marshaller m,T object,Node output) throws JAXBException;
   157     /**
   158      * @since 2.0 EA4
   159      */
   160     public final void marshal(T object, ContentHandler contentHandler) throws JAXBException {
   161         marshal(object,contentHandler,null);
   162     }
   163     /**
   164      * @since 2.0.2
   165      */
   166     public final void marshal(T object, ContentHandler contentHandler, AttachmentMarshaller am) throws JAXBException {
   167         Marshaller m = context.marshallerPool.take();
   168         m.setAttachmentMarshaller(am);
   169         marshal(m,object,contentHandler);
   170         m.setAttachmentMarshaller(null);
   171         context.marshallerPool.recycle(m);
   172     }
   173     public final void marshal(@NotNull BridgeContext context,T object, ContentHandler contentHandler) throws JAXBException {
   174         marshal( ((BridgeContextImpl)context).marshaller, object, contentHandler );
   175     }
   176     public abstract void marshal(@NotNull Marshaller m,T object, ContentHandler contentHandler) throws JAXBException;
   178     /**
   179      * @since 2.0 EA4
   180      */
   181     public final void marshal(T object, Result result) throws JAXBException {
   182         Marshaller m = context.marshallerPool.take();
   183         marshal(m,object,result);
   184         context.marshallerPool.recycle(m);
   185     }
   186     public final void marshal(@NotNull BridgeContext context,T object, Result result) throws JAXBException {
   187         marshal( ((BridgeContextImpl)context).marshaller, object, result );
   188     }
   189     public abstract void marshal(@NotNull Marshaller m,T object, Result result) throws JAXBException;
   193     private T exit(T r, Unmarshaller u) {
   194         u.setAttachmentUnmarshaller(null);
   195         context.unmarshallerPool.recycle(u);
   196         return r;
   197     }
   199     /**
   200      * Unmarshals the specified type object.
   201      *
   202      * @param in
   203      *      the parser must be pointing at a start tag
   204      *      that encloses the XML type that this {@link XMLBridge} is
   205      *      instanciated for.
   206      *
   207      * @return
   208      *      never null.
   209      *
   210      * @throws JAXBException
   211      *      if there was an error while unmarshalling.
   212      *
   213      * @since 2.0 EA1
   214      */
   215     public final @NotNull T unmarshal(@NotNull XMLStreamReader in) throws JAXBException {
   216         return unmarshal(in,null);
   217     }
   218     /**
   219      * @since 2.0.3
   220      */
   221     public final @NotNull T unmarshal(@NotNull XMLStreamReader in, @Nullable AttachmentUnmarshaller au) throws JAXBException {
   222         Unmarshaller u = context.unmarshallerPool.take();
   223         u.setAttachmentUnmarshaller(au);
   224         return exit(unmarshal(u,in),u);
   225     }
   226     public final @NotNull T unmarshal(@NotNull BridgeContext context, @NotNull XMLStreamReader in) throws JAXBException {
   227         return unmarshal( ((BridgeContextImpl)context).unmarshaller, in );
   228     }
   229     public abstract @NotNull T unmarshal(@NotNull Unmarshaller u, @NotNull XMLStreamReader in) throws JAXBException;
   231     /**
   232      * Unmarshals the specified type object.
   233      *
   234      * @param in
   235      *      the parser must be pointing at a start tag
   236      *      that encloses the XML type that this {@link XMLBridge} is
   237      *      instanciated for.
   238      *
   239      * @return
   240      *      never null.
   241      *
   242      * @throws JAXBException
   243      *      if there was an error while unmarshalling.
   244      *
   245      * @since 2.0 EA1
   246      */
   247     public final @NotNull T unmarshal(@NotNull Source in) throws JAXBException {
   248         return unmarshal(in,null);
   249     }
   250     /**
   251      * @since 2.0.3
   252      */
   253     public final @NotNull T unmarshal(@NotNull Source in, @Nullable AttachmentUnmarshaller au) throws JAXBException {
   254         Unmarshaller u = context.unmarshallerPool.take();
   255         u.setAttachmentUnmarshaller(au);
   256         return exit(unmarshal(u,in),u);
   257     }
   258     public final @NotNull T unmarshal(@NotNull BridgeContext context, @NotNull Source in) throws JAXBException {
   259         return unmarshal( ((BridgeContextImpl)context).unmarshaller, in );
   260     }
   261     public abstract @NotNull T unmarshal(@NotNull Unmarshaller u, @NotNull Source in) throws JAXBException;
   263     /**
   264      * Unmarshals the specified type object.
   265      *
   266      * @param in
   267      *      the parser must be pointing at a start tag
   268      *      that encloses the XML type that this {@link XMLBridge} is
   269      *      instanciated for.
   270      *
   271      * @return
   272      *      never null.
   273      *
   274      * @throws JAXBException
   275      *      if there was an error while unmarshalling.
   276      *
   277      * @since 2.0 EA1
   278      */
   279     public final @NotNull T unmarshal(@NotNull InputStream in) throws JAXBException {
   280         Unmarshaller u = context.unmarshallerPool.take();
   281         return exit(unmarshal(u,in),u);
   282     }
   283     public final @NotNull T unmarshal(@NotNull BridgeContext context, @NotNull InputStream in) throws JAXBException {
   284         return unmarshal( ((BridgeContextImpl)context).unmarshaller, in );
   285     }
   286     public abstract @NotNull T unmarshal(@NotNull Unmarshaller u, @NotNull InputStream in) throws JAXBException;
   288     /**
   289      * Unmarshals the specified type object.
   290      *
   291      * @param n
   292      *      Node to be unmarshalled.
   293      *
   294      * @return
   295      *      never null.
   296      *
   297      * @throws JAXBException
   298      *      if there was an error while unmarshalling.
   299      *
   300      * @since 2.0 FCS
   301      */
   302     public final @NotNull T unmarshal(@NotNull Node n) throws JAXBException {
   303         return unmarshal(n,null);
   304     }
   305     /**
   306      * @since 2.0.3
   307      */
   308     public final @NotNull T unmarshal(@NotNull Node n, @Nullable AttachmentUnmarshaller au) throws JAXBException {
   309         Unmarshaller u = context.unmarshallerPool.take();
   310         u.setAttachmentUnmarshaller(au);
   311         return exit(unmarshal(u,n),u);
   312     }
   313     public final @NotNull T unmarshal(@NotNull BridgeContext context, @NotNull Node n) throws JAXBException {
   314         return unmarshal( ((BridgeContextImpl)context).unmarshaller, n );
   315     }
   316     public abstract @NotNull T unmarshal(@NotNull Unmarshaller context, @NotNull Node n) throws JAXBException;
   318     /**
   319      * Gets the {@link TypeInfo} from which this bridge was created.
   320      */
   321     public abstract TypeInfo getTypeReference();
   322 }

mercurial