You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xmlbeans.apache.org by zi...@apache.org on 2004/04/28 03:46:56 UTC

cvs commit: xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal IntegerToIntTypeConverter.java RuntimeBindingTypeTable.java

zieg        2004/04/27 18:46:56

  Modified:    v2/src/binding/org/apache/xmlbeans/impl/binding/bts
                        DefaultBuiltinBindingLoader.java
               v2/src/marshal/org/apache/xmlbeans/impl/marshal
                        RuntimeBindingTypeTable.java
  Added:       v2/src/marshal/org/apache/xmlbeans/impl/marshal
                        IntegerToIntTypeConverter.java
  Log:
  allow mapping xsd:integer based types to primitve int
  
  Revision  Changes    Path
  1.4       +9 -0      xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/bts/DefaultBuiltinBindingLoader.java
  
  Index: DefaultBuiltinBindingLoader.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/bts/DefaultBuiltinBindingLoader.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- DefaultBuiltinBindingLoader.java	23 Apr 2004 18:52:31 -0000	1.3
  +++ DefaultBuiltinBindingLoader.java	28 Apr 2004 01:46:56 -0000	1.4
  @@ -96,6 +96,15 @@
       addPojoXml("nonNegativeInteger", "java.math.BigInteger");
       addPojoXml("positiveInteger", "java.math.BigInteger");
       addPojoXml("unsignedLong", "java.math.BigInteger");
  +
  +    //some don't like BigInteger...
  +    addPojo("integer", "int");
  +    addPojo("nonPositiveInteger", "int");
  +    addPojo("negativeInteger", "int");
  +    addPojo("nonNegativeInteger", "int");
  +    addPojo("positiveInteger", "int");
  +    addPojo("unsignedLong", "int");
  +
       addPojoXml("unsignedInt", "long");
       addPojoXml("unsignedShort", "int");
       addPojoXml("unsignedByte", "short");
  
  
  
  1.31      +8 -0      xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/RuntimeBindingTypeTable.java
  
  Index: RuntimeBindingTypeTable.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/RuntimeBindingTypeTable.java,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- RuntimeBindingTypeTable.java	27 Apr 2004 02:36:14 -0000	1.30
  +++ RuntimeBindingTypeTable.java	28 Apr 2004 01:46:56 -0000	1.31
  @@ -248,6 +248,14 @@
           addBuiltinType("positiveInteger", bigint, integer_conv);
           addBuiltinType("unsignedLong", bigint, integer_conv);
   
  +        final TypeConverter i2iconv = new IntegerToIntTypeConverter();
  +        addBuiltinType("integer", int.class, i2iconv);
  +        addBuiltinType("nonPositiveInteger", int.class, i2iconv);
  +        addBuiltinType("negativeInteger", int.class, i2iconv);
  +        addBuiltinType("nonNegativeInteger", int.class, i2iconv);
  +        addBuiltinType("positiveInteger", int.class, i2iconv);
  +        addBuiltinType("unsignedLong", int.class, i2iconv);
  +
           addBuiltinType("decimal", BigDecimal.class,
                          new DecimalTypeConverter());
   
  
  
  
  1.1                  xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/IntegerToIntTypeConverter.java
  
  Index: IntegerToIntTypeConverter.java
  ===================================================================
  /*   Copyright 2004 The Apache Software Foundation
   *
   *   Licensed under the Apache License, Version 2.0 (the "License");
   *   you may not use this file except in compliance with the License.
   *   You may obtain a copy of the License at
   *
   *       http://www.apache.org/licenses/LICENSE-2.0
   *
   *   Unless required by applicable law or agreed to in writing, software
   *   distributed under the License is distributed on an "AS IS" BASIS,
   *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   *   See the License for the specific language governing permissions and
   *  limitations under the License.
   */
  
  package org.apache.xmlbeans.impl.marshal;
  
  import org.apache.xmlbeans.XmlException;
  import org.apache.xmlbeans.impl.common.InvalidLexicalValueException;
  import org.apache.xmlbeans.impl.util.XsTypeConverter;
  
  import java.math.BigInteger;
  
  /**
   * used to convert xsd:integer and derived types to/from java.lang.Integer
   *
   * follows BigInteger.intValue() semantics for out of range values (for now)
   */
  final class IntegerToIntTypeConverter
      extends BaseSimpleTypeConverter
  {
      protected Object getObject(UnmarshalResult context) throws XmlException
      {
          return BigIntegerToInteger(context.getBigIntegerValue());
      }
  
      public Object unmarshalAttribute(UnmarshalResult context) throws XmlException
      {
          return BigIntegerToInteger(context.getAttributeBigIntegerValue());
      }
  
      public Object unmarshalAttribute(CharSequence lexical_value,
                                       UnmarshalResult result)
          throws XmlException
      {
          try {
              return XsTypeConverter.lexInteger(lexical_value);
          }
          catch (NumberFormatException ne) {
              throw new InvalidLexicalValueException(ne, result.getLocation());
          }
      }
  
      //non simple types can throw a runtime exception
      public CharSequence print(Object value, MarshalResult result)
      {
          Number val = (Number)value;
          return XsTypeConverter.printInt(val.intValue());
      }
  
  
      private static Object BigIntegerToInteger(BigInteger val)
      {
          final int ival = val.intValue();
          return new Integer(ival);
      }
  }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xmlbeans-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xmlbeans-cvs-help@xml.apache.org