redstone.xmlrpc
Class XmlRpcClient

java.lang.Object
  extended by org.xml.sax.helpers.DefaultHandler
      extended by redstone.xmlrpc.XmlRpcParser
          extended by redstone.xmlrpc.XmlRpcClient
All Implemented Interfaces:
org.xml.sax.ContentHandler, org.xml.sax.DTDHandler, org.xml.sax.EntityResolver, org.xml.sax.ErrorHandler, XmlRpcInvocationHandler

public class XmlRpcClient
extends XmlRpcParser
implements XmlRpcInvocationHandler

An XmlRpcClient represents a connection to an XML-RPC enabled server.

Author:
Greger Olsson

Field Summary
 
Fields inherited from class redstone.xmlrpc.XmlRpcParser
ARRAY, BASE64, BOOLEAN, DATE, DOUBLE, I4, INT, MEMBER, NAME, STRING, STRUCT, VALUE
 
Constructor Summary
XmlRpcClient(java.lang.String url, boolean streamMessages)
          Creates a new client with the ability to send XML-RPC messages to the the server at the given URL.
XmlRpcClient(java.net.URL url, boolean streamMessages)
           
 
Method Summary
 java.lang.Object invoke(java.lang.String method, java.util.List arguments)
          Invokes a method on the terminating XML-RPC end point.
 java.lang.Object invoke(java.lang.String method, java.lang.Object[] arguments)
          Invokes a method on the terminating XML-RPC end point.
 void invokeAsynchronously(java.lang.String method, java.lang.Object arguments, XmlRpcCallback callback)
          A asynchronous version of invoke performing the call in a separate thread and reporting responses, faults, and exceptions through the supplied XmlRpcCallback.
 void startElement(java.lang.String uri, java.lang.String name, java.lang.String qualifiedName, org.xml.sax.Attributes attributes)
          Override the startElement() method inherited from XmlRpcParser.
 
Methods inherited from class redstone.xmlrpc.XmlRpcParser
characters, endElement, parse
 
Methods inherited from class org.xml.sax.helpers.DefaultHandler
endDocument, endPrefixMapping, error, fatalError, ignorableWhitespace, notationDecl, processingInstruction, resolveEntity, setDocumentLocator, skippedEntity, startDocument, startPrefixMapping, unparsedEntityDecl, warning
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

XmlRpcClient

public XmlRpcClient(java.lang.String url,
                    boolean streamMessages)
             throws java.net.MalformedURLException
Creates a new client with the ability to send XML-RPC messages to the the server at the given URL.

Parameters:
url - the URL at which the XML-RPC service is locaed
streamMessages - Indicates whether or not to stream messages directly or if the messages should be completed locally before being sent all at once. Streaming is not directly supported by XML-RPC, since the Content-Length header is not included in the HTTP post. If the other end is not relying on Content-Length, streaming the message directly is much more efficient.
Throws:
java.net.MalformedURLException

XmlRpcClient

public XmlRpcClient(java.net.URL url,
                    boolean streamMessages)
See Also:
XmlRpcClient(String,boolean)
Method Detail

invoke

public java.lang.Object invoke(java.lang.String method,
                               java.util.List arguments)
                        throws XmlRpcException,
                               XmlRpcFault
Invokes a method on the terminating XML-RPC end point. The supplied method name and argument collection is used to encode the call into an XML-RPC compatible message.

Specified by:
invoke in interface XmlRpcInvocationHandler
Parameters:
method - The name of the method to call.
arguments - The arguments to encode in the call.
Returns:
The object returned from the terminating XML-RPC end point.
Throws:
XmlRpcException - One or more of the supplied arguments are unserializable. That is, the built-in serializer connot parse it or find a custom serializer that can. There may also be problems with the socket communication.
XmlRpcFault

invoke

public java.lang.Object invoke(java.lang.String method,
                               java.lang.Object[] arguments)
                        throws XmlRpcException,
                               XmlRpcFault
Invokes a method on the terminating XML-RPC end point. The supplied method name and argument vector is used to encode the call into XML-RPC.

Parameters:
method - The name of the method to call.
arguments - The arguments to encode in the call.
Returns:
The object returned from the terminating XML-RPC end point.
Throws:
XmlRpcException - One or more of the supplied arguments are unserializable. That is, the built-in serializer connot parse it or find a custom serializer that can. There may also be problems with the socket communication.
XmlRpcFault

invokeAsynchronously

public void invokeAsynchronously(java.lang.String method,
                                 java.lang.Object arguments,
                                 XmlRpcCallback callback)
A asynchronous version of invoke performing the call in a separate thread and reporting responses, faults, and exceptions through the supplied XmlRpcCallback. TODO Determine on proper strategy for instantiating Threads.

Parameters:
method - The name of the method at the server.
arguments - The arguments for the call. This may be either a java.util.List descendant, or a java.lang.Object[] array.
callback - An object implementing the XmlRpcCallback interface. If callback is null, the call will be performed but any results, faults, or exceptions will be ignored (fire and forget).

startElement

public void startElement(java.lang.String uri,
                         java.lang.String name,
                         java.lang.String qualifiedName,
                         org.xml.sax.Attributes attributes)
                  throws org.xml.sax.SAXException
Override the startElement() method inherited from XmlRpcParser. This way, we may set the error flag if we run into a fault-tag.

Specified by:
startElement in interface org.xml.sax.ContentHandler
Overrides:
startElement in class XmlRpcParser
Parameters:
See - SAX documentation
Throws:
org.xml.sax.SAXException