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 2009/11/11 20:35:34 UTC

svn commit: r835032 - in /ofbiz/trunk/framework: base/src/META-INF/ base/src/META-INF/services/ base/src/org/ofbiz/base/conversion/ entity/src/org/ofbiz/entity/util/

Author: adrianc
Date: Wed Nov 11 19:35:34 2009
New Revision: 835032

URL: http://svn.apache.org/viewvc?rev=835032&view=rev
Log:
More improvements to the conversion framework, plus bug fixes.

Added:
    ofbiz/trunk/framework/base/src/META-INF/
    ofbiz/trunk/framework/base/src/META-INF/services/
    ofbiz/trunk/framework/base/src/META-INF/services/org.ofbiz.base.conversion.ConverterLoader   (with props)
Modified:
    ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/BooleanConverters.java
    ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/Converters.java
    ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/DateTimeConverters.java
    ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/MiscConverters.java
    ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/NumberConverters.java
    ofbiz/trunk/framework/entity/src/org/ofbiz/entity/util/Converters.java

Added: ofbiz/trunk/framework/base/src/META-INF/services/org.ofbiz.base.conversion.ConverterLoader
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/META-INF/services/org.ofbiz.base.conversion.ConverterLoader?rev=835032&view=auto
==============================================================================
--- ofbiz/trunk/framework/base/src/META-INF/services/org.ofbiz.base.conversion.ConverterLoader (added)
+++ ofbiz/trunk/framework/base/src/META-INF/services/org.ofbiz.base.conversion.ConverterLoader Wed Nov 11 19:35:34 2009
@@ -0,0 +1,22 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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.
+
+org.ofbiz.base.conversion.BooleanConverters
+org.ofbiz.base.conversion.DateTimeConverters
+org.ofbiz.base.conversion.MiscConverters
+org.ofbiz.base.conversion.NumberConverters
+

Propchange: ofbiz/trunk/framework/base/src/META-INF/services/org.ofbiz.base.conversion.ConverterLoader
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/framework/base/src/META-INF/services/org.ofbiz.base.conversion.ConverterLoader
------------------------------------------------------------------------------
    svn:keywords = "Date Rev Author URL Id"

Propchange: ofbiz/trunk/framework/base/src/META-INF/services/org.ofbiz.base.conversion.ConverterLoader
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/BooleanConverters.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/BooleanConverters.java?rev=835032&r1=835031&r2=835032&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/BooleanConverters.java (original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/BooleanConverters.java Wed Nov 11 19:35:34 2009
@@ -19,7 +19,7 @@
 package org.ofbiz.base.conversion;
 
 /** Boolean Converter classes. */
-public class BooleanConverters {
+public class BooleanConverters implements ConverterLoader {
 
     public static class BooleanToInteger extends AbstractConverter<Boolean, Integer> {
 
@@ -84,4 +84,9 @@
         }
         
     }
+
+    public void loadConverters() {
+        Converters.loadContainedConverters(BooleanConverters.class);
+    }
+
 }

Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/Converters.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/Converters.java?rev=835032&r1=835031&r2=835032&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/Converters.java (original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/Converters.java Wed Nov 11 19:35:34 2009
@@ -18,31 +18,19 @@
  *******************************************************************************/
 package org.ofbiz.base.conversion;
 
-import java.math.BigDecimal;
-import java.sql.Clob;
+import java.lang.reflect.Modifier;
 import java.util.Collection;
 import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
-import java.util.TimeZone;
 
 import javax.imageio.spi.ServiceRegistry;
 
 import javolution.util.FastMap;
 import javolution.util.FastSet;
 
-import org.ofbiz.base.conversion.BooleanConverters.*;
-import org.ofbiz.base.conversion.CollectionConverters.*;
-import org.ofbiz.base.conversion.DateTimeConverters.*;
-import org.ofbiz.base.conversion.NumberConverters.*;
-import org.ofbiz.base.conversion.MiscConverters.*;
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.ObjectType;
-import org.ofbiz.base.util.TimeDuration;
-
-import com.ibm.icu.util.Calendar;
 
 /** A <code>Converter</code> factory and repository. */
 public class Converters {
@@ -53,90 +41,16 @@
     protected static final Set<String> noConversions = FastSet.newInstance();
     protected static final Converter<Object, Object> nullConverter = new NullConverter();
 
-    // If Arrays aren't converted when using RMI, then comment out the next line
-    public static final Converter<Object[], List<?>> ArrayToList = new ArrayToList();
-    public static final Converter<BigDecimal, Double> BigDecimalToDouble = new BigDecimalToDouble(); 
-    public static final Converter<BigDecimal, Float> BigDecimalToFloat = new BigDecimalToFloat(); 
-    public static final Converter<BigDecimal, Integer> BigDecimalToInteger = new BigDecimalToInteger(); 
-    public static final Converter<BigDecimal, List<BigDecimal>> BigDecimalToList = new BigDecimalToList(); 
-    public static final Converter<BigDecimal, Long> BigDecimalToLong = new BigDecimalToLong(); 
-    public static final Converter<BigDecimal, Set<BigDecimal>> BigDecimalToSet = new BigDecimalToSet(); 
-    public static final LocalizedConverter<BigDecimal, String> BigDecimalToString = new BigDecimalToString(); 
-    public static final Converter<Boolean, Integer> BooleanToInteger = new BooleanToInteger(); 
-    public static final Converter<Boolean, String> BooleanToString = new BooleanToString(); 
-    public static final Converter<Calendar, Long> CalendarToLong = new CalendarToLong(); 
-    public static final Converter<Calendar, String> CalendarToString = new CalendarToString(); 
-    public static final Converter<Clob, String> ClobToString = new ClobToString(); 
-    public static final Converter<java.util.Date, Long> DateToLong = new DateToLong(); 
-    public static final LocalizedConverter<java.util.Date, String> DateToString = new DateToString(); 
-    public static final Converter<Double, BigDecimal> DoubleToBigDecimal = new DoubleToBigDecimal(); 
-    public static final Converter<Double, Float> DoubleToFloat = new DoubleToFloat(); 
-    public static final Converter<Double, Integer> DoubleToInteger = new DoubleToInteger(); 
-    public static final Converter<Double, List<Double>> DoubleToList = new DoubleToList(); 
-    public static final Converter<Double, Long> DoubleToLong = new DoubleToLong(); 
-    public static final Converter<Double, Set<Double>> DoubleToSet = new DoubleToSet(); 
-    public static final LocalizedConverter<Double, String> DoubleToString = new DoubleToString(); 
-    public static final Converter<TimeDuration, String> DurationToString = new DurationToString(); 
-    public static final Converter<Float, BigDecimal> FloatToBigDecimal = new FloatToBigDecimal(); 
-    public static final Converter<Float, Double> FloatToDouble = new FloatToDouble(); 
-    public static final Converter<Float, Integer> FloatToInteger = new FloatToInteger(); 
-    public static final Converter<Float, List<Float>> FloatToList = new FloatToList(); 
-    public static final Converter<Float, Long> FloatToLong = new FloatToLong(); 
-    public static final Converter<Float, Set<Float>> FloatToSet = new FloatToSet(); 
-    public static final LocalizedConverter<Float, String> FloatToString = new FloatToString(); 
-    public static final Converter<Integer, BigDecimal> IntegerToBigDecimal = new IntegerToBigDecimal(); 
-    public static final Converter<Integer, Boolean> IntegerToBoolean = new IntegerToBoolean(); 
-    public static final Converter<Integer, Double> IntegerToDouble = new IntegerToDouble(); 
-    public static final Converter<Integer, Float> IntegerToFloat = new IntegerToFloat(); 
-    public static final Converter<Integer, List<Integer>> IntegerToList = new IntegerToList(); 
-    public static final Converter<Integer, Long> IntegerToLong = new IntegerToLong(); 
-    public static final Converter<Integer, Set<Integer>> IntegerToSet = new IntegerToSet(); 
-    public static final LocalizedConverter<Integer, String> IntegerToString = new IntegerToString(); 
-    public static final Converter<List<?>, String> ListToString = new ListToString(); 
-    public static final Converter<Locale, String> LocaleToString = new LocaleToString(); 
-    public static final Converter<Long, BigDecimal> LongToBigDecimal = new LongToBigDecimal(); 
-    public static final Converter<Long, Calendar> LongToCalendar = new LongToCalendar(); 
-    public static final Converter<Long, Double> LongToDouble = new LongToDouble(); 
-    public static final Converter<Long, Float> LongToFloat = new LongToFloat(); 
-    public static final Converter<Long, Integer> LongToInteger = new LongToInteger(); 
-    public static final Converter<Long, List<Long>> LongToList = new LongToList(); 
-    public static final Converter<Long, Set<Long>> LongToSet = new LongToSet(); 
-    public static final LocalizedConverter<Long, String> LongToString = new LongToString(); 
-    public static final Converter<Map<?, ?>, List<Map<?,?>>> MapToList = new MapToList(); 
-    public static final Converter<Map<?, ?>, Set<Map<?,?>>> MapToSet = new MapToSet(); 
-    public static final Converter<Map<?, ?>, String> MapToString = new MapToString(); 
-    public static final Converter<Number, java.util.Date> NumberToDate = new NumberToDate(); 
-    public static final Converter<Number, TimeDuration> NumberToDuration = new NumberToDuration(); 
-    public static final Converter<Number, java.sql.Date> NumberToSqlDate = new NumberToSqlDate(); 
-    public static final Converter<Number, java.sql.Time> NumberToSqlTime = new NumberToSqlTime(); 
-    public static final Converter<Number, java.sql.Timestamp> NumberToTimestamp = new NumberToTimestamp(); 
-    public static final LocalizedConverter<java.sql.Date, String> SqlDateToString = new SqlDateToString(); 
-    public static final LocalizedConverter<java.sql.Time, String> SqlTimeToString = new SqlTimeToString();
-    public static final LocalizedConverter<String, BigDecimal> StringToBigDecimal = new StringToBigDecimal();
-    public static final Converter<String, Boolean> StringToBoolean = new StringToBoolean();
-    public static final LocalizedConverter<String, Calendar> StringToCalendar = new StringToCalendar();
-    public static final LocalizedConverter<String, java.util.Date> StringToDate = new StringToDate();
-    public static final LocalizedConverter<String, Double> StringToDouble = new StringToDouble();
-    public static final Converter<String, TimeDuration> StringToDuration = new StringToDuration();
-    public static final LocalizedConverter<String, Float> StringToFloat = new StringToFloat();
-    public static final LocalizedConverter<String, Integer> StringToInteger = new StringToInteger();
-    public static final Converter<String, List<?>> StringToList = new StringToList();
-    public static final Converter<String, Locale> StringToLocale = new StringToLocale();
-    public static final LocalizedConverter<String, Long> StringToLong = new StringToLong();
-    public static final Converter<String, Map<?, ?>> StringToMap = new StringToMap();
-    public static final Converter<String, Set<?>> StringToSet = new StringToSet();
-    public static final LocalizedConverter<String, java.sql.Date> StringToSqlDate = new StringToSqlDate();
-    public static final LocalizedConverter<String, java.sql.Time> StringToSqlTime = new StringToSqlTime();
-    public static final LocalizedConverter<String, java.sql.Timestamp> StringToTimestamp = new StringToTimestamp();
-    public static final Converter<String, TimeZone> StringToTimeZone = new StringToTimeZone();
-    public static final Converter<TimeZone, String> TimeZoneToString = new TimeZoneToString();
-
     static {
         ClassLoader loader = Thread.currentThread().getContextClassLoader();
         Iterator<ConverterLoader> converterLoaders = ServiceRegistry.lookupProviders(ConverterLoader.class, loader);
         while (converterLoaders.hasNext()) {
-            ConverterLoader converterLoader = converterLoaders.next();
-            converterLoader.loadConverters();
+            try {
+                ConverterLoader converterLoader = converterLoaders.next();
+                converterLoader.loadConverters();
+            } catch (Exception e) {
+                Debug.logError(e, module);
+            }
         }
     }
 
@@ -186,6 +100,24 @@
         return (Converter<S, T>) result;
     }
 
+    /** Load all classes that implement <code>Converter</code> and are
+     * contained in <code>containerClass</code>.
+     * 
+     * @param containerClass
+     */
+    public static void loadContainedConverters(Class<?> containerClass) {
+        Class<?>[] classArray = containerClass.getClasses();
+        for (int i = 0; i < classArray.length; i++) {
+            try {
+                if ((classArray[i].getModifiers() & Modifier.ABSTRACT) == 0) {
+                    classArray[i].newInstance();
+                }
+            } catch (Exception e) {
+                Debug.logError(e, module);
+            }
+        }
+    }
+
     /** Registers a <code>Converter</code> instance to be used by the
      * {@link org.ofbiz.base.conversion.Converters#getConverter(Class, Class)}
      * method.

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=835032&r1=835031&r2=835032&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 Wed Nov 11 19:35:34 2009
@@ -29,7 +29,7 @@
 import com.ibm.icu.util.Calendar;
 
 /** Date/time Converter classes. */
-public class DateTimeConverters {
+public class DateTimeConverters implements ConverterLoader {
 
     public static class CalendarToLong extends AbstractConverter<Calendar, Long> {
 
@@ -82,6 +82,22 @@
 
     }
 
+    public static class DateToSqlDate extends AbstractConverter<java.util.Date, java.sql.Date> {
+
+        public java.sql.Date convert(java.util.Date obj) throws ConversionException {
+            return new java.sql.Date(obj.getTime());
+        }
+
+        public Class<java.util.Date> getSourceClass() {
+            return java.util.Date.class;
+        }
+
+        public Class<java.sql.Date> getTargetClass() {
+            return java.sql.Date.class;
+        }
+
+    }
+
     public static class DateToString extends GenericLocalizedConverter<java.util.Date, String> {
 
         public String convert(java.util.Date obj, Locale locale, TimeZone timeZone, String formatString) throws ConversionException {
@@ -104,6 +120,22 @@
 
     }
 
+    public static class DateToTimestamp extends AbstractConverter<java.util.Date, java.sql.Timestamp> {
+
+        public java.sql.Timestamp convert(java.util.Date obj) throws ConversionException {
+            return new java.sql.Timestamp(obj.getTime());
+        }
+
+        public Class<java.util.Date> getSourceClass() {
+            return java.util.Date.class;
+        }
+
+        public Class<java.sql.Timestamp> getTargetClass() {
+            return java.sql.Timestamp.class;
+        }
+
+    }
+
     public static class DurationToString extends AbstractConverter<TimeDuration, String> {
 
         public String convert(TimeDuration obj) throws ConversionException {
@@ -236,6 +268,22 @@
 
     }
 
+    public static class SqlDateToDate extends AbstractConverter<java.sql.Date, java.util.Date> {
+
+        public java.util.Date convert(java.sql.Date obj) throws ConversionException {
+            return new java.util.Date(obj.getTime());
+        }
+
+        public Class<java.sql.Date> getSourceClass() {
+            return java.sql.Date.class;
+        }
+
+        public Class<java.util.Date> getTargetClass() {
+            return java.util.Date.class;
+        }
+
+    }
+
     public static class SqlDateToString extends GenericLocalizedConverter<java.sql.Date, String> {
 
         public String convert(java.sql.Date obj, Locale locale, TimeZone timeZone, String formatString) throws ConversionException {
@@ -471,6 +519,38 @@
 
     }
 
+    public static class TimestampToDate extends AbstractConverter<java.sql.Timestamp, java.util.Date> {
+
+        public java.util.Date convert(java.sql.Timestamp obj) throws ConversionException {
+            return new java.sql.Timestamp(obj.getTime());
+        }
+
+        public Class<java.sql.Timestamp> getSourceClass() {
+            return java.sql.Timestamp.class;
+        }
+
+        public Class<java.util.Date> getTargetClass() {
+            return java.util.Date.class;
+        }
+
+    }
+
+    public static class TimestampToSqlDate extends AbstractConverter<java.sql.Timestamp, java.sql.Date> {
+
+        public java.sql.Date convert(java.sql.Timestamp obj) throws ConversionException {
+            return new java.sql.Date(obj.getTime());
+        }
+
+        public Class<java.sql.Timestamp> getSourceClass() {
+            return java.sql.Timestamp.class;
+        }
+
+        public Class<java.sql.Date> getTargetClass() {
+            return java.sql.Date.class;
+        }
+
+    }
+
     public static class TimeZoneToString extends AbstractConverter<TimeZone, String> {
 
         public String convert(TimeZone obj) throws ConversionException {
@@ -487,4 +567,8 @@
 
     }
 
+    public void loadConverters() {
+        Converters.loadContainedConverters(DateTimeConverters.class);
+    }
+
 }

Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/MiscConverters.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/MiscConverters.java?rev=835032&r1=835031&r2=835032&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/MiscConverters.java (original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/MiscConverters.java Wed Nov 11 19:35:34 2009
@@ -26,7 +26,7 @@
 import org.ofbiz.base.util.UtilMisc;
 
 /** Miscellaneous Converter classes. */
-public class MiscConverters {
+public class MiscConverters implements ConverterLoader {
 
     public static final int CHAR_BUFFER_SIZE = 4096;
 
@@ -102,4 +102,8 @@
 
     }
 
+    public void loadConverters() {
+        Converters.loadContainedConverters(MiscConverters.class);
+    }
+
 }

Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/NumberConverters.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/NumberConverters.java?rev=835032&r1=835031&r2=835032&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/NumberConverters.java (original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/NumberConverters.java Wed Nov 11 19:35:34 2009
@@ -30,7 +30,9 @@
 import javolution.util.FastSet;
 
 /** Number Converter classes. */
-public class NumberConverters {
+public class NumberConverters implements ConverterLoader {
+
+    public static final String module = NumberConverters.class.getName();
 
     public static abstract class AbstractToNumberConverter<S, T> extends AbstractUsesLocaleConverter<S, T> {
 
@@ -722,4 +724,9 @@
         }
         
     }
+
+    public void loadConverters() {
+        Converters.loadContainedConverters(NumberConverters.class);
+    }
+
 }

Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/util/Converters.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/util/Converters.java?rev=835032&r1=835031&r2=835032&view=diff
==============================================================================
--- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/util/Converters.java (original)
+++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/util/Converters.java Wed Nov 11 19:35:34 2009
@@ -27,15 +27,12 @@
 import org.ofbiz.base.conversion.AbstractConverter;
 import org.ofbiz.base.conversion.ConversionException;
 import org.ofbiz.base.conversion.ConverterLoader;
-import org.ofbiz.base.util.Debug;
 import org.ofbiz.entity.GenericEntity;
 import org.ofbiz.entity.GenericValue;
 
 /** Entity Engine <code>Converter</code> classes. */
 public class Converters implements ConverterLoader {
 
-    public static final String module = Converters.class.getName();
-
     public static class GenericValueToList extends AbstractConverter<GenericValue, List<GenericValue>> {
 
         public List<GenericValue> convert(GenericValue obj) throws ConversionException {
@@ -123,14 +120,7 @@
     }
 
     public void loadConverters() {
-        Class<?>[] classArray = Converters.class.getClasses();
-        for (int i = 0; i < classArray.length; i++) {
-            try {
-                classArray[i].newInstance();
-            } catch (Exception e) {
-                Debug.logError(e, module);
-            }
-        }
+        org.ofbiz.base.conversion.Converters.loadContainedConverters(Converters.class);
     }
 
 }