[Practicalxml-commits] SF.net SVN: practicalxml:[117] branches/dev-1.1/src
Brought to you by:
kdgregory
From: Auto-Generated S. C. M. <pra...@li...> - 2009-08-18 19:16:56
|
Revision: 117 http://practicalxml.svn.sourceforge.net/practicalxml/?rev=117&view=rev Author: kdgregory Date: 2009-08-18 19:16:50 +0000 (Tue, 18 Aug 2009) Log Message: ----------- another class rename: ConversionHelper back to PrimitiveConversionHelper Modified Paths: -------------- branches/dev-1.1/src/main/java/net/sf/practicalxml/converter/bean/Bean2XmlDriver.java branches/dev-1.1/src/main/java/net/sf/practicalxml/converter/bean/Xml2BeanDriver.java branches/dev-1.1/src/main/java/net/sf/practicalxml/converter/bean/Xml2BeanHandler.java branches/dev-1.1/src/test/java/net/sf/practicalxml/converter/TestConversionHelper.java Added Paths: ----------- branches/dev-1.1/src/main/java/net/sf/practicalxml/converter/internal/PrimitiveConversionHelper.java Removed Paths: ------------- branches/dev-1.1/src/main/java/net/sf/practicalxml/converter/internal/ConversionHelper.java Modified: branches/dev-1.1/src/main/java/net/sf/practicalxml/converter/bean/Bean2XmlDriver.java =================================================================== --- branches/dev-1.1/src/main/java/net/sf/practicalxml/converter/bean/Bean2XmlDriver.java 2009-08-18 18:52:26 UTC (rev 116) +++ branches/dev-1.1/src/main/java/net/sf/practicalxml/converter/bean/Bean2XmlDriver.java 2009-08-18 19:16:50 UTC (rev 117) @@ -31,7 +31,7 @@ import net.sf.practicalxml.DomUtil; import net.sf.practicalxml.converter.ConversionException; import net.sf.practicalxml.converter.bean.Bean2XmlAppenders.*; -import net.sf.practicalxml.converter.internal.ConversionHelper; +import net.sf.practicalxml.converter.internal.PrimitiveConversionHelper; /** @@ -41,14 +41,14 @@ */ public class Bean2XmlDriver { - private ConversionHelper _helper; + private PrimitiveConversionHelper _helper; private EnumSet<Bean2XmlOptions> _options = EnumSet.noneOf(Bean2XmlOptions.class); public Bean2XmlDriver(Bean2XmlOptions... options) { for (Bean2XmlOptions option : options) _options.add(option); - _helper = new ConversionHelper(shouldUseXsdFormatting()); + _helper = new PrimitiveConversionHelper(shouldUseXsdFormatting()); } Modified: branches/dev-1.1/src/main/java/net/sf/practicalxml/converter/bean/Xml2BeanDriver.java =================================================================== --- branches/dev-1.1/src/main/java/net/sf/practicalxml/converter/bean/Xml2BeanDriver.java 2009-08-18 18:52:26 UTC (rev 116) +++ branches/dev-1.1/src/main/java/net/sf/practicalxml/converter/bean/Xml2BeanDriver.java 2009-08-18 19:16:50 UTC (rev 117) @@ -37,7 +37,7 @@ import net.sf.practicalxml.DomUtil; import net.sf.practicalxml.converter.ConversionException; -import net.sf.practicalxml.converter.internal.ConversionHelper; +import net.sf.practicalxml.converter.internal.PrimitiveConversionHelper; import net.sf.practicalxml.internal.StringUtils; import org.w3c.dom.Element; @@ -52,7 +52,7 @@ public class Xml2BeanDriver { private EnumSet<Xml2BeanOptions> _options; - private ConversionHelper _helper; + private PrimitiveConversionHelper _helper; private Map<Class<?>,Map<String,Method>> _introspectedClasses; @@ -62,7 +62,7 @@ for (Xml2BeanOptions option : options) _options.add(option); - _helper = new ConversionHelper(_options.contains(Xml2BeanOptions.EXPECT_XSD_FORMAT)); + _helper = new PrimitiveConversionHelper(_options.contains(Xml2BeanOptions.EXPECT_XSD_FORMAT)); _introspectedClasses = new HashMap<Class<?>,Map<String,Method>>(); } Modified: branches/dev-1.1/src/main/java/net/sf/practicalxml/converter/bean/Xml2BeanHandler.java =================================================================== --- branches/dev-1.1/src/main/java/net/sf/practicalxml/converter/bean/Xml2BeanHandler.java 2009-08-18 18:52:26 UTC (rev 116) +++ branches/dev-1.1/src/main/java/net/sf/practicalxml/converter/bean/Xml2BeanHandler.java 2009-08-18 19:16:50 UTC (rev 117) @@ -25,7 +25,7 @@ import net.sf.practicalxml.DomUtil; import net.sf.practicalxml.converter.ConversionException; -import net.sf.practicalxml.converter.internal.ConversionHelper; +import net.sf.practicalxml.converter.internal.PrimitiveConversionHelper; import net.sf.practicalxml.internal.StringUtils; @@ -38,7 +38,7 @@ public class Xml2BeanHandler { private EnumSet<Xml2BeanOptions> _options; - private ConversionHelper _primitiveHelper; + private PrimitiveConversionHelper _primitiveHelper; /** @@ -50,7 +50,7 @@ for (Xml2BeanOptions option : options) _options.add(option); - _primitiveHelper = new ConversionHelper(true); + _primitiveHelper = new PrimitiveConversionHelper(true); } Deleted: branches/dev-1.1/src/main/java/net/sf/practicalxml/converter/internal/ConversionHelper.java =================================================================== --- branches/dev-1.1/src/main/java/net/sf/practicalxml/converter/internal/ConversionHelper.java 2009-08-18 18:52:26 UTC (rev 116) +++ branches/dev-1.1/src/main/java/net/sf/practicalxml/converter/internal/ConversionHelper.java 2009-08-18 19:16:50 UTC (rev 117) @@ -1,480 +0,0 @@ -// Copyright 2008-2009 severally by the contributors -// -// 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 net.sf.practicalxml.converter.internal; - -import java.math.BigDecimal; -import java.math.BigInteger; -import java.text.DateFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -import net.sf.practicalxml.XmlUtil; -import net.sf.practicalxml.converter.ConversionException; - - -/** - * Responsible for converting "primitive" types -- those with unambiguous - * string representations -- to/from such a representation. - */ -public class ConversionHelper -{ - private static Map<String,Class<?>> XSD_TYPE_TO_JAVA_CLASS - = new HashMap<String,Class<?>>(); - static - { - XSD_TYPE_TO_JAVA_CLASS.put("xsd:string", String.class); - XSD_TYPE_TO_JAVA_CLASS.put("xsd:boolean", Boolean.class); - XSD_TYPE_TO_JAVA_CLASS.put("xsd:byte", Byte.class); - XSD_TYPE_TO_JAVA_CLASS.put("xsd:short", Short.class); - XSD_TYPE_TO_JAVA_CLASS.put("xsd:int", Integer.class); - XSD_TYPE_TO_JAVA_CLASS.put("xsd:long", Long.class); - XSD_TYPE_TO_JAVA_CLASS.put("xsd:decimal", BigDecimal.class); - XSD_TYPE_TO_JAVA_CLASS.put("xsd:dateTime", Date.class); - } - - - // this is not static because the helpers are inner classes - private Map<Class<?>,ConversionHandler<?>> _helpers - = new HashMap<Class<?>,ConversionHandler<?>>(); - { - _helpers.put(String.class, new StringConversionHandler()); - _helpers.put(Character.class, new CharacterConversionHandler()); - _helpers.put(Boolean.class, new BooleanConversionHandler()); - _helpers.put(Byte.class, new ByteConversionHandler()); - _helpers.put(Short.class, new ShortConversionHandler()); - _helpers.put(Integer.class, new IntegerConversionHandler()); - _helpers.put(Long.class, new LongConversionHandler()); - _helpers.put(Float.class, new FloatConversionHandler()); - _helpers.put(Double.class, new DoubleConversionHandler()); - _helpers.put(BigInteger.class, new BigIntegerConversionHandler()); - _helpers.put(BigDecimal.class, new BigDecimalConversionHandler()); - _helpers.put(Date.class, new DateConversionHandler()); - - _helpers.put(Boolean.TYPE, new BooleanConversionHandler()); - _helpers.put(Byte.TYPE, new ByteConversionHandler()); - _helpers.put(Short.TYPE, new ShortConversionHandler()); - _helpers.put(Integer.TYPE, new IntegerConversionHandler()); - _helpers.put(Long.TYPE, new LongConversionHandler()); - _helpers.put(Float.TYPE, new FloatConversionHandler()); - _helpers.put(Double.TYPE, new DoubleConversionHandler()); - } - - private boolean _useXsdFormatting; - - - /** - * Default constructor, which uses Java formatting. - */ - public ConversionHelper() - { - // nothing to see here - } - - - /** - * Constructor that allows selection of Java or XSD formatting. - */ - public ConversionHelper(boolean useXsdFormatting) - { - _useXsdFormatting = useXsdFormatting; - } - - -//---------------------------------------------------------------------------- -// Public Methods -//---------------------------------------------------------------------------- - - /** - * Returns the XSD type name to use for stringified objects of the - * specified class, <code>null</code> if this converter can't convert - * instances of the class. - */ - public String getXsdType(Class<?> klass) - { - ConversionHandler<?> helper = _helpers.get(klass); - return (helper == null) ? null : helper.getXsiType(); - } - - - /** - * Returns the Java type that best matches the given Schema type name, - * <code>null</code> if we do not have an appropriate mapping. - */ - public Class<?> getJavaType(String xsdTypename) - { - return XSD_TYPE_TO_JAVA_CLASS.get(xsdTypename); - } - - - /** - * Converts the passed object into its string representation, according - * to the options currently in effect. Passing <code>null</code> will - * return <code>null</code>. Throws {@link ConversionException} if - * unable to convert the passed object. - */ - public String stringify(Object obj) - { - if (obj == null) - return null; - - try - { - return getHelper(obj.getClass()).stringify(obj); - } - catch (Exception ee) - { - if (ee instanceof ConversionException) - throw (ConversionException)ee; - throw new ConversionException("unable to convert: " + obj, ee); - } - } - - - /** - * Parses the passed string into an object of the desired class. Passing - * <code>null</code> will return <code>null</code>, passing an empty - * string will typically throw a {@link ConversionException}. - */ - public Object parse(String str, Class<?> klass) - { - if (str == null) - return null; - - try - { - return getHelper(klass).parse(str); - } - catch (Exception ee) - { - if (ee instanceof ConversionException) - throw (ConversionException)ee; - throw new ConversionException("unable to parse: " + str, ee); - } - } - - -//---------------------------------------------------------------------------- -// Internals -//---------------------------------------------------------------------------- - - /** - * Returns the appropriate conversion helper or throws. - */ - @SuppressWarnings(value="unchecked") - private ConversionHandler getHelper(Class<?> klass) - { - ConversionHandler<?> helper = _helpers.get(klass); - if (helper == null) - throw new ConversionException("unable to get helper: " + klass.getName()); - return helper; - } - - - /** - * Each primitive class has its own conversion handler that is responsible - * for converting to/from a string representation. Handlers are guaranteed - * to receive non-null objects/strings. - * <p> - * This interface is parameterized so that the compiler will generate - * bridge methods for implementation classes. Elsewhere, we don't care - * about parameterization, so wildcard or drop it (see {@link #getHelper}). - * <p> - * Implementation classes are expected to be inner classes, so that they - * have access to configuration information (such as formatting rules). - * <p> - * Implementation classes are permitted to throw any exception; caller is - * expected to catch them and translate to a {@link ConversionException}. - */ - private static interface ConversionHandler<T> - { - public String getXsiType(); - public String stringify(T obj) throws Exception; - public T parse(String str) throws Exception; - } - - - private class StringConversionHandler - implements ConversionHandler<String> - { - public String getXsiType() - { - return "xsd:string"; - } - - public String stringify(String obj) - { - return String.valueOf(obj); - } - - public String parse(String str) - { - return str; - } - } - - - private class CharacterConversionHandler - implements ConversionHandler<Character> - { - private final Character NUL = Character.valueOf('\0'); - - public String getXsiType() - { - return "xsd:string"; - } - - public String stringify(Character obj) - { - if (obj.equals(NUL)) - return ""; - return obj.toString(); - } - - public Character parse(String str) - { - if (str.length() == 0) - return NUL; - if (str.length() > 1) - throw new ConversionException( - "attempted to convert multi-character string: \"" + str + "\""); - return Character.valueOf(str.charAt(0)); - } - } - - - private class BooleanConversionHandler - implements ConversionHandler<Boolean> - { - public String getXsiType() - { - return "xsd:boolean"; - } - - public String stringify(Boolean obj) - { - return _useXsdFormatting - ? XmlUtil.formatXsdBoolean(obj.booleanValue()) - : obj.toString(); - } - - public Boolean parse(String str) - { - return _useXsdFormatting - ? XmlUtil.parseXsdBoolean(str) - : Boolean.parseBoolean(str); - } - } - - - private class ByteConversionHandler - implements ConversionHandler<Byte> - { - public String getXsiType() - { - return "xsd:byte"; - } - - public String stringify(Byte obj) - { - return obj.toString(); - } - - public Byte parse(String str) - { - return Byte.valueOf(str.trim()); - } - } - - - private class ShortConversionHandler - implements ConversionHandler<Short> - { - public String getXsiType() - { - return "xsd:short"; - } - - public String stringify(Short obj) - { - return obj.toString(); - } - - public Short parse(String str) - { - return Short.valueOf(str.trim()); - } - } - - - private class IntegerConversionHandler - implements ConversionHandler<Integer> - { - public String getXsiType() - { - return "xsd:int"; - } - - public String stringify(Integer obj) - { - return obj.toString(); - } - - public Integer parse(String str) - { - return Integer.valueOf(str.trim()); - } - } - - - private class LongConversionHandler - implements ConversionHandler<Long> - { - public String getXsiType() - { - return "xsd:long"; - } - - public String stringify(Long obj) - { - return obj.toString(); - } - - public Long parse(String str) - { - return Long.valueOf(str.trim()); - } - } - - - private class FloatConversionHandler - implements ConversionHandler<Float> - { - public String getXsiType() - { - return "xsd:decimal"; - } - - public String stringify(Float obj) - { - return _useXsdFormatting - ? XmlUtil.formatXsdDecimal(obj) - : obj.toString(); - } - - public Float parse(String str) - { - return Float.valueOf(str.trim()); - } - } - - - private class DoubleConversionHandler - implements ConversionHandler<Double> - { - public String getXsiType() - { - return "xsd:decimal"; - } - - public String stringify(Double obj) - { - return _useXsdFormatting - ? XmlUtil.formatXsdDecimal(obj) - : obj.toString(); - } - - public Double parse(String str) - { - return Double.valueOf(str.trim()); - } - } - - - private class BigIntegerConversionHandler - implements ConversionHandler<BigInteger> - { - public String getXsiType() - { - return "xsd:decimal"; - } - - public String stringify(BigInteger obj) - { - return obj.toString(); - } - - public BigInteger parse(String str) - { - return new BigInteger(str.trim()); - } - } - - - private class BigDecimalConversionHandler - implements ConversionHandler<BigDecimal> - { - public String getXsiType() - { - return "xsd:decimal"; - } - - public String stringify(BigDecimal obj) - { - return obj.toString(); - } - - public BigDecimal parse(String str) - { - return new BigDecimal(str.trim()); - } - } - - - private class DateConversionHandler - implements ConversionHandler<Date> - { - // format as specified by Date.toString() JavaDoc - private DateFormat _defaultFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy"); - - public String getXsiType() - { - return "xsd:dateTime"; - } - - public String stringify(Date obj) - { - return _useXsdFormatting - ? XmlUtil.formatXsdDatetime(obj) - : obj.toString(); - } - - public Date parse(String str) - throws ParseException - { - if (_useXsdFormatting) - return XmlUtil.parseXsdDatetime(str); - else - { - synchronized (_defaultFormat) - { - return _defaultFormat.parse(str); - } - } - } - } -} Copied: branches/dev-1.1/src/main/java/net/sf/practicalxml/converter/internal/PrimitiveConversionHelper.java (from rev 116, branches/dev-1.1/src/main/java/net/sf/practicalxml/converter/internal/ConversionHelper.java) =================================================================== --- branches/dev-1.1/src/main/java/net/sf/practicalxml/converter/internal/PrimitiveConversionHelper.java (rev 0) +++ branches/dev-1.1/src/main/java/net/sf/practicalxml/converter/internal/PrimitiveConversionHelper.java 2009-08-18 19:16:50 UTC (rev 117) @@ -0,0 +1,480 @@ +// Copyright 2008-2009 severally by the contributors +// +// 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 net.sf.practicalxml.converter.internal; + +import java.math.BigDecimal; +import java.math.BigInteger; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +import net.sf.practicalxml.XmlUtil; +import net.sf.practicalxml.converter.ConversionException; + + +/** + * Responsible for converting "primitive" types -- those with unambiguous + * string representations -- to/from such a representation. + */ +public class PrimitiveConversionHelper +{ + private static Map<String,Class<?>> XSD_TYPE_TO_JAVA_CLASS + = new HashMap<String,Class<?>>(); + static + { + XSD_TYPE_TO_JAVA_CLASS.put("xsd:string", String.class); + XSD_TYPE_TO_JAVA_CLASS.put("xsd:boolean", Boolean.class); + XSD_TYPE_TO_JAVA_CLASS.put("xsd:byte", Byte.class); + XSD_TYPE_TO_JAVA_CLASS.put("xsd:short", Short.class); + XSD_TYPE_TO_JAVA_CLASS.put("xsd:int", Integer.class); + XSD_TYPE_TO_JAVA_CLASS.put("xsd:long", Long.class); + XSD_TYPE_TO_JAVA_CLASS.put("xsd:decimal", BigDecimal.class); + XSD_TYPE_TO_JAVA_CLASS.put("xsd:dateTime", Date.class); + } + + + // this is not static because the helpers are inner classes + private Map<Class<?>,ConversionHandler<?>> _helpers + = new HashMap<Class<?>,ConversionHandler<?>>(); + { + _helpers.put(String.class, new StringConversionHandler()); + _helpers.put(Character.class, new CharacterConversionHandler()); + _helpers.put(Boolean.class, new BooleanConversionHandler()); + _helpers.put(Byte.class, new ByteConversionHandler()); + _helpers.put(Short.class, new ShortConversionHandler()); + _helpers.put(Integer.class, new IntegerConversionHandler()); + _helpers.put(Long.class, new LongConversionHandler()); + _helpers.put(Float.class, new FloatConversionHandler()); + _helpers.put(Double.class, new DoubleConversionHandler()); + _helpers.put(BigInteger.class, new BigIntegerConversionHandler()); + _helpers.put(BigDecimal.class, new BigDecimalConversionHandler()); + _helpers.put(Date.class, new DateConversionHandler()); + + _helpers.put(Boolean.TYPE, new BooleanConversionHandler()); + _helpers.put(Byte.TYPE, new ByteConversionHandler()); + _helpers.put(Short.TYPE, new ShortConversionHandler()); + _helpers.put(Integer.TYPE, new IntegerConversionHandler()); + _helpers.put(Long.TYPE, new LongConversionHandler()); + _helpers.put(Float.TYPE, new FloatConversionHandler()); + _helpers.put(Double.TYPE, new DoubleConversionHandler()); + } + + private boolean _useXsdFormatting; + + + /** + * Default constructor, which uses Java formatting. + */ + public PrimitiveConversionHelper() + { + // nothing to see here + } + + + /** + * Constructor that allows selection of Java or XSD formatting. + */ + public PrimitiveConversionHelper(boolean useXsdFormatting) + { + _useXsdFormatting = useXsdFormatting; + } + + +//---------------------------------------------------------------------------- +// Public Methods +//---------------------------------------------------------------------------- + + /** + * Returns the XSD type name to use for stringified objects of the + * specified class, <code>null</code> if this converter can't convert + * instances of the class. + */ + public String getXsdType(Class<?> klass) + { + ConversionHandler<?> helper = _helpers.get(klass); + return (helper == null) ? null : helper.getXsiType(); + } + + + /** + * Returns the Java type that best matches the given Schema type name, + * <code>null</code> if we do not have an appropriate mapping. + */ + public Class<?> getJavaType(String xsdTypename) + { + return XSD_TYPE_TO_JAVA_CLASS.get(xsdTypename); + } + + + /** + * Converts the passed object into its string representation, according + * to the options currently in effect. Passing <code>null</code> will + * return <code>null</code>. Throws {@link ConversionException} if + * unable to convert the passed object. + */ + public String stringify(Object obj) + { + if (obj == null) + return null; + + try + { + return getHelper(obj.getClass()).stringify(obj); + } + catch (Exception ee) + { + if (ee instanceof ConversionException) + throw (ConversionException)ee; + throw new ConversionException("unable to convert: " + obj, ee); + } + } + + + /** + * Parses the passed string into an object of the desired class. Passing + * <code>null</code> will return <code>null</code>, passing an empty + * string will typically throw a {@link ConversionException}. + */ + public Object parse(String str, Class<?> klass) + { + if (str == null) + return null; + + try + { + return getHelper(klass).parse(str); + } + catch (Exception ee) + { + if (ee instanceof ConversionException) + throw (ConversionException)ee; + throw new ConversionException("unable to parse: " + str, ee); + } + } + + +//---------------------------------------------------------------------------- +// Internals +//---------------------------------------------------------------------------- + + /** + * Returns the appropriate conversion helper or throws. + */ + @SuppressWarnings(value="unchecked") + private ConversionHandler getHelper(Class<?> klass) + { + ConversionHandler<?> helper = _helpers.get(klass); + if (helper == null) + throw new ConversionException("unable to get helper: " + klass.getName()); + return helper; + } + + + /** + * Each primitive class has its own conversion handler that is responsible + * for converting to/from a string representation. Handlers are guaranteed + * to receive non-null objects/strings. + * <p> + * This interface is parameterized so that the compiler will generate + * bridge methods for implementation classes. Elsewhere, we don't care + * about parameterization, so wildcard or drop it (see {@link #getHelper}). + * <p> + * Implementation classes are expected to be inner classes, so that they + * have access to configuration information (such as formatting rules). + * <p> + * Implementation classes are permitted to throw any exception; caller is + * expected to catch them and translate to a {@link ConversionException}. + */ + private static interface ConversionHandler<T> + { + public String getXsiType(); + public String stringify(T obj) throws Exception; + public T parse(String str) throws Exception; + } + + + private class StringConversionHandler + implements ConversionHandler<String> + { + public String getXsiType() + { + return "xsd:string"; + } + + public String stringify(String obj) + { + return String.valueOf(obj); + } + + public String parse(String str) + { + return str; + } + } + + + private class CharacterConversionHandler + implements ConversionHandler<Character> + { + private final Character NUL = Character.valueOf('\0'); + + public String getXsiType() + { + return "xsd:string"; + } + + public String stringify(Character obj) + { + if (obj.equals(NUL)) + return ""; + return obj.toString(); + } + + public Character parse(String str) + { + if (str.length() == 0) + return NUL; + if (str.length() > 1) + throw new ConversionException( + "attempted to convert multi-character string: \"" + str + "\""); + return Character.valueOf(str.charAt(0)); + } + } + + + private class BooleanConversionHandler + implements ConversionHandler<Boolean> + { + public String getXsiType() + { + return "xsd:boolean"; + } + + public String stringify(Boolean obj) + { + return _useXsdFormatting + ? XmlUtil.formatXsdBoolean(obj.booleanValue()) + : obj.toString(); + } + + public Boolean parse(String str) + { + return _useXsdFormatting + ? XmlUtil.parseXsdBoolean(str) + : Boolean.parseBoolean(str); + } + } + + + private class ByteConversionHandler + implements ConversionHandler<Byte> + { + public String getXsiType() + { + return "xsd:byte"; + } + + public String stringify(Byte obj) + { + return obj.toString(); + } + + public Byte parse(String str) + { + return Byte.valueOf(str.trim()); + } + } + + + private class ShortConversionHandler + implements ConversionHandler<Short> + { + public String getXsiType() + { + return "xsd:short"; + } + + public String stringify(Short obj) + { + return obj.toString(); + } + + public Short parse(String str) + { + return Short.valueOf(str.trim()); + } + } + + + private class IntegerConversionHandler + implements ConversionHandler<Integer> + { + public String getXsiType() + { + return "xsd:int"; + } + + public String stringify(Integer obj) + { + return obj.toString(); + } + + public Integer parse(String str) + { + return Integer.valueOf(str.trim()); + } + } + + + private class LongConversionHandler + implements ConversionHandler<Long> + { + public String getXsiType() + { + return "xsd:long"; + } + + public String stringify(Long obj) + { + return obj.toString(); + } + + public Long parse(String str) + { + return Long.valueOf(str.trim()); + } + } + + + private class FloatConversionHandler + implements ConversionHandler<Float> + { + public String getXsiType() + { + return "xsd:decimal"; + } + + public String stringify(Float obj) + { + return _useXsdFormatting + ? XmlUtil.formatXsdDecimal(obj) + : obj.toString(); + } + + public Float parse(String str) + { + return Float.valueOf(str.trim()); + } + } + + + private class DoubleConversionHandler + implements ConversionHandler<Double> + { + public String getXsiType() + { + return "xsd:decimal"; + } + + public String stringify(Double obj) + { + return _useXsdFormatting + ? XmlUtil.formatXsdDecimal(obj) + : obj.toString(); + } + + public Double parse(String str) + { + return Double.valueOf(str.trim()); + } + } + + + private class BigIntegerConversionHandler + implements ConversionHandler<BigInteger> + { + public String getXsiType() + { + return "xsd:decimal"; + } + + public String stringify(BigInteger obj) + { + return obj.toString(); + } + + public BigInteger parse(String str) + { + return new BigInteger(str.trim()); + } + } + + + private class BigDecimalConversionHandler + implements ConversionHandler<BigDecimal> + { + public String getXsiType() + { + return "xsd:decimal"; + } + + public String stringify(BigDecimal obj) + { + return obj.toString(); + } + + public BigDecimal parse(String str) + { + return new BigDecimal(str.trim()); + } + } + + + private class DateConversionHandler + implements ConversionHandler<Date> + { + // format as specified by Date.toString() JavaDoc + private DateFormat _defaultFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy"); + + public String getXsiType() + { + return "xsd:dateTime"; + } + + public String stringify(Date obj) + { + return _useXsdFormatting + ? XmlUtil.formatXsdDatetime(obj) + : obj.toString(); + } + + public Date parse(String str) + throws ParseException + { + if (_useXsdFormatting) + return XmlUtil.parseXsdDatetime(str); + else + { + synchronized (_defaultFormat) + { + return _defaultFormat.parse(str); + } + } + } + } +} Modified: branches/dev-1.1/src/test/java/net/sf/practicalxml/converter/TestConversionHelper.java =================================================================== --- branches/dev-1.1/src/test/java/net/sf/practicalxml/converter/TestConversionHelper.java 2009-08-18 18:52:26 UTC (rev 116) +++ branches/dev-1.1/src/test/java/net/sf/practicalxml/converter/TestConversionHelper.java 2009-08-18 19:16:50 UTC (rev 117) @@ -18,7 +18,7 @@ import java.math.BigInteger; import java.util.Date; -import net.sf.practicalxml.converter.internal.ConversionHelper; +import net.sf.practicalxml.converter.internal.PrimitiveConversionHelper; public class TestConversionHelper @@ -36,7 +36,7 @@ private void assertFailsConversionToObject( String message, - ConversionHelper helper, + PrimitiveConversionHelper helper, String str, Class<?> klass) { @@ -58,7 +58,7 @@ public void testClassToXsdType() throws Exception { - ConversionHelper helper = new ConversionHelper(); + PrimitiveConversionHelper helper = new PrimitiveConversionHelper(); assertEquals("xsd:string", helper.getXsdType(String.class)); assertEquals("xsd:string", helper.getXsdType(Character.class)); @@ -72,7 +72,7 @@ public void testUnknownClass() throws Exception { - ConversionHelper helper = new ConversionHelper(); + PrimitiveConversionHelper helper = new PrimitiveConversionHelper(); assertNull(helper.getXsdType(Class.class)); } @@ -80,7 +80,7 @@ public void testConvertNull() throws Exception { - ConversionHelper helper = new ConversionHelper(); + PrimitiveConversionHelper helper = new PrimitiveConversionHelper(); assertNull(helper.stringify(null)); assertNull(helper.parse(null, Object.class)); @@ -89,7 +89,7 @@ public void testConvertString() throws Exception { - ConversionHelper helper = new ConversionHelper(); + PrimitiveConversionHelper helper = new PrimitiveConversionHelper(); assertEquals("xsd:string", helper.getXsdType(String.class)); @@ -103,7 +103,7 @@ public void testConvertCharacter() throws Exception { - ConversionHelper helper = new ConversionHelper(); + PrimitiveConversionHelper helper = new PrimitiveConversionHelper(); assertEquals("xsd:string", helper.getXsdType(Character.class)); @@ -123,7 +123,7 @@ public void testConvertBooleanDefault() throws Exception { - ConversionHelper helper = new ConversionHelper(); + PrimitiveConversionHelper helper = new PrimitiveConversionHelper(); // default boolean conversion is compatible with XSD type def assertEquals("xsd:boolean", helper.getXsdType(Boolean.class)); @@ -143,7 +143,7 @@ public void testConvertBooleanXsd() throws Exception { - ConversionHelper helper = new ConversionHelper(true); + PrimitiveConversionHelper helper = new PrimitiveConversionHelper(true); assertEquals("xsd:boolean", helper.getXsdType(Boolean.class)); @@ -167,7 +167,7 @@ public void testConvertByte() throws Exception { - ConversionHelper helper = new ConversionHelper(); + PrimitiveConversionHelper helper = new PrimitiveConversionHelper(); assertEquals("xsd:byte", helper.getXsdType(Byte.class)); @@ -205,7 +205,7 @@ public void testConvertShort() throws Exception { - ConversionHelper helper = new ConversionHelper(); + PrimitiveConversionHelper helper = new PrimitiveConversionHelper(); assertEquals("xsd:short", helper.getXsdType(Short.class)); @@ -243,7 +243,7 @@ public void testConvertInteger() throws Exception { - ConversionHelper helper = new ConversionHelper(); + PrimitiveConversionHelper helper = new PrimitiveConversionHelper(); assertEquals("xsd:int", helper.getXsdType(Integer.class)); @@ -281,7 +281,7 @@ public void testConvertLong() throws Exception { - ConversionHelper helper = new ConversionHelper(); + PrimitiveConversionHelper helper = new PrimitiveConversionHelper(); assertEquals("xsd:long", helper.getXsdType(Long.class)); @@ -319,7 +319,7 @@ public void testConvertFloatDefault() throws Exception { - ConversionHelper helper = new ConversionHelper(); + PrimitiveConversionHelper helper = new PrimitiveConversionHelper(); // default float conversion is compatible with XSD type def assertEquals("xsd:decimal", helper.getXsdType(Float.class)); @@ -351,7 +351,7 @@ public void testConvertFloatXsd() throws Exception { - ConversionHelper helper = new ConversionHelper(true); + PrimitiveConversionHelper helper = new PrimitiveConversionHelper(true); assertEquals("xsd:decimal", helper.getXsdType(Float.class)); @@ -381,7 +381,7 @@ public void testConvertDoubleDefault() throws Exception { - ConversionHelper helper = new ConversionHelper(); + PrimitiveConversionHelper helper = new PrimitiveConversionHelper(); // default double conversion is compatible with XSD type def assertEquals("xsd:decimal", helper.getXsdType(Double.class)); @@ -413,7 +413,7 @@ public void testConvertDoubleXsd() throws Exception { - ConversionHelper helper = new ConversionHelper(true); + PrimitiveConversionHelper helper = new PrimitiveConversionHelper(true); assertEquals("xsd:decimal", helper.getXsdType(Double.class)); @@ -444,7 +444,7 @@ public void testConvertBigInteger() throws Exception { - ConversionHelper helper = new ConversionHelper(); + PrimitiveConversionHelper helper = new PrimitiveConversionHelper(); assertEquals("xsd:decimal", helper.getXsdType(BigInteger.class)); @@ -474,7 +474,7 @@ public void testConvertBigDecimal() throws Exception { - ConversionHelper helper = new ConversionHelper(); + PrimitiveConversionHelper helper = new PrimitiveConversionHelper(); assertEquals("xsd:decimal", helper.getXsdType(BigDecimal.class)); @@ -500,7 +500,7 @@ public void testConvertDateDefault() throws Exception { - ConversionHelper helper = new ConversionHelper(); + PrimitiveConversionHelper helper = new PrimitiveConversionHelper(); // default date conversion is NOT compatible with XSD type def, // so this is misleading @@ -525,7 +525,7 @@ public void testConvertDateXsd() throws Exception { - ConversionHelper helper = new ConversionHelper(true); + PrimitiveConversionHelper helper = new PrimitiveConversionHelper(true); assertEquals("xsd:dateTime", helper.getXsdType(Date.class)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |