Я работаю над миграцией с Mule 3.9 на 4.1.4, у меня есть Java-логика, вызываемая в глобальных функциях, определенных скриптом Groovy в global-config.xml в Mule 3.9, и пытаюсь перенести его в Mule 4 с использованием следующего подхода.
Вот один случай использования, когда статический метод java принимает Map в качестве аргумента, в Dataweave 2.0 я не видел ни одного примера, когда Dataweave вызывал бы java-метод, имеющий объект Map.Так как опробованный ниже вариант
Вариант-1: Существующий код
class JsonUtil {
public static List<Map<String, String>> getTableAndColumns(Map<String, Object> inputJsonMap) {
List<Map<String, String>> list = null;
//Lot of big logic that to get list out of input Map object
return list;
}
}
После борьбы с вариантом-1 потерял много времени, подумал попробовать вариант-2передача строки JSON методу java, затем преобразование ее в Map и повторное использование существующей логики.Но не повезло, некоторые другие проблемы см. В журналах ошибок для получения более подробной информации.
Пожалуйста, предложите мне, если есть какое-либо решение для этого ???
Опция-2: Существующий код
class JsonUtil {
public static List<Map<String, String>> getTableAndColumns(String inputJsonStr) {
//Using my own utility class to convert JSON string to Map
Map<String, Object> inputJsonMap = MyUtil.toMap(inputJsonStr, Map.class)
List<Map<String, String>> list = null;
//Lot of big logic that to get list out of input Map object
return list;
}
}
Но, столкнувшись здесь с некоторыми проблемами, у меня есть библиотека Gson как часть модуля mule APIKit, я попытался добавить зависимость Gson в список включения в pom, также добавивв sharedLibrary все равно не повезло: (
Журнал ошибок:
An exception occurred while trying to execute function `com.mycompany.JsonUtil.getTableAndColumns(java.lang.String)`.
Caused by: java.lang.NoClassDefFoundError: com/google/gson/Gson
Unknown location
Trace:
at invoke (line: -1, column: -1)
at getTableAndColumns (line: -1, column: -1)
at main (line: 9, column: 16)" evaluating expression: "%dw 2.0
import java!com::mycompany::util::JsonUtil
output application/json
---
{
table_column: StringUtil::getTableAndColumns(vars.inputJson)
}