1 /*
   2  * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 package javax.xml.ws.soap;
  27 
  28 import java.lang.annotation.Documented;
  29 import java.lang.annotation.Target;
  30 import java.lang.annotation.ElementType;
  31 import java.lang.annotation.Retention;
  32 import java.lang.annotation.RetentionPolicy;
  33 
  34 import javax.xml.ws.BindingProvider;
  35 import javax.xml.ws.WebServiceRef;
  36 import javax.xml.ws.WebServiceRefs;
  37 import javax.xml.ws.WebServiceProvider;
  38 import javax.xml.ws.soap.AddressingFeature.Responses;
  39 import javax.xml.ws.spi.WebServiceFeatureAnnotation;
  40 
  41 /**
  42  * This annotation represents the use of WS-Addressing with either
  43  * the SOAP 1.1/HTTP or SOAP 1.2/HTTP binding. Using this annotation
  44  * with any other binding is undefined.
  45  * <p>
  46  * This annotation MUST only be used in conjunction with the
  47  * {@link javax.jws.WebService}, {@link WebServiceProvider},
  48  *  and {@link WebServiceRef} annotations.
  49  * When used with a {@code javax.jws.WebService} annotation, this
  50  * annotation MUST only be used on the service endpoint implementation
  51  * class.
  52  * When used with a {@code WebServiceRef} annotation, this annotation
  53  * MUST only be used when a proxy instance is created. The injected SEI
  54  * proxy, and endpoint MUST honor the values of the {@code Addressing}
  55  * annotation.
  56  * <p>
  57  * This annotation's behaviour is defined by the corresponding feature
  58  * {@link AddressingFeature}.
  59  *
  60  * @since 1.6, JAX-WS 2.1
  61  */
  62 @Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD})
  63 @Retention(RetentionPolicy.RUNTIME)
  64 @Documented
  65 @WebServiceFeatureAnnotation(id=AddressingFeature.ID,bean=AddressingFeature.class)
  66 public @interface Addressing {
  67     /**
  68      * Specifies if this feature is enabled or disabled. If enabled, it means
  69      * the endpoint supports WS-Addressing but does not require its use.
  70      * Corresponding
  71      * <a href="http://www.w3.org/TR/ws-addr-metadata/#wspolicyaddressing">
  72      * 3.1.1 Addressing Assertion</a> must be generated in the generated WSDL.
  73      */
  74     boolean enabled() default true;
  75 
  76     /**
  77      * If addressing is enabled, this property determines whether the endpoint
  78      * requires WS-Addressing. If required is true, the endpoint requires
  79      * WS-Addressing and WS-Addressing headers MUST
  80      * be present on incoming messages. A corresponding
  81      * <a href="http://www.w3.org/TR/ws-addr-metadata/#wspolicyaddressing">
  82      * 3.1.1 Addressing Assertion</a> must be generated in the WSDL.
  83      */
  84     boolean required() default false;
  85 
  86     /**
  87      * If addressing is enabled, this property determines whether endpoint
  88      * requires the use of anonymous responses, or non-anonymous responses,
  89      * or all.
  90      *
  91      * <p>
  92      * {@link Responses#ALL} supports all response types and this is the
  93      * default value.
  94      *
  95      * <p>
  96      * {@link Responses#ANONYMOUS} requires the use of only anonymous
  97      * responses. It will result into wsam:AnonymousResponses nested assertion
  98      * as specified in
  99      * <a href="http://www.w3.org/TR/ws-addr-metadata/#wspolicyanonresponses">
 100      * 3.1.2 AnonymousResponses Assertion</a> in the generated WSDL.
 101      *
 102      * <p>
 103      * {@link Responses#NON_ANONYMOUS} requires the use of only non-anonymous
 104      * responses. It will result into
 105      * wsam:NonAnonymousResponses nested assertion as specified in
 106      * <a href="http://www.w3.org/TR/ws-addr-metadata/#wspolicynonanonresponses">
 107      * 3.1.3 NonAnonymousResponses Assertion</a> in the generated WSDL.
 108      *
 109      * @since 1.7, JAX-WS 2.2
 110      */
 111     Responses responses() default Responses.ALL;
 112 
 113 }