You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
2.5 KiB
86 lines
2.5 KiB
package de.timroes.axmlrpc; |
|
|
|
import de.timroes.axmlrpc.serializer.SerializerHandler; |
|
import de.timroes.axmlrpc.xmlcreator.SimpleXMLCreator; |
|
import de.timroes.axmlrpc.xmlcreator.XmlElement; |
|
|
|
/** |
|
* A Call object represents a call of a remote methode. |
|
* It contains the name of the method to be called and the parameters to use |
|
* in this remote procedure call. To send it over the network the method getXML |
|
* returns an xml representation according to the XML-RPC specification as a String. |
|
* |
|
* @author Tim Roes |
|
*/ |
|
public class Call { |
|
|
|
private String method; |
|
private Object[] params; |
|
|
|
/** |
|
* Create a new method call with the given name and no parameters. |
|
* @param method The method to be called. |
|
*/ |
|
public Call(String method) { |
|
this(method, null); |
|
} |
|
|
|
/** |
|
* Create a new method call with the given name and parameters. |
|
* @param method The method to be called. |
|
* @param params An array of parameters for the method. |
|
*/ |
|
public Call(String method, Object[] params) { |
|
this.method = method; |
|
this.params = params; |
|
} |
|
|
|
/** |
|
* Return an xml representation of the method call as specified in |
|
* http://www.xmlrpc.com/spec. If flags have been set in the XMLRPCClient |
|
* the returning xml does not comply strict to the standard. |
|
* |
|
* @return The string of the xml representing this call. |
|
* @throws XMLRPCException Will be thrown whenever the xml representation cannot |
|
* be build without errors. |
|
* @see XMLRPCClient |
|
*/ |
|
public String getXML() throws XMLRPCException { |
|
|
|
SimpleXMLCreator creator = new SimpleXMLCreator(); |
|
|
|
XmlElement methodCall = new XmlElement(XMLRPCClient.METHOD_CALL); |
|
creator.setRootElement(methodCall); |
|
|
|
XmlElement methodName = new XmlElement(XMLRPCClient.METHOD_NAME); |
|
methodName.setContent(method); |
|
methodCall.addChildren(methodName); |
|
|
|
if(params != null && params.length > 0) { |
|
XmlElement params = new XmlElement(XMLRPCClient.PARAMS); |
|
methodCall.addChildren(params); |
|
|
|
for(Object o : this.params) { |
|
params.addChildren(getXMLParam(o)); |
|
} |
|
} |
|
|
|
return creator.toString(); |
|
} |
|
|
|
/** |
|
* Generates the param xml tag for a specific parameter object. |
|
* |
|
* @param o The parameter object. |
|
* @return The object serialized into an xml tag. |
|
* @throws XMLRPCException Will be thrown if the serialization failed. |
|
*/ |
|
private XmlElement getXMLParam(Object o) throws XMLRPCException { |
|
XmlElement param = new XmlElement(XMLRPCClient.PARAM); |
|
XmlElement value = new XmlElement(XMLRPCClient.VALUE); |
|
param.addChildren(value); |
|
value.addChildren(SerializerHandler.getDefault().serialize(o)); |
|
return param; |
|
} |
|
|
|
}
|
|
|