Index: lutinutil/src/java/org/codelutin/util/ConverterUtil.java
diff -u lutinutil/src/java/org/codelutin/util/ConverterUtil.java:1.2 lutinutil/src/java/org/codelutin/util/ConverterUtil.java:1.3
--- lutinutil/src/java/org/codelutin/util/ConverterUtil.java:1.2 Tue Jan 1 23:24:21 2008
+++ lutinutil/src/java/org/codelutin/util/ConverterUtil.java Thu Jan 3 05:57:18 2008
@@ -22,6 +22,7 @@
import org.apache.commons.beanutils.Converter;
import java.net.URL;
+import java.util.Arrays;
/**
* Une classe contenant des méthodes utiles sur les converters
@@ -29,6 +30,8 @@
* @author tony
*/
public class ConverterUtil {
+
+ private static final Class[] AUTO_REGISTRED_CONVERTER = new Class[]{URL.class,VersionNumber.class};
/**
* Cherche un converter pour un type donné.
*
@@ -38,33 +41,39 @@
* Si le type est URL, et qu'aucun converter n'a été trouvé,
* on enregistre un URLConverter.
*
+ * Si le type est VersionNumber, et qu'aucun converter n'a été trouvé,
+ * on enregistre un VersionNumberConverter.
+ *
* @param type le type à convertir
* @return le converter trouvé, ou null si non trouvé
* @see Converter
* @see EnumConverter
* @see URLConverter
+ * @see VersionNumberConverter
*/
public static Converter getConverter(Class type) {
Converter converter = ConvertUtils.lookup(type);
- if (type.isEnum() && converter == null) {
- registerEnumConverter(type);
- converter = ConvertUtils.lookup(type);
+ if (converter!=null) {
+ return converter;
}
- if (type==URL.class && converter==null) {
- registerURLConverter();
+ if (type.isEnum()) {
+ registerEnumConverter(type);
converter = ConvertUtils.lookup(type);
- }
+ } else if (Arrays.asList(AUTO_REGISTRED_CONVERTER).contains(type)) {
+ try {
+ registerConverter(type);
+ converter = ConvertUtils.lookup(type);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
return converter;
}
- /**
- * Enregistre le converter d'url.
- */
- public static void registerURLConverter() {
- if (ConvertUtils.lookup(URL.class)== null) {
- URLConverter converter = new URLConverter();
- ConvertUtils.register(converter, URL.class);
- URLConverter.log.info(converter);
+ public static void registerConverter(Class type) throws ClassNotFoundException, IllegalAccessException, InstantiationException {
+ if (ConvertUtils.lookup(type)== null) {
+ Converter converter = (Converter) Class.forName("org.codelutin.util."+type.getSimpleName()+"Converter").newInstance();
+ ConvertUtils.register(converter, type);
}
}
@@ -77,9 +86,8 @@
*/
public static void registerEnumConverter(Class> type, Object defaultValue) {
if (EnumConverter.isEnabled(type, type) && ConvertUtils.lookup(type) == null) {
- EnumConverter converter = new EnumConverter(type, defaultValue);
+ Converter converter = new EnumConverter(type, defaultValue);
ConvertUtils.register(converter, type);
- EnumConverter.log.info(converter + "<" + type + ">");
}
}