private static MethodAccess lookupOverloadedMethod(boolean respectIgnore, String view, Set<String> ignoreProperties, Iterable<MethodAccess> invokers, List<Object> list, FieldsAccessor fieldsAccessor, boolean[] flag, boolean loose) { MethodAccess method = null; loop: for (MethodAccess m : invokers) { Class<?>[] parameterTypes = m.parameterTypes(); if (!(parameterTypes.length == list.size())) { continue; } for (int index = 0; index < parameterTypes.length; index++) { if (!matchAndConvertArgs(respectIgnore, view, fieldsAccessor, list, m, parameterTypes, index, ignoreProperties, flag, loose)) { continue loop; } } method = m; break; } return method; }
private static MethodAccess lookupOverloadedMethod(boolean respectIgnore, String view, Set<String> ignoreProperties, Iterable<MethodAccess> invokers, List<Object> list, FieldsAccessor fieldsAccessor, boolean[] flag, boolean loose) { MethodAccess method = null; loop: for (MethodAccess m : invokers) { Class<?>[] parameterTypes = m.parameterTypes(); if (!(parameterTypes.length == list.size())) { continue; } for (int index = 0; index < parameterTypes.length; index++) { if (!matchAndConvertArgs(respectIgnore, view, fieldsAccessor, list, m, parameterTypes, index, ignoreProperties, flag, loose)) { continue loop; } } method = m; break; } return method; }
private static Object[] convertArguments(boolean respectIgnore, String view, Set<String> ignoreProperties, Object object, List<?> argsList, MethodAccess methodAccess ) { List<Object> convertedArguments = new ArrayList(argsList); Class<?>[] parameterTypes = methodAccess.parameterTypes(); boolean[] flag = new boolean[1]; if (convertedArguments.size() != parameterTypes.length) { return Exceptions.die(Object[].class, "The list size does not match the parameter" + " length of the method. Unable to invoke method", methodAccess.name(), "on object", object, "with arguments", convertedArguments); } FieldsAccessor fieldsAccessor = FieldAccessMode.FIELD.create(true); for (int index = 0; index < parameterTypes.length; index++) { if (!matchAndConvertArgs(respectIgnore, view, fieldsAccessor, convertedArguments, methodAccess, parameterTypes, index, ignoreProperties, flag, true)) { return Exceptions.die(Object[].class, index, "Unable to invoke method as argument types did not match", methodAccess.name(), "on object", object, "with arguments", convertedArguments, "\nValue at index = ", convertedArguments.get(index)); } } return convertedArguments.toArray(new Object[convertedArguments.size()]); }
private static Object[] convertArguments(boolean respectIgnore, String view, Set<String> ignoreProperties, Object object, List<?> argsList, MethodAccess methodAccess ) { List<Object> convertedArguments = new ArrayList(argsList); Class<?>[] parameterTypes = methodAccess.parameterTypes(); boolean[] flag = new boolean[1]; if (convertedArguments.size() != parameterTypes.length) { return Exceptions.die(Object[].class, "The list size does not match the parameter" + " length of the method. Unable to invoke method", methodAccess.name(), "on object", object, "with arguments", convertedArguments); } FieldsAccessor fieldsAccessor = FieldAccessMode.FIELD.create(true); for (int index = 0; index < parameterTypes.length; index++) { if (!matchAndConvertArgs(respectIgnore, view, fieldsAccessor, convertedArguments, methodAccess, parameterTypes, index, ignoreProperties, flag, true)) { return Exceptions.die(Object[].class, index, "Unable to invoke method as argument types did not match", methodAccess.name(), "on object", object, "with arguments", convertedArguments, "\nValue at index = ", convertedArguments.get(index)); } } return convertedArguments.toArray(new Object[convertedArguments.size()]); }