private static final Log log = LogFactory.getLog(XmlRpcStreamServer.class);
private XmlWriterFactory writerFactory = new DefaultXMLWriterFactory();
protected XmlRpcRequest getRequest(final XmlRpcStreamRequestConfig pConfig,
InputStream pStream) throws XmlRpcException {
final XmlRpcRequestParser parser = new XmlRpcRequestParser(pConfig, getTypeFactory());
final XMLReader xr = SAXParsers.newXMLReader();
xr.setContentHandler(parser);
try {
xr.parse(new InputSource(pStream));
} catch (SAXException e) {
Exception ex = e.getException();
if (ex != null && ex instanceof XmlRpcException) {
throw (XmlRpcException) ex;
}
throw new XmlRpcException("Failed to parse XML-RPC request: " + e.getMessage(), e);
} catch (IOException e) {
throw new XmlRpcException("Failed to read XML-RPC request: " + e.getMessage(), e);
}
final List params = parser.getParams();
return new XmlRpcRequest(){
public XmlRpcRequestConfig getConfig() { return pConfig; }
public String getMethodName() { return parser.getMethodName(); }
public int getParameterCount() { return params == null ? 0 : params.size(); }
public Object getParameter(int pIndex) { return params.get(pIndex); }
};
}