jochen 2005/05/22 14:01:13
Modified: src/java/org/apache/xmlrpc/parser Tag: b20050512_streaming
TypeParserImpl.java RecursiveTypeParserImpl.java
TypeParser.java
src/java/org/apache/xmlrpc/jaxb Tag: b20050512_streaming
JaxbParser.java
src/java/org/apache/xmlrpc/common Tag: b20050512_streaming
TypeFactoryImpl.java
Added: src/java/org/apache/xmlrpc/parser Tag: b20050512_streaming
SerializableParser.java
Log:
Added support for instances of java.io.Serializable.
Revision Changes Path
No revision
No revision
1.1.2.3 +2 -1
ws-xmlrpc/src/java/org/apache/xmlrpc/parser/Attic/TypeParserImpl.java
Index: TypeParserImpl.java
===================================================================
RCS file:
/home/cvs/ws-xmlrpc/src/java/org/apache/xmlrpc/parser/Attic/TypeParserImpl.java,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -u -r1.1.2.2 -r1.1.2.3
--- TypeParserImpl.java 21 May 2005 21:23:51 -0000 1.1.2.2
+++ TypeParserImpl.java 22 May 2005 21:01:13 -0000 1.1.2.3
@@ -15,6 +15,7 @@
*/
package org.apache.xmlrpc.parser;
+import org.apache.xmlrpc.XmlRpcException;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
@@ -31,7 +32,7 @@
* @param pResult The result object.
*/
public void setResult(Object pResult) { result = pResult; }
- public Object getResult() { return result; }
+ public Object getResult() throws XmlRpcException { return result; }
/** Returns the document locator.
* @return Locator object describing the current location within the
1.1.2.4 +6 -1
ws-xmlrpc/src/java/org/apache/xmlrpc/parser/Attic/RecursiveTypeParserImpl.java
Index: RecursiveTypeParserImpl.java
===================================================================
RCS file:
/home/cvs/ws-xmlrpc/src/java/org/apache/xmlrpc/parser/Attic/RecursiveTypeParserImpl.java,v
retrieving revision 1.1.2.3
retrieving revision 1.1.2.4
diff -u -r1.1.2.3 -r1.1.2.4
--- RecursiveTypeParserImpl.java 21 May 2005 21:23:51 -0000 1.1.2.3
+++ RecursiveTypeParserImpl.java 22 May 2005 21:01:13 -0000 1.1.2.4
@@ -18,6 +18,7 @@
import javax.xml.namespace.QName;
import org.apache.ws.commons.util.NamespaceContextImpl;
+import org.apache.xmlrpc.XmlRpcException;
import org.apache.xmlrpc.common.TypeFactory;
import org.apache.xmlrpc.common.XmlRpcExtensionException;
import org.apache.xmlrpc.common.XmlRpcStreamConfig;
@@ -66,7 +67,11 @@
text = null;
} else {
typeParser.endDocument();
- addResult(typeParser.getResult());
+ try {
+ addResult(typeParser.getResult());
+ } catch (XmlRpcException e) {
+ throw new SAXException(e);
+ }
typeParser = null;
}
} else {
1.1.2.2 +3 -1
ws-xmlrpc/src/java/org/apache/xmlrpc/parser/Attic/TypeParser.java
Index: TypeParser.java
===================================================================
RCS file:
/home/cvs/ws-xmlrpc/src/java/org/apache/xmlrpc/parser/Attic/TypeParser.java,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -r1.1.2.1 -r1.1.2.2
--- TypeParser.java 12 May 2005 01:58:50 -0000 1.1.2.1
+++ TypeParser.java 22 May 2005 21:01:13 -0000 1.1.2.2
@@ -15,6 +15,7 @@
*/
package org.apache.xmlrpc.parser;
+import org.apache.xmlrpc.XmlRpcException;
import org.xml.sax.ContentHandler;
@@ -24,8 +25,9 @@
public interface TypeParser extends ContentHandler {
/** Returns the parsed object.
* @return The parameter or result object.
+ * @throws XmlRpcException Creating the result object failed.
* @throws IllegalStateException The method was invoked before
* [EMAIL PROTECTED] org.xml.sax.ContentHandler#endDocument}.
*/
- public Object getResult();
+ public Object getResult() throws XmlRpcException;
}
No revision
Index: TypeParser.java
===================================================================
RCS file:
/home/cvs/ws-xmlrpc/src/java/org/apache/xmlrpc/parser/Attic/TypeParser.java,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -r1.1.2.1 -r1.1.2.2
--- TypeParser.java 12 May 2005 01:58:50 -0000 1.1.2.1
+++ TypeParser.java 22 May 2005 21:01:13 -0000 1.1.2.2
@@ -15,6 +15,7 @@
*/
package org.apache.xmlrpc.parser;
+import org.apache.xmlrpc.XmlRpcException;
import org.xml.sax.ContentHandler;
@@ -24,8 +25,9 @@
public interface TypeParser extends ContentHandler {
/** Returns the parsed object.
* @return The parameter or result object.
+ * @throws XmlRpcException Creating the result object failed.
* @throws IllegalStateException The method was invoked before
* [EMAIL PROTECTED] org.xml.sax.ContentHandler#endDocument}.
*/
- public Object getResult();
+ public Object getResult() throws XmlRpcException;
}
No revision
Index: TypeParser.java
===================================================================
RCS file:
/home/cvs/ws-xmlrpc/src/java/org/apache/xmlrpc/parser/Attic/TypeParser.java,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -r1.1.2.1 -r1.1.2.2
--- TypeParser.java 12 May 2005 01:58:50 -0000 1.1.2.1
+++ TypeParser.java 22 May 2005 21:01:13 -0000 1.1.2.2
@@ -15,6 +15,7 @@
*/
package org.apache.xmlrpc.parser;
+import org.apache.xmlrpc.XmlRpcException;
import org.xml.sax.ContentHandler;
@@ -24,8 +25,9 @@
public interface TypeParser extends ContentHandler {
/** Returns the parsed object.
* @return The parameter or result object.
+ * @throws XmlRpcException Creating the result object failed.
* @throws IllegalStateException The method was invoked before
* [EMAIL PROTECTED] org.xml.sax.ContentHandler#endDocument}.
*/
- public Object getResult();
+ public Object getResult() throws XmlRpcException;
}
1.1.2.1 +40 -0
ws-xmlrpc/src/java/org/apache/xmlrpc/parser/Attic/SerializableParser.java
No revision
No revision
1.1.2.2 +4 -4
ws-xmlrpc/src/java/org/apache/xmlrpc/jaxb/Attic/JaxbParser.java
Index: JaxbParser.java
===================================================================
RCS file:
/home/cvs/ws-xmlrpc/src/java/org/apache/xmlrpc/jaxb/Attic/JaxbParser.java,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -r1.1.2.1 -r1.1.2.2
--- JaxbParser.java 21 May 2005 22:01:24 -0000 1.1.2.1
+++ JaxbParser.java 22 May 2005 21:01:13 -0000 1.1.2.2
@@ -1,11 +1,10 @@
package org.apache.xmlrpc.jaxb;
-import java.lang.reflect.UndeclaredThrowableException;
-
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.UnmarshallerHandler;
+import org.apache.xmlrpc.XmlRpcException;
import org.apache.xmlrpc.parser.ExtParser;
import org.xml.sax.ContentHandler;
import org.xml.sax.SAXException;
@@ -34,11 +33,12 @@
}
protected String getTagName() { return JaxbSerializer.JAXB_TAG; }
- public Object getResult() {
+
+ public Object getResult() throws XmlRpcException {
try {
return handler.getResult();
} catch (JAXBException e) {
- throw new UndeclaredThrowableException(e);
+ throw new XmlRpcException("Failed to create result
object: " + e.getMessage(), e);
}
}
}
No revision
No revision
1.1.2.6 +12 -0
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.5
retrieving revision 1.1.2.6
diff -u -r1.1.2.5 -r1.1.2.6
--- TypeFactoryImpl.java 21 May 2005 22:01:24 -0000 1.1.2.5
+++ TypeFactoryImpl.java 22 May 2005 21:01:13 -0000 1.1.2.6
@@ -15,6 +15,7 @@
*/
package org.apache.xmlrpc.common;
+import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -34,6 +35,7 @@
import org.apache.xmlrpc.parser.NodeParser;
import org.apache.xmlrpc.parser.NullParser;
import org.apache.xmlrpc.parser.ObjectArrayParser;
+import org.apache.xmlrpc.parser.SerializableParser;
import org.apache.xmlrpc.parser.TypeParser;
import org.apache.xmlrpc.serializer.BooleanSerializer;
import org.apache.xmlrpc.serializer.ByteArraySerializer;
@@ -49,6 +51,7 @@
import org.apache.xmlrpc.serializer.NodeSerializer;
import org.apache.xmlrpc.serializer.NullSerializer;
import org.apache.xmlrpc.serializer.ObjectArraySerializer;
+import org.apache.xmlrpc.serializer.SerializableSerializer;
import org.apache.xmlrpc.serializer.StringSerializer;
import org.apache.xmlrpc.serializer.TypeSerializer;
import org.apache.xmlrpc.serializer.XmlRpcWriter;
@@ -70,6 +73,7 @@
private static final TypeSerializer LONG_SERIALIZER = new
I8Serializer();
private static final TypeSerializer FLOAT_SERIALIZER = new
FloatSerializer();
private static final TypeSerializer NODE_SERIALIZER = new
NodeSerializer();
+ private static final TypeSerializer SERIALIZABLE_SERIALIZER = new
SerializableSerializer();
private final XmlRpcController controller;
@@ -143,6 +147,12 @@
} else {
throw new SAXException(new
XmlRpcExtensionException("DOM nodes aren't supported, if
isEnabledForExtensions() == false"));
}
+ } else if (pObject instanceof Serializable) {
+ if (pConfig.isEnabledForExtensions()) {
+ return SERIALIZABLE_SERIALIZER;
+ } else {
+ throw new SAXException(new
XmlRpcExtensionException("Serializable objects aren't supported, if
isEnabledForExtensions() == false"));
+ }
} else {
return null;
}
@@ -165,6 +175,8 @@
return new FloatParser();
} else if (NodeSerializer.DOM_TAG.equals(pLocalName)) {
return new NodeParser();
+ } else if
(SerializableSerializer.SERIALIZABLE_TAG.equals(pLocalName)) {
+ return new SerializableParser();
}
} else if ("".equals(pURI)) {
if (I4Serializer.INT_TAG.equals(pLocalName) ||
I4Serializer.I4_TAG.equals(pLocalName)) {