package org.apache.axis2.jaxws.jaxb.string;
import org.apache.axis2.jaxws.framework.AbstractTestCase;
import org.apache.axis2.jaxws.TestLogger;
import junit.framework.Test;
import junit.framework.TestSuite;
import javax.xml.ws.BindingProvider;
import javax.xml.ws.WebServiceException;
public class JAXBStringUTF8Tests extends AbstractTestCase {
String axisEndpoint = "http://localhost:6060/axis2/services/JAXBStringService.JAXBStringPortTypeImplPort";
public static Test suite() {
return getTestSetup(new TestSuite(JAXBStringUTF8Tests.class));
}
private void runTest(String value) {
runTestWithUTF8(value, value);
}
private void runTest(String value, String value1) {
runTestWithUTF8(value, value1);
}
public void testSimpleString() throws Exception {
runTest("a simple string");
}
public void testSimpleStringSwitchEncoding() throws Exception {
String input = "a simple string";
String output = "a simple string";
// Run with different encodings to verify proper processing.
runTestWithEncoding(input, output, null); // no encoding means to use default, UTF-8
runTestWithEncoding(input, output, "UTF-16"); // Make a call with UTF-16
runTestWithEncoding(input, output, null); // now try again...using default, UTF-8
}
public void testStringWithApostrophes() throws Exception {
runTest("this isn't a simple string");
}
public void testStringWithEntities() throws Exception {
runTest("&<>'"", "&<>'"");
}
public void testStringWithRawEntities() throws Exception {
runTest("&<>'\"", "&<>'\"");
}
public void testStringWithLeadingAndTrailingSpaces() throws Exception {
runTest(" centered ");
}
public void testWhitespace() throws Exception {
runTest(" \n \t "); // note: \r fails
}
public void testFrenchAccents() throws Exception {
runTest("\u00e0\u00e2\u00e4\u00e7\u00e8\u00e9\u00ea\u00eb\u00ee\u00ef\u00f4\u00f6\u00f9\u00fb\u00fc");
}
public void testGermanUmlauts() throws Exception {
runTest(" Some text \u00df with \u00fc special \u00f6 chars \u00e4.");
}
public void testWelcomeUnicode1() throws Exception {
// welcome in several languages
runTest(
"Chinese (trad.) : \u6b61\u8fce ");
}
public void testWelcomeUnicode2() throws Exception {
// welcome in several languages
runTest(
"Greek : \u03ba\u03b1\u03bb\u03ce\u03c2 \u03bf\u03c1\u03af\u03c3\u03b1\u03c4\u03b5");
}
public void testWelcomeUnicode3() throws Exception {
// welcome in several languages
runTest(
"Japanese : \u3088\u3046\u3053\u305d");
}
private void runTestWithUTF8(String input, String output) {
runTestWithEncoding(input, output, null); // no encoding means to use default, UTF-8
}
private void runTestWithEncoding(String input, String output, String encoding) {
TestLogger.logger.debug("Test : " + getName());
try {
JAXBStringPortType myPort = (new JAXBStringService()).getJAXBStringPort();
BindingProvider p = (BindingProvider) myPort;
p.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, axisEndpoint);
if (encoding != null) {
p.getRequestContext().put(org.apache.axis2.Constants.Configuration.CHARACTER_SET_ENCODING, encoding);
}
Echo request = new Echo();
request.setArg(input);
EchoResponse response = myPort.echoString(request);
TestLogger.logger.debug(response.getResponse());
assertEquals(output, response.getResponse());
} catch (WebServiceException webEx) {
webEx.printStackTrace();
fail();
}
}
}