On Jan 19, 2005, at 7:52 AM, Michael Schuerig wrote:
For integration testing of client and server code and configuration I'd
like to cut the Axis handler stack in the place where messages are
converted to and from XML.

I'm not sure if this is what you want or not... but it's a structure I use for unit testing axis stuff. You don't need to set up a server/tomcat/webapp to do serialization/deserialization. I'm thinking you want to call serialize(...) and then compare the xml string with some given expected value.


public String serialize( QName dataQName, Object data ) throws Exception {
AxisServer server = new AxisServer();
server.setOption(AxisEngine.PROP_DOMULTIREFS, Boolean.TRUE);
MessageContext msgContext = new MessageContext(server);
msgContext.setProperty(AxisEngine.PROP_DOMULTIREFS, Boolean.TRUE);
SOAPEnvelope msg = new SOAPEnvelope();
RPCParam arg = new RPCParam("Test", "struct", data);
RPCElement body = new RPCElement("Test", "method1", new Object[]{arg});
msg.addBodyElement(body);
StringWriter writer = new StringWriter();


SerializationContext context = new SerializationContext(writer, msgContext);

        msg.output(context);

        String messageStr = writer.toString();

        return messageStr;
    }

public Object deserialize( String messageStr ) throws Exception {
AxisServer server = new AxisServer();
server.setOption(AxisEngine.PROP_DOMULTIREFS, Boolean.TRUE);
MessageContext msgContext = new MessageContext(server);
msgContext.setProperty(AxisEngine.PROP_DOMULTIREFS, Boolean.TRUE);


        //System.err.println(messageStr);

Reader reader = new StringReader(messageStr);
DeserializationContext dser = new DeserializationContext
(new InputSource(reader), msgContext, org.apache.axis.Message.REQUEST);
dser.parse();
SOAPEnvelope env = dser.getEnvelope();


RPCElement rpcElem = (RPCElement) env.getFirstBody();
MessageElement struct = rpcElem.getChildElement(new QName("Test", "struct"));


        Object result = struct.getObjectValue();
        return result;
    }

--
Peter Molettiere
Senior Engineer
Truereq, Inc.
http://www.truereq.com/



Reply via email to