public Object execute(Object source) throws ConversionExecutionException {
if (source == null || converter.getSourceClass().isInstance(source)) {
try {
return converter.convertSourceToTargetClass(source, targetClass);
} catch (Exception e) {
throw new ConversionExecutionException(source, getSourceClass(), getTargetClass(), e);
}
} else if (converter.getTargetClass().isInstance(source)) {
try {
return converter.convertTargetToSourceClass(source, sourceClass);
} catch (Exception e) {
throw new ConversionExecutionException(source, converter.getTargetClass(), getSourceClass(), e);
}
} else {
throw new ConversionExecutionException(source, getSourceClass(), getTargetClass(), "Source object "
+ source + " to convert is expected to be an instance of [" + converter.getSourceClass().getName()
+ "] or [" + converter.getTargetClass().getName() + "]");
}
}