You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by ru...@apache.org on 2001/05/08 10:30:29 UTC

cvs commit: xml-axis/java/src/org/apache/axis/encoding ArraySerializer.java SOAPTypeMappingRegistry.java

rubys       01/05/08 01:30:27

  Modified:    java/src/org/apache/axis/encoding ArraySerializer.java
                        SOAPTypeMappingRegistry.java
  Log:
  Fix null pointer exception
  Add support for decimal and date (a.k.a. timeinstant)
  
  Revision  Changes    Path
  1.4       +2 -1      xml-axis/java/src/org/apache/axis/encoding/ArraySerializer.java
  
  Index: ArraySerializer.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ArraySerializer.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ArraySerializer.java	2001/05/06 15:57:20	1.3
  +++ ArraySerializer.java	2001/05/08 08:30:20	1.4
  @@ -210,7 +210,8 @@
           
           Attributes attrs = attributes;
           
  -        if (attributes.getIndex(Constants.URI_SOAP_ENC,
  +        if (attributes != null &&
  +            attributes.getIndex(Constants.URI_SOAP_ENC,
                                   Constants.ATTR_ARRAY_TYPE) == -1) {
               context.registerPrefixForURI("SOAP-ENC", Constants.URI_SOAP_ENC);
               AttributesImpl attrImpl = new AttributesImpl(attributes);
  
  
  
  1.9       +17 -1     xml-axis/java/src/org/apache/axis/encoding/SOAPTypeMappingRegistry.java
  
  Index: SOAPTypeMappingRegistry.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/SOAPTypeMappingRegistry.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- SOAPTypeMappingRegistry.java	2001/05/07 10:07:17	1.8
  +++ SOAPTypeMappingRegistry.java	2001/05/08 08:30:22	1.9
  @@ -4,6 +4,9 @@
   import org.apache.axis.utils.QName;
   import org.xml.sax.*;
   
  +import java.util.Date;
  +import java.math.BigDecimal;
  +
   public class SOAPTypeMappingRegistry extends TypeMappingRegistry { 
       
       public static final QName XSD_STRING = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "string");
  @@ -13,6 +16,9 @@
       public static final QName XSD_INT = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "int");
       public static final QName XSD_LONG = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "long");
       public static final QName XSD_SHORT = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "short");
  +    public static final QName XSD_DATE = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "timeinstant");
  +    public static final QName XSD_DECIMAL = new QName(Constants.URI_CURRENT_SCHEMA_XSD, "decimal");
  +
       public static final QName SOAP_STRING = new QName(Constants.URI_SOAP_ENC, "string");
       public static final QName SOAP_BOOLEAN = new QName(Constants.URI_SOAP_ENC, "boolean");
       public static final QName SOAP_DOUBLE = new QName(Constants.URI_SOAP_ENC, "double");
  @@ -22,7 +28,7 @@
       public static final QName SOAP_SHORT = new QName(Constants.URI_SOAP_ENC, "short");
       public static final QName SOAP_ARRAY = new QName(Constants.URI_SOAP_ENC, "Array");
       
  -    abstract class BasicDeser extends DeserializerBase {
  +    public static abstract class BasicDeser extends DeserializerBase {
           public void characters(char [] chars, int start, int end)
               throws SAXException
           {
  @@ -80,6 +86,12 @@
       class ShortDeserializerFactory implements DeserializerFactory {
           public DeserializerBase getDeserializer() { return new ShortDeser(); }
       }
  +    class DecimalDeser extends BasicDeser {
  +        Object makeValue(String source) { return new BigDecimal(source); }
  +    }
  +    class DecimalDeserializerFactory implements DeserializerFactory {
  +        public DeserializerBase getDeserializer() { return new DecimalDeser(); }
  +    }
       
       private ArraySerializer arraySer = new ArraySerializer();
   
  @@ -133,6 +145,8 @@
           addSerializer(java.lang.Integer.class, XSD_INT, se);
           addSerializer(java.lang.Long.class, XSD_LONG, se);
           addSerializer(java.lang.Short.class, XSD_SHORT, se);
  +        addSerializer(java.util.Date.class, XSD_DATE, new DateSerializer());
  +        addSerializer(java.math.BigDecimal.class, XSD_DECIMAL, se);
           
           addDeserializersFor(XSD_STRING, java.lang.String.class, new StringDeserializerFactory());    
           addDeserializersFor(XSD_BOOLEAN, java.lang.Boolean.class, new BooleanDeserializerFactory());
  @@ -141,6 +155,8 @@
           addDeserializersFor(XSD_INT, java.lang.Integer.class, new IntDeserializerFactory());
           addDeserializersFor(XSD_LONG, java.lang.Long.class, new LongDeserializerFactory());
           addDeserializersFor(XSD_SHORT, java.lang.Short.class, new ShortDeserializerFactory());
  +        addDeserializersFor(XSD_DATE, java.util.Date.class, new DateSerializer.DateDeserializerFactory());
  +        addDeserializersFor(XSD_DECIMAL, java.math.BigDecimal.class, new DecimalDeserializerFactory());
   
           // !!! Seems a little weird to pass a null class here...?
           addDeserializerFactory(SOAP_ARRAY, null, ArraySerializer.factory);