Bug 484655 - The data convertors of type Char, Byte and BigInteger are
missing
diff --git a/org.eclipse.xwt/src/org/eclipse/xwt/XWTLoader.java b/org.eclipse.xwt/src/org/eclipse/xwt/XWTLoader.java
index ebc37cf..0ad4606 100644
--- a/org.eclipse.xwt/src/org/eclipse/xwt/XWTLoader.java
+++ b/org.eclipse.xwt/src/org/eclipse/xwt/XWTLoader.java
@@ -98,6 +98,7 @@
 import org.eclipse.xwt.converters.SelectionToBoolean;

 import org.eclipse.xwt.converters.SetToIObservableCollection;

 import org.eclipse.xwt.converters.StringToBoolean;

+import org.eclipse.xwt.converters.StringToChar;

 import org.eclipse.xwt.converters.StringToColor;

 import org.eclipse.xwt.converters.StringToDoubleArray;

 import org.eclipse.xwt.converters.StringToDuration;

@@ -1446,8 +1447,11 @@
 		registerConvertor(DateToString.instance);

 		registerConvertor(EnumToString.instance);

 		registerConvertor(StringToInteger.instance);

+		registerConvertor(StringToChar.instance);

+		

 		// It is not supported by eclipse 3.4.1

 		registerConvertor(StringToNumberConverter.class, "toBigDecimal");

+		registerConvertor(StringToNumberConverter.class, "toBigInteger");

 		registerConvertor(StringToNumberConverter.class, "toByte", false);

 

 		registerConvertor(StringToNumberConverter.toLong(false));

@@ -1462,6 +1466,7 @@
 

 		// It is not supported by eclipse 3.4.1

 		registerConvertor(NumberToStringConverter.class, "fromBigDecimal");

+		registerConvertor(NumberToStringConverter.class, "fromBigInteger");

 		registerConvertor(NumberToStringConverter.class, "fromByte", false);

 

 		registerConvertor(NumberToStringConverter.fromLong(false));

diff --git a/org.eclipse.xwt/src/org/eclipse/xwt/converters/StringToChar.java b/org.eclipse.xwt/src/org/eclipse/xwt/converters/StringToChar.java
new file mode 100644
index 0000000..04f2e1f
--- /dev/null
+++ b/org.eclipse.xwt/src/org/eclipse/xwt/converters/StringToChar.java
@@ -0,0 +1,43 @@
+/*******************************************************************************

+ * Copyright (c) 2006, 2010 Soyatec (http://www.soyatec.com) and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors:

+ *     Soyatec - initial API and implementation

+ *******************************************************************************/

+package org.eclipse.xwt.converters;

+

+import org.eclipse.core.databinding.conversion.IConverter;

+import org.eclipse.xwt.XWTException;

+

+/**

+ * String to Boolean converter

+ * 

+ * @author yyang

+ */

+public class StringToChar implements IConverter {

+	public static StringToChar instance = new StringToChar();

+

+	public Object convert(Object fromObject) {

+		String str = (String) fromObject;

+		if (str != null) {

+			str = str.trim();

+			if (str.length() > 0) {

+				char c = str.charAt(0);

+				return c;

+			}

+		}

+		throw new XWTException(str + " is not a character");

+	}

+

+	public Object getFromType() {

+		return String.class;

+	}

+

+	public Object getToType() {

+		return Character.class;

+	}

+}

diff --git a/org.eclipse.xwt/src/org/eclipse/xwt/internal/core/Core.java b/org.eclipse.xwt/src/org/eclipse/xwt/internal/core/Core.java
index 343a34f..945b71f 100644
--- a/org.eclipse.xwt/src/org/eclipse/xwt/internal/core/Core.java
+++ b/org.eclipse.xwt/src/org/eclipse/xwt/internal/core/Core.java
@@ -288,7 +288,7 @@
 	public IConverter loadConvertor(Class<?> converter, String methodName,

 			boolean value) {

 		try {

-			Method method = converter.getDeclaredMethod(methodName);

+			Method method = converter.getDeclaredMethod(methodName, boolean.class);

 			Object object = method.invoke(null, value);

 			if (object instanceof IConverter) {

 				return (IConverter) object;

diff --git a/org.eclipse.xwt/src/org/eclipse/xwt/internal/utils/ObjectUtil.java b/org.eclipse.xwt/src/org/eclipse/xwt/internal/utils/ObjectUtil.java
index d5c00a5..adec2f4 100644
--- a/org.eclipse.xwt/src/org/eclipse/xwt/internal/utils/ObjectUtil.java
+++ b/org.eclipse.xwt/src/org/eclipse/xwt/internal/utils/ObjectUtil.java
@@ -46,6 +46,12 @@
 		if (type == boolean.class) {

 			return Boolean.class;

 		}

+		if (type == char.class) {

+			return Character.class;

+		}

+		if (type == byte.class) {

+			return Byte.class;

+		}

 		return type;

 	}

 

diff --git a/org.eclipse.xwt/src/org/eclipse/xwt/metadata/ModelUtils.java b/org.eclipse.xwt/src/org/eclipse/xwt/metadata/ModelUtils.java
index ed4976d..f4471fc 100644
--- a/org.eclipse.xwt/src/org/eclipse/xwt/metadata/ModelUtils.java
+++ b/org.eclipse.xwt/src/org/eclipse/xwt/metadata/ModelUtils.java
@@ -10,6 +10,8 @@
  *******************************************************************************/

 package org.eclipse.xwt.metadata;

 

+import java.beans.Introspector;

+

 /**

  * 

  * @author yyang

@@ -24,15 +26,6 @@
 		if (name == null || name.length() == 0) {

 			return name;

 		}

-		char c = name.charAt(0);

-		if (Character.isLowerCase(c)) {

-			return name;

-		}

-		if (name.length() > 1) {

-			if (Character.isUpperCase(name.charAt(1))) {

-				return name;

-			}

-		}

-		return Character.toLowerCase(name.charAt(0)) + name.substring(1);

+		return Introspector.decapitalize(name);

 	}

 }