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.tools.internal.ws.processor.model; 27 28 import com.sun.tools.internal.ws.processor.model.java.JavaMethod; 29 import com.sun.tools.internal.ws.wsdl.document.soap.SOAPStyle; 30 import com.sun.tools.internal.ws.wsdl.document.soap.SOAPUse; 31 import com.sun.tools.internal.ws.wsdl.framework.Entity; 32 import com.sun.xml.internal.ws.spi.db.BindingHelper; 33 34 import javax.xml.namespace.QName; 35 import java.util.HashSet; 36 import java.util.Iterator; 37 import java.util.Set; 38 39 /** 40 * 41 * @author WS Development Team 42 */ 43 public class Operation extends ModelObject { 44 45 public Operation(Entity entity) { 46 super(entity); 47 } 48 49 public Operation(Operation operation, Entity entity){ 50 this(operation._name, entity); 51 this._style = operation._style; 52 this._use = operation._use; 53 this.customizedName = operation.customizedName; 54 } 55 public Operation(QName name, Entity entity) { 56 super(entity); 57 _name = name; 58 _uniqueName = name.getLocalPart(); 59 _faultNames = new HashSet<String>(); 60 _faults = new HashSet<Fault>(); 61 } 62 63 public QName getName() { 64 return _name; 65 } 66 67 public void setName(QName n) { 68 _name = n; 69 } 70 71 public String getUniqueName() { 72 return _uniqueName; 73 } 74 75 public void setUniqueName(String s) { 76 _uniqueName = s; 77 } 78 79 public Request getRequest() { 80 return _request; 81 } 82 83 public void setRequest(Request r) { 84 _request = r; 85 } 86 87 public Response getResponse() { 88 return _response; 89 } 90 91 public void setResponse(Response r) { 92 _response = r; 93 } 94 95 public boolean isOverloaded() { 96 return !_name.getLocalPart().equals(_uniqueName); 97 } 98 99 public void addFault(Fault f) { 100 if (_faultNames.contains(f.getName())) { 101 throw new ModelException("model.uniqueness"); 102 } 103 _faultNames.add(f.getName()); 104 _faults.add(f); 105 } 106 107 public Iterator<Fault> getFaults() { 108 return _faults.iterator(); 109 } 110 111 public Set<Fault> getFaultsSet() { 112 return _faults; 113 } 114 115 /* serialization */ 116 public void setFaultsSet(Set<Fault> s) { 117 _faults = s; 118 initializeFaultNames(); 119 } 120 121 private void initializeFaultNames() { 122 _faultNames = new HashSet<String>(); 123 if (_faults != null) { 124 for (Iterator iter = _faults.iterator(); iter.hasNext();) { 125 Fault f = (Fault) iter.next(); 126 if (f.getName() != null && _faultNames.contains(f.getName())) { 127 throw new ModelException("model.uniqueness"); 128 } 129 _faultNames.add(f.getName()); 130 } 131 } 132 } 133 134 public Iterator<Fault> getAllFaults() { 135 Set<Fault> allFaults = getAllFaultsSet(); 136 return allFaults.iterator(); 137 } 138 139 public Set<Fault> getAllFaultsSet() { 140 Set transSet = new HashSet(); 141 transSet.addAll(_faults); 142 Iterator iter = _faults.iterator(); 143 Fault fault; 144 Set tmpSet; 145 while (iter.hasNext()) { 146 tmpSet = ((Fault)iter.next()).getAllFaultsSet(); 147 transSet.addAll(tmpSet); 148 } 149 return transSet; 150 } 151 152 public int getFaultCount() { 153 return _faults.size(); 154 } 155 156 public Set<Block> getAllFaultBlocks(){ 157 Set<Block> blocks = new HashSet<Block>(); 158 Iterator faults = _faults.iterator(); 159 while(faults.hasNext()){ 160 Fault f = (Fault)faults.next(); 161 blocks.add(f.getBlock()); 162 } 163 return blocks; 164 } 165 166 public JavaMethod getJavaMethod() { 167 return _javaMethod; 168 } 169 170 public void setJavaMethod(JavaMethod i) { 171 _javaMethod = i; 172 } 173 174 public String getSOAPAction() { 175 return _soapAction; 176 } 177 178 public void setSOAPAction(String s) { 179 _soapAction = s; 180 } 181 182 public SOAPStyle getStyle() { 183 return _style; 184 } 185 186 public void setStyle(SOAPStyle s) { 187 _style = s; 188 } 189 190 public SOAPUse getUse() { 191 return _use; 192 } 193 194 public void setUse(SOAPUse u) { 195 _use = u; 196 } 197 198 public boolean isWrapped() { 199 return _isWrapped; 200 } 201 202 public void setWrapped(boolean isWrapped) { 203 _isWrapped = isWrapped; 204 } 205 206 207 public void accept(ModelVisitor visitor) throws Exception { 208 visitor.visit(this); 209 } 210 211 public void setCustomizedName(String name){ 212 this.customizedName = name; 213 } 214 215 public String getCustomizedName(){ 216 return customizedName; 217 } 218 219 public String getJavaMethodName(){ 220 //if JavaMethod is created return the name 221 if(_javaMethod != null){ 222 return _javaMethod.getName(); 223 } 224 225 //return the customized operation name if any without mangling 226 if(customizedName != null){ 227 return customizedName; 228 } 229 230 return BindingHelper.mangleNameToVariableName(_name.getLocalPart()); 231 } 232 233 public com.sun.tools.internal.ws.wsdl.document.Operation getWSDLPortTypeOperation(){ 234 return wsdlOperation; 235 } 236 237 public void setWSDLPortTypeOperation(com.sun.tools.internal.ws.wsdl.document.Operation wsdlOperation){ 238 this.wsdlOperation = wsdlOperation; 239 } 240 241 242 243 private String customizedName; 244 private boolean _isWrapped = true; 245 private QName _name; 246 private String _uniqueName; 247 private Request _request; 248 private Response _response; 249 private JavaMethod _javaMethod; 250 private String _soapAction; 251 private SOAPStyle _style = SOAPStyle.DOCUMENT; 252 private SOAPUse _use = SOAPUse.LITERAL; 253 private Set<String> _faultNames; 254 private Set<Fault> _faults; 255 private com.sun.tools.internal.ws.wsdl.document.Operation wsdlOperation; 256 257 }