Create SOAP Request Template with Java
The Membrane SOA Model can create SOAP request Templates out of a WSDL document, filled with sample data in respect to their type definition.
package sample.wsdl;
import groovy.xml.MarkupBuilder;
import java.io.StringWriter;
import com.predic8.wsdl.Definitions;
import com.predic8.wsdl.WSDLParser;
import com.predic8.wstool.creator.RequestTemplateCreator;
import com.predic8.wstool.creator.SOARequestCreator;
public class CreateSOAPRequestTemplate {
public static void main(String[] args) {
WSDLParser parser = new WSDLParser();
Definitions wsdl = parser.parse("resources/article/article.wsdl");
StringWriter writer = new StringWriter();
//SOAPRequestCreator constructor: SOARequestCreator(Definitions, Creator, MarkupBuilder)
SOARequestCreator creator = new SOARequestCreator(wsdl, new RequestTemplateCreator(), new MarkupBuilder(writer));
//creator.createRequest(PortType name, Operation name, Binding name);
creator.createRequest("ArticleServicePT", "create", "ArticleServicePTBinding");
System.out.println(writer);
}
}
Listing 1: CreateSOAPRequestTemplate
Using the code above you get the following soap request message.
<s11:Envelope xmlns:s11='http://schemas.xmlsoap.org/soap/envelope/'>
<s11:Body>
<ns1:create xmlns:ns1='http://predic8.com/wsdl/material/ArticleService/1/' id='?999?'>
<article xmlns:ns1='http://predic8.com/material/1/'>
<name>?XXX?</name>
<description>?XXX?</description>
<price xmlns:ns1='http://predic8.com/common/1/'>
<amount>?999.99?</amount>
<!-- possible value: EUR, possible value: USD -->
<currency xmlns:ns1='http://predic8.com/common/1/'>???</currency>
</price>
<!-- Pattern: [A-Z]{2}-\d{5} -->
<id xmlns:ns1='http://predic8.com/material/1/'>???</id>
</article>
</ns1:create>
</s11:Body>
</s11:Envelope>
Listing 2: Created soap request template