protected void readConstructorArgument(BeanContainer container, XmlReader reader, LoaderContext context, BeanDefinitionBase bean) { ArgumentDefinition arg = new ArgumentDefinition(); arg.setTypeClassName(reader.getAttribute(TYPE_ATTRIBUTE)); arg.setDefaultValue(reader.getAttribute(DEFAULT_VALUE_ATTRIBUTE)); arg.setValueDefinition(readValue(container, reader, context, CONSTRUCTOR_ARG_ELEMENT)); bean.addConstructorArgument(arg); }
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()]); }
ArgumentDefinition arg = new ArgumentDefinition(); arg.setTypeClassName(reader.getAttribute(TYPE_ATTRIBUTE)); arg.setValueDefinition(readValue(container, reader, context, CONSTRUCTOR_ARG_ELEMENT)); md.addArgument(arg); ArgumentDefinition ad = md.getArguments().get(i); String ptClassName = ad.getTypeClassName(); if (!Strings.isEmpty(ptClassName) && !(ptClassName.equals(pt.getSimpleName()) || ptClassName.equals(pt.getName()))) { matched = false;
Class<?> pt = paramTypes[i]; ArgumentDefinition ad = bean.getConstructorArguments().get(i); String ptClassName = ad.getTypeClassName(); if (!Strings.isEmpty(ptClassName) && !(ptClassName.equals(pt.getSimpleName()) || ptClassName.equals(pt.getName()))) { matched = false; break; } else if (Strings.isEmpty(ptClassName)) { ValueDefinition vd = ad.getValueDefinition(); if (vd == null) { continue; Class<?> type = beanConstructor.getParameterTypes()[i]; if (Strings.isEmpty(ad.getTypeClassName())) { ad.setTypeClassName(type.getName()); if (null == ad.getValueDefinition().getDefinedType()) { ad.getValueDefinition().setDefinedType(type);
public <T> BeanDefinitionBase create(String id, Class<? super T> typeClass, boolean primary, String name, boolean lazyInit, Class<?> beanClass, Object... constructorArguments) { BeanDefinitionBase bd = new BeanDefinitionBase(RUNTIME_SOURCE); bd.setId(id); bd.setName(name); bd.setType(typeClass); bd.setBeanClass(beanClass); bd.setBeanClassType(BeanType.of(beanClass)); bd.setPrimary(primary); bd.setSingleton(true); bd.setLazyInit(lazyInit); for (Object arg : constructorArguments) { bd.addConstructorArgument(new ArgumentDefinition(new ValueDefinition(arg))); } resolveBeanConstructor(bd); return bd; }