public MetadataRequest deserialize()

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);
  }