public class JsonTemplate {
// Constructor:
public JsonTemplate(HttpClient client, ObjectMapper mapper);
// Getters:
public HttpClient getClient();
// GET methods:
public <T> JsonResp<T> GET(String url, Class<T> clazz, boolean envelope);
public <T> JsonResp<T> GET( URI uri, Class<T> clazz, boolean envelope);
// POST methods:
public <T> JsonResp<T> POST(String url, Object body, Class<T> clazz, boolean envelope);
public <T> JsonResp<T> POST( URI uri, Object body, Class<T> clazz, boolean envelope);
// PUT methods:
public <T> JsonResp<T> PUT(String url, Object body, Class<T> clazz, boolean envelope);
public <T> JsonResp<T> PUT( URI uri, Object body, Class<T> clazz, boolean envelope);
// DELETE methods:
public <T> JsonResp<T> DELETE(String url, Object body, Class<T> clazz, boolean envelope);
public <T> JsonResp<T> DELETE( URI uri, Object body, Class<T> clazz, boolean envelope);
// Generic send methods:
public <T> JsonResp<T> send(Request request, Class<T> clazz, boolean envelope);
public <T> JsonResp<T> send(HttpMethod method, String url, Object body, Class<T> clazz, boolean envelope);
// Parsing method:
public <T> JsonResp<T> fromJson(ContentResponse resp, Class<T> clazz, boolean envelope);
}