/** * @see org.openmrs.module.webservices.rest.web.resource.impl.DelegatingResourceHandler#getUpdatableProperties() */ @Override public DelegatingResourceDescription getUpdatableProperties() throws ResourceDoesNotSupportOperationException { OrderResource1_10 orderResource = (OrderResource1_10) Context.getService(RestService.class) .getResourceBySupportedClass(Order.class); //this actually throws a ResourceDoesNotSupportOperationException return orderResource.getUpdatableProperties(); }
@SuppressWarnings("unchecked") private PR getParentResource() { org.openmrs.module.webservices.rest.web.annotation.SubResource sub = getClass().getAnnotation( org.openmrs.module.webservices.rest.web.annotation.SubResource.class); org.openmrs.module.webservices.rest.web.annotation.Resource resource = sub.parent().getAnnotation( org.openmrs.module.webservices.rest.web.annotation.Resource.class); return (PR) Context.getService(RestService.class).getResourceByName(resource.name()); }
/** * @verifies return default representation if given null * @see RestServiceImpl#getRepresentation(String) */ @Test public void getRepresentation_shouldReturnDefaultRepresentationIfGivenNull() throws Exception { assertThat(restService.getRepresentation(null), is(Representation.DEFAULT)); }
throws ResponseException { baseUriSetup.setup(request); SubResource res = (SubResource) restService.getResourceByName(buildResourceName(resource) + "/" + subResource); RequestContext context = RestUtil.getRequestContext(request, response); Converter conv = res instanceof Converter ? (Converter) res : null; SubResourceSearchHandler searchHandler = (SubResourceSearchHandler) restService.getSearchHandler( buildResourceName(resource) + "/" + subResource, request.getParameterMap()); if (searchHandler != null) {
restService.initialize(); assertThat(restService.getAllSearchHandlers().size(), is(1)); assertThat(restService.getAllSearchHandlers(), hasItem(searchHandler1)); assertThat(restService.getResourceByName("v1/animal"), instanceOf(AnimalResource_1_9.class)); when(restHelperService.getRegisteredSearchHandlers()).thenReturn(asList(searchHandler1, searchHandler2)); restService.initialize(); assertThat(restService.getAllSearchHandlers().size(), is(2)); assertThat(restService.getAllSearchHandlers(), hasItem(searchHandler1)); assertThat(restService.getAllSearchHandlers(), hasItem(searchHandler2)); assertThat(restService.getResourceByName("v1/animal"), instanceOf(AnimalResource_1_9.class)); assertThat(restService.getResourceByName("v1/country"), instanceOf(CountryResource_1_9.class));
/** * @verifies initialize resources and search handlers * @see RestServiceImpl#initialize() */ @Test public void initialize_shouldInitializeResourcesAndSearchHandlers() throws Exception { List<Class<? extends Resource>> resources = new ArrayList<Class<? extends Resource>>(); resources.add(AnimalResource_1_9.class); when(openmrsClassScanner.getClasses(Resource.class, true)).thenReturn(resources); SearchHandler searchHandler1 = mock(SearchHandler.class); SearchConfig searchConfig1 = new SearchConfig("default", "v1/concept", "1.9.*", new SearchQuery.Builder( "Search for concepts").withRequiredParameters("source").withOptionalParameters("code").build()); when(searchHandler1.getSearchConfig()).thenReturn(searchConfig1); when(restHelperService.getRegisteredSearchHandlers()).thenReturn(asList(searchHandler1)); setCurrentOpenmrsVersion("1.9.10"); RestUtil.disableContext(); //to avoid a Context call restService.initialize(); assertThat(restService.getSearchHandlers("v1/concept").size(), is(1)); assertThat(restService.getSearchHandlers("v1/concept").iterator().next(), is(searchHandler1)); assertThat(restService.getResourceByName("v1/animal"), instanceOf(AnimalResource_1_9.class)); }
@Override public void contextRefreshed() { // initialize all resources and search handlers Context.getService(RestService.class).initialize(); log.info("Clearing caches..."); ConversionUtil.clearCache(); ReflectionUtil.clearCaches(); SwaggerSpecificationCreator.clearCache(); }
restService.initialize(); List<SearchHandler> searchHandlers = restService.getAllSearchHandlers(); assertThat(searchHandlers.size(), is(4)); assertThat(searchHandlers, hasItem(searchHandler1));
/** * @verifies return search handler matching id set in given parameters * @see RestServiceImpl#getSearchHandler(String, Map) */ @Test public void getSearchHandler_shouldReturnSearchHandlerMatchingIdSetInGivenParameters() throws Exception { SearchHandler searchHandler = mock(SearchHandler.class); SearchConfig searchConfig = new SearchConfig("conceptByMapping", "v1/concept", "1.8.*", new SearchQuery.Builder( "Fuzzy search").withRequiredParameters("q").build()); when(searchHandler.getSearchConfig()).thenReturn(searchConfig); when(restHelperService.getRegisteredSearchHandlers()).thenReturn(asList(searchHandler)); setCurrentOpenmrsVersion("1.8.10"); Map<String, String[]> parameters = new HashMap<String, String[]>(); parameters.put("s", new String[] { "conceptByMapping" }); assertThat(restService.getSearchHandler("v1/concept", parameters), is(searchHandler)); }
private void addSubclassOperations() { List<DelegatingResourceHandler<?>> resourceHandlers = Context.getService(RestService.class).getResourceHandlers(); for (DelegatingResourceHandler<?> resourceHandler : resourceHandlers) {
public boolean hasSearchHandler(String resourceName, String resourceParentName) { if (resourceParentName != null) { resourceName = RestConstants.VERSION_1 + "/" + resourceParentName + "/" + resourceName; } else { resourceName = RestConstants.VERSION_1 + "/" + resourceName; } List<SearchHandler> searchHandlers = Context.getService(RestService.class).getAllSearchHandlers(); for (SearchHandler searchHandler : searchHandlers) { if (searchHandler.getSearchConfig().getSupportedResource().equals(resourceName)) { return true; } } return false; }
HttpServletResponse response) throws ResponseException { baseUriSetup.setup(request); Object res = restService.getResourceByName(buildResourceName(resource)); Converter conv = res instanceof Converter ? (Converter) res : null; SearchHandler searchHandler = restService.getSearchHandler(buildResourceName(resource), request.getParameterMap()); if (searchHandler != null) { return searchHandler.search(context).toSimpleObject(conv);
/** * @verifies fail if failed to get resource classes * @see RestServiceImpl#initialize() */ @Test public void initialize_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.initialize(); }
/** * @verifies return null if no search handler is found for given resource name * @see RestServiceImpl#getSearchHandler(String, Map) */ @Test public void getSearchHandler_shouldReturnNullIfNoSearchHandlerIsFoundForGivenResourceName() throws Exception { SearchHandler searchHandler1 = mock(SearchHandler.class); SearchConfig searchConfig1 = new SearchConfig("default", "v1/concept", "1.8.*", new SearchQuery.Builder( "description").withRequiredParameters("source").withOptionalParameters("code").build()); when(searchHandler1.getSearchConfig()).thenReturn(searchConfig1); setCurrentOpenmrsVersion("1.8.10"); when(restHelperService.getRegisteredSearchHandlers()).thenReturn(asList(searchHandler1)); RestUtil.disableContext(); //to avoid a Context call Map<String, String[]> parameters = new HashMap<String, String[]>(); parameters.put("source", new String[] { "some source" }); assertThat(restService.getSearchHandler("v1/order", parameters), is(nullValue())); }
/** * @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 return null if search handlers have not been initialized * @see RestServiceImpl#getAllSearchHandlers() */ @Test public void getAllSearchHandlers_shouldReturnNullIfSearchHandlersHaveNotBeenInitialized() throws Exception { assertThat(restService.getAllSearchHandlers(), is(nullValue())); }
/** * @see org.openmrs.module.webservices.rest.web.resource.impl.DelegatingResourceHandler#getUpdatableProperties() */ @Override public DelegatingResourceDescription getUpdatableProperties() throws ResourceDoesNotSupportOperationException { OrderResource1_10 orderResource = (OrderResource1_10) Context.getService(RestService.class) .getResourceBySupportedClass(Order.class); //this actually throws a ResourceDoesNotSupportOperationException return orderResource.getUpdatableProperties(); }
/** * @param uuid * @param request * @return * @throws ResponseException */ @RequestMapping(value = "/{resource}/{uuid}", method = RequestMethod.GET) @ResponseBody public Object retrieve(@PathVariable("resource") String resource, @PathVariable("uuid") String uuid, HttpServletRequest request, HttpServletResponse response) throws ResponseException { baseUriSetup.setup(request); RequestContext context = RestUtil.getRequestContext(request, response); Retrievable res = (Retrievable) restService.getResourceByName(buildResourceName(resource)); return res.retrieve(uuid, context); }
/** * @verifies return default representation if given string is empty * @see RestServiceImpl#getRepresentation(String) */ @Test public void getRepresentation_shouldReturnDefaultRepresentationIfGivenStringIsEmpty() throws Exception { assertThat(restService.getRepresentation(""), is(Representation.DEFAULT)); }
/** * @verifies fail if failed to instantiate a resource * @see RestServiceImpl#initialize() */ @Test public void initialize_shouldFailIfFailedToInstantiateAResource() throws Exception { List<Class<? extends Resource>> resources = new ArrayList<Class<? extends Resource>>(); resources.add(InstantiateExceptionAnimalResource_1_9.class); when(openmrsClassScanner.getClasses(Resource.class, true)).thenReturn(resources); setCurrentOpenmrsVersion("1.9.10"); expectedException.expect(APIException.class); expectedException.expectMessage("Failed to instantiate " + InstantiateExceptionAnimalResource_1_9.class.toString()); restService.initialize(); }