/** * Returns methods which call directly or indirectly methods from inputs * passing the parameter unchanged * * @param inputs * input methods with parameter * @return Map where keys are methods and values are parameter indexes which can be passed to requested methods unchanged */ public Map<MethodDescriptor, int[]> findLinkedMethods(Set<MethodParameter> inputs) { Map<MethodDescriptor, int[]> result = new HashMap<>(); for (MethodParameter found : findLinked(inputs)) { int[] params = result.get(found.getMethodDescriptor()); if(params == null) { params = new int[] {found.getParameterNumber()}; result.put(found.getMethodDescriptor(), params); } else { int[] newParams = new int[params.length+1]; System.arraycopy(params, 0, newParams, 0, params.length); newParams[params.length] = found.getParameterNumber(); result.put(found.getMethodDescriptor(), newParams); } } return result; }
/** * Returns methods which call directly or indirectly methods from inputs * passing the parameter unchanged * * @param inputs * input methods with parameter * @return Map where keys are methods and values are parameter indexes which can be passed to requested methods unchanged */ public Map<MethodDescriptor, int[]> findLinkedMethods(Set<MethodParameter> inputs) { Map<MethodDescriptor, int[]> result = new HashMap<>(); for (MethodParameter found : findLinked(inputs)) { int[] params = result.get(found.getMethodDescriptor()); if(params == null) { params = new int[] {found.getParameterNumber()}; result.put(found.getMethodDescriptor(), params); } else { int[] newParams = new int[params.length+1]; System.arraycopy(params, 0, newParams, 0, params.length); newParams[params.length] = found.getParameterNumber(); result.put(found.getMethodDescriptor(), newParams); } } return result; }