@Override
protected Object createInstance(final ScalarNode node, final CompactData data)
throws Exception {
Class<?> clazz = getClassForName(data.getPrefix());
Constructor<?>[] constructors = clazz.getDeclaredConstructors();
ConversionService conversionService = applicationContext.getBean(ConversionService.class);
// find best matching constructor
for (Constructor<?> constructor : constructors) {
Class<?>[] parameterTypes = constructor.getParameterTypes();
if (parameterTypes.length == data.getArguments().size()) {
boolean found = true;
int p = 0;
Object[] args = new Object[parameterTypes.length];
while (found && p < parameterTypes.length) {
Class<?> parameterType = parameterTypes[p];
boolean canConvert = conversionService.canConvert(String.class, parameterType);
if (canConvert) {
args[p] = conversionService.convert(data.getArguments().get(p), parameterType);
}
found &= canConvert;
p++;
}
if (found) {