|
Author: adrianc
Date: Thu Jun 14 03:32:18 2012 New Revision: 1350081 URL: http://svn.apache.org/viewvc?rev=1350081&view=rev Log: Fixed a bug in DateTimeConverters.java where the wrong converter was being selected. The bug was due to class detection in the java.util.Date hierarchy - so the fix uses explicit classes. Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/DateTimeConverters.java Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/DateTimeConverters.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/DateTimeConverters.java?rev=1350081&r1=1350080&r2=1350081&view=diff ============================================================================== --- ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/DateTimeConverters.java (original) +++ ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/DateTimeConverters.java Thu Jun 14 03:32:18 2012 @@ -26,6 +26,7 @@ import java.util.Date; import java.util.Locale; import java.util.TimeZone; +import org.ofbiz.base.util.ObjectType; import org.ofbiz.base.util.TimeDuration; import org.ofbiz.base.util.UtilDateTime; import org.ofbiz.base.util.UtilValidate; @@ -39,6 +40,11 @@ public class DateTimeConverters implemen super(Calendar.class, Date.class); } + @Override + public boolean canConvert(Class<?> sourceClass, Class<?> targetClass) { + return ObjectType.instanceOf(sourceClass, this.getSourceClass()) && targetClass == this.getTargetClass(); + } + public Date convert(Calendar obj) throws ConversionException { return obj.getTime(); } @@ -72,6 +78,11 @@ public class DateTimeConverters implemen super(Calendar.class, Timestamp.class); } + @Override + public boolean canConvert(Class<?> sourceClass, Class<?> targetClass) { + return ObjectType.instanceOf(sourceClass, this.getSourceClass()) && targetClass == this.getTargetClass(); + } + public Timestamp convert(Calendar obj) throws ConversionException { return new Timestamp(obj.getTimeInMillis()); } @@ -102,11 +113,31 @@ public class DateTimeConverters implemen super(java.util.Date.class, java.sql.Date.class); } + @Override + public boolean canConvert(Class<?> sourceClass, Class<?> targetClass) { + return sourceClass == this.getSourceClass() && targetClass == this.getTargetClass(); + } + public java.sql.Date convert(java.util.Date obj) throws ConversionException { return new java.sql.Date(obj.getTime()); } } + public static class DateToSqlTime extends AbstractConverter<java.util.Date, java.sql.Time> { + public DateToSqlTime() { + super(java.util.Date.class, java.sql.Time.class); + } + + @Override + public boolean canConvert(Class<?> sourceClass, Class<?> targetClass) { + return sourceClass == this.getSourceClass() && targetClass == this.getTargetClass(); + } + + public java.sql.Time convert(java.util.Date obj) throws ConversionException { + return new java.sql.Time(obj.getTime()); + } + } + public static class DateToString extends GenericLocalizedConverter<java.util.Date, String> { public DateToString() { super(java.util.Date.class, String.class); @@ -133,6 +164,11 @@ public class DateTimeConverters implemen super(java.util.Date.class, java.sql.Timestamp.class); } + @Override + public boolean canConvert(Class<?> sourceClass, Class<?> targetClass) { + return ObjectType.instanceOf(sourceClass, this.getSourceClass()) && targetClass == this.getTargetClass(); + } + public java.sql.Timestamp convert(java.util.Date obj) throws ConversionException { return new java.sql.Timestamp(obj.getTime()); } @@ -237,6 +273,11 @@ public class DateTimeConverters implemen super(Number.class, java.util.Date.class); } + @Override + public boolean canConvert(Class<?> sourceClass, Class<?> targetClass) { + return ObjectType.instanceOf(sourceClass, this.getSourceClass()) && targetClass == this.getTargetClass(); + } + public java.util.Date convert(Number obj) throws ConversionException { return new java.util.Date(obj.longValue()); } @@ -257,6 +298,11 @@ public class DateTimeConverters implemen super(Number.class, java.sql.Date.class); } + @Override + public boolean canConvert(Class<?> sourceClass, Class<?> targetClass) { + return ObjectType.instanceOf(sourceClass, this.getSourceClass()) && targetClass == this.getTargetClass(); + } + public java.sql.Date convert(Number obj) throws ConversionException { return new java.sql.Date(obj.longValue()); } @@ -267,6 +313,11 @@ public class DateTimeConverters implemen super(Number.class, java.sql.Time.class); } + @Override + public boolean canConvert(Class<?> sourceClass, Class<?> targetClass) { + return ObjectType.instanceOf(sourceClass, this.getSourceClass()) && targetClass == this.getTargetClass(); + } + public java.sql.Time convert(Number obj) throws ConversionException { return new java.sql.Time(obj.longValue()); } @@ -277,6 +328,11 @@ public class DateTimeConverters implemen super(Number.class, java.sql.Timestamp.class); } + @Override + public boolean canConvert(Class<?> sourceClass, Class<?> targetClass) { + return ObjectType.instanceOf(sourceClass, this.getSourceClass()) && targetClass == this.getTargetClass(); + } + public java.sql.Timestamp convert(Number obj) throws ConversionException { return new java.sql.Timestamp(obj.longValue()); } @@ -287,6 +343,11 @@ public class DateTimeConverters implemen super(java.sql.Date.class, java.util.Date.class); } + @Override + public boolean canConvert(Class<?> sourceClass, Class<?> targetClass) { + return sourceClass == this.getSourceClass() && targetClass == this.getTargetClass(); + } + public java.util.Date convert(java.sql.Date obj) throws ConversionException { return new java.util.Date(obj.getTime()); } @@ -330,6 +391,11 @@ public class DateTimeConverters implemen super(java.sql.Date.class, java.sql.Time.class); } + @Override + public boolean canConvert(Class<?> sourceClass, Class<?> targetClass) { + return sourceClass == this.getSourceClass() && targetClass == this.getTargetClass(); + } + public java.sql.Time convert(java.sql.Date obj) throws ConversionException { throw new ConversionException("Conversion from Date to Time not supported"); } @@ -340,6 +406,11 @@ public class DateTimeConverters implemen super(java.sql.Date.class, java.sql.Timestamp.class); } + @Override + public boolean canConvert(Class<?> sourceClass, Class<?> targetClass) { + return sourceClass == this.getSourceClass() && targetClass == this.getTargetClass(); + } + public java.sql.Timestamp convert(java.sql.Date obj) throws ConversionException { return new java.sql.Timestamp(obj.getTime()); } @@ -362,6 +433,11 @@ public class DateTimeConverters implemen super(java.sql.Time.class, java.sql.Date.class); } + @Override + public boolean canConvert(Class<?> sourceClass, Class<?> targetClass) { + return sourceClass == this.getSourceClass() && targetClass == this.getTargetClass(); + } + public java.sql.Date convert(java.sql.Time obj) throws ConversionException { throw new ConversionException("Conversion from Time to Date not supported"); } @@ -474,6 +550,11 @@ public class DateTimeConverters implemen super(String.class, java.sql.Date.class); } + @Override + public boolean canConvert(Class<?> sourceClass, Class<?> targetClass) { + return ObjectType.instanceOf(sourceClass, this.getSourceClass()) && targetClass == this.getTargetClass(); + } + public java.sql.Date convert(String obj, Locale locale, TimeZone timeZone, String formatString) throws ConversionException { String trimStr = obj.trim(); if (trimStr.length() == 0) { @@ -498,6 +579,11 @@ public class DateTimeConverters implemen super(String.class, java.sql.Time.class); } + @Override + public boolean canConvert(Class<?> sourceClass, Class<?> targetClass) { + return ObjectType.instanceOf(sourceClass, this.getSourceClass()) && targetClass == this.getTargetClass(); + } + public java.sql.Time convert(String obj, Locale locale, TimeZone timeZone, String formatString) throws ConversionException { String trimStr = obj.trim(); if (trimStr.length() == 0) { @@ -522,6 +608,11 @@ public class DateTimeConverters implemen super(String.class, java.sql.Timestamp.class); } + @Override + public boolean canConvert(Class<?> sourceClass, Class<?> targetClass) { + return ObjectType.instanceOf(sourceClass, this.getSourceClass()) && targetClass == this.getTargetClass(); + } + public java.sql.Timestamp convert(String obj, Locale locale, TimeZone timeZone, String formatString) throws ConversionException { String str = obj.trim(); if (str.length() == 0) { @@ -587,6 +678,11 @@ public class DateTimeConverters implemen super(java.sql.Timestamp.class, java.util.Date.class); } + @Override + public boolean canConvert(Class<?> sourceClass, Class<?> targetClass) { + return sourceClass == this.getSourceClass() && targetClass == this.getTargetClass(); + } + public java.util.Date convert(java.sql.Timestamp obj) throws ConversionException { return new java.sql.Timestamp(obj.getTime()); } @@ -609,11 +705,31 @@ public class DateTimeConverters implemen super(java.sql.Timestamp.class, java.sql.Date.class); } + @Override + public boolean canConvert(Class<?> sourceClass, Class<?> targetClass) { + return sourceClass == this.getSourceClass() && targetClass == this.getTargetClass(); + } + public java.sql.Date convert(java.sql.Timestamp obj) throws ConversionException { return new java.sql.Date(obj.getTime()); } } + public static class TimestampToSqlTime extends AbstractConverter<java.sql.Timestamp, java.sql.Time> { + public TimestampToSqlTime() { + super(java.sql.Timestamp.class, java.sql.Time.class); + } + + @Override + public boolean canConvert(Class<?> sourceClass, Class<?> targetClass) { + return sourceClass == this.getSourceClass() && targetClass == this.getTargetClass(); + } + + public java.sql.Time convert(java.sql.Timestamp obj) throws ConversionException { + return new java.sql.Time(obj.getTime()); + } + } + public static class TimeZoneToString extends AbstractConverter<TimeZone, String> { public TimeZoneToString() { super(TimeZone.class, String.class); |
| Free forum by Nabble | Edit this page |
