@Override public String advanceLsqt(RequestLogger reqlog, String temporalCollection, long lag) { if (logger.isDebugEnabled()) logger.debug("Advancing LSQT in temporal collection {}", temporalCollection); logRequest(reqlog, "wiped %s document", temporalCollection); RequestParameters params = new RequestParameters(); params.add("result", "advance-lsqt"); if ( lag > 0 ) params.add("lag", String.valueOf(lag)); Map<String,List<String>> headers = new TreeMap<>(String.CASE_INSENSITIVE_ORDER); postResource(reqlog, "temporal/collections/" + temporalCollection, null, params, null, null, "advanceLsqt", headers); List<String> values = headers.get(HEADER_ML_LSQT); if ( values != null && values.size() > 0 ) { return values.get(0); } else { throw new FailedRequestException("Response missing header \"" + HEADER_ML_LSQT + "\""); } }
@Override public void wipeDocument(RequestLogger reqlog, String temporalDocumentURI, Transaction transaction, RequestParameters extraParams) { if (logger.isDebugEnabled()) logger.debug("Wiping {} in transaction {}", temporalDocumentURI, getTransactionId(transaction)); extraParams.add("result", "wiped"); extraParams.add("uri", temporalDocumentURI); deleteResource(reqlog, "documents", transaction, extraParams, null); logRequest(reqlog, "wiped %s document", temporalDocumentURI); }
private <T> T makeResult(RequestLogger reqlog, String operation, String entityType, Response response, Class<T> as) { if (as == null) { return null; } logRequest(reqlog, "%s for %s", operation, entityType); ResponseBody body = response.body(); T entity = body.contentLength() != 0 ? getEntity(body, as) : null; if (entity == null || (as != InputStream.class && as != Reader.class)) { response.close(); } return (reqlog != null) ? reqlog.copyContent(entity) : entity; }
private <U extends OkHttpResultIterator> U makeResults( Class<U> clazz, RequestLogger reqlog, String operation, String entityType, List<BodyPart> partList, Response response, Closeable closeable) { logRequest(reqlog, "%s for %s", operation, entityType); if ( response == null ) return null; try { java.lang.reflect.Constructor<U> constructor = clazz.getConstructor(OkHttpServices.class, RequestLogger.class, List.class, Closeable.class); OkHttpResultIterator result = constructor.newInstance(this, reqlog, partList, closeable); Headers headers = response.headers(); if (headers.get(HEADER_VND_MARKLOGIC_START) != null) { result.setStart(Long.parseLong(headers.get(HEADER_VND_MARKLOGIC_START))); } if (headers.get(HEADER_VND_MARKLOGIC_PAGELENGTH) != null) { result.setPageSize(Long.parseLong(headers.get(HEADER_VND_MARKLOGIC_PAGELENGTH))); } if (headers.get(HEADER_VND_MARKLOGIC_RESULT_ESTIMATE) != null) { result.setTotalSize(Long.parseLong(headers.get(HEADER_VND_MARKLOGIC_RESULT_ESTIMATE))); } return (U) result; } catch (Throwable t) { throw new MarkLogicInternalException("Error instantiating " + clazz.getName(), t); } }
@Override public DocumentDescriptor head(RequestLogger reqlog, String uri, Transaction transaction) throws ForbiddenUserException, FailedRequestException { Response response = headImpl(reqlog, uri, transaction, makeDocumentResource(makeDocumentParams(uri, null, transaction, null))); // 404 if (response == null) return null; Headers responseHeaders = response.headers(); response.close(); logRequest(reqlog, "checked %s document from %s transaction", uri, (transaction != null) ? transaction.getTransactionId() : "no"); DocumentDescriptorImpl desc = new DocumentDescriptorImpl(uri, false); updateVersion(desc, responseHeaders); updateDescriptor(desc, responseHeaders); return desc; }
@Override public void deleteValues(RequestLogger reqlog, String type) throws ForbiddenUserException, FailedRequestException { logger.debug("Deleting {}", type); Request.Builder requestBldr = setupRequest(type, null); requestBldr = addTelemetryAgentId(requestBldr); Function<Request.Builder, Response> doDeleteFunction = new Function<Request.Builder, Response>() { public Response apply(Request.Builder funcBuilder) { return sendRequestOnce(funcBuilder.delete().build()); } }; Response response = sendRequestWithRetry(requestBldr, doDeleteFunction, null); int status = response.code(); if (status == STATUS_FORBIDDEN) { throw new ForbiddenUserException("User is not allowed to delete " + type, extractErrorFields(response)); } if (status != STATUS_NO_CONTENT) { throw new FailedRequestException("delete failed: " + getReasonPhrase(response), extractErrorFields(response)); } response.close(); logRequest(reqlog, "deleted %s values", type); }
logRequest(reqlog, "read %s values with %s mime type", type, (mimetype != null) ? mimetype : null);
int... expectedStatuses) { if (key != null) { logRequest(reqlog, "writing %s value with %s key and %s mime type", type, key, (mimetype != null) ? mimetype : null); } else { logRequest(reqlog, "writing %s values with %s mime type", type, (mimetype != null) ? mimetype : null);
@Override public void deleteValue(RequestLogger reqlog, String type, String key) throws ResourceNotFoundException, ForbiddenUserException, FailedRequestException { logger.debug("Deleting {}/{}", type, key); Request.Builder requestBldr = setupRequest(type + "/" + key, null); requestBldr = addTelemetryAgentId(requestBldr); Function<Request.Builder, Response> doDeleteFunction = new Function<Request.Builder, Response>() { public Response apply(Request.Builder funcBuilder) { return sendRequestOnce(funcBuilder.delete().build()); } }; Response response = sendRequestWithRetry(requestBldr, doDeleteFunction, null); int status = response.code(); if (status == STATUS_FORBIDDEN) { throw new ForbiddenUserException("User is not allowed to delete " + type, extractErrorFields(response)); } if (status == STATUS_NOT_FOUND) { throw new ResourceNotFoundException(type + " not found for delete", extractErrorFields(response)); } if (status != STATUS_NO_CONTENT) { throw new FailedRequestException("delete failed: " + getReasonPhrase(response), extractErrorFields(response)); } response.close(); logRequest(reqlog, "deleted %s value with %s key", type, key); }
logRequest(reqlog, "read %s value with %s key and %s mime type", type, key, (mimetype != null) ? mimetype : null);
logRequest( reqlog, "read %s document from %s transaction with %s mime type and %s metadata categories",
(uri != null) ? uri : "new", getTransactionId(transaction)); logRequest( reqlog, "writing %s document from %s transaction with %s metadata categories and content",
updateDescriptor(searchBase, response.headers()); logRequest( reqlog, "searched starting at %s with length %s in %s transaction with %s mime type", start, len, getTransactionId(transaction), mimetype);
(uri != null) ? uri : "new", getTransactionId(transaction)); logRequest( reqlog, "writing %s document from %s transaction with %s mime type and %s metadata categories",
logRequest(reqlog, "deleted %s document", uri); return temporalDesc;
logRequest( reqlog, "deleted search results in %s transaction",
logRequest( reqlog, "read %s document from %s transaction with %s metadata categories and content",