aboutsummaryrefslogtreecommitdiff
path: root/src/share/jaxws_classes/com/sun/xml/internal/ws/api/message/Packet.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/share/jaxws_classes/com/sun/xml/internal/ws/api/message/Packet.java')
-rw-r--r--src/share/jaxws_classes/com/sun/xml/internal/ws/api/message/Packet.java1475
1 files changed, 0 insertions, 1475 deletions
diff --git a/src/share/jaxws_classes/com/sun/xml/internal/ws/api/message/Packet.java b/src/share/jaxws_classes/com/sun/xml/internal/ws/api/message/Packet.java
deleted file mode 100644
index fc981a9e..00000000
--- a/src/share/jaxws_classes/com/sun/xml/internal/ws/api/message/Packet.java
+++ /dev/null
@@ -1,1475 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.ws.api.message;
-
-import com.oracle.webservices.internal.api.message.ContentType;
-import com.oracle.webservices.internal.api.message.PropertySet;
-import com.sun.istack.internal.NotNull;
-import com.sun.istack.internal.Nullable;
-import com.sun.xml.internal.bind.marshaller.SAX2DOMEx;
-import com.sun.xml.internal.ws.addressing.WsaPropertyBag;
-import com.sun.xml.internal.ws.addressing.WsaServerTube;
-import com.sun.xml.internal.ws.addressing.WsaTubeHelper;
-import com.sun.xml.internal.ws.api.Component;
-import com.sun.xml.internal.ws.api.EndpointAddress;
-import com.sun.xml.internal.ws.api.SOAPVersion;
-import com.sun.xml.internal.ws.api.WSBinding;
-import com.sun.xml.internal.ws.api.addressing.AddressingVersion;
-import com.sun.xml.internal.ws.api.addressing.WSEndpointReference;
-import com.sun.xml.internal.ws.api.model.JavaMethod;
-import com.sun.xml.internal.ws.api.model.SEIModel;
-import com.sun.xml.internal.ws.api.model.WSDLOperationMapping;
-import com.sun.xml.internal.ws.api.model.wsdl.WSDLOperation;
-import com.sun.xml.internal.ws.api.model.wsdl.WSDLPort;
-import com.sun.xml.internal.ws.api.pipe.Codec;
-import com.sun.xml.internal.ws.api.pipe.Tube;
-import com.sun.xml.internal.ws.api.server.Adapter;
-import com.sun.xml.internal.ws.api.server.TransportBackChannel;
-import com.sun.xml.internal.ws.api.server.WSEndpoint;
-import com.sun.xml.internal.ws.api.server.WebServiceContextDelegate;
-import com.sun.xml.internal.ws.api.streaming.XMLStreamWriterFactory;
-import com.sun.xml.internal.ws.client.*;
-import com.sun.xml.internal.ws.developer.JAXWSProperties;
-import com.sun.xml.internal.ws.encoding.MtomCodec;
-import com.sun.xml.internal.ws.message.RelatesToHeader;
-import com.sun.xml.internal.ws.message.StringHeader;
-import com.sun.xml.internal.ws.util.DOMUtil;
-import com.sun.xml.internal.ws.util.xml.XmlUtil;
-import com.sun.xml.internal.ws.wsdl.DispatchException;
-import com.sun.xml.internal.ws.wsdl.OperationDispatcher;
-import com.sun.xml.internal.ws.resources.AddressingMessages;
-
-
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.xml.sax.SAXException;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.SOAPException;
-import javax.xml.soap.SOAPMessage;
-import javax.xml.stream.XMLStreamWriter;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.ws.BindingProvider;
-import javax.xml.ws.Dispatch;
-import javax.xml.ws.WebServiceContext;
-import javax.xml.ws.WebServiceException;
-import javax.xml.ws.handler.LogicalMessageContext;
-import javax.xml.ws.handler.MessageContext;
-import javax.xml.ws.handler.soap.SOAPMessageContext;
-import javax.xml.ws.soap.MTOMFeature;
-
-import java.util.*;
-import java.util.logging.Logger;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.nio.channels.WritableByteChannel;
-
-/**
- * Represents a container of a {@link Message}.
- *
- * <h2>What is a {@link Packet}?</h2>
- * <p>
- * A packet can be thought of as a frame/envelope/package that wraps
- * a {@link Message}. A packet keeps track of optional metadata (properties)
- * about a {@link Message} that doesn't go across the wire.
- * This roughly corresponds to {@link MessageContext} in the JAX-WS API.
- *
- * <p>
- * Usually a packet contains a {@link Message} in it, but sometimes
- * (such as for a reply of an one-way operation), a packet may
- * float around without a {@link Message} in it.
- *
- *
- * <a name="properties"></a>
- * <h2>Properties</h2>
- * <p>
- * Information frequently used inside the JAX-WS RI
- * is stored in the strongly-typed fields. Other information is stored
- * in terms of a generic {@link Map} (see
- * {@link #invocationProperties}.)
- *
- * <p>
- * Some properties need to be retained between request and response,
- * some don't. For strongly typed fields, this characteristic is
- * statically known for each of them, and propagation happens accordingly.
- * For generic information stored in {@link Map}, {@link #invocationProperties}
- * stores per-invocation scope information (which carries over to
- * the response.)
- *
- * <p>
- * This object is used as the backing store of {@link MessageContext}, and
- * {@link LogicalMessageContext} and {@link SOAPMessageContext} will
- * be delegating to this object for storing/retrieving values.
- *
- *
- * <h3>Relationship to request/response context</h3>
- * <p>
- * {@link BindingProvider#getRequestContext() Request context} is used to
- * seed the initial values of {@link Packet}.
- * Some of those values go to strongly-typed fields, and others go to
- * {@link #invocationProperties}, as they need to be retained in the reply message.
- *
- * <p>
- * Similarly, {@link BindingProvider#getResponseContext() response context}
- * is constructed from {@link Packet} (or rather it's just a view of {@link Packet}.)
- * by using properties from {@link #invocationProperties},
- * modulo properties named explicitly in {@link #getHandlerScopePropertyNames(boolean)}.
- * IOW, properties added to {@link #invocationProperties}
- * are exposed to the response context by default.
- *
- *
- *
- * <h3>TODO</h3>
- * <ol>
- * <li>this class needs to be cloneable since Message is copiable.
- * <li>The three live views aren't implemented correctly. It will be
- * more work to do so, although I'm sure it's possible.
- * <li>{@link PropertySet.Property} annotation is to make it easy
- * for {@link MessageContext} to export properties on this object,
- * but it probably needs some clean up.
- * </ol>
- *
- * @author Kohsuke Kawaguchi
- */
-public final class Packet
- // Packet must continue to extend/implement deprecated interfaces until downstream
- // usage is updated.
- extends com.oracle.webservices.internal.api.message.BaseDistributedPropertySet
- implements com.oracle.webservices.internal.api.message.MessageContext, MessageMetadata {
-
- /**
- * Creates a {@link Packet} that wraps a given {@link Message}.
- *
- * <p>
- * This method should be only used to create a fresh {@link Packet}.
- * To create a {@link Packet} for a reply, use {@link #createResponse(Message)}.
- *
- * @param request
- * The request {@link Message}. Can be null.
- */
- public Packet(Message request) {
- this();
- this.message = request;
- if (message != null) message.setMessageMedadata(this);
- }
-
- /**
- * Creates an empty {@link Packet} that doesn't have any {@link Message}.
- */
- public Packet() {
- this.invocationProperties = new HashMap<String, Object>();
- }
-
- /**
- * Used by {@link #createResponse(Message)} and {@link #copy(boolean)}.
- */
- private Packet(Packet that) {
- relatePackets(that, true);
- this.invocationProperties = that.invocationProperties;
- }
-
- /**
- * Creates a copy of this {@link Packet}.
- *
- * @param copyMessage determines whether the {@link Message} from the original {@link Packet} should be copied as
- * well, or not. If the value is {@code false}, the {@link Message} in the copy of the {@link Packet} is {@code null}.
- * @return copy of the original packet
- */
- public Packet copy(boolean copyMessage) {
- // the copy constructor is originally designed for creating a response packet,
- // but so far the implementation is usable for this purpose as well, so calling the copy constructor
- // to avoid code dupliation.
- Packet copy = new Packet(this);
- if (copyMessage && this.message != null) {
- copy.message = this.message.copy();
- }
- if (copy.message != null) copy.message.setMessageMedadata(copy);
- return copy;
- }
-
- private Message message;
-
- /**
- * Gets the last {@link Message} set through {@link #setMessage(Message)}.
- *
- * @return may null. See the class javadoc for when it's null.
- */
- public Message getMessage() {
- if (message != null && !(message instanceof MessageWrapper)) {
- message = new MessageWrapper(this, message);
- }
- return message;
- }
-
- public Message getInternalMessage() {
- return (message instanceof MessageWrapper)? ((MessageWrapper)message).delegate : message;
- }
-
- public WSBinding getBinding() {
- if (endpoint != null) {
- return endpoint.getBinding();
- }
- if (proxy != null) {
- return (WSBinding) proxy.getBinding();
- }
- return null;
- }
- /**
- * Sets a {@link Message} to this packet.
- *
- * @param message Can be null.
- */
- public void setMessage(Message message) {
- this.message = message;
- if (message != null) this.message.setMessageMedadata(this);
- }
-
- private WSDLOperationMapping wsdlOperationMapping = null;
-
- private QName wsdlOperation;
-
- /**
- * Returns the QName of the wsdl operation associated with this packet.
- * <p/>
- * Information such as Payload QName, wsa:Action header, SOAPAction HTTP header are used depending on the features
- * enabled on the particular port.
- *
- * @return null if there is no WSDL model or
- * runtime cannot uniquely identify the wsdl operation from the information in the packet.
- */
- @Property(MessageContext.WSDL_OPERATION)
- public final
- @Nullable
- QName getWSDLOperation() {
- if (wsdlOperation != null) return wsdlOperation;
- if ( wsdlOperationMapping == null) wsdlOperationMapping = getWSDLOperationMapping();
- if ( wsdlOperationMapping != null ) wsdlOperation = wsdlOperationMapping.getOperationName();
- return wsdlOperation;
- }
-
- public WSDLOperationMapping getWSDLOperationMapping() {
- if (wsdlOperationMapping != null) return wsdlOperationMapping;
- OperationDispatcher opDispatcher = null;
- if (endpoint != null) {
- opDispatcher = endpoint.getOperationDispatcher();
- } else if (proxy != null) {
- opDispatcher = ((Stub) proxy).getOperationDispatcher();
- }
- //OpDispatcher is null when there is no WSDLModel
- if (opDispatcher != null) {
- try {
- wsdlOperationMapping = opDispatcher.getWSDLOperationMapping(this);
- } catch (DispatchException e) {
- //Ignore, this might be a protocol message which may not have a wsdl operation
- //LOGGER.info("Cannot resolve wsdl operation that this Packet is targeted for.");
- }
- }
- return wsdlOperationMapping;
- }
-
- /**
- * Set the wsdl operation to avoid lookup from other data.
- * This is useful in SEI based clients, where the WSDL operation can be known
- * from the associated {@link JavaMethod}
- *
- * @param wsdlOp QName
- */
- public void setWSDLOperation(QName wsdlOp) {
- this.wsdlOperation = wsdlOp;
- }
-
- /**
- * True if this message came from a transport (IOW inbound),
- * and in paricular from a "secure" transport. A transport
- * needs to set this flag appropriately.
- *
- * <p>
- * This is a requirement from the security team.
- */
- // TODO: expose this as a property
- public boolean wasTransportSecure;
-
- /**
- * Inbound transport headers are captured in a transport neutral way.
- * Transports are expected to fill this data after creating a Packet.
- * <p>
- * {@link SOAPMessage#getMimeHeaders()} would return these headers.
- */
- public static final String INBOUND_TRANSPORT_HEADERS = "com.sun.xml.internal.ws.api.message.packet.inbound.transport.headers";
-
- /**
- * Outbound transport headers are captured in a transport neutral way.
- *
- * <p>
- * Transports may choose to ignore certain headers that interfere with
- * its correct operation, such as
- * <tt>Content-Type</tt> and <tt>Content-Length</tt>.
- */
- public static final String OUTBOUND_TRANSPORT_HEADERS = "com.sun.xml.internal.ws.api.message.packet.outbound.transport.headers";
-
- /**
- *
- */
- public static final String HA_INFO = "com.sun.xml.internal.ws.api.message.packet.hainfo";
-
-
- /**
- * This property holds the snapshot of HandlerConfiguration
- * at the time of invocation.
- * This property is used by MUPipe and HandlerPipe implementations.
- */
- @Property(BindingProviderProperties.JAXWS_HANDLER_CONFIG)
- public HandlerConfiguration handlerConfig;
-
- /**
- * If a message originates from a proxy stub that implements
- * a port interface, this field is set to point to that object.
- *
- * TODO: who's using this property?
- */
- @Property(BindingProviderProperties.JAXWS_CLIENT_HANDLE_PROPERTY)
- public BindingProvider proxy;
-
- /**
- * Determines if the governing {@link Adapter} or {@link com.sun.xml.internal.ws.api.pipe.Fiber.CompletionCallback}
- * will handle delivering response messages targeted at non-anonymous endpoint
- * addresses. Prior to the introduction of this flag
- * the {@link WsaServerTube} would deliver non-anonymous responses.
- */
- public boolean isAdapterDeliversNonAnonymousResponse;
-
- /**
- * During invocation of a client Stub or Dispatch a Packet is
- * created then the Stub's RequestContext is copied into the
- * Packet. On certain internal cases the Packet is created
- * *before* the invocation. In those cases we want the contents
- * of the Packet to take precedence when ever any key/value pairs
- * collide : if the Packet contains a value for a key use it,
- * otherwise copy as usual from Stub.
- */
- public boolean packetTakesPriorityOverRequestContext = false;
-
- /**
- * The endpoint address to which this message is sent to.
- *
- * <p>
- * The JAX-WS spec allows this to be changed for each message,
- * so it's designed to be a property.
- *
- * <p>
- * Must not be null for a request message on the client. Otherwise
- * it's null.
- */
- public EndpointAddress endpointAddress;
-
- /**
- * @deprecated
- * The programatic acccess should be done via
- * {@link #endpointAddress}. This is for JAX-WS client applications
- * that access this property via {@link BindingProvider#ENDPOINT_ADDRESS_PROPERTY}.
- */
- @Property(BindingProvider.ENDPOINT_ADDRESS_PROPERTY)
- public String getEndPointAddressString() {
- if (endpointAddress == null) {
- return null;
- } else {
- return endpointAddress.toString();
- }
- }
-
- public void setEndPointAddressString(String s) {
- if (s == null) {
- this.endpointAddress = null;
- } else {
- this.endpointAddress = EndpointAddress.create(s);
- }
- }
-
- /**
- * The value of {@link ContentNegotiation#PROPERTY}
- * property.
- * <p/>
- * This property is used only on the client side.
- */
- public ContentNegotiation contentNegotiation;
-
- @Property(ContentNegotiation.PROPERTY)
- public String getContentNegotiationString() {
- return (contentNegotiation != null) ? contentNegotiation.toString() : null;
- }
-
- public void setContentNegotiationString(String s) {
- if (s == null) {
- contentNegotiation = null;
- } else {
- try {
- contentNegotiation = ContentNegotiation.valueOf(s);
- } catch (IllegalArgumentException e) {
- // If the value is not recognized default to none
- contentNegotiation = ContentNegotiation.none;
- }
- }
- }
-
- /**
- * Gives a list of Reference Parameters in the Message
- * <p>
- * Headers which have attribute wsa:IsReferenceParameter="true"
- * This is not cached as one may reset the Message.
- *<p>
- */
- @Property(MessageContext.REFERENCE_PARAMETERS)
- public
- @NotNull
- List<Element> getReferenceParameters() {
- Message msg = getMessage();
- List<Element> refParams = new ArrayList<Element>();
- if (msg == null) {
- return refParams;
- }
- MessageHeaders hl = msg.getHeaders();
- for (Header h : hl.asList()) {
- String attr = h.getAttribute(AddressingVersion.W3C.nsUri, "IsReferenceParameter");
- if (attr != null && (attr.equals("true") || attr.equals("1"))) {
- Document d = DOMUtil.createDom();
- SAX2DOMEx s2d = new SAX2DOMEx(d);
- try {
- h.writeTo(s2d, XmlUtil.DRACONIAN_ERROR_HANDLER);
- refParams.add((Element) d.getLastChild());
- } catch (SAXException e) {
- throw new WebServiceException(e);
- }
- /*
- DOMResult result = new DOMResult(d);
- XMLDOMWriterImpl domwriter = new XMLDOMWriterImpl(result);
- try {
- h.writeTo(domwriter);
- refParams.add((Element) result.getNode().getLastChild());
- } catch (XMLStreamException e) {
- throw new WebServiceException(e);
- }
- */
- }
- }
- return refParams;
- }
-
- /**
- * This method is for exposing header list through {@link PropertySet#get(Object)},
- * for user applications, and should never be invoked directly from within the JAX-WS RI.
- */
- @Property(JAXWSProperties.INBOUND_HEADER_LIST_PROPERTY)
- /*package*/ MessageHeaders getHeaderList() {
- Message msg = getMessage();
- if (msg == null) {
- return null;
- }
- return msg.getHeaders();
- }
-
- /**
- * The list of MIME types that are acceptable to a receiver
- * of an outbound message.
- *
- * This property is used only on the server side.
- *
- * <p>The representation shall be that specified by the HTTP Accept
- * request-header field.
- *
- * <p>The list of content types will be obtained from the transport
- * meta-data of a inbound message in a request/response message exchange.
- * Hence this property will be set by the service-side transport pipe.
- */
- public String acceptableMimeTypes;
-
- /**
- * When non-null, this object is consulted to
- * implement {@link WebServiceContext} methods
- * exposed to the user application.
- *
- * Used only on the server side.
- *
- * <p>
- * This property is set from the parameter
- * of {@link WSEndpoint.PipeHead#process}.
- */
- public WebServiceContextDelegate webServiceContextDelegate;
-
- /**
- * Used only on the server side so that the transport
- * can close the connection early.
- *
- * <p>
- * This field can be null. While a message is being processed,
- * this field can be set explicitly to null, to prevent
- * future pipes from closing a transport (see {@link #keepTransportBackChannelOpen()})
- *
- * <p>
- * This property is set from the parameter
- * of {@link WSEndpoint.PipeHead#process}.
- */
- public
- @Nullable
- TransportBackChannel transportBackChannel;
-
- /**
- * Keeps the transport back channel open (by seeting {@link #transportBackChannel} to null.)
- *
- * @return
- * The previous value of {@link #transportBackChannel}.
- */
- public TransportBackChannel keepTransportBackChannelOpen() {
- TransportBackChannel r = transportBackChannel;
- transportBackChannel = null;
- return r;
- }
-
- /**
- * The governing owner of this packet. On the service-side this is the {@link Adapter} and on the client it is the {@link Stub}.
- *
- */
- public Component component;
-
- /**
- * The governing {@link WSEndpoint} in which this message is floating.
- *
- * <p>
- * This property is set if and only if this is on the server side.
- */
- @Property(JAXWSProperties.WSENDPOINT)
- public WSEndpoint endpoint;
-
- /**
- * The value of the SOAPAction header associated with the message.
- *
- * <p>
- * For outgoing messages, the transport may sends out this value.
- * If this field is null, the transport may choose to send <tt>""</tt>
- * (quoted empty string.)
- *
- * For incoming messages, the transport will set this field.
- * If the incoming message did not contain the SOAPAction header,
- * the transport sets this field to null.
- *
- * <p>
- * If the value is non-null, it must be always in the quoted form.
- * The value can be null.
- *
- * <p>
- * Note that the way the transport sends this value out depends on
- * transport and SOAP version.
- * <p/>
- * For HTTP transport and SOAP 1.1, BP requires that SOAPAction
- * header is present (See {@BP R2744} and {@BP R2745}.) For SOAP 1.2,
- * this is moved to the parameter of the "application/soap+xml".
- */
- @Property(BindingProvider.SOAPACTION_URI_PROPERTY)
- public String soapAction;
-
- /**
- * A hint indicating that whether a transport should expect
- * a reply back from the server.
- *
- * <p>
- * This property is used on the client-side for
- * outbound messages, so that a pipeline
- * can communicate to the terminal (or intermediate) {@link Tube}s
- * about this knowledge.
- *
- * <p>
- * This property <b>MUST NOT</b> be used by 2-way transports
- * that have the transport back channel. Those transports
- * must always check a reply coming through the transport back
- * channel regardless of this value, and act accordingly.
- * (This is because the expectation of the client and
- * that of the server can be different, for example because
- * of a bug in user's configuration.)
- *
- * <p>
- * This property is for one-way transports, and more
- * specifically for the coordinator that correlates sent requests
- * and incoming replies, to decide whether to block
- * until a response is received.
- *
- * <p>
- * Also note that this property is related to
- * {@link WSDLOperation#isOneWay()} but not the same thing.
- * In fact in general, they are completely orthogonal.
- *
- * For example, the calling application can choose to invoke
- * {@link Dispatch#invoke(Object)} or {@link Dispatch#invokeOneWay(Object)}
- * with an operation (which determines the value of this property),
- * regardless of whether WSDL actually says it's one way or not.
- * So these two booleans can take any combinations.
- *
- *
- * <p>
- * When this property is {@link Boolean#FALSE}, it means that
- * the pipeline does not expect a reply from a server (and therefore
- * the correlator should not block for a reply message
- * -- if such a reply does arrive, it can be just ignored.)
- *
- * <p>
- * When this property is {@link Boolean#TRUE}, it means that
- * the pipeline expects a reply from a server (and therefore
- * the correlator should block to see if a reply message is received,
- *
- * <p>
- * This property is always set to {@link Boolean#TRUE} or
- * {@link Boolean#FALSE} when used on the request message
- * on the client side.
- * No other {@link Boolean} instances are allowed.
- * <p>
- *
- * In all other situations, this property is null.
- *
- */
- @Property(BindingProviderProperties.ONE_WAY_OPERATION)
- public Boolean expectReply;
-
-
- /**
- * This property will be removed in a near future.
- *
- * <p>
- * A part of what this flag represented moved to
- * {@link #expectReply} and the other part was moved
- * to {@link Message#isOneWay(WSDLPort)}. Please update
- * your code soon, or risk breaking your build!!
- */
- @Deprecated
- public Boolean isOneWay;
-
- /**
- * Indicates whether is invoking a synchronous pattern. If true, no
- * async client programming model (e.g. AsyncResponse or AsyncHandler)
- * were used to make the request that created this packet.
- */
- public Boolean isSynchronousMEP;
-
- /**
- * Indicates whether a non-null AsyncHandler was given at the point of
- * making the request that created this packet. This flag can be used
- * by Tube implementations to decide how to react when isSynchronousMEP
- * is false. If true, the client gave a non-null AsyncHandler instance
- * at the point of request, and will be expecting a response on that
- * handler when this request has been processed.
- */
- public Boolean nonNullAsyncHandlerGiven;
-
- /**
- * USE-CASE:
- * WS-AT is enabled, but there is no WSDL available.
- * If Packet.isRequestReplyMEP() is Boolean.TRUE then WS-AT should
- * add the TX context.
- *
- * This value is exposed to users via facades at higher abstraction layers.
- * The user should NEVER use Packet directly.
- * This value should ONLY be set by users.
- */
- private Boolean isRequestReplyMEP;
- public Boolean isRequestReplyMEP() { return isRequestReplyMEP; }
- public void setRequestReplyMEP(final Boolean x) { isRequestReplyMEP = x; }
-
- /**
- * Lazily created set of handler-scope property names.
- *
- * <p>
- * We expect that this is only used when handlers are present
- * and they explicitly set some handler-scope values.
- *
- * @see #getHandlerScopePropertyNames(boolean)
- */
- private Set<String> handlerScopePropertyNames;
-
- /**
- * Bag to capture properties that are available for the whole
- * message invocation (namely on both requests and responses.)
- *
- * <p>
- * These properties are copied from a request to a response.
- * This is where we keep properties that are set by handlers.
- *
- * <p>
- * See <a href="#properties">class javadoc</a> for more discussion.
- *
- * @see #getHandlerScopePropertyNames(boolean)
- */
- public final Map<String, Object> invocationProperties;
-
- /**
- * Gets a {@link Set} that stores handler-scope properties.
- *
- * <p>
- * These properties will not be exposed to the response context.
- * Consequently, if a {@link Tube} wishes to hide a property
- * to {@link ResponseContext}, it needs to add the property name
- * to this set.
- *
- * @param readOnly
- * Return true if the caller only intends to read the value of this set.
- * Internally, the {@link Set} is allocated lazily, and this flag helps
- * optimizing the strategy.
- *
- * @return
- * always non-null, possibly empty set that stores property names.
- */
- public final Set<String> getHandlerScopePropertyNames(boolean readOnly) {
- Set<String> o = this.handlerScopePropertyNames;
- if (o == null) {
- if (readOnly) {
- return Collections.emptySet();
- }
- o = new HashSet<String>();
- this.handlerScopePropertyNames = o;
- }
- return o;
- }
-
- /**
- * This method no longer works.
- *
- * @deprecated
- * Use {@link #getHandlerScopePropertyNames(boolean)}.
- * To be removed once Tango components are updated.
- */
- public final Set<String> getApplicationScopePropertyNames(boolean readOnly) {
- assert false;
- return new HashSet<String>();
- }
-
- /**
- * Creates a response {@link Packet} from a request packet ({@code this}).
- *
- * <p>
- * When a {@link Packet} for a reply is created, some properties need to be
- * copied over from a request to a response, and this method handles it correctly.
- *
- * @deprecated
- * Use createClientResponse(Message) for client side and
- * createServerResponse(Message, String) for server side response
- * creation.
- *
- * @param msg
- * The {@link Message} that represents a reply. Can be null.
- */
- @Deprecated
- public Packet createResponse(Message msg) {
- Packet response = new Packet(this);
- response.setMessage(msg);
- return response;
- }
-
- /**
- * Creates a response {@link Packet} from a request packet ({@code this}).
- *
- * <p>
- * When a {@link Packet} for a reply is created, some properties need to be
- * copied over from a request to a response, and this method handles it correctly.
- *
- * @param msg
- * The {@link Message} that represents a reply. Can be null.
- */
- public Packet createClientResponse(Message msg) {
- Packet response = new Packet(this);
- response.setMessage(msg);
- finishCreateRelateClientResponse(response);
- return response;
- }
-
- /**
- * For use cases that start with an existing Packet.
- */
- public Packet relateClientResponse(final Packet response) {
- response.relatePackets(this, true);
- finishCreateRelateClientResponse(response);
- return response;
- }
-
- private void finishCreateRelateClientResponse(final Packet response) {
- response.soapAction = null; // de-initializing
- response.setState(State.ClientResponse);
- }
-
- /**
- * Creates a server-side response {@link Packet} from a request
- * packet ({@code this}). If WS-Addressing is enabled, a default Action
- * Message Addressing Property is obtained using <code>wsdlPort</code> {@link WSDLPort}
- * and <code>binding</code> {@link WSBinding}.
- * <p><p>
- * This method should be called to create application response messages
- * since they are associated with a {@link WSBinding} and {@link WSDLPort}.
- * For creating protocol messages that require a non-default Action, use
- * {@link #createServerResponse(Message, com.sun.xml.internal.ws.api.addressing.AddressingVersion, com.sun.xml.internal.ws.api.SOAPVersion, String)}.
- *
- * @param responseMessage The {@link Message} that represents a reply. Can be null.
- * @param wsdlPort The response WSDL port.
- * @param binding The response Binding. Cannot be null.
- * @return response packet
- */
- public Packet createServerResponse(@Nullable Message responseMessage, @Nullable WSDLPort wsdlPort, @Nullable SEIModel seiModel, @NotNull WSBinding binding) {
- Packet r = createClientResponse(responseMessage);
- return relateServerResponse(r, wsdlPort, seiModel, binding);
- }
-
- /**
- * Copy all properties from ({@code this}) packet into a input {@link Packet}
- * @param response packet
- */
- public void copyPropertiesTo(@Nullable Packet response){
- relatePackets(response, false);
- }
-
-
- /**
- * A common method to make members related between input packet and this packet
- *
- * @param packet
- * @param isCopy 'true' means copying all properties from input packet;
- * 'false' means copying all properties from this packet to input packet.
- */
- private void relatePackets(@Nullable Packet packet, boolean isCopy)
- {
- Packet request;
- Packet response;
-
- if (!isCopy) { //is relate
- request = this;
- response = packet;
-
- // processing specific properties
- response.soapAction = null;
- response.invocationProperties.putAll(request.invocationProperties);
- if (this.getState().equals(State.ServerRequest)) {
- response.setState(State.ServerResponse);
- }
- } else { //is copy constructor
- request = packet;
- response = this;
-
- // processing specific properties
- response.soapAction = request.soapAction;
- response.setState(request.getState());
- }
-
- request.copySatelliteInto(response);
- response.isAdapterDeliversNonAnonymousResponse = request.isAdapterDeliversNonAnonymousResponse;
- response.handlerConfig = request.handlerConfig;
- response.handlerScopePropertyNames = request.handlerScopePropertyNames;
- response.contentNegotiation = request.contentNegotiation;
- response.wasTransportSecure = request.wasTransportSecure;
- response.transportBackChannel = request.transportBackChannel;
- response.endpointAddress = request.endpointAddress;
- response.wsdlOperation = request.wsdlOperation;
- response.wsdlOperationMapping = request.wsdlOperationMapping;
- response.acceptableMimeTypes = request.acceptableMimeTypes;
- response.endpoint = request.endpoint;
- response.proxy = request.proxy;
- response.webServiceContextDelegate = request.webServiceContextDelegate;
- response.expectReply = request.expectReply;
- response.component = request.component;
- response.mtomAcceptable = request.mtomAcceptable;
- response.mtomRequest = request.mtomRequest;
- // copy other properties that need to be copied. is there any?
- }
-
-
- public Packet relateServerResponse(@Nullable Packet r, @Nullable WSDLPort wsdlPort, @Nullable SEIModel seiModel, @NotNull WSBinding binding) {
- relatePackets(r, false);
- r.setState(State.ServerResponse);
- AddressingVersion av = binding.getAddressingVersion();
- // populate WS-A headers only if WS-A is enabled
- if (av == null) {
- return r;
- }
-
- if (getMessage() == null) {
- return r;
- }
-
- //populate WS-A headers only if the request has addressing headers
- String inputAction = AddressingUtils.getAction(getMessage().getHeaders(), av, binding.getSOAPVersion());
- if (inputAction == null) {
- return r;
- }
- // if one-way, then dont populate any WS-A headers
- if (r.getMessage() == null || (wsdlPort != null && getMessage().isOneWay(wsdlPort))) {
- return r;
- }
-
- // otherwise populate WS-Addressing headers
- populateAddressingHeaders(binding, r, wsdlPort, seiModel);
- return r;
- }
-
- /**
- * Creates a server-side response {@link Packet} from a request
- * packet ({@code this}). If WS-Addressing is enabled, <code>action</code>
- * is used as Action Message Addressing Property.
- * <p><p>
- * This method should be called only for creating protocol response messages
- * that require a particular value of Action since they are not associated
- * with a {@link WSBinding} and {@link WSDLPort} but do know the {@link AddressingVersion}
- * and {@link SOAPVersion}.
- *
- * @param responseMessage The {@link Message} that represents a reply. Can be null.
- * @param addressingVersion The WS-Addressing version of the response message.
- * @param soapVersion The SOAP version of the response message.
- * @param action The response Action Message Addressing Property value.
- * @return response packet
- */
- public Packet createServerResponse(@Nullable Message responseMessage, @NotNull AddressingVersion addressingVersion, @NotNull SOAPVersion soapVersion, @NotNull String action) {
- Packet responsePacket = createClientResponse(responseMessage);
- responsePacket.setState(State.ServerResponse);
- // populate WS-A headers only if WS-A is enabled
- if (addressingVersion == null) {
- return responsePacket;
- }
- //populate WS-A headers only if the request has addressing headers
- String inputAction = AddressingUtils.getAction(this.getMessage().getHeaders(), addressingVersion, soapVersion);
- if (inputAction == null) {
- return responsePacket;
- }
-
- populateAddressingHeaders(responsePacket, addressingVersion, soapVersion, action, false);
- return responsePacket;
- }
-
- /**
- * Overwrites the {@link Message} of the response packet ({@code this}) by the given {@link Message}.
- * Unlike {@link #setMessage(Message)}, fill in the addressing headers correctly, and this process
- * requires the access to the request packet.
- *
- * <p>
- * This method is useful when the caller needs to swap a response message completely to a new one.
- *
- * @see #createServerResponse(Message, AddressingVersion, SOAPVersion, String)
- */
- public void setResponseMessage(@NotNull Packet request, @Nullable Message responseMessage, @NotNull AddressingVersion addressingVersion, @NotNull SOAPVersion soapVersion, @NotNull String action) {
- Packet temp = request.createServerResponse(responseMessage, addressingVersion, soapVersion, action);
- setMessage(temp.getMessage());
- }
-
- private void populateAddressingHeaders(Packet responsePacket, AddressingVersion av, SOAPVersion sv, String action, boolean mustUnderstand) {
- // populate WS-A headers only if WS-A is enabled
- if (av == null) return;
-
- // if one-way, then dont populate any WS-A headers
- if (responsePacket.getMessage() == null)
- return;
-
- MessageHeaders hl = responsePacket.getMessage().getHeaders();
-
- WsaPropertyBag wpb = getSatellite(WsaPropertyBag.class);
- Message msg = getMessage();
- // wsa:To
- WSEndpointReference replyTo = null;
- Header replyToFromRequestMsg = AddressingUtils.getFirstHeader(msg.getHeaders(), av.replyToTag, true, sv);
- Header replyToFromResponseMsg = hl.get(av.toTag, false);
- boolean replaceToTag = true;
- try{
- if (replyToFromRequestMsg != null){
- replyTo = replyToFromRequestMsg.readAsEPR(av);
- }
- if (replyToFromResponseMsg != null && replyTo == null) {
- replaceToTag = false;
- }
- } catch (XMLStreamException e) {
- throw new WebServiceException(AddressingMessages.REPLY_TO_CANNOT_PARSE(), e);
- }
- if (replyTo == null) {
- replyTo = AddressingUtils.getReplyTo(msg.getHeaders(), av, sv);
- }
-
- // wsa:Action, add if the message doesn't already contain it,
- // generally true for SEI case where there is SEIModel or WSDLModel
- // false for Provider with no wsdl, Expects User to set the coresponding header on the Message.
- if (AddressingUtils.getAction(responsePacket.getMessage().getHeaders(), av, sv) == null) {
- //wsa:Action header is not set in the message, so use the wsa:Action passed as the parameter.
- hl.add(new StringHeader(av.actionTag, action, sv, mustUnderstand));
- }
-
- // wsa:MessageID
- if (responsePacket.getMessage().getHeaders().get(av.messageIDTag, false) == null) {
- // if header doesn't exist, method getID creates a new random id
- String newID = Message.generateMessageID();
- hl.add(new StringHeader(av.messageIDTag, newID));
- }
-
- // wsa:RelatesTo
- String mid = null;
- if (wpb != null) {
- mid = wpb.getMessageID();
- }
- if (mid == null) {
- mid = AddressingUtils.getMessageID(msg.getHeaders(), av, sv);
- }
- if (mid != null) {
- hl.addOrReplace(new RelatesToHeader(av.relatesToTag, mid));
- }
-
-
- // populate reference parameters
- WSEndpointReference refpEPR = null;
- if (responsePacket.getMessage().isFault()) {
- // choose FaultTo
- if (wpb != null) {
- refpEPR = wpb.getFaultToFromRequest();
- }
- if (refpEPR == null) {
- refpEPR = AddressingUtils.getFaultTo(msg.getHeaders(), av, sv);
- }
- // if FaultTo is null, then use ReplyTo
- if (refpEPR == null) {
- refpEPR = replyTo;
- }
- } else {
- // choose ReplyTo
- refpEPR = replyTo;
- }
- if (replaceToTag && refpEPR != null) {
- hl.addOrReplace(new StringHeader(av.toTag, refpEPR.getAddress()));
- refpEPR.addReferenceParametersToList(hl);
- }
- }
-
- private void populateAddressingHeaders(WSBinding binding, Packet responsePacket, WSDLPort wsdlPort, SEIModel seiModel) {
- AddressingVersion addressingVersion = binding.getAddressingVersion();
-
- if (addressingVersion == null) {
- return;
- }
-
- WsaTubeHelper wsaHelper = addressingVersion.getWsaHelper(wsdlPort, seiModel, binding);
- String action = responsePacket.getMessage().isFault() ?
- wsaHelper.getFaultAction(this, responsePacket) :
- wsaHelper.getOutputAction(this);
- if (action == null) {
- LOGGER.info("WSA headers are not added as value for wsa:Action cannot be resolved for this message");
- return;
- }
- populateAddressingHeaders(responsePacket, addressingVersion, binding.getSOAPVersion(), action, AddressingVersion.isRequired(binding));
- }
-
- public String toShortString() {
- return super.toString();
- }
-
- // For use only in a debugger
- @Override
- public String toString() {
- StringBuilder buf = new StringBuilder();
- buf.append(super.toString());
- String content;
- try {
- Message msg = getMessage();
- if (msg != null) {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- XMLStreamWriter xmlWriter = XMLStreamWriterFactory.create(baos, "UTF-8");
- msg.copy().writeTo(xmlWriter);
- xmlWriter.flush();
- xmlWriter.close();
- baos.flush();
- XMLStreamWriterFactory.recycle(xmlWriter);
-
- byte[] bytes = baos.toByteArray();
- //message = Messages.create(XMLStreamReaderFactory.create(null, new ByteArrayInputStream(bytes), "UTF-8", true));
- content = new String(bytes, "UTF-8");
- } else {
- content = "<none>";
- }
- } catch (Throwable t) {
- throw new WebServiceException(t);
- }
- buf.append(" Content: ").append(content);
- return buf.toString();
- }
-
- // completes TypedMap
- private static final PropertyMap model;
-
- static {
- model = parse(Packet.class);
- }
-
- @Override
- protected PropertyMap getPropertyMap() {
- return model;
- }
-
- public Map<String, Object> asMapIncludingInvocationProperties() {
- final Map<String, Object> asMap = asMap();
- return new AbstractMap<String, Object>() {
- @Override
- public Object get(Object key) {
- Object o = asMap.get(key);
- if (o != null)
- return o;
-
- return invocationProperties.get(key);
- }
-
- @Override
- public int size() {
- return asMap.size() + invocationProperties.size();
- }
-
- @Override
- public boolean containsKey(Object key) {
- if (asMap.containsKey(key))
- return true;
- return invocationProperties.containsKey(key);
- }
-
- @Override
- public Set<Entry<String, Object>> entrySet() {
- final Set<Entry<String, Object>> asMapEntries = asMap.entrySet();
- final Set<Entry<String, Object>> ipEntries = invocationProperties.entrySet();
-
- return new AbstractSet<Entry<String, Object>>() {
- @Override
- public Iterator<Entry<String, Object>> iterator() {
- final Iterator<Entry<String, Object>> asMapIt = asMapEntries.iterator();
- final Iterator<Entry<String, Object>> ipIt = ipEntries.iterator();
-
- return new Iterator<Entry<String, Object>>() {
- @Override
- public boolean hasNext() {
- return asMapIt.hasNext() || ipIt.hasNext();
- }
-
- @Override
- public java.util.Map.Entry<String, Object> next() {
- if (asMapIt.hasNext())
- return asMapIt.next();
- return ipIt.next();
- }
-
- @Override
- public void remove() {
- throw new UnsupportedOperationException();
- }
- };
- }
-
- @Override
- public int size() {
- return asMap.size() + invocationProperties.size();
- }
- };
- }
-
- @Override
- public Object put(String key, Object value) {
- if (supports(key))
- return asMap.put(key, value);
-
- return invocationProperties.put(key, value);
- }
-
- @Override
- public void clear() {
- asMap.clear();
- invocationProperties.clear();
- }
-
- @Override
- public Object remove(Object key) {
- if (supports(key))
- return asMap.remove(key);
-
- return invocationProperties.remove(key);
- }
- };
- }
-
- private static final Logger LOGGER = Logger.getLogger(Packet.class.getName());
-
- @Override
- public SOAPMessage getSOAPMessage() throws SOAPException {
- return getAsSOAPMessage();
- }
-
- //TODO replace the message to a SAAJMEssage issue - JRFSAAJMessage or SAAJMessage?
- @Override
- public SOAPMessage getAsSOAPMessage() throws SOAPException {
- Message msg = this.getMessage();
- if (msg == null)
- return null;
- if (msg instanceof MessageWritable)
- ((MessageWritable) msg).setMTOMConfiguration(mtomFeature);
- return msg.readAsSOAPMessage(this, this.getState().isInbound());
- }
-
- public
- Codec codec = null;
- public Codec getCodec() {
- if (codec != null) {
- return codec;
- }
- if (endpoint != null) {
- codec = endpoint.createCodec();
- }
- WSBinding wsb = getBinding();
- if (wsb != null) {
- codec = wsb.getBindingId().createEncoder(wsb);
- }
- return codec;
- }
-
- @Override
- public com.oracle.webservices.internal.api.message.ContentType writeTo( OutputStream out ) throws IOException {
- Message msg = getInternalMessage();
- if (msg instanceof MessageWritable) {
- ((MessageWritable) msg).setMTOMConfiguration(mtomFeature);
- return ((MessageWritable)msg).writeTo(out);
- }
- return getCodec().encode(this, out);
- }
-
- public com.oracle.webservices.internal.api.message.ContentType writeTo( WritableByteChannel buffer ) {
- return getCodec().encode(this, buffer);
- }
-
- private ContentType contentType;
-
- /**
- * If the request's Content-Type is multipart/related; type=application/xop+xml, then this set to to true
- *
- * Used on server-side, for encoding the repsonse.
- */
- private Boolean mtomRequest;
-
- /**
- * Based on request's Accept header this is set.
- * Currently only set if MTOMFeature is enabled.
- *
- * Should be used on server-side, for encoding the response.
- */
- private Boolean mtomAcceptable;
-
- private MTOMFeature mtomFeature;
-
- public Boolean getMtomRequest() {
- return mtomRequest;
- }
-
- public void setMtomRequest(Boolean mtomRequest) {
- this.mtomRequest = mtomRequest;
- }
-
- public Boolean getMtomAcceptable() {
- return mtomAcceptable;
- }
-
- Boolean checkMtomAcceptable;
- public void checkMtomAcceptable() {
- if (checkMtomAcceptable == null) {
- if (acceptableMimeTypes == null || isFastInfosetDisabled) {
- checkMtomAcceptable = false;
- } else {
- checkMtomAcceptable = (acceptableMimeTypes.indexOf(MtomCodec.XOP_XML_MIME_TYPE) != -1);
-// StringTokenizer st = new StringTokenizer(acceptableMimeTypes, ",");
-// while (st.hasMoreTokens()) {
-// final String token = st.nextToken().trim();
-// if (token.toLowerCase().contains(MtomCodec.XOP_XML_MIME_TYPE)) {
-// mtomAcceptable = true;
-// }
-// }
-// if (mtomAcceptable == null) mtomAcceptable = false;
- }
- }
- mtomAcceptable = checkMtomAcceptable;
- }
-
- private Boolean fastInfosetAcceptable;
-
- public Boolean getFastInfosetAcceptable(String fiMimeType) {
- if (fastInfosetAcceptable == null) {
- if (acceptableMimeTypes == null || isFastInfosetDisabled) {
- fastInfosetAcceptable = false;
- } else {
- fastInfosetAcceptable = (acceptableMimeTypes.indexOf(fiMimeType) != -1);
- }
-// if (accept == null || isFastInfosetDisabled) return false;
-//
-// StringTokenizer st = new StringTokenizer(accept, ",");
-// while (st.hasMoreTokens()) {
-// final String token = st.nextToken().trim();
-// if (token.equalsIgnoreCase(fiMimeType)) {
-// return true;
-// }
-// }
-// return false;
- }
- return fastInfosetAcceptable;
- }
-
-
- public void setMtomFeature(MTOMFeature mtomFeature) {
- this.mtomFeature = mtomFeature;
- }
-
- public MTOMFeature getMtomFeature() {
- //If we have a binding, use that in preference to an explicitly
- //set MTOMFeature
- WSBinding binding = getBinding();
- if (binding != null) {
- return binding.getFeature(MTOMFeature.class);
- }
- return mtomFeature;
- }
-
- @Override
- public com.oracle.webservices.internal.api.message.ContentType getContentType() {
- if (contentType == null) {
- contentType = getInternalContentType();
- }
- if (contentType == null) {
- contentType = getCodec().getStaticContentType(this);
- }
- if (contentType == null) {
- //TODO write to buffer
- }
- return contentType;
- }
-
- public ContentType getInternalContentType() {
- Message msg = getInternalMessage();
- if (msg instanceof MessageWritable) {
- return ((MessageWritable)msg).getContentType();
- }
- return contentType;
- }
-
- public void setContentType(ContentType contentType) {
- this.contentType = contentType;
- }
-
- public enum Status {
- Request, Response, Unknown;
- public boolean isRequest() { return Request.equals(this); }
- public boolean isResponse() { return Response.equals(this); }
- }
-
- public enum State {
- ServerRequest(true), ClientRequest(false), ServerResponse(false), ClientResponse(true);
- private boolean inbound;
- State(boolean inbound) {
- this.inbound = inbound;
- }
- public boolean isInbound() {
- return inbound;
- }
- }
-
-// private Status status = Status.Unknown;
-
- //Default state is ServerRequest - some custom adapters may not set the value of state
- //upon server request - all other code paths should set it
- private State state = State.ServerRequest;
-
-// public Status getStatus() { return status; }
-
- public State getState() { return state; }
- public void setState(State state) { this.state = state; }
-
- public boolean shouldUseMtom() {
- if (getState().isInbound()) {
- return isMtomContentType();
- } else {
- return shouldUseMtomOutbound();
- }
- }
-
- private boolean shouldUseMtomOutbound() {
- //Use the getter to make sure all the logic is executed correctly
- MTOMFeature myMtomFeature = getMtomFeature();
- if(myMtomFeature != null && myMtomFeature.isEnabled()) {
- //On client, always use XOP encoding if MTOM is enabled
- //On Server, mtomAcceptable and mtomRequest will be set - use XOP encoding
- //if either request is XOP encoded (mtomRequest) or
- //client accepts XOP encoding (mtomAcceptable)
- if (getMtomAcceptable() == null && getMtomRequest() == null) {
- return true;
- } else {
- if (getMtomAcceptable() != null && getMtomAcceptable() && getState().equals(State.ServerResponse)) {
- return true;
- }
- if (getMtomRequest() != null && getMtomRequest() && getState().equals(State.ServerResponse)) {
- return true;
- }
- if (getMtomRequest() != null && getMtomRequest() && getState().equals(State.ClientRequest)) {
- return true;
- }
- }
- }
- return false;
- }
-
- private boolean isMtomContentType() {
- return (getInternalContentType() != null) &&
- (getInternalContentType().getContentType().contains("application/xop+xml"));
- }
-
- /**
- * @deprecated
- */
- public void addSatellite(@NotNull com.sun.xml.internal.ws.api.PropertySet satellite) {
- super.addSatellite(satellite);
- }
-
- /**
- * @deprecated
- */
- public void addSatellite(@NotNull Class keyClass, @NotNull com.sun.xml.internal.ws.api.PropertySet satellite) {
- super.addSatellite(keyClass, satellite);
- }
-
- /**
- * @deprecated
- */
- public void copySatelliteInto(@NotNull com.sun.xml.internal.ws.api.DistributedPropertySet r) {
- super.copySatelliteInto(r);
- }
-
- /**
- * @deprecated
- */
- public void removeSatellite(com.sun.xml.internal.ws.api.PropertySet satellite) {
- super.removeSatellite(satellite);
- }
-
- /**
- * This is propogated from SOAPBindingCodec and will affect isMtomAcceptable and isFastInfosetAcceptable
- */
- private boolean isFastInfosetDisabled;
-
- public void setFastInfosetDisabled(boolean b) {
- isFastInfosetDisabled = b;
- }
-}