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)) {