Update of /cvsroot/jaxme/JaxMe2/src/net/sf/jaxme/impl
In directory sc8-pr-cvs1:/tmp/cvs-serv32423/src/net/sf/jaxme/impl

Modified Files:
        JAXBContextImpl.java JMMarshallerImpl.java 
Added Files:
        DatatypeConverterImpl.java 
Log Message:
Added the events framework to support the development of
SchemaReaders.


--- NEW FILE: DatatypeConverterImpl.java ---
package net.sf.jaxme.impl;

import java.io.IOException;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;

import javax.xml.XMLConstants;
import javax.xml.bind.DatatypeConverterInterface;
import javax.xml.namespace.NamespaceContext;
import javax.xml.namespace.QName;

import net.sf.jaxme.util.Base64Binary;
import net.sf.jaxme.util.HexBinary;

/**
 * @author <a href="mailto:[EMAIL PROTECTED]">Jochen Wiedmann</a>
 */
public class DatatypeConverterImpl implements DatatypeConverterInterface {
  public String parseString(String arg0) {
    return arg0;
  }

  public BigInteger parseInteger(String arg0) {
    return new BigInteger(arg0);
  }

  public int parseInt(String arg0) {
    return Integer.parseInt(arg0);
  }

  public long parseLong(String arg0) {
    return Long.parseLong(arg0);
  }

  public short parseShort(String arg0) {
    return Short.parseShort(arg0);
  }

  public BigDecimal parseDecimal(String arg0) {
    return new BigDecimal(arg0);
  }

  public float parseFloat(String arg0) {
    return Float.parseFloat(arg0);
  }

  public double parseDouble(String arg0) {
    return Double.parseDouble(arg0);
  }

  public boolean parseBoolean(String arg0) {
    return Boolean.valueOf(arg0).booleanValue();
  }

  public byte parseByte(String arg0) {
    return Byte.parseByte(arg0);
  }

  public QName parseQName(String arg0, NamespaceContext arg1) {
    int offset = arg0.indexOf(':');
    String uri;
    String localName;
    switch (offset) {
      case -1:
        localName = arg0;
        uri = arg1.getNamespaceURI("");
        if (uri == null) {
          // Should not happen, indicates an error in the NamespaceContext 
implementation
          throw new IllegalArgumentException("The default prefix is not bound.");
        }
        break;
      case 0:
        throw new IllegalArgumentException("Default prefix must be indicated by not 
using a colon: " + arg0);
      default:
        String prefix = arg0.substring(0, offset);
        localName = arg0.substring(offset+1);
        uri = arg1.getNamespaceURI(prefix);
        if (uri == null) {
          throw new IllegalArgumentException("The prefix " + prefix + " is not 
bound.");
        }
    }
    return new QName(uri, localName);
  }

  public Calendar parseDateTime(String arg0) {
    DateFormat df = DateFormat.getDateTimeInstance();
    Calendar cal = Calendar.getInstance();
    try {
      cal.setTime(df.parse(arg0));
    } catch (ParseException e) {
      if (df instanceof SimpleDateFormat) {
        SimpleDateFormat sdf = (SimpleDateFormat) df;
        throw new IllegalArgumentException("Failed to parse dateTime " + arg0 +
                                            " with pattern " + sdf.toPattern());
      } else {
        throw new IllegalArgumentException("Failed to parse dateTime " + arg0);
      }
    }
    return cal;
  }

  public byte[] parseBase64Binary(String arg0) {
    try {
      return Base64Binary.decode(arg0);
    } catch (IOException e) {
      throw new IllegalArgumentException("Failed to parse " + arg0 + ": " +
                                          e.getMessage());
    }
  }

  public byte[] parseHexBinary(String arg0) {
    return HexBinary.decode(arg0);
  }

  private static final long MAX_UNSIGNED_INT = (((long) Integer.MAX_VALUE) * 2) + 1; 
  public long parseUnsignedInt(String arg0) {
    long l = Long.parseLong(arg0);
    if (l < 0) {
      throw new IllegalArgumentException("Failed to parse UnsignedInt " + arg0 + ": 
result is negative");
    }
    if (l > MAX_UNSIGNED_INT) {
      throw new IllegalArgumentException("Failed to parse UnsignedInt " + arg0 +
                                          ": result exceeds maximum value " + 
MAX_UNSIGNED_INT);
    }
    return l;
  }

  private static final int MAX_UNSIGNED_SHORT = (((int) Short.MAX_VALUE) * 2) + 1;
  public int parseUnsignedShort(String arg0) {
    int i = Integer.parseInt(arg0);
    if (i < 0) {
      throw new IllegalArgumentException("Failed to parse UnsignedShort " + arg0 + ": 
result is negative");
    }
    if (i > MAX_UNSIGNED_SHORT) {
      throw new IllegalArgumentException("Failed to parse UnsignedShort " + arg0 +
                                          ": result exceeds maximum value " + 
MAX_UNSIGNED_SHORT);
    }
    return i;
  }

  public Calendar parseTime(String arg0) {
    DateFormat df = DateFormat.getTimeInstance();
    Calendar cal = Calendar.getInstance();
    try {
      cal.setTime(df.parse(arg0));
    } catch (ParseException e) {
      if (df instanceof SimpleDateFormat) {
        SimpleDateFormat sdf = (SimpleDateFormat) df;
        throw new IllegalArgumentException("Failed to parse time " + arg0 +
                                            " with pattern " + sdf.toPattern());
      } else {
        throw new IllegalArgumentException("Failed to parse time " + arg0);
      }
    }
    return cal;
  }

  public Calendar parseDate(String arg0) {
    DateFormat df = DateFormat.getDateInstance();
    Calendar cal = Calendar.getInstance();
    try {
      cal.setTime(df.parse(arg0));
    } catch (ParseException e) {
      if (df instanceof SimpleDateFormat) {
        SimpleDateFormat sdf = (SimpleDateFormat) df;
        throw new IllegalArgumentException("Failed to parse date " + arg0 +
                                            " with pattern " + sdf.toPattern());
      } else {
        throw new IllegalArgumentException("Failed to parse date " + arg0);
      }
    }
    return cal;
  }

  public String parseAnySimpleType(String arg0) {
    return arg0;
  }

  public String printString(String arg0) {
    return arg0;
  }

  public String printInteger(BigInteger arg0) {
    return arg0.toString();
  }

  public String printInt(int arg0) {
    return Integer.toString(arg0);
  }

  public String printLong(long arg0) {
    return Long.toString(arg0);
  }

  public String printShort(short arg0) {
    return Short.toString(arg0);
  }

  public String printDecimal(BigDecimal arg0) {
    return arg0.toString();
  }

  public String printFloat(float arg0) {
    return Float.toString(arg0);
  }

  public String printDouble(double arg0) {
    return Double.toString(arg0);
  }

  public String printBoolean(boolean arg0) {
    return (arg0 ? Boolean.TRUE : Boolean.FALSE).toString();
  }

  public String printByte(byte arg0) {
    return Byte.toString(arg0);
  }

  public String printQName(QName arg0, NamespaceContext arg1) {
    String prefix = arg1.getPrefix(arg0.getNamespaceURI());
    if (prefix == null) {
      throw new IllegalArgumentException("The namespace URI " +
                                          arg0.getNamespaceURI() +
                                          " is not bound.");
    } else if (XMLConstants.DEFAULT_NS_PREFIX.equals(prefix)) {
      return arg0.getLocalPart();
    } else {
      return prefix + ":" + arg0.getLocalPart();
    }
  }

  public String printDateTime(Calendar arg0) {
    return DateFormat.getDateTimeInstance().format(arg0);
  }

  public String printBase64Binary(byte[] arg0) {
    return Base64Binary.encode(arg0);
  }

  public String printHexBinary(byte[] arg0) {
    return HexBinary.encode(arg0);
  }

  public String printUnsignedInt(long arg0) {
    return Long.toString(arg0);
  }

  public String printUnsignedShort(int arg0) {
    return Integer.toString(arg0);
  }

  public String printTime(Calendar arg0) {
    return DateFormat.getTimeInstance().format(arg0);
  }

  public String printDate(Calendar arg0) {
    return DateFormat.getDateInstance().format(arg0);
  }

  public String printAnySimpleType(String arg0) {
    return arg0;
  }
}

Index: JAXBContextImpl.java
===================================================================
RCS file: /cvsroot/jaxme/JaxMe2/src/net/sf/jaxme/impl/JAXBContextImpl.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- JAXBContextImpl.java        4 Dec 2002 17:11:51 -0000       1.1
+++ JAXBContextImpl.java        11 Mar 2003 20:54:35 -0000      1.2
@@ -5,6 +5,8 @@
 import java.util.HashMap;
 import java.util.Map;
 import java.util.StringTokenizer;
+
+import javax.xml.bind.DatatypeConverter;
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
 import javax.xml.bind.MarshalException;
@@ -42,6 +44,7 @@
 public class JAXBContextImpl extends JAXBContext {
   public static final String CONFIGURATION_URI = 
"http://jaxme.sf.net/namespaces/jaxme2/configuration";;
   private static final SAXParserFactory spf;
+  private static final DatatypeConverterImpl datatypeConverter = new 
DatatypeConverterImpl();
   private ClassLoader cl;
   private String packageNames;
   private Map managersByQName = new HashMap();
@@ -54,6 +57,7 @@
     spf = SAXParserFactory.newInstance();
     spf.setValidating(false);
     spf.setNamespaceAware(true);
+    DatatypeConverter.setDatatypeConverter(datatypeConverter);
   }
 
   protected JAXBContextImpl() {}

Index: JMMarshallerImpl.java
===================================================================
RCS file: /cvsroot/jaxme/JaxMe2/src/net/sf/jaxme/impl/JMMarshallerImpl.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- JMMarshallerImpl.java       4 Dec 2002 17:11:51 -0000       1.1
+++ JMMarshallerImpl.java       11 Mar 2003 20:54:36 -0000      1.2
@@ -257,4 +257,8 @@
                                   ", only SAXResult, StreamResult and DOMResult are 
supported.");
     }
   }
+
+  public Node getNode(java.lang.Object contentTree) throws JAXBException {
+    throw new UnsupportedOperationException("JaxMe doesn't support live DOM views");
+  }
 }




-------------------------------------------------------
This SF.net email is sponsored by:Crypto Challenge is now open! 
Get cracking and register here for some mind boggling fun and 
the chance of winning an Apple iPod:
http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0031en
_______________________________________________
Jaxme-jaxb-dev mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jaxme-jaxb-dev

Reply via email to