private void addSubclassOperations() { List<DelegatingResourceHandler<?>> resourceHandlers = Context.getService(RestService.class).getResourceHandlers(); for (DelegatingResourceHandler<?> resourceHandler : resourceHandlers) {
/** * @verifies return list with delegating resource with lower order value if two resources with * the same name are found for given name * @see RestServiceImpl#getResourceHandlers() */ @Test public void getResourceHandlers_shouldReturnListWithDelegatingResourceWithLowerOrderValueIfTwoResourcesWithTheSameNameAreFoundForGivenName() throws Exception { List<Class<? extends Resource>> resources = new ArrayList<Class<? extends Resource>>(); resources.add(AnimalResource_1_9.class); resources.add(DuplicateNameAnimalResource_1_9.class); when(openmrsClassScanner.getClasses(Resource.class, true)).thenReturn(resources); setCurrentOpenmrsVersion("1.9.10"); assertThat(restService.getResourceHandlers().size(), is(1)); assertThat(restService.getResourceHandlers().get(0), instanceOf(AnimalResource_1_9.class)); }
/** * @verifies fail if failed to get resource classes * @see RestServiceImpl#getResourceHandlers() */ @Test public void getResourceHandlers_shouldFailIfFailedToGetResourceClasses() throws Exception { IOException ioException = new IOException("some"); when(openmrsClassScanner.getClasses(Resource.class, true)).thenThrow(ioException); expectedException.expect(APIException.class); expectedException.expectMessage("Cannot access REST resources"); expectedException.expectCause(is(ioException)); restService.getResourceHandlers(); }
/** * @verifies fail if two resources with same name and order are found for a class * @see RestServiceImpl#getResourceHandlers() */ @Test public void getResourceHandlers_shouldFailIfTwoResourcesWithSameNameAndOrderAreFoundForAClass() throws Exception { List<Class<? extends Resource>> resources = new ArrayList<Class<? extends Resource>>(); resources.add(AnimalResource_1_9.class); resources.add(DuplicateNameAndOrderAnimalResource_1_9.class); when(openmrsClassScanner.getClasses(Resource.class, true)).thenReturn(resources); setCurrentOpenmrsVersion("1.9.10"); expectedException.expect(IllegalStateException.class); expectedException.expectMessage("Two resources with the same name (v1/animal) must not have the same order"); restService.getResourceHandlers(); }
/** * @verifies return list of delegating resource handlers including subclass handlers * @see RestServiceImpl#getResourceHandlers() */ @Test public void getResourceHandlers_shouldReturnListOfDelegatingResourceHandlersIncludingSubclassHandlers() throws Exception { List<Class<? extends Resource>> resources = new ArrayList<Class<? extends Resource>>(); resources.add(AnimalResource_1_9.class); resources.add(AnimalResource_1_11.class); resources.add(CountryResource_1_9.class); CatSubclassHandler_1_9 catSubclassHandler_1_9 = mock(CatSubclassHandler_1_9.class); CatSubclassHandler_1_11 catSubclassHandler_1_11 = mock(CatSubclassHandler_1_11.class); when(restHelperService.getRegisteredRegisteredSubclassHandlers()).thenReturn( Arrays.<DelegatingSubclassHandler> asList(catSubclassHandler_1_9, catSubclassHandler_1_11)); when(openmrsClassScanner.getClasses(Resource.class, true)).thenReturn(resources); setCurrentOpenmrsVersion("1.9.10"); assertThat(restService.getResourceHandlers().size(), is(3)); List<DelegatingResourceHandler<?>> handlers = restService.getResourceHandlers(); assertThat(handlers, hasItem(catSubclassHandler_1_9)); assertThat(handlers, hasItem(catSubclassHandler_1_11)); for (DelegatingResourceHandler handler : handlers) { assertThat(handler, is(not(instanceOf(CountryResource_1_9.class)))); assertThat(handler, is(not(instanceOf(AnimalResource_1_11.class)))); } }
private void addPaths() { List<DelegatingResourceHandler<?>> resourceHandlers = Context.getService(RestService.class).getResourceHandlers(); sortResourceHandlers(resourceHandlers);