Author: hgomez Date: Mon May 8 01:35:38 2006 New Revision: 404967 URL: http://svn.apache.org/viewcvs?rev=404967&view=rev Log: Add support for BigDecimal and BigInteger in extension mode
Modified: webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/common/TypeFactoryImpl.java webservices/xmlrpc/trunk/src/changes/changes.xml webservices/xmlrpc/trunk/src/site/apt/types.apt Modified: webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/common/TypeFactoryImpl.java URL: http://svn.apache.org/viewcvs/webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/common/TypeFactoryImpl.java?rev=404967&r1=404966&r2=404967&view=diff ============================================================================== --- webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/common/TypeFactoryImpl.java (original) +++ webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/common/TypeFactoryImpl.java Mon May 8 01:35:38 2006 @@ -16,11 +16,15 @@ package org.apache.xmlrpc.common; import java.io.Serializable; +import java.math.BigDecimal; +import java.math.BigInteger; import java.util.Date; import java.util.List; import java.util.Map; import org.apache.ws.commons.util.NamespaceContextImpl; +import org.apache.xmlrpc.parser.BigDecimalParser; +import org.apache.xmlrpc.parser.BigIntegerParser; import org.apache.xmlrpc.parser.BooleanParser; import org.apache.xmlrpc.parser.ByteArrayParser; import org.apache.xmlrpc.parser.DateParser; @@ -37,6 +41,8 @@ import org.apache.xmlrpc.parser.SerializableParser; import org.apache.xmlrpc.parser.StringParser; import org.apache.xmlrpc.parser.TypeParser; +import org.apache.xmlrpc.serializer.BigDecimalSerializer; +import org.apache.xmlrpc.serializer.BigIntegerSerializer; import org.apache.xmlrpc.serializer.BooleanSerializer; import org.apache.xmlrpc.serializer.ByteArraySerializer; import org.apache.xmlrpc.serializer.DateSerializer; @@ -73,7 +79,9 @@ 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 static final TypeSerializer SERIALIZABLE_SERIALIZER = new SerializableSerializer(); + private static final TypeSerializer BIGDECIMAL_SERIALIZER = new BigDecimalSerializer(); + private static final TypeSerializer BIGINTEGER_SERIALIZER = new BigIntegerSerializer(); private final XmlRpcController controller; @@ -148,6 +156,18 @@ } else { throw new SAXException(new XmlRpcExtensionException("DOM nodes aren't supported, if isEnabledForExtensions() == false")); } + } else if (pObject instanceof BigInteger) { + if (pConfig.isEnabledForExtensions()) { + return BIGINTEGER_SERIALIZER; + } else { + throw new SAXException(new XmlRpcExtensionException("BigInteger values aren't supported, if isEnabledForExtensions() == false")); + } + } else if (pObject instanceof BigDecimal) { + if (pConfig.isEnabledForExtensions()) { + return BIGDECIMAL_SERIALIZER; + } else { + throw new SAXException(new XmlRpcExtensionException("BigDecimal values aren't supported, if isEnabledForExtensions() == false")); + } } else if (pObject instanceof Serializable) { if (pConfig.isEnabledForExtensions()) { return SERIALIZABLE_SERIALIZER; @@ -174,8 +194,12 @@ return new I8Parser(); } else if (FloatSerializer.FLOAT_TAG.equals(pLocalName)) { return new FloatParser(); - } else if (NodeSerializer.DOM_TAG.equals(pLocalName)) { - return new NodeParser(); + } else if (NodeSerializer.DOM_TAG.equals(pLocalName)) { + return new NodeParser(); + } else if (BigDecimalSerializer.BIGDECIMAL_TAG.equals(pLocalName)) { + return new BigDecimalParser(); + } else if (BigIntegerSerializer.BIGINTEGER_TAG.equals(pLocalName)) { + return new BigIntegerParser(); } else if (SerializableSerializer.SERIALIZABLE_TAG.equals(pLocalName)) { return new SerializableParser(); } Modified: webservices/xmlrpc/trunk/src/changes/changes.xml URL: http://svn.apache.org/viewcvs/webservices/xmlrpc/trunk/src/changes/changes.xml?rev=404967&r1=404966&r2=404967&view=diff ============================================================================== --- webservices/xmlrpc/trunk/src/changes/changes.xml (original) +++ webservices/xmlrpc/trunk/src/changes/changes.xml Mon May 8 01:35:38 2006 @@ -10,6 +10,9 @@ was terminated with a line feed, which is invalid for use in HTTP headers. </action> + <action dev="hgomez" type="enhancement"> + add support for BigDecimal and BigInteger in extensions. + </action> <action dev="jochen" type="fix" due-to="Walter Mundt" due-to-email="[EMAIL PROTECTED]"> Nested object arrays could not be parsed. Modified: webservices/xmlrpc/trunk/src/site/apt/types.apt URL: http://svn.apache.org/viewcvs/webservices/xmlrpc/trunk/src/site/apt/types.apt?rev=404967&r1=404966&r2=404967&view=diff ============================================================================== --- webservices/xmlrpc/trunk/src/site/apt/types.apt (original) +++ webservices/xmlrpc/trunk/src/site/apt/types.apt Mon May 8 01:35:38 2006 @@ -67,6 +67,10 @@ | | | transmitted as a base 64 encoded | | | | byte array. | *----------------------+--------------------+-------------------------------------+ +| BigDecimal | <ex:bigdecimal> | A BigDecimal | +*----------------------+--------------------+-------------------------------------+ +| BigInteger | <ex:biginteger> | A BigInteger | +*----------------------+--------------------+-------------------------------------+ In the above table, the prefix <<<ex>>> refers to the namespace URI <<<http://ws.apache.org/xmlrpc/namespaces/extensions>>>.