Overview
Documentation on REST Clients.
Details
Currently there are not Java clients implemented for the REST services but this would be a fairly straightforward thing to do. The advantage of having a Java client is that integration tests can easily be run in the dev enviornment against a deployment with known data contents. This would be the basis for full and comprehensive integration testing.
Here is a simple example of a client method that could call the Content REST Service for finding concepts by a query. This full example includes support for post request and reading the object back and unmarshalling it back into an object. In this case the "Utility" is a class that converts a string representation into an object graph using JAXB unmarshalling (with the jackson API for JSON support) - NOTE: this class is not part of the distribution but could be easily implemented.
public SearchResultList findConceptsForQuery(String terminology, String version, String searchString, PfsParameterJpa pfs, String authToken) throws Exception { Client client = Client.create(); WebResource resource = client.resource(config.getProperty("base.url") + "/content/concepts/" + terminology + "/" + version + "/query/" + searchString); String pfsString = (pfs != null ? ConfigUtility.getStringForGraph(pfs) : null); ClientResponse response = resource.accept(MediaType.APPLICATION_XML) .header("Authorization", authToken) .header("Content-type", MediaType.APPLICATION_XML) .post(ClientResponse.class, pfsString); String resultString = response.getEntity(String.class); if (response.getClientResponseStatus().getFamily() == Family.SUCCESSFUL) { Logger.getLogger(this.getClass()).debug(resultString); } else { throw new Exception(resultString); } // converting to object SearchResultListJpa list = (SearchResultListJpa) Utility.getGraphForString(resultString, SearchResultListJpa.class); return list; }
References/Links
- n/a