/** * @see org.openmrs.module.webservices.rest.web.api.RestService#getResourceHandlers() * @should return list of delegating resource handlers including subclass handlers * @should return list with delegating resource with lower order value if two resources with the * same name are found for given name * @should fail if failed to get resource classes * @should fail if two resources with same name and order are found for a class */ @Override public List<DelegatingResourceHandler<?>> getResourceHandlers() throws APIException { initializeResources(); List<DelegatingResourceHandler<?>> resourceHandlers = new ArrayList<DelegatingResourceHandler<?>>(); for (Resource resource : resourcesBySupportedClasses.values()) { if (resource instanceof DelegatingResourceHandler) { resourceHandlers.add((DelegatingResourceHandler<?>) resource); } } List<DelegatingSubclassHandler> subclassHandlers = restHelperService.getRegisteredRegisteredSubclassHandlers(); for (DelegatingSubclassHandler subclassHandler : subclassHandlers) { resourceHandlers.add(subclassHandler); } return resourceHandlers; }
/** * @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)))); } }