This is an automated email from the git hooks/post-receive script. New commit to annotated tag v2.0.0-beta-1 in repository jaxx. See https://gitlab.nuiton.org/nuiton/jaxx.git commit 3177389c7e3bc88f388160bde4f5ead8c13a1cf8 Author: Tony Chemit <chemit@codelutin.com> Date: Sat Oct 24 11:30:36 2009 +0000 Evolution #100: amélioration du design du compilateur --- .../java/jaxx/compiler/types/ColorConverter.java | 7 +++++++ .../types/GridBagConstraintsConverter.java | 7 +++++++ .../java/jaxx/compiler/types/InsetsConverter.java | 5 +++++ .../jaxx/compiler/types/KeyStrokeConverter.java | 5 +++++ .../jaxx/compiler/types/PrimitiveConverter.java | 24 ++++++++++++++++++++++ .../java/jaxx/compiler/types/TypeConverter.java | 2 ++ .../main/java/jaxx/compiler/types/TypeManager.java | 24 ++++++++++++++++------ 7 files changed, 68 insertions(+), 6 deletions(-) diff --git a/jaxx-compiler/src/main/java/jaxx/compiler/types/ColorConverter.java b/jaxx-compiler/src/main/java/jaxx/compiler/types/ColorConverter.java index daf2181..f902e8d 100644 --- a/jaxx-compiler/src/main/java/jaxx/compiler/types/ColorConverter.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/types/ColorConverter.java @@ -10,6 +10,13 @@ import java.lang.reflect.Field; public class ColorConverter implements TypeConverter { @Override + public Class<?>[] getSupportedTypes() { + return new Class<?>[]{ + Color.class + }; + } + + @Override public String getJavaCode(Object object) { Color color = (Color) object; return "new Color(" + color.getRed() + ", " + color.getGreen() + ", " + color.getBlue() + ")"; diff --git a/jaxx-compiler/src/main/java/jaxx/compiler/types/GridBagConstraintsConverter.java b/jaxx-compiler/src/main/java/jaxx/compiler/types/GridBagConstraintsConverter.java index 3158c3b..5ddff7a 100644 --- a/jaxx-compiler/src/main/java/jaxx/compiler/types/GridBagConstraintsConverter.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/types/GridBagConstraintsConverter.java @@ -9,6 +9,13 @@ import java.awt.GridBagConstraints; public class GridBagConstraintsConverter implements TypeConverter { @Override + public Class<?>[] getSupportedTypes() { + return new Class<?>[] { + GridBagConstraints.class + }; + } + + @Override public String getJavaCode(Object object) { GridBagConstraints g = (GridBagConstraints) object; return "new GridBagConstraints(" + g.gridx + ", " + g.gridy + ", " + g.gridwidth + ", " + g.gridheight + ", " + diff --git a/jaxx-compiler/src/main/java/jaxx/compiler/types/InsetsConverter.java b/jaxx-compiler/src/main/java/jaxx/compiler/types/InsetsConverter.java index 8326288..5d387c4 100644 --- a/jaxx-compiler/src/main/java/jaxx/compiler/types/InsetsConverter.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/types/InsetsConverter.java @@ -10,6 +10,11 @@ import java.util.StringTokenizer; public class InsetsConverter implements TypeConverter { @Override + public Class<?>[] getSupportedTypes() { + return new Class<?>[]{Insets.class}; + } + + @Override public String getJavaCode(Object object) { Insets insets = (Insets) object; return "new Insets(" + insets.top + ", " + insets.left + ", " + insets.bottom + ", " + insets.right + ")"; diff --git a/jaxx-compiler/src/main/java/jaxx/compiler/types/KeyStrokeConverter.java b/jaxx-compiler/src/main/java/jaxx/compiler/types/KeyStrokeConverter.java index 30e5e01..4dec0a2 100644 --- a/jaxx-compiler/src/main/java/jaxx/compiler/types/KeyStrokeConverter.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/types/KeyStrokeConverter.java @@ -9,6 +9,11 @@ import javax.swing.KeyStroke; public class KeyStrokeConverter implements TypeConverter { @Override + public Class<?>[] getSupportedTypes() { + return new Class<?>[]{KeyStroke.class}; + } + + @Override public String getJavaCode(Object object) { return "KeyStroke.getKeyStroke(\"" + object.toString() + "\")"; } diff --git a/jaxx-compiler/src/main/java/jaxx/compiler/types/PrimitiveConverter.java b/jaxx-compiler/src/main/java/jaxx/compiler/types/PrimitiveConverter.java index 177b241..2c6c84b 100644 --- a/jaxx-compiler/src/main/java/jaxx/compiler/types/PrimitiveConverter.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/types/PrimitiveConverter.java @@ -9,6 +9,30 @@ import jaxx.compiler.JAXXCompiler; public class PrimitiveConverter implements TypeConverter { @Override + public Class<?>[] getSupportedTypes() { + + return new Class<?>[]{ + boolean.class, + Boolean.class, + byte.class, + Byte.class, + short.class, + Short.class, + int.class, + Integer.class, + long.class, + Long.class, + float.class, + Float.class, + double.class, + Double.class, + char.class, + Character.class, + String.class + }; + } + + @Override public String getJavaCode(Object object) { if (object instanceof Boolean) { return String.valueOf(((Boolean) object).booleanValue()); diff --git a/jaxx-compiler/src/main/java/jaxx/compiler/types/TypeConverter.java b/jaxx-compiler/src/main/java/jaxx/compiler/types/TypeConverter.java index 822773e..46c6376 100644 --- a/jaxx-compiler/src/main/java/jaxx/compiler/types/TypeConverter.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/types/TypeConverter.java @@ -6,6 +6,8 @@ package jaxx.compiler.types; public interface TypeConverter { + Class<?>[] getSupportedTypes(); + String getJavaCode(Object object); Object convertFromString(String string, Class<?> type); diff --git a/jaxx-compiler/src/main/java/jaxx/compiler/types/TypeManager.java b/jaxx-compiler/src/main/java/jaxx/compiler/types/TypeManager.java index e000e8b..6f3d26b 100644 --- a/jaxx-compiler/src/main/java/jaxx/compiler/types/TypeManager.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/types/TypeManager.java @@ -6,19 +6,31 @@ package jaxx.compiler.types; import java.util.HashMap; import java.util.Map; +import java.util.ServiceLoader; public class TypeManager { - private static Map<Class<?>, TypeConverter> converters = new HashMap<Class<?>, TypeConverter>(); + private static Map<Class<?>, TypeConverter> converters; + + public static Map<Class<?>, TypeConverter> getConverters() { + if (converters == null) { + converters = new HashMap<Class<?>, TypeConverter>(); + // load converters + ServiceLoader<TypeConverter> loader = ServiceLoader.load(TypeConverter.class); + for (TypeConverter c : loader) { + // for each supported type, register the converter + for (Class<?> type : c.getSupportedTypes()) { + converters.put(type, c); + } + } + } + return converters; + } private TypeManager() { /* not instantiable */ } - public static void registerTypeConverter(Class<?> type, TypeConverter converter) { - converters.put(type, converter); - } - public static TypeConverter getTypeConverter(Class<?> type) { - return converters.get(type); + return getConverters().get(type); } public static String getJavaCode(Object object) { -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.