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]

Reply via email to