diff --git a/core/src/main/java/org/springframework/ws/wsdl/wsdl11/SimpleWsdl11Definition.java b/core/src/main/java/org/springframework/ws/wsdl/wsdl11/SimpleWsdl11Definition.java
index a4d248b1..e08eeee4 100644
--- a/core/src/main/java/org/springframework/ws/wsdl/wsdl11/SimpleWsdl11Definition.java
+++ b/core/src/main/java/org/springframework/ws/wsdl/wsdl11/SimpleWsdl11Definition.java
@@ -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;
+ }
+
+
}
\ No newline at end of file
diff --git a/core/src/main/java/org/springframework/ws/wsdl/wsdl11/Wsdl4jDefinition.java b/core/src/main/java/org/springframework/ws/wsdl/wsdl11/Wsdl4jDefinition.java
index cf14cff9..2f6235b4 100644
--- a/core/src/main/java/org/springframework/ws/wsdl/wsdl11/Wsdl4jDefinition.java
+++ b/core/src/main/java/org/springframework/ws/wsdl/wsdl11/Wsdl4jDefinition.java
@@ -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 Wsdl11Definition based on WSDL4J. A {@link javax.wsdl.Definition} can be given as
@@ -66,7 +67,9 @@ public class Wsdl4jDefinition implements Wsdl11Definition {
/** Returns the WSDL4J Definition. */
public Definition getDefinition() {
- return definition;
+ synchronized (monitor) {
+ return definition;
+ }
}
/** Set the WSDL4J Definition. */
diff --git a/core/src/main/java/org/springframework/ws/wsdl/wsdl11/builder/AbstractBindingWsdl4jDefinitionBuilder.java b/core/src/main/java/org/springframework/ws/wsdl/wsdl11/builder/AbstractBindingWsdl4jDefinitionBuilder.java
index 727e55e7..b728d495 100644
--- a/core/src/main/java/org/springframework/ws/wsdl/wsdl11/builder/AbstractBindingWsdl4jDefinitionBuilder.java
+++ b/core/src/main/java/org/springframework/ws/wsdl/wsdl11/builder/AbstractBindingWsdl4jDefinitionBuilder.java
@@ -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.