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);
}
}