test_class.declarator: thrown = ExpectedException.none()
test_class.modifier: @Rule
      public
test_class.original_string: @Rule
      public ExpectedException thrown = ExpectedException.none();
test_class.type: ExpectedException
test_class.var_name: thrown
test_class.declarator: mockLogbackAppender
test_class.modifier: private
test_class.original_string: private Appender<ILoggingEvent> mockLogbackAppender;
test_class.type: Appender<ILoggingEvent>
test_class.var_name: mockLogbackAppender
test_class.file: everrest-core/src/test/java/org/everrest/core/impl/resource/AbstractResourceDescriptorTest.java
test_class.identifier: AbstractResourceDescriptorTest
test_case.body: @Test
      public void sortsSubResourceMethodsByUriPatterAndConsumesAndProducesTypes() {
          ResourceDescriptor resource = new AbstractResourceDescriptor(ResourceForTestSortingOfSubResourceMethods.class);
          Map<UriPattern, Map<String, List<SubResourceMethodDescriptor>>> subResourceMethods = resource.getSubResourceMethods();
  
          assertEquals(newArrayList("/b/c/d", "/b/c", "/b/{c}", "/b"), subResourceMethods.keySet().stream().map(UriPattern::getTemplate).collect(toList()));
  
          assertEquals(1, subResourceMethods.get(new UriPattern("/b/c/d")).get("GET").size());
          assertEquals(1, subResourceMethods.get(new UriPattern("/b/c")).get("GET").size());
          assertEquals(1, subResourceMethods.get(new UriPattern("/b/{c}")).get("GET").size());
          assertEquals(3, subResourceMethods.get(new UriPattern("/b")).get("GET").size());
  
          List<String> methodNames = subResourceMethods.get(new UriPattern("/b")).get("GET").stream().map(subResourceMethod -> subResourceMethod.getMethod().getName()).collect(toList());
          assertEquals(newArrayList("m2", "m5", "m0"), methodNames);
      }
test_case.class_method_signature: AbstractResourceDescriptorTest.sortsSubResourceMethodsByUriPatterAndConsumesAndProducesTypes()
test_case.full_signature: @Test public void sortsSubResourceMethodsByUriPatterAndConsumesAndProducesTypes()
test_case.identifier: sortsSubResourceMethodsByUriPatterAndConsumesAndProducesTypes
test_case.invocations: getSubResourceMethods assertEquals newArrayList collect map stream keySet toList assertEquals size get get assertEquals size get get assertEquals size get get assertEquals size get get collect map stream get get getName getMethod toList assertEquals newArrayList
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void sortsSubResourceMethodsByUriPatterAndConsumesAndProducesTypes()
focal_class.declarator: LOG = LoggerFactory.getLogger(AbstractResourceDescriptor.class)
focal_class.modifier: private static final
focal_class.original_string: private static final Logger LOG = LoggerFactory.getLogger(AbstractResourceDescriptor.class);
focal_class.type: Logger
focal_class.var_name: LOG
focal_class.declarator: path
focal_class.modifier: private final
focal_class.original_string: private final PathValue path;
focal_class.type: PathValue
focal_class.var_name: path
focal_class.declarator: uriPattern
focal_class.modifier: private final
focal_class.original_string: private final UriPattern uriPattern;
focal_class.type: UriPattern
focal_class.var_name: uriPattern
focal_class.declarator: subResourceMethods
focal_class.modifier: private final
focal_class.original_string: private final TreeMap<UriPattern, Map<String, List<SubResourceMethodDescriptor>>> subResourceMethods;
focal_class.type: TreeMap<UriPattern, Map<String, List<SubResourceMethodDescriptor>>>
focal_class.var_name: subResourceMethods
focal_class.declarator: subResourceLocators
focal_class.modifier: private final
focal_class.original_string: private final TreeMap<UriPattern, SubResourceLocatorDescriptor> subResourceLocators;
focal_class.type: TreeMap<UriPattern, SubResourceLocatorDescriptor>
focal_class.var_name: subResourceLocators
focal_class.declarator: resourceMethods
focal_class.modifier: private final
focal_class.original_string: private final MultivaluedMap<String, ResourceMethodDescriptor> resourceMethods;
focal_class.type: MultivaluedMap<String, ResourceMethodDescriptor>
focal_class.var_name: resourceMethods
focal_class.declarator: resourceMethodComparator = new ResourceMethodComparator()
focal_class.modifier: private final
focal_class.original_string: private final ResourceMethodComparator resourceMethodComparator = new ResourceMethodComparator();
focal_class.type: ResourceMethodComparator
focal_class.var_name: resourceMethodComparator
focal_class.file: everrest-core/src/main/java/org/everrest/core/impl/resource/AbstractResourceDescriptor.java
focal_class.identifier: AbstractResourceDescriptor
focal_class.interfaces: implements ResourceDescriptor
focal_class.class_method_signature: AbstractResourceDescriptor.AbstractResourceDescriptor(Class<?> resourceClass)
focal_class.full_signature: public  AbstractResourceDescriptor(Class<?> resourceClass)
focal_class.identifier: AbstractResourceDescriptor
focal_class.modifiers: public
focal_class.parameters: (Class<?> resourceClass)
focal_class.signature:  AbstractResourceDescriptor(Class<?> resourceClass)
focal_class.class_method_signature: AbstractResourceDescriptor.AbstractResourceDescriptor(String path, Class<?> resourceClass)
focal_class.full_signature: public  AbstractResourceDescriptor(String path, Class<?> resourceClass)
focal_class.identifier: AbstractResourceDescriptor
focal_class.modifiers: public
focal_class.parameters: (String path, Class<?> resourceClass)
focal_class.signature:  AbstractResourceDescriptor(String path, Class<?> resourceClass)
focal_class.class_method_signature: AbstractResourceDescriptor.AbstractResourceDescriptor(Object resource)
focal_class.full_signature: public  AbstractResourceDescriptor(Object resource)
focal_class.identifier: AbstractResourceDescriptor
focal_class.modifiers: public
focal_class.parameters: (Object resource)
focal_class.signature:  AbstractResourceDescriptor(Object resource)
focal_class.class_method_signature: AbstractResourceDescriptor.AbstractResourceDescriptor(String path, Object resource)
focal_class.full_signature: public  AbstractResourceDescriptor(String path, Object resource)
focal_class.identifier: AbstractResourceDescriptor
focal_class.modifiers: public
focal_class.parameters: (String path, Object resource)
focal_class.signature:  AbstractResourceDescriptor(String path, Object resource)
focal_class.class_method_signature: AbstractResourceDescriptor.getPathValue()
focal_class.full_signature: @Override public PathValue getPathValue()
focal_class.identifier: getPathValue
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: PathValue
focal_class.signature: PathValue getPathValue()
focal_class.class_method_signature: AbstractResourceDescriptor.getResourceMethods()
focal_class.full_signature: @Override public Map<String, List<ResourceMethodDescriptor>> getResourceMethods()
focal_class.identifier: getResourceMethods
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: Map<String, List<ResourceMethodDescriptor>>
focal_class.signature: Map<String, List<ResourceMethodDescriptor>> getResourceMethods()
focal_class.class_method_signature: AbstractResourceDescriptor.getSubResourceLocators()
focal_class.full_signature: @Override public Map<UriPattern, SubResourceLocatorDescriptor> getSubResourceLocators()
focal_class.identifier: getSubResourceLocators
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: Map<UriPattern, SubResourceLocatorDescriptor>
focal_class.signature: Map<UriPattern, SubResourceLocatorDescriptor> getSubResourceLocators()
focal_class.class_method_signature: AbstractResourceDescriptor.getSubResourceMethods()
focal_class.full_signature: @Override public Map<UriPattern, Map<String, List<SubResourceMethodDescriptor>>> getSubResourceMethods()
focal_class.identifier: getSubResourceMethods
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: Map<UriPattern, Map<String, List<SubResourceMethodDescriptor>>>
focal_class.signature: Map<UriPattern, Map<String, List<SubResourceMethodDescriptor>>> getSubResourceMethods()
focal_class.class_method_signature: AbstractResourceDescriptor.getUriPattern()
focal_class.full_signature: @Override public UriPattern getUriPattern()
focal_class.identifier: getUriPattern
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: UriPattern
focal_class.signature: UriPattern getUriPattern()
focal_class.class_method_signature: AbstractResourceDescriptor.isRootResource()
focal_class.full_signature: @Override public boolean isRootResource()
focal_class.identifier: isRootResource
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean isRootResource()
focal_class.class_method_signature: AbstractResourceDescriptor.processMethods()
focal_class.full_signature: private void processMethods()
focal_class.identifier: processMethods
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void processMethods()
focal_class.class_method_signature: AbstractResourceDescriptor.getAllMethods(Class<?> resourceClass)
focal_class.full_signature: private List<Method> getAllMethods(Class<?> resourceClass)
focal_class.identifier: getAllMethods
focal_class.modifiers: private
focal_class.parameters: (Class<?> resourceClass)
focal_class.return: List<Method>
focal_class.signature: List<Method> getAllMethods(Class<?> resourceClass)
focal_class.class_method_signature: AbstractResourceDescriptor.addResourceMethod(Method method, HttpMethod httpMethod, List<Parameter> params, Annotation[] additional, List<MediaType> produces, List<MediaType> consumes)
focal_class.full_signature: private void addResourceMethod(Method method, HttpMethod httpMethod, List<Parameter> params, Annotation[] additional, List<MediaType> produces, List<MediaType> consumes)
focal_class.identifier: addResourceMethod
focal_class.modifiers: private
focal_class.parameters: (Method method, HttpMethod httpMethod, List<Parameter> params, Annotation[] additional, List<MediaType> produces, List<MediaType> consumes)
focal_class.return: void
focal_class.signature: void addResourceMethod(Method method, HttpMethod httpMethod, List<Parameter> params, Annotation[] additional, List<MediaType> produces, List<MediaType> consumes)
focal_class.class_method_signature: AbstractResourceDescriptor.addSubResourceMethod(Method method, Path subPath, HttpMethod httpMethod, List<Parameter> params, Annotation[] additional, List<MediaType> produces, List<MediaType> consumes)
focal_class.full_signature: private void addSubResourceMethod(Method method, Path subPath, HttpMethod httpMethod, List<Parameter> params, Annotation[] additional, List<MediaType> produces, List<MediaType> consumes)
focal_class.identifier: addSubResourceMethod
focal_class.modifiers: private
focal_class.parameters: (Method method, Path subPath, HttpMethod httpMethod, List<Parameter> params, Annotation[] additional, List<MediaType> produces, List<MediaType> consumes)
focal_class.return: void
focal_class.signature: void addSubResourceMethod(Method method, Path subPath, HttpMethod httpMethod, List<Parameter> params, Annotation[] additional, List<MediaType> produces, List<MediaType> consumes)
focal_class.class_method_signature: AbstractResourceDescriptor.validateResourceMethod(ResourceMethodDescriptor resourceMethod)
focal_class.full_signature: private void validateResourceMethod(ResourceMethodDescriptor resourceMethod)
focal_class.identifier: validateResourceMethod
focal_class.modifiers: private
focal_class.parameters: (ResourceMethodDescriptor resourceMethod)
focal_class.return: void
focal_class.signature: void validateResourceMethod(ResourceMethodDescriptor resourceMethod)
focal_class.class_method_signature: AbstractResourceDescriptor.addSubResourceLocator(Method method, Path subPath, List<Parameter> params, Annotation[] additional)
focal_class.full_signature: private void addSubResourceLocator(Method method, Path subPath, List<Parameter> params, Annotation[] additional)
focal_class.identifier: addSubResourceLocator
focal_class.modifiers: private
focal_class.parameters: (Method method, Path subPath, List<Parameter> params, Annotation[] additional)
focal_class.return: void
focal_class.signature: void addSubResourceLocator(Method method, Path subPath, List<Parameter> params, Annotation[] additional)
focal_class.class_method_signature: AbstractResourceDescriptor.validateSubResourceLocator(SubResourceLocatorDescriptor resourceLocator)
focal_class.full_signature: private void validateSubResourceLocator(SubResourceLocatorDescriptor resourceLocator)
focal_class.identifier: validateSubResourceLocator
focal_class.modifiers: private
focal_class.parameters: (SubResourceLocatorDescriptor resourceLocator)
focal_class.return: void
focal_class.signature: void validateSubResourceLocator(SubResourceLocatorDescriptor resourceLocator)
focal_class.class_method_signature: AbstractResourceDescriptor.sortResourceMethods()
focal_class.full_signature: private void sortResourceMethods()
focal_class.identifier: sortResourceMethods
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void sortResourceMethods()
focal_class.class_method_signature: AbstractResourceDescriptor.getResourceMethods(String httpMethod)
focal_class.full_signature: private List<ResourceMethodDescriptor> getResourceMethods(String httpMethod)
focal_class.identifier: getResourceMethods
focal_class.modifiers: private
focal_class.parameters: (String httpMethod)
focal_class.return: List<ResourceMethodDescriptor>
focal_class.signature: List<ResourceMethodDescriptor> getResourceMethods(String httpMethod)
focal_class.class_method_signature: AbstractResourceDescriptor.getSubResourceMethods(UriPattern subResourceUriPattern)
focal_class.full_signature: private Map<String, List<SubResourceMethodDescriptor>> getSubResourceMethods(UriPattern subResourceUriPattern)
focal_class.identifier: getSubResourceMethods
focal_class.modifiers: private
focal_class.parameters: (UriPattern subResourceUriPattern)
focal_class.return: Map<String, List<SubResourceMethodDescriptor>>
focal_class.signature: Map<String, List<SubResourceMethodDescriptor>> getSubResourceMethods(UriPattern subResourceUriPattern)
focal_class.class_method_signature: AbstractResourceDescriptor.sortSubResourceMethods()
focal_class.full_signature: private void sortSubResourceMethods()
focal_class.identifier: sortSubResourceMethods
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void sortSubResourceMethods()
focal_class.class_method_signature: AbstractResourceDescriptor.createMethodParameters(Class<?> resourceClass, Method method)
focal_class.full_signature: private List<Parameter> createMethodParameters(Class<?> resourceClass, Method method)
focal_class.identifier: createMethodParameters
focal_class.modifiers: private
focal_class.parameters: (Class<?> resourceClass, Method method)
focal_class.return: List<Parameter>
focal_class.signature: List<Parameter> createMethodParameters(Class<?> resourceClass, Method method)
focal_class.class_method_signature: AbstractResourceDescriptor.resolveHeadRequest()
focal_class.full_signature: private void resolveHeadRequest()
focal_class.identifier: resolveHeadRequest
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void resolveHeadRequest()
focal_class.class_method_signature: AbstractResourceDescriptor.resolveOptionsRequest()
focal_class.full_signature: private void resolveOptionsRequest()
focal_class.identifier: resolveOptionsRequest
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void resolveOptionsRequest()
focal_class.class_method_signature: AbstractResourceDescriptor.getMetaAnnotation(Method method, Class<T> annotationClass)
focal_class.full_signature: private T getMetaAnnotation(Method method, Class<T> annotationClass)
focal_class.identifier: getMetaAnnotation
focal_class.modifiers: private
focal_class.parameters: (Method method, Class<T> annotationClass)
focal_class.return: T
focal_class.signature: T getMetaAnnotation(Method method, Class<T> annotationClass)
focal_class.class_method_signature: AbstractResourceDescriptor.getMethodAnnotation(Method method,
                                                           Class<?> resourceClass,
                                                           Class<T> annotationClass,
                                                           boolean metaAnnotation)
focal_class.full_signature: private T getMethodAnnotation(Method method,
                                                           Class<?> resourceClass,
                                                           Class<T> annotationClass,
                                                           boolean metaAnnotation)
focal_class.identifier: getMethodAnnotation
focal_class.modifiers: private
focal_class.parameters: (Method method,
                                                           Class<?> resourceClass,
                                                           Class<T> annotationClass,
                                                           boolean metaAnnotation)
focal_class.return: T
focal_class.signature: T getMethodAnnotation(Method method,
                                                           Class<?> resourceClass,
                                                           Class<T> annotationClass,
                                                           boolean metaAnnotation)
focal_class.class_method_signature: AbstractResourceDescriptor.getClassAnnotation(Class<?> resourceClass, Class<T> annotationClass)
focal_class.full_signature: private T getClassAnnotation(Class<?> resourceClass, Class<T> annotationClass)
focal_class.identifier: getClassAnnotation
focal_class.modifiers: private
focal_class.parameters: (Class<?> resourceClass, Class<T> annotationClass)
focal_class.return: T
focal_class.signature: T getClassAnnotation(Class<?> resourceClass, Class<T> annotationClass)
focal_class.class_method_signature: AbstractResourceDescriptor.findMethodResourceMediaType(List<T> resourceMethods,
                                                                                                        List<MediaType> consumes,
                                                                                                        List<MediaType> produces)
focal_class.full_signature: private ResourceMethodDescriptor findMethodResourceMediaType(List<T> resourceMethods,
                                                                                                        List<MediaType> consumes,
                                                                                                        List<MediaType> produces)
focal_class.identifier: findMethodResourceMediaType
focal_class.modifiers: private
focal_class.parameters: (List<T> resourceMethods,
                                                                                                        List<MediaType> consumes,
                                                                                                        List<MediaType> produces)
focal_class.return: ResourceMethodDescriptor
focal_class.signature: ResourceMethodDescriptor findMethodResourceMediaType(List<T> resourceMethods,
                                                                                                        List<MediaType> consumes,
                                                                                                        List<MediaType> produces)
focal_class.class_method_signature: AbstractResourceDescriptor.getSecurityAnnotation(Method method, Class<?> clazz)
focal_class.full_signature: @SuppressWarnings("unchecked") private T getSecurityAnnotation(Method method, Class<?> clazz)
focal_class.identifier: getSecurityAnnotation
focal_class.modifiers: @SuppressWarnings("unchecked") private
focal_class.parameters: (Method method, Class<?> clazz)
focal_class.return: T
focal_class.signature: T getSecurityAnnotation(Method method, Class<?> clazz)
focal_class.class_method_signature: AbstractResourceDescriptor.getAnnotation(Class<?> clazz, Class<T>[] annotationClasses)
focal_class.full_signature: private T getAnnotation(Class<?> clazz, Class<T>[] annotationClasses)
focal_class.identifier: getAnnotation
focal_class.modifiers: private
focal_class.parameters: (Class<?> clazz, Class<T>[] annotationClasses)
focal_class.return: T
focal_class.signature: T getAnnotation(Class<?> clazz, Class<T>[] annotationClasses)
focal_class.class_method_signature: AbstractResourceDescriptor.getAnnotation(Method method, Class<T>[] annotationClasses)
focal_class.full_signature: private T getAnnotation(Method method, Class<T>[] annotationClasses)
focal_class.identifier: getAnnotation
focal_class.modifiers: private
focal_class.parameters: (Method method, Class<T>[] annotationClasses)
focal_class.return: T
focal_class.signature: T getAnnotation(Method method, Class<T>[] annotationClasses)
focal_class.class_method_signature: AbstractResourceDescriptor.toString()
focal_class.full_signature: @Override public String toString()
focal_class.identifier: toString
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String toString()
focal_class.superclass: extends BaseObjectModel
focal_method.body: @Override
      public Map<UriPattern, Map<String, List<SubResourceMethodDescriptor>>> getSubResourceMethods() {
          return subResourceMethods;
      }
focal_method.class_method_signature: AbstractResourceDescriptor.getSubResourceMethods()
focal_method.full_signature: @Override public Map<UriPattern, Map<String, List<SubResourceMethodDescriptor>>> getSubResourceMethods()
focal_method.identifier: getSubResourceMethods
focal_method.modifiers: @Override public
focal_method.parameters: ()
focal_method.return: Map<UriPattern, Map<String, List<SubResourceMethodDescriptor>>>
focal_method.signature: Map<UriPattern, Map<String, List<SubResourceMethodDescriptor>>> getSubResourceMethods()