private Set<Class<?>> getOutputs(List<ResolvedFunction> prevFuncs) { Set<Class<?>> outputs = new HashSet<>(); for (ResolvedFunction func : prevFuncs) { outputs.add(func.getResultClass()); } return outputs; }
private Set<Class<?>> getOutputs(List<ResolvedFunction> prevFuncs) { Set<Class<?>> outputs = new HashSet<>(); for (ResolvedFunction func : prevFuncs) { outputs.add(func.getResultClass()); } return outputs; }
private int reduceByResultType(List<ResolvedFunction> endFuncs, ValueType resultType) { int progressed = 0; LinkedList<ResolvedFunction> tmpList = new LinkedList<>(endFuncs); for (ResolvedFunction endFunc : tmpList) { if (!resultType.getValueClass().isAssignableFrom(endFunc.getResultClass())) { endFuncs.remove(endFunc); logger.trace("removed function '" + endFunc + "' because it does not yield type " + resultType); progressed++; } } if (endFuncs.size() == 0) { throw new RuntimeException("No end funcs were found which yield result type " + resultType); } return progressed; }
private int reduceByRequiredResultsType(List<ResolvedFunction> endFuncs, Class<?> resultType) { int progressed = 0; LinkedList<ResolvedFunction> tmpList = new LinkedList<>(endFuncs); for (ResolvedFunction endFunc : tmpList) { if (resultType != null && !ClassUtils.isAssignable(endFunc.getResultClass(), resultType, true)) { endFuncs.remove(endFunc); String logmsg = "BY-REQUIRED-RESULT-TYPE removed function '" + endFunc + "' because is not assignable to " + resultType; logger.trace(logmsg); progressed++; } } if (endFuncs.size() == 0) { throw new RuntimeException("BY-REQUIRED-RESULT-TYPE No end funcs were found which are assignable to " + resultType); } return progressed; }
sb.append(getMethod().getDeclaringClass().getName()); sb.append("->").append(getResultClass().getName());
@Override public int compare(ResolvedFunction o1, ResolvedFunction o2) { ValueType iv1 = ValueType.valueOfAssignableClass(o1.getArgType()); ValueType iv2 = ValueType.valueOfAssignableClass(o2.getArgType()); int inputComparison = iv1.compareTo(iv2); if (inputComparison != 0) { return inputComparison; } iv1 = ValueType.valueOfAssignableClass(o1.getResultClass()); iv2 = ValueType.valueOfAssignableClass(o2.getResultClass()); return iv1.compareTo(iv2); } }