1 package it.com.atlassian.refapp.rest;
2
3 import com.sun.jersey.api.client.Client;
4 import com.sun.jersey.api.client.ClientResponse;
5 import com.sun.jersey.api.client.WebResource;
6 import com.sun.jersey.api.client.config.ClientConfig;
7 import com.sun.jersey.api.client.config.DefaultClientConfig;
8 import org.codehaus.jackson.JsonNode;
9 import org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider;
10 import org.codehaus.jackson.map.ObjectMapper;
11 import org.eclipse.jetty.util.MultiPartWriter;
12
13 import javax.annotation.Nonnull;
14 import java.io.IOException;
15
16
17
18
19 public final class RestUtils {
20 private RestUtils() {}
21
22 @Nonnull
23 public static WebResource newResource(@Nonnull String url) {
24 return newClient().resource(url);
25 }
26
27 public static JsonNode getJsonResponse(WebResource resource) {
28 final String responseString = getJsonResponseString(resource);
29 try {
30 return new ObjectMapper().readTree(responseString);
31 } catch (IOException e) {
32 throw new RuntimeException("Could not parse json response from json string : " + responseString, e);
33 }
34 }
35
36 public static String getJsonResponseString(WebResource resource) {
37 final ClientResponse response = resource.get(ClientResponse.class);
38 try {
39 return response.hasEntity() ? response.getEntity(String.class) : null;
40 } finally {
41 response.close();
42 }
43 }
44
45 private static Client newClient() {
46 ClientConfig clientConfig = new DefaultClientConfig();
47 clientConfig.getSingletons().add(new JacksonJaxbJsonProvider());
48 clientConfig.getClasses().add(MultiPartWriter.class);
49 return Client.create(clientConfig);
50 }
51 }