@Override public <R extends AbstractReadHandle> R postResource(RequestLogger reqlog, String path, Transaction transaction, RequestParameters params, AbstractWriteHandle input, R output, String operation) throws ResourceNotFoundException, ResourceNotResendableException, ForbiddenUserException, FailedRequestException { return postResource(reqlog, path, transaction, params, input, output, operation, null); }
@Override public void mergeGraphs(RequestLogger reqlog, AbstractWriteHandle input, Transaction transaction) throws ResourceNotFoundException, ForbiddenUserException, FailedRequestException { RequestParameters params = new RequestParameters(); postResource(reqlog, "graphs", transaction, params, input, null); }
@Override public void protectDocument(RequestLogger requestLogger, String temporalDocumentURI, Transaction transaction, RequestParameters extraParams, ProtectionLevel level, String duration, Calendar expiryTime, String archivePath) { if (temporalDocumentURI == null) throw new IllegalArgumentException( "Document protection for document identifier without uri"); extraParams = addTemporalProtectionParams(extraParams, temporalDocumentURI, level, duration, expiryTime, archivePath); if (logger.isDebugEnabled()) logger.debug("Protecting {} in transaction {}", temporalDocumentURI, getTransactionId(transaction)); postResource(requestLogger, "documents/protection", transaction, extraParams, null, null, "protect"); } @Override
@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 mergeGraph(RequestLogger reqlog, String uri, AbstractWriteHandle input, GraphPermissions permissions, Transaction transaction) throws ResourceNotFoundException, ForbiddenUserException, FailedRequestException { RequestParameters params = new RequestParameters(); addGraphUriParam(params, uri); addPermsParams(params, permissions); postResource(reqlog, "graphs", transaction, params, input, null); }
@Override public void mergePermissions(RequestLogger reqlog, String uri, AbstractWriteHandle permissions, Transaction transaction) throws ResourceNotFoundException, ForbiddenUserException, FailedRequestException { RequestParameters params = new RequestParameters(); addGraphUriParam(params, uri); params.add("category", "permissions"); postResource(reqlog, "graphs", transaction, params, permissions, null); }
return postResource(reqlog, "internal/uris", transaction, params, input, output); } else { String text = null; logger.debug("Query uris with raw cts query {}{}", structure, qtextMessage); CtsQueryWriteHandle input = ((RawCtsQueryDefinition) qdef).getHandle(); return postResource(reqlog, "internal/uris", transaction, params, input, output); } else if (qdef instanceof StructuredQueryDefinition) { String structure = ((StructuredQueryDefinition) qdef).serialize();
@Override public <R extends AbstractReadHandle, W extends AbstractWriteHandle> R postResource( RequestLogger reqlog, String path, Transaction transaction, RequestParameters params, W[] input, Map<String, List<String>>[] requestHeaders, R output) throws ResourceNotFoundException, ResourceNotResendableException, ForbiddenUserException, FailedRequestException { if ( params == null ) params = new RequestParameters(); if ( transaction != null ) params.add("txid", transaction.getTransactionId()); HandleImplementation outputBase = HandleAccessor.checkHandle(output, "read"); String outputMimetype = outputBase != null ? outputBase.getMimetype() : null; Class as = outputBase != null ? outputBase.receiveAs() : null; Response response = null; int status = -1; long startTime = System.currentTimeMillis(); int nextDelay = 0; int retry = 0; for (; retry < minRetry || (System.currentTimeMillis() - startTime) < maxDelay; retry++) { if (nextDelay > 0) { try { Thread.sleep(nextDelay); } catch (InterruptedException e) { } } MultipartBody.Builder multiPart = new MultipartBody.Builder(); boolean hasStreamingPart = addParts(multiPart, reqlog, null, input, requestHeaders);
return postResource(reqlog, "documents", transaction, params, (AbstractWriteHandle[]) writeHandles.toArray(new AbstractWriteHandle[0]), (RequestParameters[]) headerList.toArray(new RequestParameters[0]),
return postResource(reqlog, "/graphs/sparql", transaction, params, input, output);