/*
* JBoss, Home of Professional Open Source
* Copyright 2013, Red Hat, Inc. and/or its affiliates, and individual
* contributors by the @authors tag. See the copyright.txt in the
* distribution for a full listing of individual contributors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.switchyard.quickstarts.soap.addressing;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import org.switchyard.component.test.mixins.http.HTTPMixIn;
import org.switchyard.component.soap.util.SOAPUtil;
/**
* Client for SOAP with WS-Addressing.
*
* @author Magesh Kumar B <mageshbk@jboss.com> (C) 2013 Red Hat Inc.
*/
public class SoapAddressingClient {
private static String SOAP_TEMPLATE =
"<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\""
+ " xmlns:urn=\"urn:switchyard-quickstart:soap-addressing:1.0\""
+ " xmlns:wsa=\"http://www.w3.org/2005/08/addressing\">"
+ " <soapenv:Header>"
+ " <wsa:MessageID>uuid:3d3fcbbb-fd43-4118-b40e-62577894f39a</wsa:MessageID>"
+ " <wsa:Action>urn:switchyard-quickstart:soap-addressing:1.0:OrderService:orderRequest</wsa:Action>"
+ " </soapenv:Header>"
+ " <soapenv:Body>"
+ " <urn:order>"
+ " <item>%s</item>"
+ " <quantity>%s</quantity>"
+ " </urn:order>"
+ " </soapenv:Body>"
+ "</soapenv:Envelope>";
public static void main(String[] args) throws Exception {
if (args.length < 2) {
System.out.println("Usage: SoapAddressingClient <item> <quantity>");
return;
} else {
String port = System.getProperty("org.switchyard.component.soap.client.port", "8080");
SOAPUtil.prettyPrint(sendMessage(args[0], args[1], "http://localhost:" + port + "/soap-addressing/order/OrderService"), System.out);
System.out.println();
System.out.println(getFileMessage());
}
}
public static String sendMessage(String item, String quantity, String switchyard_web_service) throws Exception {
File testFile = getFile();
if (testFile.exists()) {
testFile.delete();
}
HTTPMixIn http = new HTTPMixIn();
http.initialize();
return http.postString(switchyard_web_service, String.format(SOAP_TEMPLATE, item, quantity));
}
public static String getFileMessage() throws Exception {
File testFile = getFile();
// Wait for the actual response from WarehouseService
int timeout = 0;
while (!testFile.exists()) {
Thread.sleep(100);
timeout += 100;
if (timeout == 20000) {
break;
}
}
BufferedReader stream = new BufferedReader(new FileReader(testFile));
String text = stream.readLine();
stream.close();
return text;
}
private static File getFile() {
String outputFile = "/tmp" + File.separator + "test.txt";
return new File(outputFile);
}
}