1 /***
2 *
3 * Copyright 2003-2004 The Apache Software Foundation
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17 package org.codehaus.xfire.wsdl11;
18
19 import java.util.Collection;
20 import java.util.Iterator;
21 import java.util.List;
22
23 import javax.wsdl.Binding;
24 import javax.wsdl.BindingFault;
25 import javax.wsdl.BindingInput;
26 import javax.wsdl.BindingOperation;
27 import javax.wsdl.BindingOutput;
28 import javax.wsdl.Definition;
29 import javax.wsdl.Fault;
30 import javax.wsdl.Import;
31 import javax.wsdl.Input;
32 import javax.wsdl.Message;
33 import javax.wsdl.Operation;
34 import javax.wsdl.Output;
35 import javax.wsdl.Part;
36 import javax.wsdl.Port;
37 import javax.wsdl.PortType;
38 import javax.wsdl.Service;
39 import javax.wsdl.Types;
40 import javax.wsdl.extensions.soap.SOAPBinding;
41 import javax.wsdl.extensions.soap.SOAPBody;
42
43 public class WSDLVisitor
44 {
45 protected final Definition definition;
46
47 public WSDLVisitor(Definition definition)
48 {
49 this.definition = definition;
50 }
51
52 public void walkTree()
53 {
54 begin();
55 try
56 {
57 visit(definition);
58 Collection imports = definition.getImports().values();
59 for (Iterator iterator = imports.iterator(); iterator.hasNext();)
60 {
61 Import wsdlImport = (Import) iterator.next();
62 visit(wsdlImport);
63 }
64 visit(definition.getTypes());
65
66 Collection messages = definition.getMessages().values();
67 for (Iterator iterator = messages.iterator(); iterator.hasNext();)
68 {
69 Message message = (Message) iterator.next();
70 visit(message);
71 Collection parts = message.getParts().values();
72 for (Iterator iterator2 = parts.iterator(); iterator2.hasNext();)
73 {
74 Part part = (Part) iterator2.next();
75 visit(part);
76 }
77 }
78
79 Collection services = definition.getServices().values();
80 for (Iterator iterator = services.iterator(); iterator.hasNext();)
81 {
82 Service service = (Service) iterator.next();
83 visit(service);
84
85 Collection ports = service.getPorts().values();
86 for (Iterator iterator1 = ports.iterator(); iterator1.hasNext();)
87 {
88 Port port = (Port) iterator1.next();
89 visit(port);
90
91 Binding binding = port.getBinding();
92 visit(binding);
93
94 List bindingOperations = binding.getBindingOperations();
95 for (int i = 0; i < bindingOperations.size(); i++)
96 {
97 BindingOperation bindingOperation =
98 (BindingOperation) bindingOperations.get(i);
99 visit(bindingOperation);
100 visit(bindingOperation.getBindingInput());
101 visit(bindingOperation.getBindingOutput());
102
103 Collection bindingFaults = bindingOperation.getBindingFaults().values();
104 for (Iterator iterator2 = bindingFaults.iterator(); iterator2.hasNext();)
105 {
106 BindingFault bindingFault = (BindingFault) iterator2.next();
107 visit(bindingFault);
108 }
109
110 }
111 PortType portType = binding.getPortType();
112 visit(portType);
113
114 List operations = portType.getOperations();
115 for (int i = 0; i < operations.size(); i++)
116 {
117 Operation operation = (Operation) operations.get(i);
118 visit(operation);
119 {
120 Input input = operation.getInput();
121 visit(input);
122 }
123 {
124 Output output = operation.getOutput();
125 visit(output);
126 }
127
128 Collection faults = operation.getFaults().values();
129 for (Iterator iterator2 = faults.iterator(); iterator2.hasNext();)
130 {
131 Fault fault = (Fault) iterator2.next();
132 visit(fault);
133 }
134 }
135 }
136 }
137 }
138 catch (Exception e)
139 {
140 e.printStackTrace();
141 }
142 finally
143 {
144 end();
145 }
146 }
147
148 protected void begin()
149 {
150 }
151
152 protected void end()
153 {
154 }
155
156 protected void visit(Fault fault)
157 {
158 }
159
160 protected void visit(Definition definition)
161 {
162 }
163
164 protected void visit(Import wsdlImport)
165 {
166 }
167
168 protected void visit(Types types)
169 {
170 }
171
172 protected void visit(BindingFault bindingFault)
173 {
174 }
175
176 protected void visit(BindingOutput bindingOutput)
177 {
178 }
179
180 protected void visit(BindingInput bindingInput)
181 {
182 }
183
184 protected void visit(Output output)
185 {
186 }
187
188 protected void visit(Part part)
189 {
190 }
191
192 protected void visit(Message message)
193 {
194 }
195
196 protected void visit(Input input)
197 {
198 }
199
200 protected void visit(Operation operation)
201 {
202 }
203
204 protected void visit(PortType portType)
205 {
206 }
207
208 protected void visit(BindingOperation bindingOperation)
209 {
210 }
211
212 protected void visit(Binding binding)
213 {
214 }
215
216 protected void visit(Port port)
217 {
218 }
219
220 protected void visit(Service service)
221 {
222 }
223
224 protected SOAPBody getSOAPBody(List extensibilityElements)
225 {
226 SOAPBody body = null;
227 for (int j = 0; j < extensibilityElements.size(); j++)
228 {
229 Object element = extensibilityElements.get(j);
230 if (element instanceof SOAPBody)
231 {
232 body = (SOAPBody) element;
233 break;
234 }
235 }
236 return body;
237 }
238
239 protected SOAPBinding getSOAPBinding(Binding binding)
240 {
241 SOAPBinding soapBinding = null;
242 List extensibilityElements = binding.getExtensibilityElements();
243 for (int i = 0; i < extensibilityElements.size(); i++)
244 {
245 Object element = extensibilityElements.get(i);
246 if (element instanceof SOAPBinding)
247 {
248 soapBinding = (SOAPBinding) element;
249 }
250 }
251 return soapBinding;
252 }
253 }