in zetasql-toolkit-core/src/main/java/com/google/zetasql/toolkit/catalog/io/JsonCatalogDeserializer.java [261:290]
public FunctionInfo deserialize(
JsonElement jsonElement, java.lang.reflect.Type type, JsonDeserializationContext context)
throws JsonParseException {
JsonObject jsonObject =
getAsJsonObject(
jsonElement,
"Invalid JSON function: " + jsonElement + ". Functions should be objects.");
String functionName =
getFieldAsString(
jsonObject,
"name",
"Invalid JSON function: " + jsonElement + ". Field name should be string.");
FunctionSignature[] signatures =
Optional.ofNullable(jsonObject.get("signatures"))
.map(jsonSignatures -> context.deserialize(jsonSignatures, FunctionSignature[].class))
.map(FunctionSignature[].class::cast)
.orElseThrow(
() ->
new JsonParseException(
"Invalid JSON function: " + jsonElement + ". Signatures missing."));
return FunctionInfo.newBuilder()
.setNamePath(ImmutableList.of(functionName))
.setGroup("UDF")
.setMode(Mode.SCALAR)
.setSignatures(Arrays.asList(signatures))
.build();
}