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>>>.


Reply via email to