View Javadoc
1   /*
2    * Copyright (c) 1997, 2012, 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 com.sun.xml.internal.ws.api.model;
27  
28  import com.sun.istack.internal.NotNull;
29  import com.sun.istack.internal.Nullable;
30  import com.sun.xml.internal.ws.api.model.soap.SOAPBinding;
31  
32  import javax.xml.namespace.QName;
33  import java.lang.reflect.Method;
34  import javax.jws.WebService;
35  
36  /**
37   * Abstracts the annotated {@link Method} of a SEI.
38   *
39   * @author Vivek Pandey
40   */
41  public interface JavaMethod {
42  
43      /**
44       * Gets the root {@link SEIModel} that owns this model.
45       */
46      SEIModel getOwner();
47  
48      /**
49       * On the server side, it uses this for invocation of the web service
50       *
51       * <p>
52       * {@literal @}{@link WebService}(endpointInterface="I")
53       * class A { }
54       *
55       * In this case, it retuns A's method
56       *
57       * <p>
58       * {@literal @}{@link WebService}(endpointInterface="I")
59       * class A implements I { }
60       * In this case, it returns A's method
61       *
62       * <p>
63       * {@literal @}{@link WebService}
64       * class A { }
65       * In this case, it returns A's method
66       *
67       * @return Returns the java {@link Method}
68       */
69      @NotNull Method getMethod();
70  
71  
72      /**
73       * This should be used if you want to access annotations on WebMethod
74       * Returns the SEI method if there is one.
75       *
76       * <p>
77       * {@literal @}{@link WebService}(endpointInterface="I")
78       * class A { }
79       * In this case, it retuns I's method
80       *
81       * <p>
82       * {@literal @}{@link WebService}(endpointInterface="I")
83       * class A implements I { }
84       * In this case, it returns I's method
85       *
86       * <p>
87       * {@literal @}{@link WebService}
88       * class A { }
89       * In this case, it returns A's method
90       *
91       * @return Returns the java {@link Method}
92       */
93      @NotNull Method getSEIMethod();
94  
95      /**
96       * @return Returns the {@link MEP}.
97       */
98      MEP getMEP();
99  
100     /**
101      * Binding object - a {@link SOAPBinding} isntance.
102      *
103      * @return the Binding object
104      */
105     SOAPBinding getBinding();
106 
107     /**
108      * Gives the wsdl:operation@name value
109      */
110     @NotNull String getOperationName();
111 
112 
113     /**
114      * Gives the request wsdl:message@name value
115      */
116     @NotNull String getRequestMessageName();
117 
118     /**
119      * Gives the response wsdl:messageName value
120      * @return null if its a oneway operation that is getMEP().isOneWay()==true.
121      * @see com.sun.xml.internal.ws.api.model.MEP#isOneWay()
122      */
123     @Nullable String getResponseMessageName();
124 
125     /**
126      * Gives soap:Body's first child's name for request message.
127      *
128      * @return
129      *      null if this operation doesn't have any request parameter bound to the body.
130      */
131     @Nullable QName getRequestPayloadName();
132 
133     /**
134      * Gives soap:Body's first child's name for response message.
135      *
136      * @return
137      *      null if this operation doesn't have any response parameter bound to the body.
138      */
139     @Nullable QName getResponsePayloadName();
140 
141 }