Interop issue: Utf16 Mtom failure with MS WCF
----------------------------------------------
Key: AXIS2-3299
URL: https://issues.apache.org/jira/browse/AXIS2-3299
Project: Axis 2.0 (Axis2)
Issue Type: Bug
Affects Versions: 1.3
Environment: server=WCF, Client=jdk15/axis2-1.3/winxp
Reporter: Charitha Kankanamge
Assignee: Thilina Gunarathne
Priority: Blocker
Interop fails with following exception when mtom is used with utf 16 encoding.
org.apache.axis2.AxisFault: The input stream for an incoming message is null.
at
org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:71)
at
org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:326)
at
org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:389)
at
org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:211)
at
org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)
at
org.tempuri.MtomServiceStub.EchoBinaryAsString(MtomServiceStub.java:239)
at
org.tempuri.tempuri.mtom.soap11.utf16.MtomServiceSoap11Utf16StubTest.testEchoBinaryAsString(MtomServiceSoap11Utf16StubTest.java:52)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
Steps to reproduce
================
- Generate client stubs using the following MS Interop endpoint
http://131.107.72.15/MTOM_Service_Indigo/Soap11MtomUtf16.svc?wsdl
- Write a client and try to invoke service
ie:-
public class MtomServiceSoap11Utf16StubTest extends TestCase {
MtomServiceStub stub = null;
protected void setUp() throws Exception {
stub = new
MtomServiceStub("http://131.107.72.15/MTOM_Service_Indigo/Soap11MtomUtf16.svc/MtomTest");
stub._getServiceClient().getOptions().setProperty(Constants.Configuration.ENABLE_MTOM,
Constants.VALUE_TRUE);
stub._getServiceClient().getOptions().setProperty(Constants.Configuration.CHARACTER_SET_ENCODING,"utf-16");
//
stub._getServiceClient().getOptions().setProperty(Constants.Configuration.TRANSPORT_URL,
//
"http://localhost:8085/MTOM_Service_Indigo/Soap11MtomUtf16.svc/MtomTest");
stub._getServiceClient().getOptions().setProperty(Constants.Configuration.TRANSPORT_URL,
"http://localhost:8085/MTOM_Service_Indigo/Soap11MtomUtf16.svc/MtomTest");
}
public void testEchoBinaryAsString() {
String testString = "new test string";
DataHandler dataHandler = new DataHandler(new
ByteArrayDataSource(testString.getBytes()));
try {
String returnStirng = stub.EchoBinaryAsString(dataHandler);
assertEquals(returnStirng, "new test string");
} catch (RemoteException e) {
e.printStackTrace();
fail();
}
}
public void testEchoStringAsBinary() {
String testString = "new test string";
try {
DataHandler dataHandler = stub.EchoStringAsBinary(testString);
String result = getStringFromDataHandler(dataHandler);
assertEquals(result,"new test string");
} catch (RemoteException e) {
fail();
} catch (IOException e) {
fail();
}
}
public void testEchoBinaryArrayAsStringArray() {
String testString = "new test string";
DataHandler dataHandlers[] = new DataHandler[2];
dataHandlers[0] = new DataHandler(new
ByteArrayDataSource(testString.getBytes()));
dataHandlers[1] = new DataHandler(new
ByteArrayDataSource(testString.getBytes()));
ArrayOfbase64Binary arrayOfbase64Binary = new ArrayOfbase64Binary();
arrayOfbase64Binary.setBase64Binary(dataHandlers);
try {
String[] result =
stub.EchoBinaryArrayAsStringArray(arrayOfbase64Binary).getString();
assertEquals(result.length,2);
assertEquals(result[0],"new test string");
assertEquals(result[1],"new test string");
} catch (RemoteException e) {
fail();
}
}
public void testEchoBinaryFieldAsString() {
String testString = "new test string";
DataHandler dataHandler = new DataHandler(new
ByteArrayDataSource(testString.getBytes()));
MtomTestStruct mtomTestStruct = new MtomTestStruct();
mtomTestStruct.setName("test data");
mtomTestStruct.setArray(dataHandler);
try {
String result = stub.EchoBinaryFieldAsString(mtomTestStruct);
assertEquals(result,"new test string");
} catch (RemoteException e) {
fail();
}
}
public void testEchoBinaryHeaderAsString() {
String testString = "new test string";
DataHandler dataHandler = new DataHandler(new
ByteArrayDataSource(testString.getBytes()));
ByteArray byteArray = new ByteArray();
byteArray.setByteArray(dataHandler);
try {
String result = stub.EchoBinaryHeaderAsString(byteArray);
assertEquals(result,"new test string");
} catch (RemoteException e) {
fail();
}
}
public String getStringFromDataHandler(DataHandler dataHandler)
throws IOException {
byte[] bytes = new byte[128];
int length = dataHandler.getInputStream().read(bytes);
return new String(bytes, 0, length);
}
}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]