use of org.eclipse.rdf4j.http.protocol.UnauthorizedException in project rdf4j by eclipse.
the class SPARQLProtocolSession method execute.
protected HttpResponse execute(HttpUriRequest method) throws IOException, RDF4JException {
boolean consume = true;
if (params != null) {
method.setParams(params);
}
HttpResponse response = httpClient.execute(method, httpContext);
try {
int httpCode = response.getStatusLine().getStatusCode();
if (httpCode >= 200 && httpCode < 300 || httpCode == HttpURLConnection.HTTP_NOT_FOUND) {
consume = false;
// everything OK, control flow can continue
return response;
} else {
switch(httpCode) {
case // 401
HttpURLConnection.HTTP_UNAUTHORIZED:
throw new UnauthorizedException();
case // 503
HttpURLConnection.HTTP_UNAVAILABLE:
throw new QueryInterruptedException();
default:
ErrorInfo errInfo = getErrorInfo(response);
// Throw appropriate exception
if (errInfo.getErrorType() == ErrorType.MALFORMED_DATA) {
throw new RDFParseException(errInfo.getErrorMessage());
} else if (errInfo.getErrorType() == ErrorType.UNSUPPORTED_FILE_FORMAT) {
throw new UnsupportedRDFormatException(errInfo.getErrorMessage());
} else if (errInfo.getErrorType() == ErrorType.MALFORMED_QUERY) {
throw new MalformedQueryException(errInfo.getErrorMessage());
} else if (errInfo.getErrorType() == ErrorType.UNSUPPORTED_QUERY_LANGUAGE) {
throw new UnsupportedQueryLanguageException(errInfo.getErrorMessage());
} else if (errInfo.toString().length() > 0) {
throw new RepositoryException(errInfo.toString());
} else {
throw new RepositoryException(response.getStatusLine().getReasonPhrase());
}
}
}
} finally {
if (consume) {
EntityUtils.consumeQuietly(response.getEntity());
}
}
}
use of org.eclipse.rdf4j.http.protocol.UnauthorizedException in project rdf4j by eclipse.
the class HTTPUpdate method execute.
@Override
public void execute() throws UpdateExecutionException {
try {
if (httpCon.getRepository().useCompatibleMode()) {
if (httpCon.isAutoCommit()) {
// execute update immediately
SPARQLProtocolSession client = getHttpClient();
try {
client.sendUpdate(getQueryLanguage(), getQueryString(), getBaseURI(), dataset, includeInferred, getMaxExecutionTime(), getBindingsArray());
} catch (UnauthorizedException e) {
throw new HTTPUpdateExecutionException(e.getMessage(), e);
} catch (QueryInterruptedException e) {
throw new HTTPUpdateExecutionException(e.getMessage(), e);
} catch (MalformedQueryException e) {
throw new HTTPUpdateExecutionException(e.getMessage(), e);
} catch (IOException e) {
throw new HTTPUpdateExecutionException(e.getMessage(), e);
}
} else {
// defer execution as part of transaction.
httpCon.scheduleUpdate(this);
}
return;
}
SPARQLProtocolSession client = getHttpClient();
try {
httpCon.flushTransactionState(Action.UPDATE);
client.sendUpdate(getQueryLanguage(), getQueryString(), getBaseURI(), dataset, includeInferred, getMaxExecutionTime(), getBindingsArray());
} catch (UnauthorizedException e) {
throw new HTTPUpdateExecutionException(e.getMessage(), e);
} catch (QueryInterruptedException e) {
throw new HTTPUpdateExecutionException(e.getMessage(), e);
} catch (MalformedQueryException e) {
throw new HTTPUpdateExecutionException(e.getMessage(), e);
} catch (IOException e) {
throw new HTTPUpdateExecutionException(e.getMessage(), e);
}
} catch (RepositoryException e) {
throw new HTTPUpdateExecutionException(e.getMessage(), e);
}
}
use of org.eclipse.rdf4j.http.protocol.UnauthorizedException in project rdf4j by eclipse.
the class RemoteRepositoryManager method getRepositoryConfig.
@Override
public RepositoryConfig getRepositoryConfig(String id) throws RepositoryException {
Model model = new LinkedHashModel();
try (RDF4JProtocolSession httpClient = getSesameClient().createRDF4JProtocolSession(serverURL)) {
httpClient.setUsernameAndPassword(username, password);
httpClient.setRepository(Protocol.getRepositoryLocation(serverURL, SystemRepository.ID));
httpClient.getStatements(null, null, null, true, new StatementCollector(model));
} catch (IOException | QueryEvaluationException | UnauthorizedException ue) {
throw new RepositoryException(ue);
}
return RepositoryConfigUtil.getRepositoryConfig(model, id);
}
use of org.eclipse.rdf4j.http.protocol.UnauthorizedException in project rdf4j by eclipse.
the class RemoteRepositoryManager method getAllRepositoryInfos.
@Override
public Collection<RepositoryInfo> getAllRepositoryInfos(boolean skipSystemRepo) throws RepositoryException {
List<RepositoryInfo> result = new ArrayList<RepositoryInfo>();
try (RDF4JProtocolSession httpClient = getSesameClient().createRDF4JProtocolSession(serverURL)) {
httpClient.setUsernameAndPassword(username, password);
TupleQueryResult responseFromServer = httpClient.getRepositoryList();
while (responseFromServer.hasNext()) {
BindingSet bindingSet = responseFromServer.next();
RepositoryInfo repInfo = new RepositoryInfo();
String id = Literals.getLabel(bindingSet.getValue("id"), null);
if (skipSystemRepo && id.equals(SystemRepository.ID)) {
continue;
}
Value uri = bindingSet.getValue("uri");
String description = Literals.getLabel(bindingSet.getValue("title"), null);
boolean readable = Literals.getBooleanValue(bindingSet.getValue("readable"), false);
boolean writable = Literals.getBooleanValue(bindingSet.getValue("writable"), false);
if (uri instanceof IRI) {
try {
repInfo.setLocation(new URL(uri.toString()));
} catch (MalformedURLException e) {
logger.warn("Server reported malformed repository URL: {}", uri);
}
}
repInfo.setId(id);
repInfo.setDescription(description);
repInfo.setReadable(readable);
repInfo.setWritable(writable);
result.add(repInfo);
}
} catch (IOException ioe) {
logger.warn("Unable to retrieve list of repositories", ioe);
throw new RepositoryException(ioe);
} catch (QueryEvaluationException qee) {
logger.warn("Unable to retrieve list of repositories", qee);
throw new RepositoryException(qee);
} catch (UnauthorizedException ue) {
logger.warn("Not authorized to retrieve list of repositories", ue);
throw new RepositoryException(ue);
} catch (RepositoryException re) {
logger.warn("Unable to retrieve list of repositories", re);
throw re;
}
return result;
}
use of org.eclipse.rdf4j.http.protocol.UnauthorizedException in project rdf4j by eclipse.
the class RemoteRepositoryManager method addRepositoryConfig.
@Override
public void addRepositoryConfig(RepositoryConfig config) throws RepositoryException, RepositoryConfigException {
try (RDF4JProtocolSession httpClient = getSesameClient().createRDF4JProtocolSession(serverURL)) {
String baseURI = Protocol.getRepositoryLocation(serverURL, config.getID());
Resource ctx = SimpleValueFactory.getInstance().createIRI(baseURI + "#" + config.getID());
httpClient.setUsernameAndPassword(username, password);
httpClient.setRepository(Protocol.getRepositoryLocation(serverURL, SystemRepository.ID));
Model model = new LinkedHashModel();
config.export(model, ctx);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
Rio.write(model, baos, httpClient.getPreferredRDFFormat());
removeRepository(config.getID());
try (InputStream contents = new ByteArrayInputStream(baos.toByteArray())) {
httpClient.upload(contents, baseURI, httpClient.getPreferredRDFFormat(), false, true, ctx);
}
} catch (IOException | QueryEvaluationException | UnauthorizedException ue) {
throw new RepositoryException(ue);
}
}
Aggregations