Skip to content

Commit

Permalink
Process Map in function parameter list (#1472)
Browse files Browse the repository at this point in the history
Co-authored-by: George Fu <[email protected]>
  • Loading branch information
trivikr and kuhe authored Dec 16, 2024
1 parent 941cc0e commit 0480559
Showing 1 changed file with 19 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -296,13 +296,26 @@ static List<String> getFunctionParametersList(Map<String, Object> paramsMap) {
} else if (value instanceof Boolean) {
functionParametersList.add(String.format("%s: %s", key, value));
} else if (value instanceof List) {
if (!((List) value).isEmpty() && !(((List) value).get(0) instanceof String)) {
throw new CodegenException("Plugin function parameters not supported for type List<"
+ ((List) value).get(0).getClass() + ">");
List<?> valueList = (List<?>) value;
if (!valueList.isEmpty() && !(valueList.get(0) instanceof String)) {
throw new CodegenException("Plugin function parameters list must be List<String>");
}
functionParametersList.add(String.format("%s: [%s]",
key, ((List<String>) value).stream()
.collect(Collectors.joining("\", \"", "\"", "\""))));
List<String> valueStringList = valueList.stream()
.map(item -> String.format("'%s'", item))
.collect(Collectors.toList());
functionParametersList.add(String.format("'%s': [%s]",
key, valueStringList.stream().collect(Collectors.joining(", "))));
} else if (value instanceof Map) {
Map<?, ?> valueMap = (Map<?, ?>) value;
if (!valueMap.isEmpty() && valueMap.keySet().stream().anyMatch(k -> !(k instanceof String))
&& valueMap.values().stream().anyMatch(v -> !(v instanceof String))) {
throw new CodegenException("Plugin function parameters map must be Map<String, String>");
}
List<String> valueStringList = valueMap.entrySet().stream()
.map(entry -> String.format("'%s': '%s'", entry.getKey(), entry.getValue()))
.collect(Collectors.toList());
functionParametersList.add(String.format("%s: {%s}",
key, valueStringList.stream().collect(Collectors.joining(", "))));
} else {
// Future support for param type should be added in else if.
throw new CodegenException("Plugin function parameters not supported for type "
Expand Down

0 comments on commit 0480559

Please sign in to comment.