Search in sources :

Example 1 with ViewResponse

use of com.cloudant.client.api.views.ViewResponse in project java-cloudant by cloudant.

the class ViewMultipleRequester method getViewResponses.

public List<ViewResponse<K, V>> getViewResponses() throws IOException {
    // build the queries array of data to POST
    JsonArray queries = new JsonArray();
    ViewQueryParameters<K, V> viewQueryParameters = null;
    for (ViewQueryParameters<K, V> params : requestParameters) {
        if (viewQueryParameters == null) {
            viewQueryParameters = params;
        }
        queries.add(params.asJson());
    }
    JsonObject queryJson = new JsonObject();
    queryJson.add("queries", queries);
    // construct and execute the POST request
    HttpConnection post = Http.POST(viewQueryParameters.getViewURIBuilder().build(), "application/json");
    post.setRequestBody(queryJson.toString());
    JsonObject jsonResponse = ViewRequester.executeRequestWithResponseAsJson(viewQueryParameters, post);
    // loop the returned array creating the ViewResponse objects
    List<ViewResponse<K, V>> responses = new ArrayList<ViewResponse<K, V>>();
    JsonArray jsonResponses = jsonResponse.getAsJsonArray("results");
    if (jsonResponses != null) {
        int index = 0;
        for (ViewQueryParameters<K, V> params : requestParameters) {
            JsonObject response = jsonResponses.get(index).getAsJsonObject();
            responses.add(new ViewResponseImpl<K, V>(params, response));
            index++;
        }
        return responses;
    } else {
        return Collections.emptyList();
    }
}
Also used : JsonArray(com.google.gson.JsonArray) ViewResponse(com.cloudant.client.api.views.ViewResponse) HttpConnection(com.cloudant.http.HttpConnection) ArrayList(java.util.ArrayList) JsonObject(com.google.gson.JsonObject)

Aggregations

ViewResponse (com.cloudant.client.api.views.ViewResponse)1 HttpConnection (com.cloudant.http.HttpConnection)1 JsonArray (com.google.gson.JsonArray)1 JsonObject (com.google.gson.JsonObject)1 ArrayList (java.util.ArrayList)1