// }
@org.junit.Test
public void testRootResource() {
AbstractResource rootResource = IntrospectionModeller.createResource(TestRootResourceOne.class);
assertEquals("/one", rootResource.getPath().getValue());
assertEquals(1, rootResource.getResourceMethods().size());
assertEquals(1, rootResource.getSubResourceLocators().size());
assertEquals(3, rootResource.getSubResourceMethods().size());
AbstractResourceMethod resourceMethod = rootResource.getResourceMethods().get(0);
// @HttpMethod
// @Consumes({"application/json", "application/xml"})
// public String postResourceMethodTester() {
// return "Hi there, here is a resource method.";
// }
assertEquals("POST", resourceMethod.getHttpMethod());
assertEquals(0, resourceMethod.getParameters().size());
assertEquals(2, resourceMethod.getSupportedInputTypes().size());
assertTrue(resourceMethod.getSupportedInputTypes().contains(MediaType.valueOf("application/json")));
assertTrue(resourceMethod.getSupportedInputTypes().contains(MediaType.valueOf("application/xml")));
assertEquals(1, resourceMethod.getSupportedOutputTypes().size());
assertEquals("*/*", resourceMethod.getSupportedOutputTypes().get(0).toString());
AbstractSubResourceLocator locator = rootResource.getSubResourceLocators().get(0);
// @Path("/subres-locator/{p1}")
// public TestSubResourceOne getSubResourceMethodTester(
// @PathParam("p1") String pOne, @MatrixParam("p2") int pTwo, @HeaderParam("p3") String pThree) {
// return new TestSubResourceOne();
// }
assertEquals("/subres-locator/{p1}", locator.getPath().getValue());
assertEquals(3, locator.getParameters().size());
assertEquals(Parameter.Source.PATH, locator.getParameters().get(0).getSource());
assertEquals("p1", locator.getParameters().get(0).getSourceName());
assertEquals(String.class, locator.getParameters().get(0).getParameterClass());
assertEquals(String.class, locator.getParameters().get(0).getParameterType());
assertEquals(Parameter.Source.MATRIX, locator.getParameters().get(1).getSource());
assertEquals("p2", locator.getParameters().get(1).getSourceName());
assertEquals(int.class, locator.getParameters().get(1).getParameterClass());
assertEquals(int.class, locator.getParameters().get(1).getParameterType());
assertEquals(Parameter.Source.HEADER, locator.getParameters().get(2).getSource());
assertEquals("p3", locator.getParameters().get(2).getSourceName());
AbstractSubResourceMethod putSubResMethod1 = null;
AbstractSubResourceMethod putSubResMethod2 = null;
AbstractSubResourceMethod getSubResMethod = null;
for (AbstractSubResourceMethod m: rootResource.getSubResourceMethods()) {
if (m.getMethod().getName().equals("putSubResourceMethod"))
putSubResMethod1 = m;
else if (m.getMethod().getName().equals("putSubResourceMethod2"))
putSubResMethod2 = m;
else if (m.getMethod().getName().equals("getSubResourceMethodWithParams"))