src/share/jaxws_classes/com/sun/xml/internal/ws/api/WSBinding.java

Thu, 31 Aug 2017 15:18:52 +0800

author
aoqi
date
Thu, 31 Aug 2017 15:18:52 +0800
changeset 637
9c07ef4934dd
parent 368
0989ad8c0860
parent 0
373ffda63c9a
permissions
-rw-r--r--

merge

     1 /*
     2  * Copyright (c) 1997, 2013, 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.api;
    28 import com.sun.istack.internal.NotNull;
    29 import com.sun.istack.internal.Nullable;
    30 import com.sun.xml.internal.ws.api.addressing.AddressingVersion;
    31 import com.sun.xml.internal.ws.api.message.Message;
    32 import com.sun.xml.internal.ws.api.pipe.Codec;
    33 import com.sun.xml.internal.ws.api.pipe.Tube;
    35 import javax.xml.namespace.QName;
    36 import javax.xml.ws.Binding;
    37 import javax.xml.ws.WebServiceFeature;
    38 import javax.xml.ws.handler.Handler;
    39 import java.util.List;
    40 import java.util.Set;
    43 /**
    44  * JAX-WS implementation of {@link Binding}.
    45  *
    46  * <p>
    47  * This object can be created by {@link BindingID#createBinding()}.
    48  *
    49  * <p>
    50  * Binding conceptually includes the on-the-wire format of the message,
    51  * this this object owns {@link Codec}.
    52  *
    53  * @author Kohsuke Kawaguchi
    54  */
    55 public interface WSBinding extends Binding {
    56     /**
    57      * Gets the SOAP version of this binding.
    58      *
    59      * TODO: clarify what to do with XML/HTTP binding
    60      *
    61      * <p>
    62      * This is just a short-cut for  {@code getBindingID().getSOAPVersion()}
    63      *
    64      * @return
    65      *      If the binding is using SOAP, this method returns
    66      *      a {@link SOAPVersion} constant.
    67      *
    68      *      If the binding is not based on SOAP, this method
    69      *      returns null. See {@link Message} for how a non-SOAP
    70      *      binding shall be handled by {@link Tube}s.
    71      */
    72     SOAPVersion getSOAPVersion();
    73     /**
    74      * Gets the WS-Addressing version of this binding.
    75      * <p/>
    76      * TODO: clarify what to do with XML/HTTP binding
    77      *
    78      * @return If the binding is using SOAP and WS-Addressing is enabled,
    79      *         this method returns a {@link AddressingVersion} constant.
    80      *         If binding is not using SOAP or WS-Addressing is not enabled,
    81      *         this method returns null.
    82      *
    83      *          This might be little slow as it has to go over all the features on binding.
    84      *          Its advisable to cache the addressingVersion wherever possible and reuse it.
    85      */
    86     AddressingVersion getAddressingVersion();
    88     /**
    89      * Gets the binding ID, which uniquely identifies the binding.
    90      *
    91      * <p>
    92      * The relevant specs define the binding IDs and what they mean.
    93      * The ID is used in many places to identify the kind of binding
    94      * (such as SOAP1.1, SOAP1.2, REST, ...)
    95      *
    96      * @return
    97      *      Always non-null same value.
    98      */
    99     @NotNull BindingID getBindingId();
   101     @NotNull@Override
   102     List<Handler> getHandlerChain();
   104     /**
   105      * Checks if a particular {@link WebServiceFeature} is enabled.
   106      *
   107      * @return
   108      *      true if enabled.
   109      */
   110     boolean isFeatureEnabled(@NotNull Class<? extends WebServiceFeature> feature);
   112     /**
   113      * Experimental: Checks if a particular {@link WebServiceFeature} on an operation is enabled.
   114      *
   115      * @param operationName
   116      *      The WSDL name of the operation.
   117      * @return
   118      *      true if enabled.
   119      */
   120     boolean isOperationFeatureEnabled(@NotNull Class<? extends WebServiceFeature> feature,
   121             @NotNull final QName operationName);
   123     /**
   124      * Gets a {@link WebServiceFeature} of the specific type.
   125      *
   126      * @param featureType
   127      *      The type of the feature to retrieve.
   128      * @return
   129      *      If the feature is present and enabled, return a non-null instance.
   130      *      Otherwise null.
   131      */
   132     @Nullable <F extends WebServiceFeature> F getFeature(@NotNull Class<F> featureType);
   134     /**
   135      * Experimental: Gets a {@link WebServiceFeature} of the specific type that applies to an operation.
   136      *
   137      * @param featureType
   138      *      The type of the feature to retrieve.
   139      * @param operationName
   140      *      The WSDL name of the operation.
   141      * @return
   142      *      If the feature is present and enabled, return a non-null instance.
   143      *      Otherwise null.
   144      */
   145     @Nullable <F extends WebServiceFeature> F getOperationFeature(@NotNull Class<F> featureType,
   146             @NotNull final QName operationName);
   148     /**
   149      * Returns a list of features associated with {@link WSBinding}.
   150      */
   151     @NotNull WSFeatureList getFeatures();
   153     /**
   154      * Experimental: Returns a list of features associated with {@link WSBinding} that apply to
   155      * a particular operation.
   156      *
   157      * @param operationName
   158      *      The WSDL name of the operation.
   159      */
   160     @NotNull WSFeatureList getOperationFeatures(@NotNull final QName operationName);
   162     /**
   163      * Experimental: Returns a list of features associated with {@link WSBinding} that apply to
   164      * the input message of an operation.
   165      *
   166      * @param operationName
   167      *      The WSDL name of the operation.
   168      */
   169     @NotNull WSFeatureList getInputMessageFeatures(@NotNull final QName operationName);
   171     /**
   172      * Experimental: Returns a list of features associated with {@link WSBinding} that apply to
   173      * the output message of an operation.
   174      *
   175      * @param operationName
   176      *      The WSDL name of the operation.
   177      */
   178     @NotNull WSFeatureList getOutputMessageFeatures(@NotNull final QName operationName);
   180     /**
   181      * Experimental: Returns a list of features associated with {@link WSBinding} that apply to
   182      * one of the fault messages of an operation.
   183      *
   184      * @param operationName
   185      *      The WSDL name of the operation.
   186      * @param messageName
   187      *      The WSDL name of the fault message.
   188      */
   189     @NotNull WSFeatureList getFaultMessageFeatures(@NotNull final QName operationName,
   190             @NotNull final QName messageName);
   192     /**
   193      * Returns set of header QNames known to be supported by this binding.
   194      * @return Set of known QNames
   195      */
   196     @NotNull Set<QName> getKnownHeaders();
   198     /**
   199      * Adds header QName to set known to be supported by this binding
   200      * @param knownHeader Known header QName
   201      * @return true, if new entry was added; false, if known header QName was already known
   202      */
   203     boolean addKnownHeader(QName knownHeader);
   205     /**
   206      * @return A MessageContextFactory configured according to the binding's features.
   207      */
   208     @NotNull com.oracle.webservices.internal.api.message.MessageContextFactory getMessageContextFactory();
   209 }

mercurial