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 aj...@apache.org on 2005/10/09 07:18:30 UTC
svn commit: r307368 -
/webservices/axis2/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/writer/WOMtoWSDL11Writer.java
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);
}
/**
Re: [Axis2] svn commit: r307368 - /webservices/axis2/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/writer/WOMtoWSDL11Writer.java
Posted by Eran Chinthaka <ch...@opensource.lk>.
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);
> }
>
> /**
>
>
>
>
>
>