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: resourceBinder
test_class.modifier: private
test_class.original_string: private ResourceBinderImpl resourceBinder;
test_class.type: ResourceBinderImpl
test_class.var_name: resourceBinder
test_class.file: everrest-core/src/test/java/org/everrest/core/impl/ResourceBinderImplTest.java
test_class.identifier: ResourceBinderImplTest
test_case.body: @Test
      public void throwsResourcePublicationExceptionWhenResourceIsNotAnnotatedWithPathAnnotation() throws Exception {
          thrown.expect(ResourcePublicationException.class);
  
          resourceBinder.addResource(new NoPathAnnotationResource(), new MultivaluedHashMap<>());
      }
test_case.class_method_signature: ResourceBinderImplTest.throwsResourcePublicationExceptionWhenResourceIsNotAnnotatedWithPathAnnotation()
test_case.full_signature: @Test public void throwsResourcePublicationExceptionWhenResourceIsNotAnnotatedWithPathAnnotation()
test_case.identifier: throwsResourcePublicationExceptionWhenResourceIsNotAnnotatedWithPathAnnotation
test_case.invocations: expect addResource
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void throwsResourcePublicationExceptionWhenResourceIsNotAnnotatedWithPathAnnotation()
focal_class.declarator: LOG = LoggerFactory.getLogger(ResourceBinderImpl.class)
focal_class.modifier: private static final
focal_class.original_string: private static final Logger LOG = LoggerFactory.getLogger(ResourceBinderImpl.class);
focal_class.type: Logger
focal_class.var_name: LOG
focal_class.declarator: RESOURCE_COMPARATOR =
              (resourceOne, resourceTwo) -> UriPattern.URIPATTERN_COMPARATOR
                      .compare(resourceOne.getObjectModel().getUriPattern(), resourceTwo.getObjectModel().getUriPattern())
focal_class.modifier: static final
focal_class.original_string: static final Comparator<ObjectFactory<ResourceDescriptor>> RESOURCE_COMPARATOR =
              (resourceOne, resourceTwo) -> UriPattern.URIPATTERN_COMPARATOR
                      .compare(resourceOne.getObjectModel().getUriPattern(), resourceTwo.getObjectModel().getUriPattern());
focal_class.type: Comparator<ObjectFactory<ResourceDescriptor>>
focal_class.var_name: RESOURCE_COMPARATOR
focal_class.declarator: resources = new ArrayList<>()
focal_class.modifier: private volatile
focal_class.original_string: private volatile List<ObjectFactory<ResourceDescriptor>> resources = new ArrayList<>();
focal_class.type: List<ObjectFactory<ResourceDescriptor>>
focal_class.var_name: resources
focal_class.declarator: lock = new ReentrantLock()
focal_class.modifier: private final
focal_class.original_string: private final ReentrantLock lock = new ReentrantLock();
focal_class.type: ReentrantLock
focal_class.var_name: lock
focal_class.file: everrest-core/src/main/java/org/everrest/core/impl/ResourceBinderImpl.java
focal_class.identifier: ResourceBinderImpl
focal_class.interfaces: implements ResourceBinder
focal_class.class_method_signature: ResourceBinderImpl.addResource(Class<?> resourceClass, MultivaluedMap<String, String> properties)
focal_class.full_signature: @Override public void addResource(Class<?> resourceClass, MultivaluedMap<String, String> properties)
focal_class.identifier: addResource
focal_class.modifiers: @Override public
focal_class.parameters: (Class<?> resourceClass, MultivaluedMap<String, String> properties)
focal_class.return: void
focal_class.signature: void addResource(Class<?> resourceClass, MultivaluedMap<String, String> properties)
focal_class.class_method_signature: ResourceBinderImpl.addResource(String uriPattern, Class<?> resourceClass, MultivaluedMap<String, String> properties)
focal_class.full_signature: @Override public void addResource(String uriPattern, Class<?> resourceClass, MultivaluedMap<String, String> properties)
focal_class.identifier: addResource
focal_class.modifiers: @Override public
focal_class.parameters: (String uriPattern, Class<?> resourceClass, MultivaluedMap<String, String> properties)
focal_class.return: void
focal_class.signature: void addResource(String uriPattern, Class<?> resourceClass, MultivaluedMap<String, String> properties)
focal_class.class_method_signature: ResourceBinderImpl.newResourceDescriptor(String path,
                                                       Class<?> resourceClass,
                                                       MultivaluedMap<String, String> properties)
focal_class.full_signature: private ResourceDescriptor newResourceDescriptor(String path,
                                                       Class<?> resourceClass,
                                                       MultivaluedMap<String, String> properties)
focal_class.identifier: newResourceDescriptor
focal_class.modifiers: private
focal_class.parameters: (String path,
                                                       Class<?> resourceClass,
                                                       MultivaluedMap<String, String> properties)
focal_class.return: ResourceDescriptor
focal_class.signature: ResourceDescriptor newResourceDescriptor(String path,
                                                       Class<?> resourceClass,
                                                       MultivaluedMap<String, String> properties)
focal_class.class_method_signature: ResourceBinderImpl.addResource(Object resource, MultivaluedMap<String, String> properties)
focal_class.full_signature: @Override public void addResource(Object resource, MultivaluedMap<String, String> properties)
focal_class.identifier: addResource
focal_class.modifiers: @Override public
focal_class.parameters: (Object resource, MultivaluedMap<String, String> properties)
focal_class.return: void
focal_class.signature: void addResource(Object resource, MultivaluedMap<String, String> properties)
focal_class.class_method_signature: ResourceBinderImpl.addResource(String uriPattern, Object resource, MultivaluedMap<String, String> properties)
focal_class.full_signature: @Override public void addResource(String uriPattern, Object resource, MultivaluedMap<String, String> properties)
focal_class.identifier: addResource
focal_class.modifiers: @Override public
focal_class.parameters: (String uriPattern, Object resource, MultivaluedMap<String, String> properties)
focal_class.return: void
focal_class.signature: void addResource(String uriPattern, Object resource, MultivaluedMap<String, String> properties)
focal_class.class_method_signature: ResourceBinderImpl.newResourceDescriptor(String path,
                                                       Object resource,
                                                       MultivaluedMap<String, String> properties)
focal_class.full_signature: private ResourceDescriptor newResourceDescriptor(String path,
                                                       Object resource,
                                                       MultivaluedMap<String, String> properties)
focal_class.identifier: newResourceDescriptor
focal_class.modifiers: private
focal_class.parameters: (String path,
                                                       Object resource,
                                                       MultivaluedMap<String, String> properties)
focal_class.return: ResourceDescriptor
focal_class.signature: ResourceDescriptor newResourceDescriptor(String path,
                                                       Object resource,
                                                       MultivaluedMap<String, String> properties)
focal_class.class_method_signature: ResourceBinderImpl.addResource(ObjectFactory<ResourceDescriptor> newResourceFactory)
focal_class.full_signature: @Override public void addResource(ObjectFactory<ResourceDescriptor> newResourceFactory)
focal_class.identifier: addResource
focal_class.modifiers: @Override public
focal_class.parameters: (ObjectFactory<ResourceDescriptor> newResourceFactory)
focal_class.return: void
focal_class.signature: void addResource(ObjectFactory<ResourceDescriptor> newResourceFactory)
focal_class.class_method_signature: ResourceBinderImpl.getCodeSource(Class<?> aClass)
focal_class.full_signature: private CodeSource getCodeSource(Class<?> aClass)
focal_class.identifier: getCodeSource
focal_class.modifiers: private
focal_class.parameters: (Class<?> aClass)
focal_class.return: CodeSource
focal_class.signature: CodeSource getCodeSource(Class<?> aClass)
focal_class.class_method_signature: ResourceBinderImpl.clear()
focal_class.full_signature: public void clear()
focal_class.identifier: clear
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void clear()
focal_class.class_method_signature: ResourceBinderImpl.getMatchedResource(String requestPath, List<String> parameterValues)
focal_class.full_signature: @Override public ObjectFactory<ResourceDescriptor> getMatchedResource(String requestPath, List<String> parameterValues)
focal_class.identifier: getMatchedResource
focal_class.modifiers: @Override public
focal_class.parameters: (String requestPath, List<String> parameterValues)
focal_class.return: ObjectFactory<ResourceDescriptor>
focal_class.signature: ObjectFactory<ResourceDescriptor> getMatchedResource(String requestPath, List<String> parameterValues)
focal_class.class_method_signature: ResourceBinderImpl.hasSubResourceMethodsOrSubResourceLocators(ObjectFactory<ResourceDescriptor> resource)
focal_class.full_signature: private boolean hasSubResourceMethodsOrSubResourceLocators(ObjectFactory<ResourceDescriptor> resource)
focal_class.identifier: hasSubResourceMethodsOrSubResourceLocators
focal_class.modifiers: private
focal_class.parameters: (ObjectFactory<ResourceDescriptor> resource)
focal_class.return: boolean
focal_class.signature: boolean hasSubResourceMethodsOrSubResourceLocators(ObjectFactory<ResourceDescriptor> resource)
focal_class.class_method_signature: ResourceBinderImpl.getResources()
focal_class.full_signature: @Override public List<ObjectFactory<ResourceDescriptor>> getResources()
focal_class.identifier: getResources
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: List<ObjectFactory<ResourceDescriptor>>
focal_class.signature: List<ObjectFactory<ResourceDescriptor>> getResources()
focal_class.class_method_signature: ResourceBinderImpl.getSize()
focal_class.full_signature: @Override public int getSize()
focal_class.identifier: getSize
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: int
focal_class.signature: int getSize()
focal_class.class_method_signature: ResourceBinderImpl.removeResource(Class<?> clazz)
focal_class.full_signature: @Override public ObjectFactory<ResourceDescriptor> removeResource(Class<?> clazz)
focal_class.identifier: removeResource
focal_class.modifiers: @Override public
focal_class.parameters: (Class<?> clazz)
focal_class.return: ObjectFactory<ResourceDescriptor>
focal_class.signature: ObjectFactory<ResourceDescriptor> removeResource(Class<?> clazz)
focal_class.class_method_signature: ResourceBinderImpl.removeResource(String path)
focal_class.full_signature: @Override public ObjectFactory<ResourceDescriptor> removeResource(String path)
focal_class.identifier: removeResource
focal_class.modifiers: @Override public
focal_class.parameters: (String path)
focal_class.return: ObjectFactory<ResourceDescriptor>
focal_class.signature: ObjectFactory<ResourceDescriptor> removeResource(String path)
focal_method.body: @Override
      public void addResource(Class<?> resourceClass, MultivaluedMap<String, String> properties) {
          if (!resourceClass.isAnnotationPresent(Path.class)) {
              throw new ResourcePublicationException(String.format(
                      "Resource class %s it is not root resource. Path annotation javax.ws.rs.Path is not specified for this class.",
                      resourceClass.getName()));
          }
          try {
              addResource(new PerRequestObjectFactory<>(newResourceDescriptor(null, resourceClass, properties)));
          } catch (ResourcePublicationException e) {
              throw e;
          } catch (Exception e) {
              throw new ResourcePublicationException(e.getMessage(), e);
          }
      }
focal_method.class_method_signature: ResourceBinderImpl.addResource(Class<?> resourceClass, MultivaluedMap<String, String> properties)
focal_method.full_signature: @Override public void addResource(Class<?> resourceClass, MultivaluedMap<String, String> properties)
focal_method.identifier: addResource
focal_method.invocations: isAnnotationPresent format getName addResource newResourceDescriptor getMessage
focal_method.modifiers: @Override public
focal_method.parameters: (Class<?> resourceClass, MultivaluedMap<String, String> properties)
focal_method.return: void
focal_method.signature: void addResource(Class<?> resourceClass, MultivaluedMap<String, String> properties)