in hms-service-api/src/main/java/com/amazonaws/athena/hms/serde/MetadataRequestDeserializer.java [49:86]
public MetadataRequest deserialize(JsonParser jsonParser, DeserializationContext deserializationContext)
throws IOException, JsonProcessingException
{
if (jsonParser.getCurrentToken() != JsonToken.START_OBJECT) {
throw new IOException("Expected start object.");
}
RequestContext context = null;
String apiName = null;
ApiRequest request = null;
while (jsonParser.nextToken() != JsonToken.END_OBJECT) {
switch (jsonParser.getCurrentName()) {
case REQUEST_CONTEXT:
// move to field value
jsonParser.nextToken();
context = jsonParser.readValueAs(RequestContext.class);
break;
case API_NAME:
// move to field value
jsonParser.nextToken();
apiName = jsonParser.getValueAsString();
break;
case API_REQUEST:
// move to field value
jsonParser.nextToken();
// get the request class type
Class requestClass = apiHelper.getRequestClass(apiName);
if (requestClass == null) {
throw new IOException("Cannot find request class for " + apiName);
}
// deserialize value based on the request class type
request = (ApiRequest) jsonParser.readValueAs(requestClass);
break;
}
}
return new MetadataRequest(context, apiName, request);
}