Wed, 27 Apr 2016 01:27:09 +0800
Initial load
http://hg.openjdk.java.net/jdk8u/jdk8u/jaxws/
changeset: 657:d47a47f961ee
tag: jdk8u25-b17
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 */
26 package com.sun.tools.internal.ws.wsdl.document;
28 import com.sun.codemodel.internal.JClass;
29 import com.sun.tools.internal.ws.api.wsdl.TWSDLExtensible;
30 import com.sun.tools.internal.ws.api.wsdl.TWSDLExtension;
31 import com.sun.tools.internal.ws.api.wsdl.TWSDLOperation;
32 import com.sun.tools.internal.ws.wsdl.framework.Entity;
33 import com.sun.tools.internal.ws.wsdl.framework.EntityAction;
34 import com.sun.tools.internal.ws.wsdl.framework.ExtensibilityHelper;
35 import org.xml.sax.Locator;
37 import javax.xml.namespace.QName;
38 import java.util.*;
40 /**
41 * Entity corresponding to the "operation" child element of a "portType" WSDL element.
42 *
43 * @author WS Development Team
44 */
45 public class Operation extends Entity implements TWSDLOperation {
47 public Operation(Locator locator) {
48 super(locator);
49 _faults = new ArrayList<Fault>();
50 _helper = new ExtensibilityHelper();
51 }
53 public String getName() {
54 return _name;
55 }
57 public void setName(String name) {
58 _name = name;
59 }
61 public String getUniqueKey() {
62 if (_uniqueKey == null) {
63 StringBuffer sb = new StringBuffer();
64 sb.append(_name);
65 sb.append(' ');
66 if (_input != null) {
67 sb.append(_input.getName());
68 } else {
69 sb.append(_name);
70 if (_style == OperationStyle.REQUEST_RESPONSE) {
71 sb.append("Request");
72 } else if (_style == OperationStyle.SOLICIT_RESPONSE) {
73 sb.append("Response");
74 }
75 }
76 sb.append(' ');
77 if (_output != null) {
78 sb.append(_output.getName());
79 } else {
80 sb.append(_name);
81 if (_style == OperationStyle.SOLICIT_RESPONSE) {
82 sb.append("Solicit");
83 } else if (_style == OperationStyle.REQUEST_RESPONSE) {
84 sb.append("Response");
85 }
86 }
87 _uniqueKey = sb.toString();
88 }
90 return _uniqueKey;
91 }
93 public OperationStyle getStyle() {
94 return _style;
95 }
97 public void setStyle(OperationStyle s) {
98 _style = s;
99 }
101 public Input getInput() {
102 return _input;
103 }
105 public void setInput(Input i) {
106 _input = i;
107 }
109 public Output getOutput() {
110 return _output;
111 }
113 public void setOutput(Output o) {
114 _output = o;
115 }
117 public void addFault(Fault f) {
118 _faults.add(f);
119 }
121 public Iterable<Fault> faults() {
122 return _faults;
123 }
125 public String getParameterOrder() {
126 return _parameterOrder;
127 }
129 public void setParameterOrder(String s) {
130 _parameterOrder = s;
131 }
133 public QName getElementName() {
134 return WSDLConstants.QNAME_OPERATION;
135 }
137 public Documentation getDocumentation() {
138 return _documentation;
139 }
141 public void setDocumentation(Documentation d) {
142 _documentation = d;
143 }
145 public void withAllSubEntitiesDo(EntityAction action) {
146 super.withAllSubEntitiesDo(action);
148 if (_input != null) {
149 action.perform(_input);
150 }
151 if (_output != null) {
152 action.perform(_output);
153 }
154 for (Fault _fault : _faults) {
155 action.perform(_fault);
156 }
157 _helper.withAllSubEntitiesDo(action);
158 }
160 public void accept(WSDLDocumentVisitor visitor) throws Exception {
161 visitor.preVisit(this);
162 if (_input != null) {
163 _input.accept(visitor);
164 }
165 if (_output != null) {
166 _output.accept(visitor);
167 }
168 for (Fault _fault : _faults) {
169 _fault.accept(visitor);
170 }
171 visitor.postVisit(this);
172 }
174 public void validateThis() {
175 if (_name == null) {
176 failValidation("validation.missingRequiredAttribute", "name");
177 }
178 if (_style == null) {
179 failValidation("validation.missingRequiredProperty", "style");
180 }
182 // verify operation style
183 if (_style == OperationStyle.ONE_WAY) {
184 if (_input == null) {
185 failValidation("validation.missingRequiredSubEntity", "input");
186 }
187 if (_output != null) {
188 failValidation("validation.invalidSubEntity", "output");
189 }
190 if (_faults != null && _faults.size() != 0) {
191 failValidation("validation.invalidSubEntity", "fault");
192 }
193 } else if (_style == OperationStyle.NOTIFICATION) {
194 if (_parameterOrder != null) {
195 failValidation("validation.invalidAttribute", "parameterOrder");
196 }
197 }
198 }
200 public String getNameValue() {
201 return getName();
202 }
204 public String getNamespaceURI() {
205 return parent.getNamespaceURI();
206 }
208 public QName getWSDLElementName() {
209 return getElementName();
210 }
212 /* (non-Javadoc)
213 * @see TWSDLExtensible#addExtension(ExtensionImpl)
214 */
215 public void addExtension(TWSDLExtension e) {
216 _helper.addExtension(e);
218 }
220 /* (non-Javadoc)
221 * @see TWSDLExtensible#extensions()
222 */
223 public Iterable<? extends TWSDLExtension> extensions() {
224 return _helper.extensions();
225 }
227 public TWSDLExtensible getParent() {
228 return parent;
229 }
231 public void setParent(TWSDLExtensible parent) {
232 this.parent = parent;
233 }
235 public Map<String, JClass> getFaults() {
236 return unmodifiableFaultClassMap;
237 }
239 public void putFault(String faultName, JClass exception){
240 faultClassMap.put(faultName, exception);
241 }
243 private TWSDLExtensible parent;
244 private Documentation _documentation;
245 private String _name;
246 private Input _input;
247 private Output _output;
248 private List<Fault> _faults;
249 private OperationStyle _style;
250 private String _parameterOrder;
251 private String _uniqueKey;
252 private ExtensibilityHelper _helper;
253 private final Map<String, JClass> faultClassMap = new HashMap<String, JClass>();
254 private final Map<String, JClass> unmodifiableFaultClassMap = Collections.unmodifiableMap(faultClassMap);
255 }