Working on WSDLs

This commit is contained in:
Arjen Poutsma
2008-03-08 01:43:33 +00:00
parent fa373613d9
commit 0453bb4752
3 changed files with 41 additions and 13 deletions

View File

@@ -19,14 +19,15 @@ package org.springframework.ws.wsdl.wsdl11;
import java.io.IOException;
import javax.xml.transform.Source;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.XMLReaderFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.core.io.Resource;
import org.springframework.util.Assert;
import org.springframework.ws.wsdl.WsdlDefinitionException;
import org.springframework.xml.transform.ResourceSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.XMLReaderFactory;
/**
* The default {@link Wsdl11Definition} implementation.
@@ -88,4 +89,9 @@ public class SimpleWsdl11Definition implements Wsdl11Definition, InitializingBea
this.wsdlResource = wsdlResource;
}
public String toString() {
return "SimpleWsdl11Definition " + wsdlResource;
}
}

View File

@@ -23,10 +23,11 @@ import javax.wsdl.xml.WSDLWriter;
import javax.xml.transform.Source;
import javax.xml.transform.dom.DOMSource;
import org.w3c.dom.Document;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
import org.springframework.ws.wsdl.WsdlDefinitionException;
import org.w3c.dom.Document;
/**
* Implementation of the <code>Wsdl11Definition</code> based on WSDL4J. A {@link javax.wsdl.Definition} can be given as
@@ -66,7 +67,9 @@ public class Wsdl4jDefinition implements Wsdl11Definition {
/** Returns the WSDL4J <code>Definition</code>. */
public Definition getDefinition() {
return definition;
synchronized (monitor) {
return definition;
}
}
/** Set the WSDL4J <code>Definition</code>. */

View File

@@ -26,6 +26,7 @@ import javax.wsdl.Definition;
import javax.wsdl.Fault;
import javax.wsdl.Input;
import javax.wsdl.Operation;
import javax.wsdl.OperationType;
import javax.wsdl.Output;
import javax.wsdl.Port;
import javax.wsdl.PortType;
@@ -101,15 +102,19 @@ public abstract class AbstractBindingWsdl4jDefinitionBuilder extends AbstractWsd
BindingOperation bindingOperation = definition.createBindingOperation();
bindingOperation.setOperation(operation);
populateBindingOperation(bindingOperation, operation);
if (operation.getInput() != null) {
BindingInput bindingInput = definition.createBindingInput();
populateBindingInput(bindingInput, operation.getInput());
bindingOperation.setBindingInput(bindingInput);
if (operation.getStyle() == null || operation.getStyle().equals(OperationType.REQUEST_RESPONSE)) {
createBindingInput(definition, operation, bindingOperation);
createBindingOutput(definition, operation, bindingOperation);
}
if (operation.getOutput() != null) {
BindingOutput bindingOutput = definition.createBindingOutput();
populateBindingOutput(bindingOutput, operation.getOutput());
bindingOperation.setBindingOutput(bindingOutput);
else if (operation.getStyle().equals(OperationType.ONE_WAY)) {
createBindingInput(definition, operation, bindingOperation);
}
else if (operation.getStyle().equals(OperationType.NOTIFICATION)) {
createBindingOutput(definition, operation, bindingOperation);
}
else if (operation.getStyle().equals(OperationType.SOLICIT_RESPONSE)) {
createBindingOutput(definition, operation, bindingOperation);
createBindingInput(definition, operation, bindingOperation);
}
for (Iterator faultIterator = operation.getFaults().values().iterator(); faultIterator.hasNext();) {
Fault fault = (Fault) faultIterator.next();
@@ -121,6 +126,20 @@ public abstract class AbstractBindingWsdl4jDefinitionBuilder extends AbstractWsd
}
}
private void createBindingOutput(Definition definition, Operation operation, BindingOperation bindingOperation)
throws WSDLException {
BindingOutput bindingOutput = definition.createBindingOutput();
populateBindingOutput(bindingOutput, operation.getOutput());
bindingOperation.setBindingOutput(bindingOutput);
}
private void createBindingInput(Definition definition, Operation operation, BindingOperation bindingOperation)
throws WSDLException {
BindingInput bindingInput = definition.createBindingInput();
populateBindingInput(bindingInput, operation.getInput());
bindingOperation.setBindingInput(bindingInput);
}
/**
* Called after the {@link BindingOperation} has been created, but before any sub-elements are added. Subclasses can
* implement this method to define the binding name, or add extensions to it.