@Override public List<QueryResponse> graqlExecute(List<Query<?>> queryList, Keyspace keyspace) throws GraknClientException { LOG.debug("Sending query list size {} to keyspace {}", queryList.size(), keyspace); String body = queryList.stream().map(Object::toString).reduce("; ", String::concat).substring(2); URI fullURI = UriBuilder.fromUri(uri.toURI()) .path(REST.resolveTemplate(REST.WebPath.KEYSPACE_GRAQL, keyspace.getValue())) .queryParam(ALLOW_MULTIPLE_QUERIES, true) .queryParam(EXECUTE_WITH_INFERENCE, false) //Making inference true could lead to non-deterministic loading of data .queryParam(LOADING_DATA, true) //Skip serialising responses for the sake of efficiency .queryParam(TX_TYPE, GraknTxType.BATCH) .build(); ClientResponse response = client.resource(fullURI) .accept(APPLICATION_JSON) .post(ClientResponse.class, body); try { Response.StatusType status = response.getStatusInfo(); String entity = response.getEntity(String.class); if (!status.getFamily().equals(Family.SUCCESSFUL)) { String queries = queryList.stream().map(Object::toString).collect(Collectors.joining("\n")); String error = Json.read(entity).at("exception").asString(); throw new GraknClientException("Failed graqlExecute. Error status: " + status.getStatusCode() + ", error info: " + error + "\nqueries: " + queries, response.getStatusInfo()); } LOG.debug("Received {}", status.getStatusCode()); return queryList.stream().map(q -> QueryResponse.INSTANCE).collect(Collectors.toList()); } finally { response.close(); } }
@Override public List<QueryResponse> graqlExecute(List<Query<?>> queryList, Keyspace keyspace) throws GraknClientException { LOG.debug("Sending query list size {} to keyspace {}", queryList.size(), keyspace); String body = queryList.stream().map(Object::toString).reduce("; ", String::concat).substring(2); URI fullURI = UriBuilder.fromUri(uri.toURI()) .path(REST.resolveTemplate(REST.WebPath.KEYSPACE_GRAQL, keyspace.getValue())) .queryParam(ALLOW_MULTIPLE_QUERIES, true) .queryParam(EXECUTE_WITH_INFERENCE, false) //Making inference true could lead to non-deterministic loading of data .queryParam(LOADING_DATA, true) //Skip serialising responses for the sake of efficiency .queryParam(TX_TYPE, GraknTxType.BATCH) .build(); ClientResponse response = client.resource(fullURI) .accept(APPLICATION_JSON) .post(ClientResponse.class, body); try { Response.StatusType status = response.getStatusInfo(); String entity = response.getEntity(String.class); if (!status.getFamily().equals(Family.SUCCESSFUL)) { String queries = queryList.stream().map(Object::toString).collect(Collectors.joining("\n")); String error = Json.read(entity).at("exception").asString(); throw new GraknClientException("Failed graqlExecute. Error status: " + status.getStatusCode() + ", error info: " + error + "\nqueries: " + queries, response.getStatusInfo()); } LOG.debug("Received {}", status.getStatusCode()); return queryList.stream().map(q -> QueryResponse.INSTANCE).collect(Collectors.toList()); } finally { response.close(); } }
@Override public Optional<Keyspace> keyspace(String keyspace) throws GraknClientException { URI fullURI = UriBuilder.fromUri(uri.toURI()) .path(REST.resolveTemplate(REST.WebPath.KB_KEYSPACE, keyspace)) .build(); ClientResponse response = client.resource(fullURI) .accept(APPLICATION_JSON) .get(ClientResponse.class); Response.StatusType status = response.getStatusInfo(); LOG.debug("Received {}", status.getStatusCode()); if (status.getStatusCode() == Status.NOT_FOUND.getStatusCode()) { return Optional.empty(); } String entity = response.getEntity(String.class); if (!status.getFamily().equals(Family.SUCCESSFUL)) { throw new GraknClientException("Failed keyspace. Error status: " + status.getStatusCode() + ", error info: " + entity, response.getStatusInfo()); } response.close(); return Optional.of(Keyspace.of(keyspace)); } }
@Override public Optional<Keyspace> keyspace(String keyspace) throws GraknClientException { URI fullURI = UriBuilder.fromUri(uri.toURI()) .path(REST.resolveTemplate(REST.WebPath.KB_KEYSPACE, keyspace)) .build(); ClientResponse response = client.resource(fullURI) .accept(APPLICATION_JSON) .get(ClientResponse.class); Response.StatusType status = response.getStatusInfo(); LOG.debug("Received {}", status.getStatusCode()); if (status.getStatusCode() == Status.NOT_FOUND.getStatusCode()) { return Optional.empty(); } String entity = response.getEntity(String.class); if (!status.getFamily().equals(Family.SUCCESSFUL)) { throw new GraknClientException("Failed keyspace. Error status: " + status.getStatusCode() + ", error info: " + entity, response.getStatusInfo()); } response.close(); return Optional.of(Keyspace.of(keyspace)); } }