{
ProtocolUtil.logRequestParameters(request);
String mimeType = HttpServerUtil.getMIMEType(request.getContentType());
RDFFormat rdfFormat = Rio.getParserFormatForMIMEType(mimeType);
if (rdfFormat == null) {
throw new ClientHTTPException(SC_UNSUPPORTED_MEDIA_TYPE, "Unsupported MIME type: " + mimeType);
}
ValueFactory vf = repository.getValueFactory();
Resource[] contexts = ProtocolUtil.parseContextParam(request, CONTEXT_PARAM_NAME, vf);
URI baseURI = ProtocolUtil.parseURIParam(request, BASEURI_PARAM_NAME, vf);
if (baseURI == null) {
baseURI = vf.createURI("foo:bar");
logger.info("no base URI specified, using dummy '{}'", baseURI);
}
InputStream in = request.getInputStream();
try {
boolean wasAutoCommit = repositoryCon.isAutoCommit();
repositoryCon.setAutoCommit(false);
if (replaceCurrent) {
repositoryCon.clear(contexts);
}
repositoryCon.add(in, baseURI.toString(), rdfFormat, contexts);
repositoryCon.setAutoCommit(wasAutoCommit);
return new ModelAndView(EmptySuccessView.getInstance());
}
catch (UnsupportedRDFormatException e) {
throw new ClientHTTPException(SC_UNSUPPORTED_MEDIA_TYPE, "No RDF parser available for format "
+ rdfFormat.getName());
}
catch (RDFParseException e) {
ErrorInfo errInfo = new ErrorInfo(ErrorType.MALFORMED_DATA, e.getMessage());
throw new ClientHTTPException(SC_BAD_REQUEST, errInfo.toString());
}