Enhancement request.

I guess you guys are still deep in the code, but here's an enhancement request.

A method on XmlRpcClient (and I guess SecureXmlRpcClient), with a method signature as follows:

public Object execute(String method, byte[] request)

and/or

public Object execute(String method, String request)

That takes the raw xml required for the xmlrpc request from the second argument.


Rationale:

Why would one want to do this?

I've been doing a lot of testing of my xmlrpc service recently using JUnit.

My xmlrpc arguments are typically passed as structs (Hashtables), so I have a java method in my testclient class that takes a method name and the name of a properties files as arguments, builds a struct from the properties file, executes the xmlrpc method with those arguments, and returns the result.

I can call this function from my own commandline client, or from JUnit, as part of a test, which ends up being one line long (as a another method wraps all of this up, and sanity checks the return values).

This has all worked fantastically for me so far.

However, I have a few methods where the arguments are more complicated than structs (e.g. a list with a struct and a list of structs). Writing test cases for these is cumbersome, as I have to define all these Hashtables and Vectors, populate them, join them together, and pass them in. Changing the input values is even more cumbersome and error-prone.

It would be very nice if I could store these arguments as text files, like my property files. The most obvious format to use for these files would be the same xml format that is used by xmlrpc. I could read in the contents, and use the execute method above to test the method.

All my test cases go back to being one-liners, and to change the arguments, I simply edit my .xml file.

Although you probably wouldn't want to use this method in normal operations, for building unit tests of xmlrpc interfaces, it could be very useful. Looking at the 1.1 code that I have it should also be pretty easy to do ...






Reply via email to