r1588 - branches/jaxx-2.X/jaxx-compiler/src/main/java/jaxx/compiler/types
Author: tchemit Date: 2009-10-24 13:30:36 +0200 (Sat, 24 Oct 2009) New Revision: 1588 Modified: branches/jaxx-2.X/jaxx-compiler/src/main/java/jaxx/compiler/types/ColorConverter.java branches/jaxx-2.X/jaxx-compiler/src/main/java/jaxx/compiler/types/GridBagConstraintsConverter.java branches/jaxx-2.X/jaxx-compiler/src/main/java/jaxx/compiler/types/InsetsConverter.java branches/jaxx-2.X/jaxx-compiler/src/main/java/jaxx/compiler/types/KeyStrokeConverter.java branches/jaxx-2.X/jaxx-compiler/src/main/java/jaxx/compiler/types/PrimitiveConverter.java branches/jaxx-2.X/jaxx-compiler/src/main/java/jaxx/compiler/types/TypeConverter.java branches/jaxx-2.X/jaxx-compiler/src/main/java/jaxx/compiler/types/TypeManager.java Log: Evolution #100: am?\195?\169lioration du design du compilateur Modified: branches/jaxx-2.X/jaxx-compiler/src/main/java/jaxx/compiler/types/ColorConverter.java =================================================================== --- branches/jaxx-2.X/jaxx-compiler/src/main/java/jaxx/compiler/types/ColorConverter.java 2009-10-23 18:01:04 UTC (rev 1587) +++ branches/jaxx-2.X/jaxx-compiler/src/main/java/jaxx/compiler/types/ColorConverter.java 2009-10-24 11:30:36 UTC (rev 1588) @@ -10,6 +10,13 @@ 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() + ")"; Modified: branches/jaxx-2.X/jaxx-compiler/src/main/java/jaxx/compiler/types/GridBagConstraintsConverter.java =================================================================== --- branches/jaxx-2.X/jaxx-compiler/src/main/java/jaxx/compiler/types/GridBagConstraintsConverter.java 2009-10-23 18:01:04 UTC (rev 1587) +++ branches/jaxx-2.X/jaxx-compiler/src/main/java/jaxx/compiler/types/GridBagConstraintsConverter.java 2009-10-24 11:30:36 UTC (rev 1588) @@ -9,6 +9,13 @@ 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 + ", " + Modified: branches/jaxx-2.X/jaxx-compiler/src/main/java/jaxx/compiler/types/InsetsConverter.java =================================================================== --- branches/jaxx-2.X/jaxx-compiler/src/main/java/jaxx/compiler/types/InsetsConverter.java 2009-10-23 18:01:04 UTC (rev 1587) +++ branches/jaxx-2.X/jaxx-compiler/src/main/java/jaxx/compiler/types/InsetsConverter.java 2009-10-24 11:30:36 UTC (rev 1588) @@ -10,6 +10,11 @@ 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 + ")"; Modified: branches/jaxx-2.X/jaxx-compiler/src/main/java/jaxx/compiler/types/KeyStrokeConverter.java =================================================================== --- branches/jaxx-2.X/jaxx-compiler/src/main/java/jaxx/compiler/types/KeyStrokeConverter.java 2009-10-23 18:01:04 UTC (rev 1587) +++ branches/jaxx-2.X/jaxx-compiler/src/main/java/jaxx/compiler/types/KeyStrokeConverter.java 2009-10-24 11:30:36 UTC (rev 1588) @@ -9,6 +9,11 @@ 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() + "\")"; } Modified: branches/jaxx-2.X/jaxx-compiler/src/main/java/jaxx/compiler/types/PrimitiveConverter.java =================================================================== --- branches/jaxx-2.X/jaxx-compiler/src/main/java/jaxx/compiler/types/PrimitiveConverter.java 2009-10-23 18:01:04 UTC (rev 1587) +++ branches/jaxx-2.X/jaxx-compiler/src/main/java/jaxx/compiler/types/PrimitiveConverter.java 2009-10-24 11:30:36 UTC (rev 1588) @@ -9,6 +9,30 @@ 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()); Modified: branches/jaxx-2.X/jaxx-compiler/src/main/java/jaxx/compiler/types/TypeConverter.java =================================================================== --- branches/jaxx-2.X/jaxx-compiler/src/main/java/jaxx/compiler/types/TypeConverter.java 2009-10-23 18:01:04 UTC (rev 1587) +++ branches/jaxx-2.X/jaxx-compiler/src/main/java/jaxx/compiler/types/TypeConverter.java 2009-10-24 11:30:36 UTC (rev 1588) @@ -6,6 +6,8 @@ public interface TypeConverter { + Class<?>[] getSupportedTypes(); + String getJavaCode(Object object); Object convertFromString(String string, Class<?> type); Modified: branches/jaxx-2.X/jaxx-compiler/src/main/java/jaxx/compiler/types/TypeManager.java =================================================================== --- branches/jaxx-2.X/jaxx-compiler/src/main/java/jaxx/compiler/types/TypeManager.java 2009-10-23 18:01:04 UTC (rev 1587) +++ branches/jaxx-2.X/jaxx-compiler/src/main/java/jaxx/compiler/types/TypeManager.java 2009-10-24 11:30:36 UTC (rev 1588) @@ -6,19 +6,31 @@ 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) {
participants (1)
-
tchemit@users.nuiton.org