You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by Eran Chinthaka <ch...@opensource.lk> on 2005/10/09 16:32:18 UTC
Re: [Axis2] svn commit: r307368 - /webservices/axis2/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/writer/WOMtoWSDL11Writer.java
I used the Object model found in wsdl2java for giving the ?wsdl
generation. Basically I extracted information from the service.aar and
filled the javax.wsdl.* objects.
But since you have completed the WOM writer stuff, Can I directly
populate WOM stuff for ?wsdl generation ?
-- Chinthaka
ajith@apache.org wrote:
>Author: ajith
>Date: Sat Oct 8 22:18:15 2005
>New Revision: 307368
>
>URL: http://svn.apache.org/viewcvs?rev=307368&view=rev
>Log:
>Completed the WOMWriter. However a thorough test case is missing and it's not justifiable to mark this as complete.
>
>Modified:
> webservices/axis2/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/writer/WOMtoWSDL11Writer.java
>
>Modified: webservices/axis2/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/writer/WOMtoWSDL11Writer.java
>URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/writer/WOMtoWSDL11Writer.java?rev=307368&r1=307367&r2=307368&view=diff
>==============================================================================
>--- webservices/axis2/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/writer/WOMtoWSDL11Writer.java (original)
>+++ webservices/axis2/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/writer/WOMtoWSDL11Writer.java Sat Oct 8 22:18:15 2005
>@@ -3,8 +3,7 @@
> import org.apache.axis2.wsdl.WSDLVersionWrapper;
>
> import org.apache.wsdl.*;
>-import org.apache.wsdl.extensions.Schema;
>-import org.apache.wsdl.extensions.SOAPAddress;
>+import org.apache.wsdl.extensions.*;
>
> import javax.wsdl.xml.WSDLWriter;
> import javax.wsdl.factory.WSDLFactory;
>@@ -37,6 +36,7 @@
> private String defaultWSDLPrefix="wsdl11";
> private String targetNamespacePrefix="tns";
> private static final String WSDL1_1_NAMESPACE_URI = "http://schemas.xmlsoap.org/wsdl/";
>+ private static final String WSDL1_1_SOAP_NAMESPACE_URI = "http://schemas.xmlsoap.org/wsdl/soap/";
> private static final String DEFINITION_NAME = "definitions";
> private static final String IMPORT_NAME = "import";
> private static final String TYPES_NAME = "types";
>@@ -48,6 +48,15 @@
> //this is our 'symbol table' for the time being. It's a simple
> //Qname <-> message object map
> private Map messageMap = new HashMap();
>+ private static final String BINDING_OPERATION = "operation";
>+ private static final String OPERATION_NAME = BINDING_OPERATION;
>+ private static final String BINDING_INPUT = "input";
>+ private static final String INPUT_NAME = BINDING_INPUT;
>+ private static final String BINDING_OUTPUT = "output";
>+ private static final String OUTPUT_NAME = BINDING_OUTPUT;
>+ private static final String BINDING_NAME = "binding";
>+
>+ private String soapNsPrefix = null;
>
>
> public void setEncoding(String encoding) {
>@@ -90,6 +99,8 @@
> //create a writer from the stream
> Writer writer = new OutputStreamWriter(out,encoding);
> writeStartDescripton(wsdlDescription,writer);
>+ //find the SOAPNs
>+ findSOAPNsPrefix(wsdlDescription);
> //write the imports
> writeImports(wsdlDescription,writer);
> //write the types
>@@ -101,7 +112,7 @@
> //write the binding
> writeBinding(wsdlDescription,writer);
> //write the service
>- //write
>+ writeService(wsdlDescription,writer);
> //close definition
> writeEndDescripton(writer);
> writer.flush();
>@@ -116,6 +127,70 @@
>
> /**
> *
>+ * @param wsdlDescription
>+ * @param writer
>+ * @throws IOException
>+ */
>+ private void writeService(WSDLDescription wsdlDescription, Writer writer) throws IOException{
>+ Map serviceMap = wsdlDescription.getServices();
>+ if (serviceMap!=null && !serviceMap.isEmpty()){
>+ Iterator serviceIterator = serviceMap.values().iterator();
>+ WSDLService service;
>+ while (serviceIterator.hasNext()) {
>+ service = (WSDLService)serviceIterator.next();
>+ WriterUtil.writeStartElement("service",defaultWSDLPrefix,writer);
>+ WriterUtil.writeAttribute("name",service.getName().getLocalPart(),writer);
>+ WriterUtil.writeCloseStartElement(writer);
>+ //wrtie the porttypes
>+ Map endPointMap = service.getEndpoints();
>+ if (endPointMap!=null && !endPointMap.isEmpty()){
>+ Iterator it = endPointMap.values().iterator();
>+ while (it.hasNext()) {
>+ writePorttype((WSDLEndpoint)it.next(),writer);
>+ }
>+ }
>+ WriterUtil.writeEndElement("service",defaultWSDLPrefix,writer);
>+ }
>+ }
>+ }
>+
>+ /**
>+ *
>+ * @param endpoint
>+ * @param outWriter
>+ */
>+ private void writePorttype(WSDLEndpoint endpoint,Writer outWriter) throws IOException{
>+ WriterUtil.writeStartElement("port",defaultWSDLPrefix,outWriter);
>+ WriterUtil.writeAttribute("name",endpoint.getName().getLocalPart(),outWriter);
>+ QName name = endpoint.getBinding().getName();
>+ WriterUtil.writeAttribute("binding",name.getPrefix()+":"+name.getLocalPart(),outWriter);
>+ WriterUtil.writeCloseStartElement(outWriter);
>+
>+ handleExtensibiltyElements(endpoint.getExtensibilityElements(),outWriter);
>+
>+ WriterUtil.writeEndElement("port",outWriter);
>+ }
>+ /**
>+ * Find the SOAPns prefix
>+ * @param wsdlDescription
>+ */
>+ private void findSOAPNsPrefix(WSDLDescription wsdlDescription) {
>+ Map map = wsdlDescription.getNamespaces();
>+ Iterator nsIterator = map.values().iterator();
>+ Iterator keyIterator = map.keySet().iterator();
>+ String key;
>+ while (nsIterator.hasNext()) {
>+ key = keyIterator.next().toString();
>+ if (WSDL1_1_SOAP_NAMESPACE_URI.equals(nsIterator.next())){
>+ this.soapNsPrefix = key;
>+ break;
>+ }
>+ }
>+
>+ }
>+
>+ /**
>+ *
> * @param desc
> * @param outWriter
> * @throws WriterException
>@@ -315,7 +390,7 @@
> if (types!=null){
> WriterUtil.writeStartElement(TYPES_NAME,defaultWSDLPrefix,outWriter);
> WriterUtil.writeCloseStartElement(outWriter);
>- handlerExtensibiltyElements(types.getExtensibilityElements(),outWriter);
>+ handleExtensibiltyElements(types.getExtensibilityElements(),outWriter);
> WriterUtil.writeEndElement(TYPES_NAME,defaultWSDLPrefix,outWriter);
> }
> }
>@@ -361,7 +436,7 @@
> WSDLOperation operation;
> while (opIterator.hasNext()) {
> operation = (WSDLOperation)opIterator.next();
>- WriterUtil.writeStartElement("operation",defaultWSDLPrefix,outWriter);
>+ WriterUtil.writeStartElement(OPERATION_NAME,defaultWSDLPrefix,outWriter);
> WriterUtil.writeAttribute("name",operation.getName()==null?"":operation.getName().getLocalPart(),outWriter);
> WriterUtil.writeCloseStartElement(outWriter);
>
>@@ -370,7 +445,7 @@
> MessageReference inputMessage = operation.getInputMessage();
> if (inputMessage!=null){
> message =(WSDL11Message) messageMap.get(inputMessage.getElement());
>- WriterUtil.writeStartElement("input",defaultWSDLPrefix,outWriter);
>+ WriterUtil.writeStartElement(INPUT_NAME,defaultWSDLPrefix,outWriter);
> WriterUtil.writeAttribute("message",targetNamespacePrefix+":"+message.getMessageName(),outWriter);
> WriterUtil.writeCompactEndElement(outWriter);
> }
>@@ -379,14 +454,14 @@
> MessageReference outputMessage = operation.getOutputMessage();
> if (outputMessage!=null) {
> message =(WSDL11Message) messageMap.get(outputMessage.getElement());
>- WriterUtil.writeStartElement("output",defaultWSDLPrefix,outWriter);
>+ WriterUtil.writeStartElement(OUTPUT_NAME,defaultWSDLPrefix,outWriter);
> WriterUtil.writeAttribute("message",targetNamespacePrefix+":"+message.getMessageName(),outWriter);
> WriterUtil.writeCompactEndElement(outWriter);
> }
>
> //todo handle the faults here
>
>- WriterUtil.writeEndElement("operation",defaultWSDLPrefix,outWriter);
>+ WriterUtil.writeEndElement(OPERATION_NAME,defaultWSDLPrefix,outWriter);
>
> }
> }
>@@ -407,12 +482,25 @@
> WSDLBinding binding;
> while (iterator.hasNext()) {
> binding = (WSDLBinding)iterator.next();
>- WriterUtil.writeStartElement("binding", defaultWSDLPrefix,outWriter);
>+ WriterUtil.writeStartElement(BINDING_NAME, defaultWSDLPrefix,outWriter);
> WriterUtil.writeAttribute("name",binding.getName().getLocalPart(),outWriter);
> WriterUtil.writeAttribute("type",targetNamespacePrefix +":"+ binding.getBoundInterface().getName().getLocalPart(),outWriter);
> WriterUtil.writeCloseStartElement(outWriter);
>+ //write the extensibility elements
>+ handleExtensibiltyElements(binding.getExtensibilityElements(),outWriter);
>+ //write the operations
>
>- WriterUtil.writeEndElement("binding", defaultWSDLPrefix,outWriter);
>+ Map bindingOps = binding.getBindingOperations();
>+ if (bindingOps!=null && !bindingOps.isEmpty()){
>+ Iterator bindingOpsIterator = bindingOps.values().iterator();
>+ while (bindingOpsIterator.hasNext()) {
>+ writebindingOperation((WSDLBindingOperation)bindingOpsIterator.next(),outWriter);
>+ }
>+ }
>+
>+
>+
>+ WriterUtil.writeEndElement(BINDING_NAME, defaultWSDLPrefix,outWriter);
>
>
> }
>@@ -420,24 +508,96 @@
>
> }
>
>- protected void handlerExtensibiltyElements(List extElementList,Writer outWriter) throws IOException{
>+
>+ protected void writebindingOperation(WSDLBindingOperation bindingOp,Writer outWriter) throws IOException{
>+ WriterUtil.writeStartElement(BINDING_OPERATION,defaultWSDLPrefix,outWriter);
>+ WriterUtil.writeAttribute("name",bindingOp.getName().getLocalPart(),outWriter);
>+ WriterUtil.writeCloseStartElement(outWriter);
>+ handleExtensibiltyElements(bindingOp.getExtensibilityElements(),outWriter);
>+ //write the input
>+ WSDLBindingMessageReference input = bindingOp.getInput();
>+ if (input!=null){
>+ WriterUtil.writeStartElement(BINDING_INPUT,defaultWSDLPrefix,outWriter);
>+ WriterUtil.writeCompactEndElement(outWriter);
>+ handleExtensibiltyElements(input.getExtensibilityElements(),outWriter);
>+ WriterUtil.writeEndElement(BINDING_INPUT,defaultWSDLPrefix,outWriter);
>+ }
>+
>+ WSDLBindingMessageReference output = bindingOp.getInput();
>+ if (input!=null){
>+ WriterUtil.writeStartElement(BINDING_OUTPUT,defaultWSDLPrefix,outWriter);
>+ WriterUtil.writeCompactEndElement(outWriter);
>+ handleExtensibiltyElements(output.getExtensibilityElements(),outWriter);
>+ WriterUtil.writeEndElement(BINDING_OUTPUT,defaultWSDLPrefix,outWriter);
>+ }
>+ WriterUtil.writeEndElement(BINDING_OPERATION,defaultWSDLPrefix,outWriter);
>+ }
>+
>+ protected void handleExtensibiltyElements(List extElementList,Writer outWriter) throws IOException{
> int extensibilityElementCount = extElementList.size();
> for (int i = 0; i < extensibilityElementCount; i++) {
> writeExtensibiltyElement((WSDLExtensibilityElement)extElementList.get(i),outWriter);
> }
>
> }
>+
>+ /**
>+ *
>+ * @param extElement
>+ * @param outWriter
>+ * @throws IOException
>+ */
> protected void writeExtensibiltyElement(WSDLExtensibilityElement extElement,Writer outWriter) throws IOException{
> if (extElement instanceof Schema){
> outWriter.write(((Schema)extElement).getElement().toString());
> }else if(extElement instanceof SOAPAddress ){
>- //todo fill this
>- } else{
>+ writeSOAPAddressExtensibilityElement((SOAPAddress)extElement,outWriter);
>+ }else if(extElement instanceof SOAPBinding ){
>+ writeSOAPBindingExtensibilityElement((SOAPBinding)extElement,outWriter);
>+ }else if(extElement instanceof SOAPHeader ){
>+ writeSOAPHeaderExtensibilityElement((SOAPHeader)extElement,outWriter);
>+ } else if(extElement instanceof SOAPOperation ){
>+ writeSOAPOpextensibilityElement((SOAPOperation)extElement,outWriter);
>+ }else if(extElement instanceof SOAPBody ){
>+ writeSOAPBodyExtensibilityElement((SOAPBody)extElement,outWriter);
>+ }else{
> WriterUtil.writeComment(" Unknown extensibility element" + extElement.toString(),outWriter);
> }
>
>+ }
>+
>+ private void writeSOAPAddressExtensibilityElement(SOAPAddress address,Writer outWriter) throws IOException{
>+ WriterUtil.writeStartElement("address",this.soapNsPrefix,outWriter);
>+ WriterUtil.writeAttribute("location",address.getLocationURI(),outWriter);
>+ // WriterUtil.writeAttribute("style",soapBinding.getStyle(),outWriter);
>+ WriterUtil.writeCompactEndElement(outWriter);
>+ }
>+
>+ protected void writeSOAPBindingExtensibilityElement(SOAPBinding soapBinding,Writer outWriter)throws IOException{
>+ WriterUtil.writeStartElement("binding",this.soapNsPrefix,outWriter);
>+ WriterUtil.writeAttribute("transport",soapBinding.getTransportURI(),outWriter);
>+ WriterUtil.writeAttribute("style",soapBinding.getStyle(),outWriter);
>+ WriterUtil.writeCompactEndElement(outWriter);
>+ }
>+
>+ protected void writeSOAPBodyExtensibilityElement(SOAPBody soapBody,Writer outWriter)throws IOException{
>+ WriterUtil.writeStartElement("body",this.soapNsPrefix,outWriter);
>+ WriterUtil.writeAttribute("use",soapBody.getUse(),outWriter);
>+ WriterUtil.writeCompactEndElement(outWriter);
>+ }
>+
>+ protected void writeSOAPHeaderExtensibilityElement(SOAPHeader soapHeader,Writer outWriter)throws IOException{
>+ WriterUtil.writeStartElement("header",this.soapNsPrefix,outWriter);
>+ WriterUtil.writeAttribute("use",soapHeader.getUse(),outWriter);
>+ WriterUtil.writeCompactEndElement(outWriter);
>+ }
>
>
>+ protected void writeSOAPOpextensibilityElement(SOAPOperation soapop,Writer outWriter)throws IOException{
>+ WriterUtil.writeStartElement(BINDING_OPERATION,this.soapNsPrefix,outWriter);
>+ WriterUtil.writeAttribute("name",soapop.getType().getLocalPart(),outWriter);
>+ WriterUtil.writeAttribute("soapaction",soapop.getSoapAction(),outWriter);
>+ WriterUtil.writeCompactEndElement(outWriter);
> }
>
> /**
>
>
>
>
>
>