< prev index next >
src/java.xml.ws/share/classes/javax/xml/ws/wsaddressing/W3CEndpointReferenceBuilder.java
Print this page
*** 1,7 ****
/*
! * Copyright (c) 2005, 2012, 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
--- 1,7 ----
/*
! * Copyright (c) 2005, 2015, 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
*** 36,173 ****
import javax.xml.ws.WebServiceException;
import javax.xml.ws.spi.Provider;
/**
! * This class is used to build <code>W3CEndpointReference</code>
* instances. The intended use of this clsss is for
* an application component, for example a factory component,
! * to create an <code>W3CEndpointReference</code> for a
* web service endpoint published by the same
* Java EE application. It can also be used to create
! * <code>W3CEndpointReferences</code> for an Java SE based
! * endpoint by providing the <code>address</code> property.
* <p>
! * When creating a <code>W3CEndpointReference</code> for an
* endpoint that is not published by the same Java EE application,
! * the <code>address</code> property MUST be specified.
* <p>
! * When creating a <code>W3CEndpointReference</code> for an endpoint
! * published by the same Java EE application, the <code>address</code>
! * property MAY be <code>null</code> but then the <code>serviceName</code>
! * and <code>endpointName</code> MUST specify an endpoint published by
* the same Java EE application.
* <p>
! * When the <code>wsdlDocumentLocation</code> is specified it MUST refer
! * to a valid WSDL document and the <code>serviceName</code> and
! * <code>endpointName</code> (if specified) MUST match a service and port
* in the WSDL document.
*
* @since 1.6, JAX-WS 2.1
*/
public final class W3CEndpointReferenceBuilder {
/**
! * Creates a new <code>W3CEndpointReferenceBuilder</code> instance.
*/
public W3CEndpointReferenceBuilder() {
referenceParameters = new ArrayList<Element>();
metadata = new ArrayList<Element>();
attributes = new HashMap<QName, String>();
elements = new ArrayList<Element>();
}
/**
! * Sets the <code>address</code> to the
! * <code>W3CEndpointReference</code> instance's
! * <code>wsa:Address</code>.
* <p>
! * The <code>address</code> MUST be set to a non-<code>null</code>
! * value when building a <code>W3CEndpointReference</code> for a
* web service endpoint that is not published by the same
* Java EE application or when running on Java SE.
*
* @param address The address of the endpoint to be targeted
! * by the returned <code>W3CEndpointReference</code>.
*
! * @return A <code>W3CEndpointReferenceBuilder</code> instance with
! * the <code>address</code> set to the <code>wsa:Address</code>.
*/
public W3CEndpointReferenceBuilder address(String address) {
this.address = address;
return this;
}
/**
! * Sets the <code>interfaceName</code> as the
! * <code>wsam:InterfaceName</code> element in the
! * <code>wsa:Metadata</code> element.
*
* See <a href="http://www.w3.org/TR/2007/REC-ws-addr-metadata-20070904/#refmetadatfromepr">
* 2.1 Referencing WSDL Metadata from an EPR</a> for more details.
*
* @param interfaceName The port type name of the endpoint to be targeted
! * by the returned <code>W3CEndpointReference</code>.
*
! * @return A <code>W3CEndpointReferenceBuilder</code> instance with
! * the <code>interfaceName</code> as <code>wsam:InterfaceName</code>
! * element added to the <code>wsa:Metadata</code> element
* @since 1.7
*/
public W3CEndpointReferenceBuilder interfaceName(QName interfaceName) {
this.interfaceName = interfaceName;
return this;
}
/**
! * Sets the <code>serviceName</code> as the
! * <code>wsam:ServiceName</code> element in the
! * <code>wsa:Metadata</code> element.
*
* See <a href="http://www.w3.org/TR/2007/REC-ws-addr-metadata-20070904/#refmetadatfromepr">
* 2.1 Referencing WSDL Metadata from an EPR</a> for more details.
*
* @param serviceName The service name of the endpoint to be targeted
! * by the returned <code>W3CEndpointReference</code>. This property
! * may also be used with the <code>endpointName</code> (portName)
! * property to lookup the <code>address</code> of a web service
* endpoint that is published by the same Java EE application.
*
! * @return A <code>W3CEndpointReferenceBuilder</code> instance with
! * the <code>serviceName</code> as <code>wsam:ServiceName</code>
! * element added to the <code>wsa:Metadata</code> element
*
*/
public W3CEndpointReferenceBuilder serviceName(QName serviceName) {
this.serviceName = serviceName;
return this;
}
/**
! * Sets the <code>endpointName</code> as
! * <code>wsam:ServiceName/@EndpointName</code> in the
! * <code>wsa:Metadata</code> element. This method can only be called
* after the {@link #serviceName} method has been called.
* <p>
* See <a href="http://www.w3.org/TR/2007/REC-ws-addr-metadata-20070904/#refmetadatfromepr">
* 2.1 Referencing WSDL Metadata from an EPR</a> for more details.
*
* @param endpointName The name of the endpoint to be targeted
! * by the returned <code>W3CEndpointReference</code>. The
! * <code>endpointName</code> (portName) property may also be
! * used with the <code>serviceName</code> property to lookup
! * the <code>address</code> of a web service
* endpoint published by the same Java EE application.
*
! * @return A <code>W3CEndpointReferenceBuilder</code> instance with
! * the <code>endpointName</code> as
! * <code>wsam:ServiceName/@EndpointName</code> in the
! * <code>wsa:Metadata</code> element.
! *
! * @throws IllegalStateException, if the <code>serviceName</code>
! * has not been set.
! * @throws IllegalArgumentException, if the <code>endpointName</code>'s
! * Namespace URI doesn't match <code>serviceName</code>'s Namespace URI
*
*/
public W3CEndpointReferenceBuilder endpointName(QName endpointName) {
if (serviceName == null) {
throw new IllegalStateException("The W3CEndpointReferenceBuilder's serviceName must be set before setting the endpointName: "+endpointName);
--- 36,174 ----
import javax.xml.ws.WebServiceException;
import javax.xml.ws.spi.Provider;
/**
! * This class is used to build {@code W3CEndpointReference}
* instances. The intended use of this clsss is for
* an application component, for example a factory component,
! * to create an {@code W3CEndpointReference} for a
* web service endpoint published by the same
* Java EE application. It can also be used to create
! * {@code W3CEndpointReferences} for an Java SE based
! * endpoint by providing the {@code address} property.
* <p>
! * When creating a {@code W3CEndpointReference} for an
* endpoint that is not published by the same Java EE application,
! * the {@code address} property MUST be specified.
* <p>
! * When creating a {@code W3CEndpointReference} for an endpoint
! * published by the same Java EE application, the {@code address}
! * property MAY be {@code null} but then the {@code serviceName}
! * and {@code endpointName} MUST specify an endpoint published by
* the same Java EE application.
* <p>
! * When the {@code wsdlDocumentLocation} is specified it MUST refer
! * to a valid WSDL document and the {@code serviceName} and
! * {@code endpointName} (if specified) MUST match a service and port
* in the WSDL document.
*
* @since 1.6, JAX-WS 2.1
*/
public final class W3CEndpointReferenceBuilder {
/**
! * Creates a new {@code W3CEndpointReferenceBuilder} instance.
*/
public W3CEndpointReferenceBuilder() {
referenceParameters = new ArrayList<Element>();
metadata = new ArrayList<Element>();
attributes = new HashMap<QName, String>();
elements = new ArrayList<Element>();
}
/**
! * Sets the {@code address} to the
! * {@code W3CEndpointReference} instance's
! * {@code wsa:Address}.
* <p>
! * The {@code address} MUST be set to a non-{@code null}
! * value when building a {@code W3CEndpointReference} for a
* web service endpoint that is not published by the same
* Java EE application or when running on Java SE.
*
* @param address The address of the endpoint to be targeted
! * by the returned {@code W3CEndpointReference}.
*
! * @return A {@code W3CEndpointReferenceBuilder} instance with
! * the {@code address} set to the {@code wsa:Address}.
*/
public W3CEndpointReferenceBuilder address(String address) {
this.address = address;
return this;
}
/**
! * Sets the {@code interfaceName} as the
! * {@code wsam:InterfaceName} element in the
! * {@code wsa:Metadata} element.
*
* See <a href="http://www.w3.org/TR/2007/REC-ws-addr-metadata-20070904/#refmetadatfromepr">
* 2.1 Referencing WSDL Metadata from an EPR</a> for more details.
*
* @param interfaceName The port type name of the endpoint to be targeted
! * by the returned {@code W3CEndpointReference}.
*
! * @return A {@code W3CEndpointReferenceBuilder} instance with
! * the {@code interfaceName} as {@code wsam:InterfaceName}
! * element added to the {@code wsa:Metadata} element
* @since 1.7
*/
public W3CEndpointReferenceBuilder interfaceName(QName interfaceName) {
this.interfaceName = interfaceName;
return this;
}
/**
! * Sets the {@code serviceName} as the
! * {@code wsam:ServiceName} element in the
! * {@code wsa:Metadata} element.
*
* See <a href="http://www.w3.org/TR/2007/REC-ws-addr-metadata-20070904/#refmetadatfromepr">
* 2.1 Referencing WSDL Metadata from an EPR</a> for more details.
*
* @param serviceName The service name of the endpoint to be targeted
! * by the returned {@code W3CEndpointReference}. This property
! * may also be used with the {@code endpointName} (portName)
! * property to lookup the {@code address} of a web service
* endpoint that is published by the same Java EE application.
*
! * @return A {@code W3CEndpointReferenceBuilder} instance with
! * the {@code serviceName} as {@code wsam:ServiceName}
! * element added to the {@code wsa:Metadata} element
*
*/
public W3CEndpointReferenceBuilder serviceName(QName serviceName) {
this.serviceName = serviceName;
return this;
}
/**
! * Sets the {@code endpointName} as
! * {@code wsam:ServiceName/@EndpointName} in the
! * {@code wsa:Metadata} element. This method can only be called
* after the {@link #serviceName} method has been called.
* <p>
* See <a href="http://www.w3.org/TR/2007/REC-ws-addr-metadata-20070904/#refmetadatfromepr">
* 2.1 Referencing WSDL Metadata from an EPR</a> for more details.
*
* @param endpointName The name of the endpoint to be targeted
! * by the returned {@code W3CEndpointReference}. The
! * {@code endpointName} (portName) property may also be
! * used with the {@code serviceName} property to lookup
! * the {@code address} of a web service
* endpoint published by the same Java EE application.
*
! * @return A {@code W3CEndpointReferenceBuilder} instance with
! * the {@code endpointName} as
! * {@code wsam:ServiceName/@EndpointName} in the
! * {@code wsa:Metadata} element.
! *
! * @throws java.lang.IllegalStateException if the {@code serviceName}
! * has not been set
! *
! * @throws java.lang.IllegalArgumentException if the {@code endpointName}'s
! * Namespace URI doesn't match {@code serviceName}'s Namespace URI
*
*/
public W3CEndpointReferenceBuilder endpointName(QName endpointName) {
if (serviceName == null) {
throw new IllegalStateException("The W3CEndpointReferenceBuilder's serviceName must be set before setting the endpointName: "+endpointName);
*** 176,260 ****
this.endpointName = endpointName;
return this;
}
/**
! * Sets the <code>wsdlDocumentLocation</code> that will be referenced
! * as <code>wsa:Metadata/@wsdli:wsdlLocation</code>. The namespace name
* for the wsdli:wsdlLocation's value can be taken from the WSDL itself.
*
* <p>
* See <a href="http://www.w3.org/TR/2007/REC-ws-addr-metadata-20070904/#refmetadatfromepr">
* 2.1 Referencing WSDL Metadata from an EPR</a> for more details.
*
* @param wsdlDocumentLocation The location of the WSDL document to
! * be referenced in the <code>wsa:Metadata</code> of the
! * <code>W3CEndpointReference</code>.
! * @return A <code>W3CEndpointReferenceBuilder</code> instance with
! * the <code>wsdlDocumentLocation</code> that is to be referenced.
*/
public W3CEndpointReferenceBuilder wsdlDocumentLocation(String wsdlDocumentLocation) {
this.wsdlDocumentLocation = wsdlDocumentLocation;
return this;
}
/**
! * Adds the <code>referenceParameter</code> to the
! * <code>W3CEndpointReference</code> instance
! * <code>wsa:ReferenceParameters</code> element.
*
* @param referenceParameter The element to be added to the
! * <code>wsa:ReferenceParameters</code> element.
*
! * @return A <code>W3CEndpointReferenceBuilder</code> instance with
! * the <code>referenceParameter</code> added to the
! * <code>wsa:ReferenceParameters</code> element.
*
! * @throws java.lang.IllegalArgumentException if <code>referenceParameter</code>
! * is <code>null</code>.
*/
public W3CEndpointReferenceBuilder referenceParameter(Element referenceParameter) {
if (referenceParameter == null)
throw new java.lang.IllegalArgumentException("The referenceParameter cannot be null.");
referenceParameters.add(referenceParameter);
return this;
}
/**
! * Adds the <code>metadataElement</code> to the
! * <code>W3CEndpointReference</code> instance's
! * <code>wsa:Metadata</code> element.
*
* @param metadataElement The element to be added to the
! * <code>wsa:Metadata</code> element.
*
! * @return A <code>W3CEndpointReferenceBuilder</code> instance with
! * the <code>metadataElement</code> added to the
! * <code>wsa:Metadata</code> element.
*
! * @throws java.lang.IllegalArgumentException if <code>metadataElement</code>
! * is <code>null</code>.
*/
public W3CEndpointReferenceBuilder metadata(Element metadataElement) {
if (metadataElement == null)
throw new java.lang.IllegalArgumentException("The metadataElement cannot be null.");
metadata.add(metadataElement);
return this;
}
/**
* Adds an extension element to the
! * <code>W3CEndpointReference</code> instance's
! * <code>wsa:EndpointReference</code> element.
*
* @param element The extension element to be added to the
! * <code>W3CEndpointReference</code>
! * @return A <code>W3CEndpointReferenceBuilder</code> instance with
! * the extension <code>element</code> added to the
! * <code>W3CEndpointReference</code> instance.
! * @throws java.lang.IllegalArgumentException if <code>element</code>
! * is <code>null</code>.
*
* @since 1.7, JAX-WS 2.2
*/
public W3CEndpointReferenceBuilder element(Element element) {
if (element == null) {
--- 177,261 ----
this.endpointName = endpointName;
return this;
}
/**
! * Sets the {@code wsdlDocumentLocation} that will be referenced
! * as {@code wsa:Metadata/@wsdli:wsdlLocation}. The namespace name
* for the wsdli:wsdlLocation's value can be taken from the WSDL itself.
*
* <p>
* See <a href="http://www.w3.org/TR/2007/REC-ws-addr-metadata-20070904/#refmetadatfromepr">
* 2.1 Referencing WSDL Metadata from an EPR</a> for more details.
*
* @param wsdlDocumentLocation The location of the WSDL document to
! * be referenced in the {@code wsa:Metadata} of the
! * {@code W3CEndpointReference}.
! * @return A {@code W3CEndpointReferenceBuilder} instance with
! * the {@code wsdlDocumentLocation} that is to be referenced.
*/
public W3CEndpointReferenceBuilder wsdlDocumentLocation(String wsdlDocumentLocation) {
this.wsdlDocumentLocation = wsdlDocumentLocation;
return this;
}
/**
! * Adds the {@code referenceParameter} to the
! * {@code W3CEndpointReference} instance
! * {@code wsa:ReferenceParameters} element.
*
* @param referenceParameter The element to be added to the
! * {@code wsa:ReferenceParameters} element.
*
! * @return A {@code W3CEndpointReferenceBuilder} instance with
! * the {@code referenceParameter} added to the
! * {@code wsa:ReferenceParameters} element.
*
! * @throws java.lang.IllegalArgumentException if {@code referenceParameter}
! * is {@code null}.
*/
public W3CEndpointReferenceBuilder referenceParameter(Element referenceParameter) {
if (referenceParameter == null)
throw new java.lang.IllegalArgumentException("The referenceParameter cannot be null.");
referenceParameters.add(referenceParameter);
return this;
}
/**
! * Adds the {@code metadataElement} to the
! * {@code W3CEndpointReference} instance's
! * {@code wsa:Metadata} element.
*
* @param metadataElement The element to be added to the
! * {@code wsa:Metadata} element.
*
! * @return A {@code W3CEndpointReferenceBuilder} instance with
! * the {@code metadataElement} added to the
! * {@code wsa:Metadata} element.
*
! * @throws java.lang.IllegalArgumentException if {@code metadataElement}
! * is {@code null}.
*/
public W3CEndpointReferenceBuilder metadata(Element metadataElement) {
if (metadataElement == null)
throw new java.lang.IllegalArgumentException("The metadataElement cannot be null.");
metadata.add(metadataElement);
return this;
}
/**
* Adds an extension element to the
! * {@code W3CEndpointReference} instance's
! * {@code wsa:EndpointReference} element.
*
* @param element The extension element to be added to the
! * {@code W3CEndpointReference}
! * @return A {@code W3CEndpointReferenceBuilder} instance with
! * the extension {@code element} added to the
! * {@code W3CEndpointReference} instance.
! * @throws java.lang.IllegalArgumentException if {@code element}
! * is {@code null}.
*
* @since 1.7, JAX-WS 2.2
*/
public W3CEndpointReferenceBuilder element(Element element) {
if (element == null) {
*** 264,284 ****
return this;
}
/**
* Adds an extension attribute to the
! * <code>W3CEndpointReference</code> instance's
! * <code>wsa:EndpointReference</code> element.
*
* @param name The name of the extension attribute to be added to the
! * <code>W3CEndpointReference</code>
* @param value extension attribute value
! * @return A <code>W3CEndpointReferenceBuilder</code> instance with
! * the extension attribute added to the <code>W3CEndpointReference</code>
* instance.
! * @throws java.lang.IllegalArgumentException if <code>name</code>
! * or <code>value</code> is <code>null</code>.
*
* @since 1.7, JAX-WS 2.2
*/
public W3CEndpointReferenceBuilder attribute(QName name, String value) {
if (name == null || value == null) {
--- 265,285 ----
return this;
}
/**
* Adds an extension attribute to the
! * {@code W3CEndpointReference} instance's
! * {@code wsa:EndpointReference} element.
*
* @param name The name of the extension attribute to be added to the
! * {@code W3CEndpointReference}
* @param value extension attribute value
! * @return A {@code W3CEndpointReferenceBuilder} instance with
! * the extension attribute added to the {@code W3CEndpointReference}
* instance.
! * @throws java.lang.IllegalArgumentException if {@code name}
! * or {@code value} is {@code null}.
*
* @since 1.7, JAX-WS 2.2
*/
public W3CEndpointReferenceBuilder attribute(QName name, String value) {
if (name == null || value == null) {
*** 287,338 ****
attributes.put(name, value);
return this;
}
/**
! * Builds a <code>W3CEndpointReference</code> from the accumulated
! * properties set on this <code>W3CEndpointReferenceBuilder</code>
* instance.
* <p>
! * This method can be used to create a <code>W3CEndpointReference</code>
! * for any endpoint by specifying the <code>address</code> property along
* with any other desired properties. This method
! * can also be used to create a <code>W3CEndpointReference</code> for
* an endpoint that is published by the same Java EE application.
! * This method can automatically determine the <code>address</code> of
* an endpoint published by the same Java EE application that is identified by the
! * <code>serviceName</code> and
! * <code>endpointName</code> properties. If the <code>address</code> is
! * <code>null</code> and the <code>serviceName</code> and
! * <code>endpointName</code>
* do not identify an endpoint published by the same Java EE application, a
! * <code>java.lang.IllegalStateException</code> MUST be thrown.
*
*
! * @return <code>W3CEndpointReference</code> from the accumulated
! * properties set on this <code>W3CEndpointReferenceBuilder</code>
! * instance. This method never returns <code>null</code>.
*
* @throws IllegalStateException
* <ul>
! * <li>If the <code>address</code>, <code>serviceName</code> and
! * <code>endpointName</code> are all <code>null</code>.
! * <li>If the <code>serviceName</code> service is <code>null</code> and the
! * <code>endpointName</code> is NOT <code>null</code>.
! * <li>If the <code>address</code> property is <code>null</code> and
! * the <code>serviceName</code> and <code>endpointName</code> do not
* specify a valid endpoint published by the same Java EE
* application.
! * <li>If the <code>serviceName</code> is NOT <code>null</code>
* and is not present in the specified WSDL.
! * <li>If the <code>endpointName</code> port is not <code>null</code> and it
! * is not present in <code>serviceName</code> service in the WSDL.
! * <li>If the <code>wsdlDocumentLocation</code> is NOT <code>null</code>
* and does not represent a valid WSDL.
* </ul>
* @throws WebServiceException If an error occurs while creating the
! * <code>W3CEndpointReference</code>.
*
*/
public W3CEndpointReference build() {
if (elements.isEmpty() && attributes.isEmpty() && interfaceName == null) {
// 2.1 API
--- 288,339 ----
attributes.put(name, value);
return this;
}
/**
! * Builds a {@code W3CEndpointReference} from the accumulated
! * properties set on this {@code W3CEndpointReferenceBuilder}
* instance.
* <p>
! * This method can be used to create a {@code W3CEndpointReference}
! * for any endpoint by specifying the {@code address} property along
* with any other desired properties. This method
! * can also be used to create a {@code W3CEndpointReference} for
* an endpoint that is published by the same Java EE application.
! * This method can automatically determine the {@code address} of
* an endpoint published by the same Java EE application that is identified by the
! * {@code serviceName} and
! * {@code endpointName} properties. If the {@code address} is
! * {@code null} and the {@code serviceName} and
! * {@code endpointName}
* do not identify an endpoint published by the same Java EE application, a
! * {@code java.lang.IllegalStateException} MUST be thrown.
*
*
! * @return {@code W3CEndpointReference} from the accumulated
! * properties set on this {@code W3CEndpointReferenceBuilder}
! * instance. This method never returns {@code null}.
*
* @throws IllegalStateException
* <ul>
! * <li>If the {@code address}, {@code serviceName} and
! * {@code endpointName} are all {@code null}.
! * <li>If the {@code serviceName} service is {@code null} and the
! * {@code endpointName} is NOT {@code null}.
! * <li>If the {@code address} property is {@code null} and
! * the {@code serviceName} and {@code endpointName} do not
* specify a valid endpoint published by the same Java EE
* application.
! * <li>If the {@code serviceName} is NOT {@code null}
* and is not present in the specified WSDL.
! * <li>If the {@code endpointName} port is not {@code null} and it
! * is not present in {@code serviceName} service in the WSDL.
! * <li>If the {@code wsdlDocumentLocation} is NOT {@code null}
* and does not represent a valid WSDL.
* </ul>
* @throws WebServiceException If an error occurs while creating the
! * {@code W3CEndpointReference}.
*
*/
public W3CEndpointReference build() {
if (elements.isEmpty() && attributes.isEmpty() && interfaceName == null) {
// 2.1 API
< prev index next >