Class<?> currentValueType = currentValue.getClass();
Class<?> valueType = value.getClass();
Object normalizedValue = value;
if (!currentValueType.isAssignableFrom(valueType) && !valueType.isAssignableFrom(currentValueType)) {
IConverter converter = XWT.findConvertor(valueType, currentValueType);
if (converter != null) {
normalizedValue = converter.convert(normalizedValue);
}
else if (value != null && value.toString().trim().length() > 0){
boolean found = false;
// in case where the value is a boolean
converter = XWT.findConvertor(valueType, Boolean.class);
if (converter != null) {
try {
Object booleanValue = converter.convert(value);
if (booleanValue != null) {
converter = XWT.findConvertor(currentValueType, Boolean.class);
if (converter != null) {
currentValue = converter.convert(currentValue);
normalizedValue = booleanValue;
found = true;
}
}
} catch (RuntimeException e) {
}
}
if (!found) {
converter = XWT.findConvertor(valueType, Integer.class);
if (converter != null) {
try {
Object booleanValue = converter.convert(value);
if (booleanValue != null) {
converter = XWT.findConvertor(currentValueType, Integer.class);
if (converter != null) {
currentValue = converter.convert(currentValue);
normalizedValue = booleanValue;
found = true;
}
}
} catch (Exception e) {
}
}
}
if (!found) {
converter = XWT.findConvertor(valueType, Double.class);
if (converter != null) {
try {
Object booleanValue = converter.convert(value);
if (booleanValue != null) {
converter = XWT.findConvertor(currentValueType, Double.class);
if (converter != null) {
currentValue = converter.convert(currentValue);
normalizedValue = booleanValue;
found = true;
}
}
} catch (Exception e) {
}
}
}
if (!found) {
converter = XWT.findConvertor(valueType, String.class);
if (converter != null) {
try {
Object booleanValue = converter.convert(value);
if (booleanValue != null) {
converter = XWT.findConvertor(currentValueType, String.class);
if (converter != null) {
currentValue = converter.convert(currentValue);
normalizedValue = booleanValue;
found = true;
}
}
} catch (Exception e) {