protected void writeError(XmlRpcStreamRequestConfig pConfig, OutputStream pStream, Throwable pError) throws XmlRpcException { final Throwable error = convertThrowable(pError); final int code; final String message; if (error instanceof XmlRpcException) { XmlRpcException ex = (XmlRpcException) error; code = ex.code; } else { code = 0; } message = error.getMessage(); try { getXmlRpcWriter(pConfig, pStream).write(pConfig, code, message, error); } catch (SAXException e) { throw new XmlRpcException("Failed to write XML-RPC response: " + e.getMessage(), e); } }
/** Logs an error. * @param pError The error being logged. */ public void log(Throwable pError) { final String msg = pError.getMessage() == null ? pError.getClass().getName() : pError.getMessage(); server.getErrorLogger().log(msg, pError); }
protected ThreadPool newThreadPool() { return new ThreadPool(server.getMaxThreads(), "XML-RPC"); }
protected XmlRpcWriter getXmlRpcWriter(XmlRpcStreamRequestConfig pConfig, OutputStream pStream) throws XmlRpcException { ContentHandler w = getXMLWriterFactory().getXmlWriter(pConfig, pStream); return new XmlRpcWriter(pConfig, w, getTypeFactory()); }
InputStream istream = null; try { istream = getInputStream(pConfig, pConnection); XmlRpcRequest request = getRequest(pConfig, istream); result = execute(request); istream.close(); istream = null; log.debug("execute: Request performed successfully"); } catch (Throwable t) { logError(t); result = null; error = t; boolean contentLengthRequired = isContentLengthRequired(pConfig); ByteArrayOutputStream baos; OutputStream ostream; ostream = getOutputStream(pConnection, pConfig, ostream); try { if (error == null) { writeResponse(pConfig, ostream, result); } else { writeError(pConfig, ostream, error); OutputStream dest = getOutputStream(pConfig, pConnection, baos.size()); try { baos.writeTo(dest);
protected OutputStream getOutputStream(ServerStreamConnection pConnection, XmlRpcStreamRequestConfig pConfig, OutputStream pStream) throws IOException { if (pConfig.isEnabledForExtensions() && pConfig.isGzipRequesting()) { setResponseHeader(pConnection, "Content-Encoding", "gzip"); } return super.getOutputStream(pConnection, pConfig, pStream); } }
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); } }; }
break; server.execute(data, this); output.flush(); if (!data.isKeepAlive() || !data.isSuccess()) {
XmlRpcHttpServerConfig serverConfig = (XmlRpcHttpServerConfig) server.getConfig(); requestData.setBasicEncoding(serverConfig.getBasicEncoding()); requestData.setContentLengthOptional(serverConfig.isContentLengthOptional());
InputStream istream = null; try { istream = getInputStream(pConfig, pConnection); XmlRpcRequest request = getRequest(pConfig, istream); result = execute(request); istream.close(); istream = null; log.debug("execute: Request performed successfully"); } catch (Throwable t) { logError(t); result = null; error = t; boolean contentLengthRequired = isContentLengthRequired(pConfig); ByteArrayOutputStream baos; OutputStream ostream; ostream = getOutputStream(pConnection, pConfig, ostream); try { if (error == null) { writeResponse(pConfig, ostream, result); } else { writeError(pConfig, ostream, error); OutputStream dest = getOutputStream(pConfig, pConnection, baos.size()); try { baos.writeTo(dest);
protected XmlRpcWriter getXmlRpcWriter(XmlRpcStreamRequestConfig pConfig, OutputStream pStream) throws XmlRpcException { ContentHandler w = getXMLWriterFactory().getXmlWriter(pConfig, pStream); return new XmlRpcWriter(pConfig, w, getTypeFactory()); }
protected OutputStream getOutputStream(ServerStreamConnection pConnection, XmlRpcStreamRequestConfig pConfig, OutputStream pStream) throws IOException { if (pConfig.isEnabledForExtensions() && pConfig.isGzipRequesting()) { setResponseHeader(pConnection, "Content-Encoding", "gzip"); } return super.getOutputStream(pConnection, pConfig, pStream); } }
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); } }; }
break; server.execute(data, this); output.flush(); if (!data.isKeepAlive() || !data.isSuccess()) {
XmlRpcHttpServerConfig serverConfig = (XmlRpcHttpServerConfig) server.getConfig(); requestData.setBasicEncoding(serverConfig.getBasicEncoding()); requestData.setContentLengthOptional(serverConfig.isContentLengthOptional());
InputStream istream = null; try { istream = getInputStream(pConfig, pConnection); XmlRpcRequest request = getRequest(pConfig, istream); if (request.getMethodName().equals("system.multicall")) { result = executeMulticall(request); } else { result = execute(request); log.debug("execute: Request performed successfully"); } catch (Throwable t) { logError(t); result = null; error = t; boolean contentLengthRequired = isContentLengthRequired(pConfig); ByteArrayOutputStream baos; OutputStream ostream; ostream = getOutputStream(pConnection, pConfig, ostream); try { if (error == null) { writeResponse(pConfig, ostream, result); } else { writeError(pConfig, ostream, error); OutputStream dest = getOutputStream(pConfig, pConnection, baos.size()); try { baos.writeTo(dest);
protected XmlRpcWriter getXmlRpcWriter(XmlRpcStreamRequestConfig pConfig, OutputStream pStream) throws XmlRpcException { ContentHandler w = getXMLWriterFactory().getXmlWriter(pConfig, pStream); return new XmlRpcWriter(pConfig, w, getTypeFactory()); }
protected void writeError(XmlRpcStreamRequestConfig pConfig, OutputStream pStream, Throwable pError) throws XmlRpcException { final Throwable error = convertThrowable(pError); final int code; final String message; if (error instanceof XmlRpcException) { XmlRpcException ex = (XmlRpcException) error; code = ex.code; } else { code = 0; } message = error.getMessage(); try { getXmlRpcWriter(pConfig, pStream).write(pConfig, code, message, error); } catch (SAXException e) { throw new XmlRpcException("Failed to write XML-RPC response: " + e.getMessage(), e); } }
/** Logs a message. * @param pMessage The being logged. */ public void log(String pMessage) { server.getErrorLogger().log(pMessage); }