public static ImmutableList<Request> getAllRequests(
     final Ds3ApiSpec spec, final Ds3DocSpec docSpec) throws ParseException {
   final ImmutableList.Builder<Request> allRequestsBuilder = ImmutableList.builder();
   if (ConverterUtil.hasContent(spec.getRequests())) {
     for (final Ds3Request ds3Request : spec.getRequests()) {
       allRequestsBuilder.add(RequestConverter.toRequest(ds3Request, docSpec));
     }
   }
   return allRequestsBuilder.build();
 }
 @Test
 public void twoRequestHandlers() throws IOException {
   final Ds3SpecParser parser = new Ds3SpecParserImpl();
   final Ds3ApiSpec spec =
       parser.getSpec(
           Ds3SpecParserImpl_Test.class.getResourceAsStream("/specs/twoRequestHandlers.xml"));
   assertThat(spec, is(notNullValue()));
   assertThat(spec.getRequests(), is(notNullValue()));
   assertThat(spec.getRequests().size(), is(2));
   assertThat(
       spec.getRequests().get(0).getName(),
       is("com.spectralogic.s3.server.handler.reqhandler.amazons3.GetObjectRequest"));
   assertThat(
       spec.getRequests().get(1).getName(),
       is("com.spectralogic.s3.server.handler.reqhandler.amazons3.AbortMultiPartUploadRequest"));
 }
 /** Requests with optional paging require an extra "ds3_paging" member */
 public static ImmutableSet<String> getPaginatedTypes(final Ds3ApiSpec spec) {
   return spec.getRequests()
       .stream()
       .filter(Ds3RequestClassificationUtil::supportsPaginationRequest)
       .map(req -> RequestConverter.getResponseType(req.getDs3ResponseCodes()))
       .collect(GuavaCollectors.immutableSet());
 }
 @Test
 public void fullXml_3_2() throws IOException {
   final Ds3SpecParser parser = new Ds3SpecParserImpl();
   final Ds3ApiSpec spec =
       parser.getSpec(Ds3SpecParserImpl_Test.class.getResourceAsStream("/specs/3_2_fullXml.xml"));
   assertThat(spec, is(notNullValue()));
   assertThat(spec.getRequests(), is(notNullValue()));
   assertThat(spec.getTypes(), is(notNullValue()));
 }
  @Test
  public void SingleRequestHandler() throws IOException {
    final Ds3SpecParser parser = new Ds3SpecParserImpl();
    final Ds3ApiSpec spec =
        parser.getSpec(
            Ds3SpecParserImpl_Test.class.getResourceAsStream("/specs/singleRequestHandler.xml"));
    assertThat(spec, is(notNullValue()));
    assertThat(spec.getRequests().size(), is(1));

    final Ds3Request ds3Request = spec.getRequests().get(0);
    assertThat(
        ds3Request.getName(),
        is("com.spectralogic.s3.server.handler.reqhandler.amazons3.GetObjectRequest"));
    assertThat(ds3Request.getHttpVerb(), is(HttpVerb.GET));
    assertThat(ds3Request.getClassification(), is(Classification.amazons3));
    assertThat(ds3Request.getBucketRequirement(), is(Requirement.REQUIRED));
    assertThat(ds3Request.getObjectRequirement(), is(Requirement.REQUIRED));
    assertThat(ds3Request.getAction(), is(nullValue()));
    assertThat(ds3Request.getResource(), is(nullValue()));
    assertThat(ds3Request.getResourceType(), is(nullValue()));
    assertThat(ds3Request.getOperation(), is(nullValue()));

    assertThat(ds3Request.getDs3ResponseCodes().size(), is(1));
    assertThat(ds3Request.getDs3ResponseCodes().get(0).getCode(), is(200));
    assertThat(ds3Request.getDs3ResponseCodes().get(0).getDs3ResponseTypes().size(), is(1));
    assertThat(
        ds3Request.getDs3ResponseCodes().get(0).getDs3ResponseTypes().get(0).getType(),
        is("java.lang.String"));
    assertThat(
        ds3Request.getDs3ResponseCodes().get(0).getDs3ResponseTypes().get(0).getComponentType(),
        is(nullValue()));

    assertThat(ds3Request.getOptionalQueryParams().size(), is(0));
    assertThat(ds3Request.getRequiredQueryParams().size(), is(1));
    assertThat(ds3Request.getRequiredQueryParams().get(0).getName(), is("Id"));
    assertThat(ds3Request.getRequiredQueryParams().get(0).getType(), is("java.util.UUID"));
  }