Mercurial > repos > uga-galaxy-group > webservice_toolsuite_v1_1
comparison WebServiceExtensionsV1.1/WebServiceToolWorkflow_REST_SOAP/WodenWSDLParser/src/lsdis/WSDLParserDriver.java~ @ 0:049760c677de default tip
Galaxy WSExtensions added successfully
author | uga-galaxy-group |
---|---|
date | Tue, 05 Jul 2011 19:34:18 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:049760c677de |
---|---|
1 package lsdis; | |
2 | |
3 import java.util.ArrayList; | |
4 import java.util.Iterator; | |
5 import java.util.List; | |
6 import java.util.Scanner; | |
7 | |
8 import org.apache.woden.WSDLException; | |
9 import org.apache.woden.WSDLFactory; | |
10 import org.apache.woden.WSDLReader; | |
11 import org.apache.woden.wsdl20.Description; | |
12 import org.apache.woden.wsdl20.ElementDeclaration; | |
13 import org.apache.woden.wsdl20.Endpoint; | |
14 import org.apache.woden.wsdl20.InterfaceMessageReference; | |
15 import org.apache.woden.wsdl20.InterfaceOperation; | |
16 import org.apache.woden.wsdl20.Service; | |
17 import org.apache.woden.wsdl20.Interface; | |
18 import org.apache.woden.wsdl20.extensions.rpc.Direction; | |
19 import org.apache.woden.wsdl20.xml.DescriptionElement; | |
20 import org.apache.ws.commons.schema.XmlSchemaAll; | |
21 import org.apache.ws.commons.schema.XmlSchemaComplexType; | |
22 import org.apache.ws.commons.schema.XmlSchemaElement; | |
23 import org.apache.ws.commons.schema.XmlSchemaGroupBase; | |
24 import org.apache.ws.commons.schema.XmlSchemaParticle; | |
25 import org.apache.ws.commons.schema.XmlSchemaSequence; | |
26 import org.apache.ws.commons.schema.XmlSchemaType; | |
27 import org.w3c.dom.NamedNodeMap; | |
28 | |
29 import java.net.URI; | |
30 | |
31 import javax.xml.namespace.QName; | |
32 | |
33 public class WSDLParserDriver { | |
34 | |
35 private List<InterfaceOperation> completeMethodList = new ArrayList<InterfaceOperation>(); | |
36 private List<String> url = new ArrayList<String>(); | |
37 private List<String> paramList = new ArrayList<String>(); | |
38 private List<String> paramTypeList = new ArrayList<String>(); | |
39 private String WSDLtype; | |
40 private BindingElement[] bindingElement = new BindigElement(); | |
41 | |
42 public List<InterfaceOperation> getCompleteMethodList() { | |
43 return completeMethodList; | |
44 } | |
45 | |
46 public List<String> getUrl() { | |
47 return url; | |
48 } | |
49 | |
50 public List<String> getParamList() { | |
51 return paramList; | |
52 } | |
53 public List<String> getParamTypeList() { | |
54 return paramTypeList; | |
55 } | |
56 | |
57 public static void main(String[] args) { | |
58 /*Scanner keyboard = new Scanner(System.in); | |
59 | |
60 System.out.println("Enter the wsdl url: "); | |
61 String wsdlurl = keyboard.next();*/ | |
62 WSDLParserDriver a = new WSDLParserDriver(); | |
63 a.parse("/home/ganjoo/parser/bookstore-sample/booklist.wsdl"); | |
64 for(InterfaceOperation oper:a.getCompleteMethodList()){ | |
65 a.getParameters(oper); | |
66 } | |
67 } | |
68 | |
69 public boolean isWSDL2() | |
70 { | |
71 | |
72 } | |
73 public void parse(String wsdlurl){ | |
74 | |
75 try { | |
76 | |
77 WSDLFactory factory; | |
78 factory = WSDLFactory.newInstance(); | |
79 WSDLReader reader = factory.newWSDLReader(); | |
80 reader.setFeature(WSDLReader.FEATURE_VALIDATION, true); | |
81 Description desc = reader.readWSDL(wsdlurl); | |
82 Service[] services = desc.getServices(); | |
83 BindingElement [] | |
84 for(int i=0;i<services.length;i++){ | |
85 Endpoint[] endpoints = services[i].getEndpoints(); | |
86 boolean foundRestBinding = false; | |
87 int count=0; | |
88 while(count<endpoints.length){ | |
89 foundRestBinding = endpoints[count].getBinding().getType().equals(new URI("http://www.w3.org/ns/wsdl/http")); | |
90 count++; | |
91 | |
92 if(foundRestBinding){ | |
93 System.out.println("-----------------REST Web services--------------"); | |
94 URI address = endpoints[count-1].getAddress(); | |
95 String serviceName = services[i].getName().getLocalPart(); | |
96 System.out.println("Service Name : " + serviceName + "\t address : " + address); | |
97 Interface intrfce = services[i].getInterface(); | |
98 InterfaceOperation[] intrfceOpers = intrfce.getAllInterfaceOperations(); | |
99 for(int j=0;j<intrfceOpers.length;j++){ | |
100 InterfaceOperation oper = intrfceOpers[j]; | |
101 String operName = oper.getName().getLocalPart(); | |
102 System.out.println("\t operation name " + j + ": " + operName); | |
103 completeMethodList.add(oper); | |
104 url.add(address.toString()); | |
105 | |
106 | |
107 | |
108 } | |
109 } | |
110 } | |
111 } | |
112 | |
113 } catch (Exception e) { | |
114 // TODO Auto-generated catch block | |
115 e.printStackTrace(); | |
116 } | |
117 } | |
118 | |
119 public void getParameters(String operName){ | |
120 try{ | |
121 InterfaceOperation oper = null; | |
122 for(InterfaceOperation oper1 :getCompleteMethodList()){ | |
123 if(oper1.getName().getLocalPart().equals(operName)) | |
124 { | |
125 oper = oper1; | |
126 break; | |
127 } | |
128 | |
129 } | |
130 if(oper==null){ | |
131 System.out.println("Wrong method name passed in getParameters() method"); | |
132 System.exit(0); | |
133 } | |
134 | |
135 InterfaceMessageReference[] messageRefs = oper.getInterfaceMessageReferences(); | |
136 for(int k=0;k<messageRefs.length;k++){ | |
137 if(messageRefs[k].getDirection().toString().equals("in")){ | |
138 | |
139 ElementDeclaration ed = messageRefs[k].getElementDeclaration(); | |
140 String inputMessageName = ed.getName().getLocalPart(); | |
141 | |
142 if(ed.getContentModel().equalsIgnoreCase("org.w3c.dom")){ | |
143 org.w3c.dom.Element element = (org.w3c.dom.Element) ed.getContent(); | |
144 if(element.hasChildNodes()){ | |
145 System.out.println("Element has child nodes"); | |
146 org.w3c.dom.NodeList nl = element.getChildNodes(); | |
147 | |
148 } | |
149 if(element.hasAttributes()){ | |
150 System.out.println("Element has attributes"); | |
151 NamedNodeMap nodeMap = element.getAttributes(); | |
152 | |
153 } | |
154 } | |
155 else if(ed.getContentModel().equalsIgnoreCase("org.apache.ws.commons.schema")){ | |
156 org.apache.ws.commons.schema.XmlSchemaElement element = (org.apache.ws.commons.schema.XmlSchemaElement ) ed.getContent(); | |
157 System.out.println("element: " + element); | |
158 if(element != null){ | |
159 String targetNamespace = element.getQName().getNamespaceURI(); | |
160 QName bodyFirstChildQName; | |
161 if (targetNamespace != null && !"".equals(targetNamespace)) { | |
162 bodyFirstChildQName = new QName(targetNamespace, element.getName()); | |
163 } else { | |
164 bodyFirstChildQName = new QName(element.getName()); | |
165 } | |
166 if(oper.getStyle()[0].equals(new URI("http://www.w3.org/ns/wsdl/style/iri"))){ | |
167 XmlSchemaType schemaType = element.getSchemaType(); | |
168 if (schemaType instanceof XmlSchemaComplexType) { | |
169 XmlSchemaComplexType complexType = ((XmlSchemaComplexType) schemaType); | |
170 XmlSchemaParticle particle = complexType.getParticle(); | |
171 if (particle instanceof XmlSchemaSequence || particle instanceof XmlSchemaAll) { | |
172 XmlSchemaGroupBase xmlSchemaGroupBase = (XmlSchemaGroupBase) particle; | |
173 Iterator iterator = xmlSchemaGroupBase.getItems().getIterator(); | |
174 while (iterator.hasNext()) { | |
175 XmlSchemaElement innerElement = (XmlSchemaElement) iterator.next(); | |
176 QName qName = innerElement.getQName(); | |
177 if (qName ==null && innerElement.getSchemaTypeName().equals(org.apache.ws.commons.schema.constants.Constants.XSD_ANYTYPE)) { | |
178 System.out.println("create soap message without schema and break"); | |
179 break; | |
180 } | |
181 long minOccurs = innerElement.getMinOccurs(); | |
182 boolean nillable = innerElement.isNillable(); | |
183 | |
184 String name = | |
185 qName != null ? qName.getLocalPart() : innerElement.getName(); | |
186 System.out.println("Name of parameter is :" + name); | |
187 paramList.add(name); | |
188 System.out.println("Type of Parameter is :"+innerElement.getSchemaTypeName().getLocalPart()+"\n"); | |
189 paramTypeList.add(innerElement.getSchemaTypeName().getLocalPart()); | |
190 } | |
191 | |
192 | |
193 } | |
194 | |
195 } | |
196 | |
197 } | |
198 | |
199 }else{ | |
200 System.out.println("element is null"); | |
201 } | |
202 | |
203 | |
204 } | |
205 } | |
206 } | |
207 } catch (Exception e) { | |
208 // TODO Auto-generated catch block | |
209 e.printStackTrace(); | |
210 } | |
211 } | |
212 | |
213 } |