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