protected List<FunctionDef> findAvailableFunctions(Class<?> clazz, ClassLoader classLoader) { List<FunctionDef> result = new ArrayList<>(); Class<?> paramClass; for (FunctionDef functionDef : FunctionsRegistry.getInstance().getFunctions()) { try { paramClass = classLoader.loadClass(functionDef.getParams().get(0).getType()); if (paramClass.isAssignableFrom(clazz)) { result.add(functionDef); } } catch (ClassNotFoundException e) { LOGGER.warn("Uncommon error, internal function param type was not resolved: " + functionDef.getParams().get(0).getType()); } } return result; }
private void initParams(String function, List<String> paramValues) { removeParams(); Map<Integer, String> paramValue = new HashMap<>(); if (paramValues != null) { for (int i = 0; i < paramValues.size(); i++) { paramValue.put(i, paramValues.get(i)); } } FunctionDef functionDef = functionSearchService.getFunction(function); ParamDef paramDef; for (int i = 1; i < functionDef.getParams().size(); i++) { paramDef = functionDef.getParams().get(i); ConditionParamPresenter param = newParamPresenter(); currentParams.add(param); param.setName(functionNamingService.getParamName(functionDef.getName(), paramDef.getName())); param.setHelp(functionNamingService.getParamHelp(functionDef.getName(), paramDef.getName())); param.setValue(paramValue.get(i)); view.addParam(param.getView().getElement()); param.setOnChangeCommand(this::onParamChange); } }
private Condition parse(FunctionDef functionDef) throws ParseException { parseReturnSentence(); functionName = parseFunctionName(); functionName = functionName.substring(KIE_FUNCTIONS.length()); parseFunctionOpen(); Condition condition = new Condition(functionName); String param; String[] variableParam; boolean first = true; for (ParamDef ignored : functionDef.getParams()) { if (first) { variableParam = parseVariableParam(); param = variableParam[0] + (variableParam[1] != null ? ("." + variableParam[1]) : ""); first = false; } else { parseParamDelimiter(); param = parseStringParameter(); } condition.addParam(param); } //all parameters were consumed parseFunctionClose(); parseSentenceClose(); return condition; }