You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xmlrpc-dev@ws.apache.org by jo...@apache.org on 2005/05/13 23:06:37 UTC
cvs commit: ws-xmlrpc/src/java/org/apache/xmlrpc/parser XmlRpcResponseParser.java
jochen 2005/05/13 14:06:37
Modified: src/java/org/apache/xmlrpc/client Tag: b20050512_streaming
XmlRpcStreamTransport.java XmlRpcHttpTransport.java
src/java/org/apache/xmlrpc/serializer Tag:
b20050512_streaming XmlRpcWriter.java
I4Serializer.java I2Serializer.java
I1Serializer.java I8Serializer.java
src/test/org/apache/xmlrpc/test Tag: b20050512_streaming
SerializerTest.java HttpTransportTest.java
src/java/org/apache/xmlrpc/server Tag: b20050512_streaming
XmlRpcStreamServer.java
src/java/org/apache/xmlrpc/webserver Tag:
b20050512_streaming WebServer.java
src/java/org/apache/xmlrpc/common Tag: b20050512_streaming
TypeFactoryImpl.java
src/java/org/apache/xmlrpc/parser Tag: b20050512_streaming
XmlRpcResponseParser.java
Log:
Webserver based unit tests are working.
Revision Changes Path
No revision
No revision
1.1.2.3 +29 -3 ws-xmlrpc/src/java/org/apache/xmlrpc/client/Attic/XmlRpcStreamTransport.java
Index: XmlRpcStreamTransport.java
===================================================================
RCS file: /home/cvs/ws-xmlrpc/src/java/org/apache/xmlrpc/client/Attic/XmlRpcStreamTransport.java,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -u -r1.1.2.2 -r1.1.2.3
--- XmlRpcStreamTransport.java 13 May 2005 00:18:21 -0000 1.1.2.2
+++ XmlRpcStreamTransport.java 13 May 2005 21:06:37 -0000 1.1.2.3
@@ -15,6 +15,8 @@
*/
package org.apache.xmlrpc.client;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
@@ -161,7 +163,7 @@
XmlRpcStreamRequestConfig config = (XmlRpcStreamRequestConfig) pRequest.getConfig();
Object connection = newConnection(config);
try {
- initConnection(config, pRequest);
+ initConnection(config, connection);
OutputStream ostream = getOutputStream(config, connection);
try {
writeRequest(config, ostream, pRequest);
@@ -198,18 +200,42 @@
}
protected Object readResponse(XmlRpcStreamRequestConfig pConfig, InputStream pStream) throws XmlRpcException {
+ if (true) {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ try {
+ byte[] buffer = new byte[1024];
+ for (;;) {
+ int res = pStream.read(buffer);
+ if (res == -1) {
+ break;
+ } else if (res > 0) {
+ baos.write(buffer, 0, res);
+ }
+ }
+ } catch (IOException e) {
+ throw new XmlRpcClientException(e.getMessage(), e);
+ }
+ System.out.println("Input: " + new String(baos.toByteArray()));
+ pStream = new ByteArrayInputStream(baos.toByteArray());
+ }
+
InputSource isource = new InputSource(pStream);
XMLReader xr = newXMLReader();
+ XmlRpcResponseParser xp;
try {
- XmlRpcResponseParser xp = new XmlRpcResponseParser(pConfig, getClient().getTypeFactory());
+ xp = new XmlRpcResponseParser(pConfig, getClient().getTypeFactory());
xr.setContentHandler(xp);
xr.parse(isource);
- return xp.getResult();
} catch (SAXException e) {
throw new XmlRpcClientException("Failed to parse servers response: " + e.getMessage(), e);
} catch (IOException e) {
throw new XmlRpcClientException("Failed to read servers response: " + e.getMessage(), e);
}
+ if (xp.isSuccess()) {
+ return xp.getResult();
+ } else {
+ throw new XmlRpcException(xp.getErrorCode(), xp.getErrorMessage());
+ }
}
protected void writeRequest(XmlRpcStreamRequestConfig pConfig, OutputStream pStream, XmlRpcRequest pRequest)
1.1.2.2 +5 -0 ws-xmlrpc/src/java/org/apache/xmlrpc/client/Attic/XmlRpcHttpTransport.java
Index: XmlRpcHttpTransport.java
===================================================================
RCS file: /home/cvs/ws-xmlrpc/src/java/org/apache/xmlrpc/client/Attic/XmlRpcHttpTransport.java,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -r1.1.2.1 -r1.1.2.2
--- XmlRpcHttpTransport.java 12 May 2005 01:58:51 -0000 1.1.2.1
+++ XmlRpcHttpTransport.java 13 May 2005 21:06:37 -0000 1.1.2.2
@@ -89,9 +89,14 @@
}
}
+ protected void setContentType(XmlRpcHttpClientConfig pConfig, Object pConnection) throws XmlRpcClientException {
+ setRequestHeader(pConnection, "Content-Type", "text/html");
+ }
+
protected void initConnection(XmlRpcStreamRequestConfig pConfig, Object pConnection) throws XmlRpcClientException {
super.initConnection(pConfig, pConnection);
XmlRpcHttpClientConfig config = (XmlRpcHttpClientConfig) pConfig;
+ setContentType(config, pConnection);
setCredentials(config, pConnection);
setCompressionHeaders(config, pConnection);
}
No revision
No revision
1.1.2.3 +1 -1 ws-xmlrpc/src/java/org/apache/xmlrpc/serializer/Attic/XmlRpcWriter.java
Index: XmlRpcWriter.java
===================================================================
RCS file: /home/cvs/ws-xmlrpc/src/java/org/apache/xmlrpc/serializer/Attic/XmlRpcWriter.java,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -u -r1.1.2.2 -r1.1.2.3
--- XmlRpcWriter.java 13 May 2005 00:18:21 -0000 1.1.2.2
+++ XmlRpcWriter.java 13 May 2005 21:06:37 -0000 1.1.2.3
@@ -122,7 +122,7 @@
handler.startElement("", "fault", "fault", ZERO_ATTRIBUTES);
Map map = new HashMap();
map.put("faultCode", new Integer(pCode));
- map.put("faultString", pMessage);
+ map.put("faultString", pMessage == null ? "" : pMessage);
writeValue(map);
handler.endElement("", "fault", "fault");
handler.endElement("", "methodResponse", "methodResponse");
1.1.2.2 +5 -1 ws-xmlrpc/src/java/org/apache/xmlrpc/serializer/Attic/I4Serializer.java
Index: I4Serializer.java
===================================================================
RCS file: /home/cvs/ws-xmlrpc/src/java/org/apache/xmlrpc/serializer/Attic/I4Serializer.java,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -r1.1.2.1 -r1.1.2.2
--- I4Serializer.java 12 May 2005 01:58:52 -0000 1.1.2.1
+++ I4Serializer.java 13 May 2005 21:06:37 -0000 1.1.2.2
@@ -21,9 +21,13 @@
/** A {@link TypeSerializer} for integers.
*/
public class I4Serializer extends TypeSerializerImpl {
+ /** Tag name of an int value.
+ */
+ public static final String INT_TAG = "int";
+
/** Tag name of an i4 value.
*/
- public static final String I4_TAG = "int";
+ public static final String I4_TAG = "i4";
public void write(ContentHandler pHandler, Object pObject) throws SAXException {
write(pHandler, I4_TAG, pObject.toString());
1.1.2.2 +2 -2 ws-xmlrpc/src/java/org/apache/xmlrpc/serializer/Attic/I2Serializer.java
Index: I2Serializer.java
===================================================================
RCS file: /home/cvs/ws-xmlrpc/src/java/org/apache/xmlrpc/serializer/Attic/I2Serializer.java,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -r1.1.2.1 -r1.1.2.2
--- I2Serializer.java 12 May 2005 01:58:52 -0000 1.1.2.1
+++ I2Serializer.java 13 May 2005 21:06:37 -0000 1.1.2.2
@@ -23,11 +23,11 @@
public class I2Serializer extends TypeSerializerImpl {
/** Tag name of an i2 value.
*/
- public static final String I2_TAG = "short";
+ public static final String I2_TAG = "i2";
/** Fully qualified name of an i2 value.
*/
- public static final String EX_I2_TAG = "ex:short";
+ public static final String EX_I2_TAG = "ex:i2";
public void write(ContentHandler pHandler, Object pObject) throws SAXException {
write(pHandler, I2_TAG, EX_I2_TAG, pObject.toString());
1.1.2.2 +2 -2 ws-xmlrpc/src/java/org/apache/xmlrpc/serializer/Attic/I1Serializer.java
Index: I1Serializer.java
===================================================================
RCS file: /home/cvs/ws-xmlrpc/src/java/org/apache/xmlrpc/serializer/Attic/I1Serializer.java,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -r1.1.2.1 -r1.1.2.2
--- I1Serializer.java 12 May 2005 01:58:52 -0000 1.1.2.1
+++ I1Serializer.java 13 May 2005 21:06:37 -0000 1.1.2.2
@@ -23,11 +23,11 @@
public class I1Serializer extends TypeSerializerImpl {
/** Tag name of an i1 value.
*/
- public static final String I1_TAG = "byte";
+ public static final String I1_TAG = "i1";
/** Fully qualified name of an i1 value.
*/
- public static final String EX_I1_TAG = "ex:byte";
+ public static final String EX_I1_TAG = "ex:i1";
public void write(ContentHandler pHandler, Object pObject) throws SAXException {
write(pHandler, I1_TAG, EX_I1_TAG, pObject.toString());
1.1.2.2 +2 -2 ws-xmlrpc/src/java/org/apache/xmlrpc/serializer/Attic/I8Serializer.java
Index: I8Serializer.java
===================================================================
RCS file: /home/cvs/ws-xmlrpc/src/java/org/apache/xmlrpc/serializer/Attic/I8Serializer.java,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -r1.1.2.1 -r1.1.2.2
--- I8Serializer.java 12 May 2005 01:58:52 -0000 1.1.2.1
+++ I8Serializer.java 13 May 2005 21:06:37 -0000 1.1.2.2
@@ -23,11 +23,11 @@
public class I8Serializer extends TypeSerializerImpl {
/** Tag name of an i8 value.
*/
- public static final String I8_TAG = "long";
+ public static final String I8_TAG = "i8";
/** Fully qualified name of an i8 value.
*/
- public static final String EX_I8_TAG = "ex:long";
+ public static final String EX_I8_TAG = "ex:i8";
public void write(ContentHandler pHandler, Object pObject) throws SAXException {
write(pHandler, I8_TAG, EX_I8_TAG, pObject.toString());
No revision
No revision
1.1.2.2 +1 -1 ws-xmlrpc/src/test/org/apache/xmlrpc/test/Attic/SerializerTest.java
Index: SerializerTest.java
===================================================================
RCS file: /home/cvs/ws-xmlrpc/src/test/org/apache/xmlrpc/test/Attic/SerializerTest.java,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -r1.1.2.1 -r1.1.2.2
--- SerializerTest.java 13 May 2005 00:18:21 -0000 1.1.2.1
+++ SerializerTest.java 13 May 2005 21:06:37 -0000 1.1.2.2
@@ -100,7 +100,7 @@
String expect =
"<?xml version=\"1.0\" encoding=\"US-ASCII\"?>"
+ "<methodCall xmlns:ex=\"http://ws.apache.org/xmlrpc/namespaces/extensions\">"
- + "<methodName>byteParam</methodName><params><param><value><ex:byte>3</ex:byte></value></param></params></methodCall>";
+ + "<methodName>byteParam</methodName><params><param><value><ex:i1>3</ex:i1></value></param></params></methodCall>";
assertEquals(expect, got);
}
1.1.2.2 +7 -1 ws-xmlrpc/src/test/org/apache/xmlrpc/test/Attic/HttpTransportTest.java
Index: HttpTransportTest.java
===================================================================
RCS file: /home/cvs/ws-xmlrpc/src/test/org/apache/xmlrpc/test/Attic/HttpTransportTest.java,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -r1.1.2.1 -r1.1.2.2
--- HttpTransportTest.java 12 May 2005 01:58:52 -0000 1.1.2.1
+++ HttpTransportTest.java 13 May 2005 21:06:37 -0000 1.1.2.2
@@ -21,6 +21,8 @@
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
import org.apache.xmlrpc.client.XmlRpcHttpTransportFactory;
import org.apache.xmlrpc.client.XmlRpcTransportFactory;
+import org.apache.xmlrpc.server.XmlRpcServer;
+import org.apache.xmlrpc.server.XmlRpcServerConfigImpl;
import org.apache.xmlrpc.webserver.WebServer;
@@ -28,11 +30,15 @@
* {@link org.apache.xmlrpc.client.XmlRpcHttpTransport}.
*/
public class HttpTransportTest extends BaseTestCase {
- private WebServer webServer = new WebServer(0);
+ private final WebServer webServer = new WebServer(0);
private boolean isActive;
public void setUp() throws Exception {
if (!isActive) {
+ XmlRpcServer server = webServer.getXmlRpcServer();
+ server.setHandlerMapping(getHandlerMapping());
+ XmlRpcServerConfigImpl serverConfig = (XmlRpcServerConfigImpl) server.getConfig();
+ serverConfig.setEnabledForExtensions(true);
webServer.start();
isActive = true;
}
No revision
No revision
1.1.2.3 +7 -2 ws-xmlrpc/src/java/org/apache/xmlrpc/server/Attic/XmlRpcStreamServer.java
Index: XmlRpcStreamServer.java
===================================================================
RCS file: /home/cvs/ws-xmlrpc/src/java/org/apache/xmlrpc/server/Attic/XmlRpcStreamServer.java,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -u -r1.1.2.2 -r1.1.2.3
--- XmlRpcStreamServer.java 13 May 2005 00:18:22 -0000 1.1.2.2
+++ XmlRpcStreamServer.java 13 May 2005 21:06:37 -0000 1.1.2.3
@@ -65,6 +65,10 @@
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);
@@ -107,6 +111,7 @@
}
message = pError.getMessage();
try {
+ pError.printStackTrace();
getXmlRpcWriter(pConfig, pStream).write(pConfig, code, message);
} catch (SAXException e) {
throw new XmlRpcException("Failed to write XML-RPC response: " + e.getMessage(), e);
@@ -152,11 +157,11 @@
Object pConnection)
throws IOException, XmlRpcException {
try {
- InputStream istream = getInputStream(pConfig, pConnection);
- XmlRpcRequest request = getRequest(pConfig, istream);
Object result;
Throwable error;
try {
+ InputStream istream = getInputStream(pConfig, pConnection);
+ XmlRpcRequest request = getRequest(pConfig, istream);
result = execute(request);
error = null;
} catch (Throwable t) {
No revision
No revision
1.1.2.2 +8 -6 ws-xmlrpc/src/java/org/apache/xmlrpc/webserver/Attic/WebServer.java
Index: WebServer.java
===================================================================
RCS file: /home/cvs/ws-xmlrpc/src/java/org/apache/xmlrpc/webserver/Attic/WebServer.java,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -r1.1.2.1 -r1.1.2.2
--- WebServer.java 12 May 2005 01:58:53 -0000 1.1.2.1
+++ WebServer.java 13 May 2005 21:06:37 -0000 1.1.2.2
@@ -276,12 +276,7 @@
try {
if (allowConnection(socket)) {
final Connection con = new Connection(this, server, socket);
- ThreadPool.Task task = new ThreadPool.Task(){
- public void run() throws Throwable {
- server.execute(con.getRequestConfig(), con);
- }
- };
- if (pool.startTask(task)) {
+ if (pool.startTask(con)) {
socket = null;
} else {
log("Maximum load of " + pool.getMaxThreads()
@@ -360,4 +355,11 @@
public synchronized void log(String pMessage) {
System.err.println(df.format(new Date()) + ", " + Thread.currentThread().getName() + ": " + pMessage);
}
+
+ /** Returns the {@link org.apache.xmlrpc.server.XmlRpcServer}.
+ * @return The server object.
+ */
+ public XmlRpcStreamServer getXmlRpcServer() {
+ return server;
+ }
}
No revision
No revision
1.1.2.3 +1 -1 ws-xmlrpc/src/java/org/apache/xmlrpc/common/Attic/TypeFactoryImpl.java
Index: TypeFactoryImpl.java
===================================================================
RCS file: /home/cvs/ws-xmlrpc/src/java/org/apache/xmlrpc/common/Attic/TypeFactoryImpl.java,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -u -r1.1.2.2 -r1.1.2.3
--- TypeFactoryImpl.java 13 May 2005 00:18:22 -0000 1.1.2.2
+++ TypeFactoryImpl.java 13 May 2005 21:06:37 -0000 1.1.2.3
@@ -155,7 +155,7 @@
return new FloatParser();
}
} else if ("".equals(pURI)) {
- if (I4Serializer.I4_TAG.equals(pLocalName)) {
+ if (I4Serializer.INT_TAG.equals(pLocalName) || I4Serializer.I4_TAG.equals(pLocalName)) {
return new I4Parser();
} else if (BooleanSerializer.BOOLEAN_TAG.equals(pLocalName)) {
return new BooleanParser();
No revision
No revision
1.1.2.3 +48 -20 ws-xmlrpc/src/java/org/apache/xmlrpc/parser/Attic/XmlRpcResponseParser.java
Index: XmlRpcResponseParser.java
===================================================================
RCS file: /home/cvs/ws-xmlrpc/src/java/org/apache/xmlrpc/parser/Attic/XmlRpcResponseParser.java,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -u -r1.1.2.2 -r1.1.2.3
--- XmlRpcResponseParser.java 13 May 2005 00:18:21 -0000 1.1.2.2
+++ XmlRpcResponseParser.java 13 May 2005 21:06:37 -0000 1.1.2.3
@@ -52,12 +52,12 @@
super.setResult(pResult);
} else {
Map map = (Map) pResult;
- String faultCode = (String) map.get("faultCode");
+ Integer faultCode = (Integer) map.get("faultCode");
if (faultCode == null) {
throw new SAXParseException("Missing faultCode", getDocumentLocator());
}
try {
- errorCode = Integer.parseInt(faultCode);
+ errorCode = faultCode.intValue();
} catch (NumberFormatException e) {
throw new SAXParseException("Invalid faultCode: " + faultCode,
getDocumentLocator());
@@ -93,19 +93,33 @@
}
break;
case 2:
- if (!"".equals(pURI) || !"param".equals(pLocalName)) {
- throw new SAXParseException("Expected param element, got "
- + new QName(pURI, pLocalName),
- getDocumentLocator());
+ if (isSuccess) {
+ if (!"".equals(pURI) || !"param".equals(pLocalName)) {
+ throw new SAXParseException("Expected param element, got "
+ + new QName(pURI, pLocalName),
+ getDocumentLocator());
+ }
+ } else {
+ if ("".equals(pURI) && "value".equals(pLocalName)) {
+ startValueTag();
+ } else {
+ throw new SAXParseException("Expected value element, got "
+ + new QName(pURI, pLocalName),
+ getDocumentLocator());
+ }
}
break;
case 3:
- if ("".equals(pURI) && "value".equals(pLocalName)) {
- startValueTag();
+ if (isSuccess) {
+ if ("".equals(pURI) && "value".equals(pLocalName)) {
+ startValueTag();
+ } else {
+ throw new SAXParseException("Expected value element, got "
+ + new QName(pURI, pLocalName),
+ getDocumentLocator());
+ }
} else {
- throw new SAXParseException("Expected value element, got "
- + new QName(pURI, pLocalName),
- getDocumentLocator());
+ super.startElement(pURI, pLocalName, pQName, pAttrs);
}
break;
default:
@@ -139,19 +153,33 @@
break;
}
case 2:
- if (!"".equals(pURI) || !"param".equals(pLocalName)) {
- throw new SAXParseException("Expected /param, got "
- + new QName(pURI, pLocalName),
- getDocumentLocator());
+ if (isSuccess) {
+ if (!"".equals(pURI) || !"param".equals(pLocalName)) {
+ throw new SAXParseException("Expected /param, got "
+ + new QName(pURI, pLocalName),
+ getDocumentLocator());
+ }
+ } else {
+ if ("".equals(pURI) && "value".equals(pLocalName)) {
+ endValueTag();
+ } else {
+ throw new SAXParseException("Expected /value, got "
+ + new QName(pURI, pLocalName),
+ getDocumentLocator());
+ }
}
break;
case 3:
- if ("".equals(pURI) && "value".equals(pLocalName)) {
- endValueTag();
+ if (isSuccess) {
+ if ("".equals(pURI) && "value".equals(pLocalName)) {
+ endValueTag();
+ } else {
+ throw new SAXParseException("Expected /value, got "
+ + new QName(pURI, pLocalName),
+ getDocumentLocator());
+ }
} else {
- throw new SAXParseException("Expected /value, got "
- + new QName(pURI, pLocalName),
- getDocumentLocator());
+ super.endElement(pURI, pLocalName, pQName);
}
break;
default: