/*
 * 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.addressing;

import com.sun.istack.internal.NotNull;
import com.sun.istack.internal.Nullable;
import com.sun.xml.internal.stream.buffer.XMLStreamBuffer;
import com.sun.xml.internal.ws.addressing.W3CAddressingConstants;
import com.sun.xml.internal.ws.addressing.WsaTubeHelper;
import com.sun.xml.internal.ws.addressing.v200408.MemberSubmissionAddressingConstants;
import com.sun.xml.internal.ws.api.WSBinding;
import com.sun.xml.internal.ws.api.message.Header;
import com.sun.xml.internal.ws.api.model.wsdl.WSDLPort;
import com.sun.xml.internal.ws.api.model.SEIModel;
import com.sun.xml.internal.ws.developer.MemberSubmissionAddressingFeature;
import com.sun.xml.internal.ws.developer.MemberSubmissionEndpointReference;
import com.sun.xml.internal.ws.message.stream.OutboundStreamHeader;

import javax.xml.namespace.QName;
import javax.xml.stream.XMLStreamException;
import javax.xml.ws.EndpointReference;
import javax.xml.ws.WebServiceException;
import javax.xml.ws.WebServiceFeature;
import javax.xml.ws.soap.AddressingFeature;
import javax.xml.ws.wsaddressing.W3CEndpointReference;
import java.io.ByteArrayInputStream;
import java.io.UnsupportedEncodingException;

'Traits' object that absorbs differences of WS-Addressing versions.
Author:Arun Gupta
/** * 'Traits' object that absorbs differences of WS-Addressing versions. * * @author Arun Gupta */
public enum AddressingVersion { W3C("http://www.w3.org/2005/08/addressing", "wsa", W3CAddressingConstants.ANONYMOUS_EPR, "http://www.w3.org/2006/05/addressing/wsdl", "http://www.w3.org/2006/05/addressing/wsdl", "http://www.w3.org/2005/08/addressing/anonymous", "http://www.w3.org/2005/08/addressing/none", new EPR(W3CEndpointReference.class, "Address", "ServiceName", "EndpointName", "InterfaceName", new QName("http://www.w3.org/2005/08/addressing","Metadata","wsa"), "ReferenceParameters", null )) { /* package */ String getActionMismatchLocalName() { return "ActionMismatch"; } @Override public boolean isReferenceParameter(String localName) { return localName.equals("ReferenceParameters"); } @Override public WsaTubeHelper getWsaHelper(WSDLPort wsdlPort, SEIModel seiModel, WSBinding binding) { return new com.sun.xml.internal.ws.addressing.WsaTubeHelperImpl(wsdlPort, seiModel, binding); } @Override /* package */ String getMapRequiredLocalName() { return "MessageAddressingHeaderRequired"; } @Override public String getMapRequiredText() { return "A required header representing a Message Addressing Property is not present"; } /* package */ String getInvalidAddressLocalName() { return "InvalidAddress"; } @Override /* package */ String getInvalidMapLocalName() { return "InvalidAddressingHeader"; } @Override public String getInvalidMapText() { return "A header representing a Message Addressing Property is not valid and the message cannot be processed"; } @Override /* package */ String getInvalidCardinalityLocalName() { return "InvalidCardinality"; } /*package*/ Header createReferenceParameterHeader(XMLStreamBuffer mark, String nsUri, String localName) { return new OutboundReferenceParameterHeader(mark,nsUri,localName); } /*package*/ String getIsReferenceParameterLocalName() { return "IsReferenceParameter"; } /* package */ String getWsdlAnonymousLocalName() { return "Anonymous"; } public String getPrefix() { return "wsa"; } public String getWsdlPrefix() { return "wsaw"; } public Class<? extends WebServiceFeature> getFeatureClass() { return AddressingFeature.class; } }, MEMBER("http://schemas.xmlsoap.org/ws/2004/08/addressing", "wsa", MemberSubmissionAddressingConstants.ANONYMOUS_EPR, "http://schemas.xmlsoap.org/ws/2004/08/addressing", "http://schemas.xmlsoap.org/ws/2004/08/addressing/policy", "http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous", "", new EPR(MemberSubmissionEndpointReference.class, "Address", "ServiceName", "PortName", "PortType", MemberSubmissionAddressingConstants.MEX_METADATA, "ReferenceParameters", "ReferenceProperties")) { /* package */ String getActionMismatchLocalName() { return "InvalidMessageInformationHeader"; } @Override public boolean isReferenceParameter(String localName) { return localName.equals("ReferenceParameters") || localName.equals("ReferenceProperties"); } @Override public WsaTubeHelper getWsaHelper(WSDLPort wsdlPort, SEIModel seiModel, WSBinding binding) { return new com.sun.xml.internal.ws.addressing.v200408.WsaTubeHelperImpl(wsdlPort, seiModel, binding); } @Override /* package */ String getMapRequiredLocalName() { return "MessageInformationHeaderRequired"; } @Override public String getMapRequiredText() { return "A required message information header, To, MessageID, or Action, is not present."; } /* package */ String getInvalidAddressLocalName() { return getInvalidMapLocalName(); } @Override /* package */ String getInvalidMapLocalName() { return "InvalidMessageInformationHeader"; } @Override public String getInvalidMapText() { return "A message information header is not valid and the message cannot be processed."; } @Override /* package */ String getInvalidCardinalityLocalName() { return getInvalidMapLocalName(); } /*package*/ Header createReferenceParameterHeader(XMLStreamBuffer mark, String nsUri, String localName) { return new OutboundStreamHeader(mark,nsUri,localName); } /*package*/ String getIsReferenceParameterLocalName() { return ""; } /* package */ String getWsdlAnonymousLocalName() { return ""; } public String getPrefix() { return "wsa"; } public String getWsdlPrefix() { return "wsaw"; } public Class<? extends WebServiceFeature> getFeatureClass() { return MemberSubmissionAddressingFeature.class; } };
Namespace URI
/** * Namespace URI */
public final String nsUri;
Namespace URI for the WSDL Binding
/** * Namespace URI for the WSDL Binding */
public final String wsdlNsUri; /** * Representing either {@link W3CEndpointReference} or * {@link MemberSubmissionEndpointReference}. */ public final EPR eprType;
Namespace URI for the WSDL Binding
/** * Namespace URI for the WSDL Binding */
public final String policyNsUri;
Gets the anonymous URI value associated with this WS-Addressing version.
/** * Gets the anonymous URI value associated with this WS-Addressing version. */
public final @NotNull String anonymousUri;
Gets the none URI value associated with this WS-Addressing version.
/** * Gets the none URI value associated with this WS-Addressing version. */
public final @NotNull String noneUri;
Represents the anonymous EPR.
/** * Represents the anonymous EPR. */
public final WSEndpointReference anonymousEpr;
Represents the To QName in the SOAP message for a specific WS-Addressing Version.
/** * Represents the To QName in the SOAP message for a specific WS-Addressing Version. */
public final QName toTag;
Represents the From QName in the SOAP message for a specific WS-Addressing Version.
/** * Represents the From QName in the SOAP message for a specific WS-Addressing Version. */
public final QName fromTag;
Represents the ReplyTo QName in the SOAP message for a specific WS-Addressing Version.
/** * Represents the ReplyTo QName in the SOAP message for a specific WS-Addressing Version. */
public final QName replyToTag;
Represents the FaultTo QName for a specific WS-Addressing Version.
/** * Represents the FaultTo QName for a specific WS-Addressing Version. */
public final QName faultToTag;
Represents the Action QName in the SOAP message for a specific WS-Addressing Version.
/** * Represents the Action QName in the SOAP message for a specific WS-Addressing Version. */
public final QName actionTag;
Represents the MessageID QName in the SOAP message for a specific WS-Addressing Version.
/** * Represents the MessageID QName in the SOAP message for a specific WS-Addressing Version. */
public final QName messageIDTag;
Represents the RelatesTo QName in the SOAP message for a specific WS-Addressing Version.
/** * Represents the RelatesTo QName in the SOAP message for a specific WS-Addressing Version. */
public final QName relatesToTag;
Represents the QName of the fault code when a required header representing a WS-Addressing Message Addressing Property is not present.
/** * Represents the QName of the fault code when a required header representing a * WS-Addressing Message Addressing Property is not present. */
public final QName mapRequiredTag;
Represents the QName of the fault code when Action is not supported at this endpoint.
/** * Represents the QName of the fault code when Action is not supported at this endpoint. */
public final QName actionMismatchTag;
Represents the QName of the fault code when Action is not supported at this endpoint.
/** * Represents the QName of the fault code when Action is not supported at this endpoint. */
public final QName actionNotSupportedTag;
Represents the text of the fault when Action is not supported at this endpoint.
/** * Represents the text of the fault when Action is not supported at this endpoint. */
public final String actionNotSupportedText;
Represents the QName of the fault code when a header representing a WS-Addressing Message Addressing Property is invalid and cannot be processed.
/** * Represents the QName of the fault code when a header representing a * WS-Addressing Message Addressing Property is invalid and cannot be processed. */
public final QName invalidMapTag;
Represents the QName of the fault code when a header representing a WS-Addressing Message Addressing Property occurs greater than expected number.
/** * Represents the QName of the fault code when a header representing a * WS-Addressing Message Addressing Property occurs greater than expected number. */
public final QName invalidCardinalityTag;
Represents the QName of the fault code when a header representing an address is not valid.
/** * Represents the QName of the fault code when a header representing an * address is not valid. */
public final QName invalidAddressTag;
Represents the QName of the element that conveys additional information on the pre-defined WS-Addressing faults.
/** * Represents the QName of the element that conveys additional information * on the pre-defined WS-Addressing faults. */
public final QName problemHeaderQNameTag;
Represents the QName of the element that conveys additional information if Action is not matching with that expected.
/** * Represents the QName of the element that conveys additional information * if Action is not matching with that expected. */
public final QName problemActionTag;
Represents the QName of the header element that is used to capture the fault detail if there is a fault processing WS-Addressing Message Addressing Property. This is only used for SOAP 1.1.
/** * Represents the QName of the header element that is used to capture the fault detail * if there is a fault processing WS-Addressing Message Addressing Property. This is * only used for SOAP 1.1. */
public final QName faultDetailTag;
Fault sub-sub-code that represents "Specifies that the invalid header was expected to be an EPR but did not contain an [address]."
/** * Fault sub-sub-code that represents * "Specifies that the invalid header was expected to be an EPR but did not contain an [address]." */
public final QName fault_missingAddressInEpr;
Represents the Action QName in the WSDL for a specific WS-Addressing Version.
/** * Represents the Action QName in the WSDL for a specific WS-Addressing Version. */
public final QName wsdlActionTag;
Represents the WSDL extension QName for a specific WS-Addressing Version.
/** * Represents the WSDL extension QName for a specific WS-Addressing Version. */
public final QName wsdlExtensionTag;
Represents the WSDL anonymous QName for a specific WS-Addressing Version.
/** * Represents the WSDL anonymous QName for a specific WS-Addressing Version. */
public final QName wsdlAnonymousTag;
Represents the QName of the reference parameter in a SOAP message. This is only valid for W3C WS-Addressing.
/** * Represents the QName of the reference parameter in a SOAP message. This is * only valid for W3C WS-Addressing. */
public final QName isReferenceParameterTag; private static final String EXTENDED_FAULT_NAMESPACE = "http://jax-ws.dev.java.net/addressing/fault"; public static final String UNSET_OUTPUT_ACTION = "http://jax-ws.dev.java.net/addressing/output-action-not-set"; public static final String UNSET_INPUT_ACTION = "http://jax-ws.dev.java.net/addressing/input-action-not-set";
Fault sub-sub-code that represents duplicate <Address> element in EPR. This is a fault code not defined in the spec.
/** * Fault sub-sub-code that represents duplicate &lt;Address> element in EPR. * This is a fault code not defined in the spec. */
public static final QName fault_duplicateAddressInEpr = new QName( EXTENDED_FAULT_NAMESPACE, "DuplicateAddressInEpr", "wsa" ); private AddressingVersion(String nsUri, String prefix, String anonymousEprString, String wsdlNsUri, String policyNsUri, String anonymousUri, String noneUri, EPR eprType ) { this.nsUri = nsUri; this.wsdlNsUri = wsdlNsUri; this.policyNsUri = policyNsUri; this.anonymousUri = anonymousUri; this.noneUri = noneUri; toTag = new QName(nsUri,"To", prefix); fromTag = new QName(nsUri,"From", prefix); replyToTag = new QName(nsUri,"ReplyTo", prefix); faultToTag = new QName(nsUri,"FaultTo", prefix); actionTag = new QName(nsUri,"Action", prefix); messageIDTag = new QName(nsUri,"MessageID", prefix); relatesToTag = new QName(nsUri,"RelatesTo", prefix); mapRequiredTag = new QName(nsUri,getMapRequiredLocalName(), prefix); actionMismatchTag = new QName(nsUri,getActionMismatchLocalName(), prefix); actionNotSupportedTag = new QName(nsUri,"ActionNotSupported", prefix); actionNotSupportedText = "The \"%s\" cannot be processed at the receiver"; invalidMapTag = new QName(nsUri,getInvalidMapLocalName(), prefix); invalidAddressTag = new QName(nsUri,getInvalidAddressLocalName(), prefix); invalidCardinalityTag = new QName(nsUri,getInvalidCardinalityLocalName(), prefix); faultDetailTag = new QName(nsUri,"FaultDetail", prefix); problemHeaderQNameTag = new QName(nsUri,"ProblemHeaderQName", prefix); problemActionTag = new QName(nsUri, "ProblemAction", prefix); fault_missingAddressInEpr = new QName(nsUri,"MissingAddressInEPR", prefix); isReferenceParameterTag = new QName(nsUri,getIsReferenceParameterLocalName(), prefix); wsdlActionTag = new QName(wsdlNsUri,"Action", prefix); wsdlExtensionTag = new QName(wsdlNsUri, "UsingAddressing", prefix); wsdlAnonymousTag = new QName(wsdlNsUri, getWsdlAnonymousLocalName(), prefix); // create stock anonymous EPR try { this.anonymousEpr = new WSEndpointReference(new ByteArrayInputStream(anonymousEprString.getBytes("UTF-8")),this); } catch (XMLStreamException e) { throw new Error(e); // bug in our code as EPR should parse. } catch (UnsupportedEncodingException e) { throw new Error(e); } this.eprType = eprType; }
Gets the local name of the fault when a header representing a WS-Addressing Action is not same as SOAPAction
Returns:local name
/** * Gets the local name of the fault when a header representing a WS-Addressing Action is not same as SOAPAction * * @return local name */
/* package */ abstract String getActionMismatchLocalName();
Returns AddressingVersion whose nsUri equals to the given string. This method does not perform input string validation.
Params:
  • nsUri – must not be null.
Returns:always non-null.
/** * Returns {@link AddressingVersion} whose {@link #nsUri} equals to * the given string. * * This method does not perform input string validation. * * @param nsUri * must not be null. * @return always non-null. */
public static AddressingVersion fromNsUri(String nsUri) { if (nsUri.equals(W3C.nsUri)) return W3C; if (nsUri.equals(MEMBER.nsUri)) return MEMBER; return null; }
Gets the AddressingVersion from a WSBinding
Params:
  • binding – WSDL binding
Returns: addresing version enabled, or null if none is enabled.
/** * Gets the {@link AddressingVersion} from a {@link WSBinding} * * @param binding WSDL binding * @return * addresing version enabled, or null if none is enabled. */
public static @Nullable AddressingVersion fromBinding(WSBinding binding) { // TODO: who is responsible for reporting an error if both versions // are on? if (binding.isFeatureEnabled(AddressingFeature.class)) return W3C; if (binding.isFeatureEnabled(MemberSubmissionAddressingFeature.class)) return MEMBER; return null; }
Gets the AddressingVersion from a WSDLPort
Params:
  • port – WSDL port
Returns:addresing version
/** * Gets the {@link AddressingVersion} from a {@link WSDLPort} * * @param port WSDL port * @return addresing version */
public static AddressingVersion fromPort(WSDLPort port) { if (port == null) return null; WebServiceFeature wsf = port.getFeature(AddressingFeature.class); if (wsf == null) { wsf = port.getFeature(MemberSubmissionAddressingFeature.class); } if (wsf == null) return null; return fromFeature(wsf); }
Returns nsUri associated with this AddressingVersion
Returns:namespace URI
Deprecated: Use nsUri.
/** * Returns {@link #nsUri} associated with this {@link AddressingVersion} * * @return namespace URI * @deprecated * Use {@link #nsUri}. */
public String getNsUri() { return nsUri; }
Returns true if the given local name is considered as a reference parameter in EPR. For W3C, this means "ReferenceParameters", and for the member submission version, this means either "ReferenceParameters" or "ReferenceProperties".
/** * Returns true if the given local name is considered as * a reference parameter in EPR. * * For W3C, this means "ReferenceParameters", * and for the member submission version, this means * either "ReferenceParameters" or "ReferenceProperties". */
public abstract boolean isReferenceParameter(String localName);
Returns WsaTubeHelper for the WS-Addressing version identified by binding WSBinding and for the WSDLPort port.
Returns:WS-A version specific helper
Deprecated: TODO why are we exposing implementation specificc class through api? TODO Remove it if no one elase uses it.
/** * Returns WsaTubeHelper for the WS-Addressing version identified by <code>binding</code> * {@link WSBinding} and for the {@link WSDLPort} port. * * @return WS-A version specific helper * * @deprecated * TODO why are we exposing implementation specificc class through api? * TODO Remove it if no one elase uses it. */
public abstract WsaTubeHelper getWsaHelper(WSDLPort wsdlPort, SEIModel seiModel, WSBinding binding);
Gets the none URI value associated with this WS-Addressing version.
Returns:none URI value
Deprecated: Use noneUri.
/** * Gets the none URI value associated with this WS-Addressing version. * * @return none URI value * @deprecated * Use {@link #noneUri}. */
public final String getNoneUri() { return noneUri; }
Gets the anonymous URI value associated with this WS-Addressing version.
Deprecated: Use anonymousUri
/** * Gets the anonymous URI value associated with this WS-Addressing version. * * @deprecated * Use {@link #anonymousUri} */
public final String getAnonymousUri() { return anonymousUri; }
Gets the default fault Action value associated with this WS-Addressing version.
Returns:default fault Action value
/** * Gets the default fault Action value associated with this WS-Addressing version. * * @return default fault Action value */
public String getDefaultFaultAction() { return nsUri + "/fault"; }
Gets the local name of the fault when a header representing a WS-Addressing Message Addresing Property is absent.
Returns:local name
/** * Gets the local name of the fault when a header representing a WS-Addressing Message * Addresing Property is absent. * * @return local name */
/* package */ abstract String getMapRequiredLocalName();
Gets the description text when a required WS-Addressing header representing a Message Addressing Property is absent.
Returns:description text
/** * Gets the description text when a required WS-Addressing header representing a * Message Addressing Property is absent. * * @return description text */
public abstract String getMapRequiredText();
Gets the local name of the fault when a header representing anaddress is invalid.
Returns:local name
/** * Gets the local name of the fault when a header representing anaddress is invalid. * @return local name */
/* package */ abstract String getInvalidAddressLocalName();
Gets the local name of the fault when a header representing a WS-Addressing Message Addresing Property is invalid and cannot be processed.
Returns:local name
/** * Gets the local name of the fault when a header representing a WS-Addressing Message * Addresing Property is invalid and cannot be processed. * * @return local name */
/* package */ abstract String getInvalidMapLocalName();
Gets the description text when a header representing a WS-Addressing Message Addressing Property is invalid and cannot be processed.
Returns:description text
/** * Gets the description text when a header representing a WS-Addressing * Message Addressing Property is invalid and cannot be processed. * * @return description text */
public abstract String getInvalidMapText();
Gets the local name of the fault when a header representing a WS-Addressing Message Addresing Property occurs greater than expected number.
Returns:local name
/** * Gets the local name of the fault when a header representing a WS-Addressing Message * Addresing Property occurs greater than expected number. * * @return local name */
/* package */ abstract String getInvalidCardinalityLocalName(); /* package */ abstract String getWsdlAnonymousLocalName(); public abstract String getPrefix(); public abstract String getWsdlPrefix(); public abstract Class<? extends WebServiceFeature> getFeatureClass();
Creates an outbound Header from a reference parameter.
/** * Creates an outbound {@link Header} from a reference parameter. */
/*package*/ abstract Header createReferenceParameterHeader(XMLStreamBuffer mark, String nsUri, String localName);
Gets the local name for wsa:IsReferenceParameter. This method will return a valid value only valid for W3C WS-Addressing. For Member Submission WS-Addressing, this method returns null.
/** * Gets the local name for wsa:IsReferenceParameter. This method will return a valid * value only valid for W3C WS-Addressing. For Member Submission WS-Addressing, this method * returns null. */
/*package*/ abstract String getIsReferenceParameterLocalName(); public static AddressingVersion fromFeature(WebServiceFeature af) { if (af.getID().equals(AddressingFeature.ID)) return W3C; else if (af.getID().equals(MemberSubmissionAddressingFeature.ID)) return MEMBER; else return null; }
Gets the WebServiceFeature corresponding to the namespace URI of WS-Addressing policy assertion in the WSDL. enabled and required are used to initialize the value of the feature.
Params:
  • nsUri – namespace URI of the WS-Addressing policy assertion in the WSDL
  • enabled – true if feature is to be enabled, false otherwise
  • required – true if feature is required, false otherwise. Corresponds to wsdl:required on the extension/assertion.
Throws:
Returns:WebServiceFeature corresponding to the assertion namespace URI
/** * Gets the {@link WebServiceFeature} corresponding to the namespace URI of * WS-Addressing policy assertion in the WSDL. <code>enabled</code> and * <code>required</code> are used to initialize the value of the feature. * * @param nsUri namespace URI of the WS-Addressing policy assertion in the WSDL * @param enabled true if feature is to be enabled, false otherwise * @param required true if feature is required, false otherwise. Corresponds * to wsdl:required on the extension/assertion. * @return WebServiceFeature corresponding to the assertion namespace URI * @throws WebServiceException if an unsupported namespace URI is passed */
public static @NotNull WebServiceFeature getFeature(String nsUri, boolean enabled, boolean required) { if (nsUri.equals(W3C.policyNsUri)) return new AddressingFeature(enabled, required); else if (nsUri.equals(MEMBER.policyNsUri)) return new MemberSubmissionAddressingFeature(enabled, required); else throw new WebServiceException("Unsupported namespace URI: " + nsUri); }
Gets the corresponding AddressingVersion instance from the EPR class.
/** * Gets the corresponding {@link AddressingVersion} instance from the * EPR class. */
public static @NotNull AddressingVersion fromSpecClass(Class<? extends EndpointReference> eprClass) { if(eprClass==W3CEndpointReference.class) return W3C; if(eprClass==MemberSubmissionEndpointReference.class) return MEMBER; throw new WebServiceException("Unsupported EPR type: "+eprClass); }
Returns true if the WebServiceFeature is either a AddressingFeature or MemberSubmissionAddressingFeature and is required.
Params:
  • wsf – The WebServiceFeature encaps
Throws:
Returns:true if wsf requires WS-Addressing
/** * Returns true if the WebServiceFeature is either a {@link AddressingFeature} or * {@link MemberSubmissionAddressingFeature} and is required. * * @param wsf The WebServiceFeature encaps * @throws WebServiceException if <code>wsf</code> does not contain either {@link AddressingFeature} or * {@link MemberSubmissionAddressingFeature} * @return true if <code>wsf</code> requires WS-Addressing */
public static boolean isRequired(WebServiceFeature wsf) { if (wsf.getID().equals(AddressingFeature.ID)) { return ((AddressingFeature)wsf).isRequired(); } else if (wsf.getID().equals(MemberSubmissionAddressingFeature.ID)) { return ((MemberSubmissionAddressingFeature)wsf).isRequired(); } else throw new WebServiceException("WebServiceFeature not an Addressing feature: "+ wsf.getID()); }
Returns true if binding contains either a AddressingFeature or MemberSubmissionAddressingFeature and is required.
Params:
  • binding – The binding
Returns:true if binding requires WS-Addressing
/** * Returns true if <code>binding</code> contains either a {@link AddressingFeature} or * {@link MemberSubmissionAddressingFeature} and is required. * * @param binding The binding * @return true if <code>binding</code> requires WS-Addressing */
public static boolean isRequired(WSBinding binding) { AddressingFeature af = binding.getFeature(AddressingFeature.class); if (af != null) return af.isRequired(); MemberSubmissionAddressingFeature msaf = binding.getFeature(MemberSubmissionAddressingFeature.class); if(msaf != null) return msaf.isRequired(); return false; }
Returns true if binding contains either a AddressingFeature or MemberSubmissionAddressingFeature and is enabled.
Params:
  • binding – The binding
Returns:true if WS-Addressing is enabled for binding.
/** * Returns true if <code>binding</code> contains either a {@link AddressingFeature} or * {@link MemberSubmissionAddressingFeature} and is enabled. * * @param binding The binding * @return true if WS-Addressing is enabled for <code>binding</code>. */
public static boolean isEnabled(WSBinding binding) { return binding.isFeatureEnabled(MemberSubmissionAddressingFeature.class) || binding.isFeatureEnabled(AddressingFeature.class); } public final static class EPR { public final Class<? extends EndpointReference> eprClass; public final String address; public final String serviceName; public final String portName; public final String portTypeName; public final String referenceParameters;
Element under which metadata is specified. In W3C, it is wsa:Metadata In Member, it is directly under mex:MetadataSection
/** * Element under which metadata is specified. * In W3C, it is wsa:Metadata * In Member, it is directly under mex:MetadataSection */
public final QName wsdlMetadata; public final String referenceProperties; public EPR(Class<? extends EndpointReference> eprClass, String address, String serviceName, String portName, String portTypeName, QName wsdlMetadata, String referenceParameters, String referenceProperties) { this.eprClass = eprClass; this.address = address; this.serviceName = serviceName; this.portName = portName; this.portTypeName = portTypeName; this.referenceParameters = referenceParameters; this.referenceProperties = referenceProperties; this.wsdlMetadata = wsdlMetadata; } } }