/*
 * Copyright (c) 2005, 2017, 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 javax.xml.ws.soap;

import java.lang.annotation.Documented;
import java.lang.annotation.Target;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

import javax.xml.ws.WebServiceRef;
import javax.xml.ws.WebServiceProvider;
import javax.xml.ws.soap.AddressingFeature.Responses;
import javax.xml.ws.spi.WebServiceFeatureAnnotation;

This annotation represents the use of WS-Addressing with either the SOAP 1.1/HTTP or SOAP 1.2/HTTP binding. Using this annotation with any other binding is undefined.

This annotation MUST only be used in conjunction with the javax.jws.WebService, WebServiceProvider, and WebServiceRef annotations. When used with a javax.jws.WebService annotation, this annotation MUST only be used on the service endpoint implementation class. When used with a WebServiceRef annotation, this annotation MUST only be used when a proxy instance is created. The injected SEI proxy, and endpoint MUST honor the values of the Addressing annotation.

This annotation's behaviour is defined by the corresponding feature AddressingFeature.

Since:1.6, JAX-WS 2.1
/** * This annotation represents the use of WS-Addressing with either * the SOAP 1.1/HTTP or SOAP 1.2/HTTP binding. Using this annotation * with any other binding is undefined. * <p> * This annotation MUST only be used in conjunction with the * {@code javax.jws.WebService}, {@link WebServiceProvider}, * and {@link WebServiceRef} annotations. * When used with a {@code javax.jws.WebService} annotation, this * annotation MUST only be used on the service endpoint implementation * class. * When used with a {@code WebServiceRef} annotation, this annotation * MUST only be used when a proxy instance is created. The injected SEI * proxy, and endpoint MUST honor the values of the {@code Addressing} * annotation. * <p> * This annotation's behaviour is defined by the corresponding feature * {@link AddressingFeature}. * * @since 1.6, JAX-WS 2.1 */
@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) @Documented @WebServiceFeatureAnnotation(id=AddressingFeature.ID,bean=AddressingFeature.class) public @interface Addressing {
Specifies if this feature is enabled or disabled. If enabled, it means the endpoint supports WS-Addressing but does not require its use. Corresponding 3.1.1 Addressing Assertion must be generated in the generated WSDL.
Returns:true if endpoint supports WS-Addressing, false otherwise
/** * Specifies if this feature is enabled or disabled. If enabled, it means * the endpoint supports WS-Addressing but does not require its use. * Corresponding * <a href="http://www.w3.org/TR/ws-addr-metadata/#wspolicyaddressing"> * 3.1.1 Addressing Assertion</a> must be generated in the generated WSDL. * * @return {@code true} if endpoint supports WS-Addressing, {@code false} otherwise */
boolean enabled() default true;
If addressing is enabled, this property determines whether the endpoint requires WS-Addressing. If required is true, the endpoint requires WS-Addressing and WS-Addressing headers MUST be present on incoming messages. A corresponding 3.1.1 Addressing Assertion must be generated in the WSDL.
Returns:true if endpoint requires WS-Addressing, false otherwise
/** * If addressing is enabled, this property determines whether the endpoint * requires WS-Addressing. If required is true, the endpoint requires * WS-Addressing and WS-Addressing headers MUST * be present on incoming messages. A corresponding * <a href="http://www.w3.org/TR/ws-addr-metadata/#wspolicyaddressing"> * 3.1.1 Addressing Assertion</a> must be generated in the WSDL. * * @return {@code true} if endpoint requires WS-Addressing, {@code false} otherwise */
boolean required() default false;
If addressing is enabled, this property determines whether endpoint requires the use of anonymous responses, or non-anonymous responses, or all.

Responses.ALL supports all response types and this is the default value.

Responses.ANONYMOUS requires the use of only anonymous responses. It will result into wsam:AnonymousResponses nested assertion as specified in 3.1.2 AnonymousResponses Assertion in the generated WSDL.

Responses.NON_ANONYMOUS requires the use of only non-anonymous responses. It will result into wsam:NonAnonymousResponses nested assertion as specified in 3.1.3 NonAnonymousResponses Assertion in the generated WSDL.

Returns:supported response types
Since:1.7, JAX-WS 2.2
/** * If addressing is enabled, this property determines whether endpoint * requires the use of anonymous responses, or non-anonymous responses, * or all. * * <p> * {@link Responses#ALL} supports all response types and this is the * default value. * * <p> * {@link Responses#ANONYMOUS} requires the use of only anonymous * responses. It will result into wsam:AnonymousResponses nested assertion * as specified in * <a href="http://www.w3.org/TR/ws-addr-metadata/#wspolicyanonresponses"> * 3.1.2 AnonymousResponses Assertion</a> in the generated WSDL. * * <p> * {@link Responses#NON_ANONYMOUS} requires the use of only non-anonymous * responses. It will result into * wsam:NonAnonymousResponses nested assertion as specified in * <a href="http://www.w3.org/TR/ws-addr-metadata/#wspolicynonanonresponses"> * 3.1.3 NonAnonymousResponses Assertion</a> in the generated WSDL. * * @return supported response types * @since 1.7, JAX-WS 2.2 */
Responses responses() default Responses.ALL; }