protected void orderParameters(List<ParameterMetaData> parameters) { ParameterMetaData[] pmds = new ParameterMetaData[parameters.size()]; for(ParameterMetaData pmd : parameters) { int index = pmd.getIndex(); // lets first try to set those with explicit index if (pmd instanceof AbstractConstructorArg && ((AbstractConstructorArg)pmd).isExplicitIndex()) { if (pmds[index] != null) throw new IllegalArgumentException("Argument with index: " + index + " already set!"); pmds[index] = pmd; } } int index = 0; for(ParameterMetaData pmd : parameters) { // then just put the others in the free places if ((pmd instanceof AbstractConstructorArg && ((AbstractConstructorArg)pmd).isExplicitIndex() == false)) { while(pmds[index] != null) index++; pmds[index] = pmd; } index++; } // todo clone md parameters.clear(); parameters.addAll(Arrays.asList(pmds)); }
public TypeInfo getType(MetaDataVisitor visitor, MetaDataVisitorNode previous) throws Throwable { if (previous instanceof ParameterMetaData == false) throw new IllegalArgumentException("Previous node is not ParameterMetaData as expected: " + previous); ParameterMetaData parameter = (ParameterMetaData) previous; KernelControllerContext context = visitor.getControllerContext(); String method = (methodName != null ? methodName : type); String[] parameterTypes = Configurator.getParameterTypes(false, parameters); MethodInfo methodInfo = Configurator.findMethodInfo(getClassInfo(context), method, parameterTypes); return applyCollectionOrMapCheck(methodInfo.getParameterTypes()[parameter.getIndex()]); }
String[] parameterTypes = Configurator.getParameterTypes(false, parameters); MethodInfo methodInfo = Configurator.findMethodInfo(classInfo, factoryMethod, parameterTypes, factoryClassName != null, true); return applyCollectionOrMapCheck(methodInfo.getParameterTypes()[parameter.getIndex()]); String[] paramTypes = Configurator.getParameterTypes(false, parameters); ConstructorInfo ci = Configurator.findConstructorInfo(beanInfo.getClassInfo(), paramTypes); return applyCollectionOrMapCheck(ci.getParameterTypes()[parameter.getIndex()]);