public TypeConvertorRegistry()

in src/main/java/org/apache/bsf/util/type/TypeConvertorRegistry.java [35:155]


    public TypeConvertorRegistry() {
        // no-op convertors: cvt from primitive wrappers to the object wrapper
        TypeConvertor tc = new TypeConvertor() {
            public Object convert(final Class from, final Class to, final Object obj) {
                return obj;
            }

            public String getCodeGenString() {
                return "(Class from, Class to, Object obj) {\n" + "return obj;\n" + "}";
            }
        };
        register(Boolean.class, boolean.class, tc);
        register(boolean.class, Boolean.class, tc);
        register(Byte.class, byte.class, tc);
        register(byte.class, Byte.class, tc);
        register(Character.class, char.class, tc);
        register(char.class, Character.class, tc);
        register(Short.class, short.class, tc);
        register(short.class, Short.class, tc);
        register(Integer.class, int.class, tc);
        register(int.class, Integer.class, tc);
        register(Long.class, long.class, tc);
        register(long.class, Long.class, tc);
        register(Float.class, float.class, tc);
        register(float.class, Float.class, tc);
        register(Double.class, double.class, tc);
        register(double.class, Double.class, tc);

        // object to string: the registry special cases this one as the backup
        // if the target is string and there is no special convertor available
        // otherwise
        tc = new TypeConvertor() {
            public Object convert(final Class from, final Class to, final Object obj) {
                return (obj == null) ? "(null)" : obj.toString();
            }

            public String getCodeGenString() {
                return "(Class from, Class to, Object obj) {\n" + "return (obj == null) ? \"(null)\" : obj.toString ();\n" + "}";
            }
        };
        register(Object.class, String.class, tc);

        // convert strings to various primitives (both their object versions
        // and wrappers for primitive versions)
        tc = new TypeConvertor() {
            public Object convert(final Class from, final Class to, final Object obj) {
                final String str = (String) obj;
                if (to == Boolean.class || to == boolean.class) {
                    return Boolean.valueOf(str);
                } else if (to == Byte.class || to == byte.class) {
                    return Byte.valueOf(str);
                } else if (to == Character.class || to == char.class) {
                    return Character.valueOf(str.charAt(0));
                } else if (to == Short.class || to == short.class) {
                    return Short.valueOf(str);
                } else if (to == Integer.class || to == int.class) {
                    return Integer.valueOf(str);
                } else if (to == Long.class || to == long.class) {
                    return Long.valueOf(str);
                } else if (to == Float.class || to == float.class) {
                    return Float.valueOf(str);
                } else if (to == Double.class || to == double.class) {
                    return Double.valueOf(str);
                } else {
                    return null;
                }
            }

            public String getCodeGenString() {
                return "(Class from, Class to, Object obj) {\n" + "String str = (String) obj;\n" + "if (to == Boolean.class || to == boolean.class) {\n"
                        + "return Boolean.valueOf (str);\n" + "} else if (to == Byte.class || to == byte.class) {\n" + "return Byte.valueOf (str);\n"
                        + "} else if (to == Character.class || to == char.class) {\n" + "return Character.valueOf (str.charAt (0));\n"
                        + "} else if (to == Short.class || to == short.class) {\n" + "return Short.valueOf (str);\n"
                        + "} else if (to == Integer.class || to == int.class) {\n" + "return Integer.valueOf (str);\n"
                        + "} else if (to == Long.class || to == long.class) {\n" + "return Long.valueOf (str);\n"
                        + "} else if (to == Float.class || to == float.class) {\n" + "return Float.valueOf (str);\n"
                        + "} else if (to == Double.class || to == double.class) {\n" + "return Double.valueOf (str);\n" + "} else {\n" + "return null;\n"
                        + "}\n" + "}";
            }
        };
        register(String.class, boolean.class, tc);
        register(String.class, Boolean.class, tc);
        register(String.class, byte.class, tc);
        register(String.class, Byte.class, tc);
        register(String.class, char.class, tc);
        register(String.class, Character.class, tc);
        register(String.class, short.class, tc);
        register(String.class, Short.class, tc);
        register(String.class, int.class, tc);
        register(String.class, Integer.class, tc);
        register(String.class, long.class, tc);
        register(String.class, Long.class, tc);
        register(String.class, float.class, tc);
        register(String.class, Float.class, tc);
        register(String.class, double.class, tc);
        register(String.class, Double.class, tc);

        // strings to fonts
        tc = new TypeConvertor() {
            public Object convert(final Class from, final Class to, final Object obj) {
                return Font.decode((String) obj);
            }

            public String getCodeGenString() {
                return "(Class from, Class to, Object obj) {\n" + "return Font.decode ((String) obj);\n" + "}";
            }
        };
        register(String.class, Font.class, tc);

        // strings to colors
        tc = new TypeConvertor() {
            public Object convert(final Class from, final Class to, final Object obj) {
                return Color.decode((String) obj);
            }

            public String getCodeGenString() {
                return "(Class from, Class to, Object obj) {\n" + "return Color.decode ((String) obj);\n" + "}";
            }
        };
        register(String.class, Color.class, tc);
    }