}
public void testSubResourceMethodSorting()
{
AbstractResourceDescriptor resource = new AbstractResourceDescriptorImpl(SampleResource2.class);
SubResourceMethodMap srmm = resource.getSubResourceMethods();
Collection<UriPattern> uris = srmm.keySet();
Iterator<UriPattern> i = uris.iterator();
// NOTE template will be normalized, first slash added
assertEquals("/b/c/d", i.next().getTemplate());
assertEquals("/b/c", i.next().getTemplate());
assertEquals("/b/{c}", i.next().getTemplate());
assertEquals("/b", i.next().getTemplate());
i = uris.iterator();
ResourceMethodMap<SubResourceMethodDescriptor> rmm = srmm.getMethodMap(i.next());
assertEquals(1, rmm.size());
assertEquals(1, rmm.get("GET").size());
assertEquals("m4", rmm.get("GET").get(0).getMethod().getName());
rmm = srmm.getMethodMap(i.next());
assertEquals(1, rmm.size());
assertEquals(1, rmm.get("GET").size());
assertEquals("m1", rmm.get("GET").get(0).getMethod().getName());
rmm = srmm.getMethodMap(i.next());
assertEquals(1, rmm.size());
assertEquals(1, rmm.get("GET").size());
assertEquals("m3", rmm.get("GET").get(0).getMethod().getName());
rmm = srmm.getMethodMap(i.next());
assertEquals(1, rmm.size());
assertEquals(3, rmm.get("GET").size());
assertEquals("m2", rmm.get("GET").get(0).getMethod().getName());
assertEquals("m5", rmm.get("GET").get(1).getMethod().getName());
assertEquals("m0", rmm.get("GET").get(2).getMethod().getName());