You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ad...@apache.org on 2012/06/14 05:32:19 UTC

svn commit: r1350081 - /ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/DateTimeConverters.java

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);