@SuppressWarnings("unchecked") protected Collection<Object> createCollection(BeanDefinitionBase bd, ValueDefinition vd,Collection<Object> col){ try { Class<?> definedType = vd.getDefinedType(); if(definedType != null){ if(definedType.isInterface() || Modifier.isAbstract(definedType.getModifiers())){ boolean isAssignableFrom = definedType.isAssignableFrom(vd.getDefinedValue().getClass()); if(!isAssignableFrom){ throw new BeanDefinitionException("Error create instance of collection type '" + vd.getDefinedType() + "' bean " + bd + " cause "+definedType+" is interface or abstract class and the value type " + vd.getDefinedValue().getClass().getName() + " is not the subclass of "+definedType); }else{ definedType = vd.getDefinedValue().getClass(); } } return (Collection<Object>)Reflection.newInstance(definedType); } } catch (ReflectException e) { throw new BeanDefinitionException("Error create instance of collection type '" + vd.getDefinedType() + "' bean " + bd, e); } if(col instanceof List){ return new ArrayList<Object>(); }else if(col instanceof Set){ return new ArrayList<Object>(); }else{ throw new BeanDefinitionException("Invalid collection type '" + col.getClass().getName() + "', only 'list' and 'set' are supported, please check the bean " + bd); } }
protected Object[] doResolveArgs(final BeanDefinitionBase bd,final List<ArgumentDefinition> argDefs){ List<Object> args = new ArrayList<>(); for(ArgumentDefinition ad : argDefs){ if(null != ad.getValueDefinition().getDefinedType()){ args.add(Converts.convert(doResolveValue(bd, ad.getValueDefinition(),ad.getDefaultValue()),ad.getValueDefinition().getDefinedType())); }else{ args.add(doResolveValue(bd, ad.getValueDefinition(),ad.getDefaultValue())); } } return args.toArray(new Object[args.size()]); }
Map createdMap = null; if(null == vd.getDefinedType()){ createdMap = new LinkedHashMap(definedMap.size()); }else{ Class<?> clzz = vd.getDefinedType(); if(clzz.isInterface() || Modifier.isAbstract(clzz.getModifiers())){ boolean isAssignableFrom = clzz.isAssignableFrom(vd.getDefinedValue().getClass()); if(!isAssignableFrom){ throw new BeanDefinitionException("Error create instance of collection type '" + vd.getDefinedType() + "' bean " + bd + " cause "+clzz+" is interface or abstract class and the value type " + vd.getDefinedValue().getClass().getName() + " is not the subclass of "+clzz);
if (null == ad.getValueDefinition().getDefinedType()) { ad.getValueDefinition().setDefinedType(type);
}else{ definedValue = placeholderResolver.resolveString(defaultValue); vd.resolved(doConvertValue(definedValue, vd.getDefinedType())); vd.resolved(doConvertValue(resolvedValue, vd.getDefinedType())); return resolvedValue;