@Test
    public void testEmptyProduces() throws Exception {
      final ResourceConfig rc = new ResourceConfig(EmptyProducesTestResource.class);
      rc.property(ServerProperties.WADL_FEATURE_DISABLE, false);

      final ApplicationHandler applicationHandler = new ApplicationHandler(rc);

      final ContainerResponse containerResponse =
          applicationHandler
              .apply(
                  new ContainerRequest(
                      URI.create("/"),
                      URI.create("/application.wadl"),
                      "GET",
                      null,
                      new MapPropertiesDelegate()))
              .get();

      assertEquals(200, containerResponse.getStatus());

      ((ByteArrayInputStream) containerResponse.getEntity()).reset();

      final DocumentBuilderFactory bf = DocumentBuilderFactory.newInstance();
      bf.setNamespaceAware(true);
      bf.setValidating(false);
      if (!SaxHelper.isXdkDocumentBuilderFactory(bf)) {
        bf.setXIncludeAware(false);
      }
      final DocumentBuilder b = bf.newDocumentBuilder();
      final Document d = b.parse((InputStream) containerResponse.getEntity());
      printSource(new DOMSource(d));
      final XPath xp = XPathFactory.newInstance().newXPath();
      xp.setNamespaceContext(
          new SimpleNamespaceResolver("wadl", "http://wadl.dev.java.net/2009/02"));

      final NodeList responseElements =
          (NodeList)
              xp.evaluate(
                  "/wadl:application/wadl:resources[@path!='application.wadl']//wadl:method/wadl:response",
                  d,
                  XPathConstants.NODESET);

      for (int i = 0; i < responseElements.getLength(); i++) {
        final Node item = responseElements.item(i);

        assertEquals(0, item.getChildNodes().getLength());
        assertEquals(0, item.getAttributes().getLength());
      }
    }
  @Test
  public void testDefaultPathParamValueFoo() throws ExecutionException, InterruptedException {
    initiateWebApplication(FooResource.class);

    ContainerResponse response = getResponseContext("/foo");
    Assert.assertEquals("default-id", response.getEntity());
  }
 private void _test(ApplicationHandler handler, String requestUri, String expected)
     throws InterruptedException, ExecutionException {
   final ContainerResponse response =
       handler.apply(RequestContextBuilder.from(requestUri, "GET").build()).get();
   assertEquals(200, response.getStatus());
   assertEquals(expected, response.getEntity());
 }
  @Test
  public void testDefaultPathParamValueOnAnotherResource1()
      throws ExecutionException, InterruptedException {
    initiateWebApplication(AnotherResource.class);

    ContainerResponse response = getResponseContext("/foo/test/bar/barrr");
    Assert.assertEquals("test:barrr", response.getEntity());
  }
  @Test
  public void testListOfStringReaderProvider() throws ExecutionException, InterruptedException {
    initiateWebApplication(ListOfStringResource.class, ListOfStringReaderProvider.class);
    final ContainerResponse responseContext =
        getResponseContext(
            UriBuilder.fromPath("/").queryParam("l", "1,2," + "3").build().toString());

    final String s = (String) responseContext.getEntity();

    assertEquals(Collections.singletonList(Arrays.asList("1", "2", "3")).toString(), s);
  }
    /**
     * Test overriding WADL's /application/resources/@base attribute.
     *
     * @throws Exception in case of unexpected test failure.
     */
    @Test
    public void testCustomWadlResourcesBaseUri() throws Exception {
      final ResourceConfig rc = new ResourceConfig(WidgetsResource.class, ExtraResource.class);
      rc.property(ServerProperties.WADL_GENERATOR_CONFIG, MyWadlGeneratorConfig.class.getName());

      final ApplicationHandler applicationHandler = new ApplicationHandler(rc);

      final ContainerResponse containerResponse =
          applicationHandler
              .apply(
                  new ContainerRequest(
                      URI.create("/"),
                      URI.create("/application.wadl"),
                      "GET",
                      null,
                      new MapPropertiesDelegate()))
              .get();

      final DocumentBuilderFactory bf = DocumentBuilderFactory.newInstance();
      bf.setNamespaceAware(true);
      bf.setValidating(false);
      if (!SaxHelper.isXdkDocumentBuilderFactory(bf)) {
        bf.setXIncludeAware(false);
      }
      final DocumentBuilder b = bf.newDocumentBuilder();

      ((ByteArrayInputStream) containerResponse.getEntity()).reset();

      final Document d = b.parse((InputStream) containerResponse.getEntity());
      printSource(new DOMSource(d));
      final XPath xp = XPathFactory.newInstance().newXPath();
      xp.setNamespaceContext(
          new SimpleNamespaceResolver("wadl", "http://wadl.dev.java.net/2009/02"));
      // check base URI
      final String val =
          (String) xp.evaluate("/wadl:application/wadl:resources/@base", d, XPathConstants.STRING);
      assertEquals(val, MyWadlGeneratorConfig.MyWadlGenerator.CUSTOM_RESOURCES_BASE_URI);
    }
 public String test(HttpMethodOverrideFilter.Source... sources) {
   ResourceConfig rc = new ResourceConfig(Resource.class);
   HttpMethodOverrideFilter.enableFor(rc, sources);
   ApplicationHandler handler = new ApplicationHandler(rc);
   try {
     ContainerResponse response =
         handler
             .apply(
                 RequestContextBuilder.from("", "/?_method=DELETE", "POST")
                     .header("X-HTTP-Method-Override", "PUT")
                     .build())
             .get();
     if (Response.Status.OK.equals(response.getStatusInfo())) {
       return (String) response.getEntity();
     } else {
       return "" + response.getStatus();
     }
   } catch (Exception e) {
     e.printStackTrace();
     return e.getMessage();
   }
 }