Mercurial > repos > ganjoo > webservice_toolsuite
diff WebServiceToolWorkflow/WodenWSDLParser/src/lsdis/WSDLParserDriver.java @ 0:e7482c82796e default tip
Migrated tool version 1.0.0 from old tool shed archive to new tool shed repository
author | ganjoo |
---|---|
date | Tue, 07 Jun 2011 17:34:26 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/WodenWSDLParser/src/lsdis/WSDLParserDriver.java Tue Jun 07 17:34:26 2011 -0400 @@ -0,0 +1,207 @@ +package lsdis; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Scanner; + +import org.apache.woden.WSDLException; +import org.apache.woden.WSDLFactory; +import org.apache.woden.WSDLReader; +import org.apache.woden.wsdl20.Description; +import org.apache.woden.wsdl20.ElementDeclaration; +import org.apache.woden.wsdl20.Endpoint; +import org.apache.woden.wsdl20.InterfaceMessageReference; +import org.apache.woden.wsdl20.InterfaceOperation; +import org.apache.woden.wsdl20.Service; +import org.apache.woden.wsdl20.Interface; +import org.apache.woden.wsdl20.extensions.rpc.Direction; +import org.apache.woden.wsdl20.xml.DescriptionElement; +import org.apache.ws.commons.schema.XmlSchemaAll; +import org.apache.ws.commons.schema.XmlSchemaComplexType; +import org.apache.ws.commons.schema.XmlSchemaElement; +import org.apache.ws.commons.schema.XmlSchemaGroupBase; +import org.apache.ws.commons.schema.XmlSchemaParticle; +import org.apache.ws.commons.schema.XmlSchemaSequence; +import org.apache.ws.commons.schema.XmlSchemaType; +import org.w3c.dom.NamedNodeMap; + +import java.net.URI; + +import javax.xml.namespace.QName; + +public class WSDLParserDriver { + + private List<InterfaceOperation> completeMethodList = new ArrayList<InterfaceOperation>(); + private List<String> url = new ArrayList<String>(); + private List<String> paramList = new ArrayList<String>(); + private List<String> paramTypeList = new ArrayList<String>(); + + + public List<InterfaceOperation> getCompleteMethodList() { + return completeMethodList; + } + + public List<String> getUrl() { + return url; + } + + public List<String> getParamList() { + return paramList; + } + public List<String> getParamTypeList() { + return paramTypeList; + } + + public static void main(String[] args) { + /*Scanner keyboard = new Scanner(System.in); + + System.out.println("Enter the wsdl url: "); + String wsdlurl = keyboard.next();*/ + WSDLParserDriver a = new WSDLParserDriver(); + a.parse("/home/ganjoo/parser/bookstore-sample/booklist.wsdl"); + for(InterfaceOperation oper:a.getCompleteMethodList()){ + a.getParameters(oper); + } + } + + public void parse(String wsdlurl){ + + try { + + WSDLFactory factory; + factory = WSDLFactory.newInstance(); + WSDLReader reader = factory.newWSDLReader(); + reader.setFeature(WSDLReader.FEATURE_VALIDATION, true); + Description desc = reader.readWSDL(wsdlurl); + Service[] services = desc.getServices(); + for(int i=0;i<services.length;i++){ + Endpoint[] endpoints = services[i].getEndpoints(); + boolean foundRestBinding = false; + int count=0; + while(count<endpoints.length){ + foundRestBinding = endpoints[count].getBinding().getType().equals(new URI("http://www.w3.org/ns/wsdl/http")); + count++; + + if(foundRestBinding){ + System.out.println("-----------------REST Web services--------------"); + URI address = endpoints[count-1].getAddress(); + String serviceName = services[i].getName().getLocalPart(); + System.out.println("Service Name : " + serviceName + "\t address : " + address); + Interface intrfce = services[i].getInterface(); + InterfaceOperation[] intrfceOpers = intrfce.getAllInterfaceOperations(); + for(int j=0;j<intrfceOpers.length;j++){ + InterfaceOperation oper = intrfceOpers[j]; + String operName = oper.getName().getLocalPart(); + System.out.println("\t operation name " + j + ": " + operName); + completeMethodList.add(oper); + url.add(address.toString()); + + + + } + } + } + } + + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + public void getParameters(String operName){ + try{ + InterfaceOperation oper = null; + for(InterfaceOperation oper1 :getCompleteMethodList()){ + if(oper1.getName().getLocalPart().equals(operName)) + { + oper = oper1; + break; + } + + } + if(oper==null){ + System.out.println("Wrong method name passed in getParameters() method"); + System.exit(0); + } + + InterfaceMessageReference[] messageRefs = oper.getInterfaceMessageReferences(); + for(int k=0;k<messageRefs.length;k++){ + if(messageRefs[k].getDirection().toString().equals("in")){ + + ElementDeclaration ed = messageRefs[k].getElementDeclaration(); + String inputMessageName = ed.getName().getLocalPart(); + + if(ed.getContentModel().equalsIgnoreCase("org.w3c.dom")){ + org.w3c.dom.Element element = (org.w3c.dom.Element) ed.getContent(); + if(element.hasChildNodes()){ + System.out.println("Element has child nodes"); + org.w3c.dom.NodeList nl = element.getChildNodes(); + + } + if(element.hasAttributes()){ + System.out.println("Element has attributes"); + NamedNodeMap nodeMap = element.getAttributes(); + + } + } + else if(ed.getContentModel().equalsIgnoreCase("org.apache.ws.commons.schema")){ + org.apache.ws.commons.schema.XmlSchemaElement element = (org.apache.ws.commons.schema.XmlSchemaElement ) ed.getContent(); + System.out.println("element: " + element); + if(element != null){ + String targetNamespace = element.getQName().getNamespaceURI(); + QName bodyFirstChildQName; + if (targetNamespace != null && !"".equals(targetNamespace)) { + bodyFirstChildQName = new QName(targetNamespace, element.getName()); + } else { + bodyFirstChildQName = new QName(element.getName()); + } + if(oper.getStyle()[0].equals(new URI("http://www.w3.org/ns/wsdl/style/iri"))){ + XmlSchemaType schemaType = element.getSchemaType(); + if (schemaType instanceof XmlSchemaComplexType) { + XmlSchemaComplexType complexType = ((XmlSchemaComplexType) schemaType); + XmlSchemaParticle particle = complexType.getParticle(); + if (particle instanceof XmlSchemaSequence || particle instanceof XmlSchemaAll) { + XmlSchemaGroupBase xmlSchemaGroupBase = (XmlSchemaGroupBase) particle; + Iterator iterator = xmlSchemaGroupBase.getItems().getIterator(); + while (iterator.hasNext()) { + XmlSchemaElement innerElement = (XmlSchemaElement) iterator.next(); + QName qName = innerElement.getQName(); + if (qName ==null && innerElement.getSchemaTypeName().equals(org.apache.ws.commons.schema.constants.Constants.XSD_ANYTYPE)) { + System.out.println("create soap message without schema and break"); + break; + } + long minOccurs = innerElement.getMinOccurs(); + boolean nillable = innerElement.isNillable(); + + String name = + qName != null ? qName.getLocalPart() : innerElement.getName(); + System.out.println("Name of parameter is :" + name); + paramList.add(name); + System.out.println("Type of Parameter is :"+innerElement.getSchemaTypeName().getLocalPart()+"\n"); + paramTypeList.add(innerElement.getSchemaTypeName().getLocalPart()); + } + + + } + + } + + } + + }else{ + System.out.println("element is null"); + } + + + } + } + } + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } +} + +}