use of javax.ws.rs.core.Response.ResponseBuilder in project stanbol by apache.
the class ScopeResource method getCustomSpaceOWL.
@GET
@Path("/custom")
@Produces(value = { RDF_XML, TURTLE, X_TURTLE, MANCHESTER_OWL, FUNCTIONAL_OWL, OWL_XML, TEXT_PLAIN })
public Response getCustomSpaceOWL(@PathParam("scopeid") String scopeid, @DefaultValue("false") @QueryParam("merge") boolean merge, @Context UriInfo uriInfo, @Context HttpHeaders headers) {
scope = onm.getScope(scopeid);
OntologySpace space = scope.getCustomSpace();
IRI prefix = IRI.create(getPublicBaseUri() + "ontonet/ontology/");
OWLOntology o = space.export(OWLOntology.class, merge, prefix);
ResponseBuilder rb = Response.ok(o);
// addCORSOrigin(servletContext, rb, headers);
return rb.build();
}
use of javax.ws.rs.core.Response.ResponseBuilder in project stanbol by apache.
the class ScopeResource method postOntology.
@POST
@Consumes({ MULTIPART_FORM_DATA })
@Produces({ TEXT_HTML, TEXT_PLAIN, RDF_XML, TURTLE, X_TURTLE, N3 })
public Response postOntology(MultiPartBody data, @PathParam("scopeid") String scopeid, @Context HttpHeaders headers) {
log.info(" post(MultiPartBody data) scope: {}", scopeid);
ResponseBuilder rb;
scope = onm.getScope(scopeid);
// TODO remove and make sure it is set across the method
rb = Response.status(BAD_REQUEST);
IRI location = null, library = null;
// If found, it takes precedence over location.
FormFile file = null;
String format = null;
Set<String> keys = new HashSet<String>();
if (data.getFormFileParameterValues("file").length > 0) {
file = data.getFormFileParameterValues("file")[0];
}
// else {
if (data.getTextParameterValues("format").length > 0) {
String value = data.getTextParameterValues("format")[0];
if (!value.equals("auto")) {
format = value;
}
}
if (data.getTextParameterValues("url").length > 0) {
String value = data.getTextParameterValues("url")[0];
try {
// To throw 400 if malformed.
URI.create(value);
location = IRI.create(value);
} catch (Exception ex) {
log.error("Malformed IRI for param url " + value, ex);
throw new WebApplicationException(ex, BAD_REQUEST);
}
}
if (data.getTextParameterValues("library").length > 0) {
String value = data.getTextParameterValues("library")[0];
try {
// To throw 400 if malformed.
URI.create(value);
library = IRI.create(value);
} catch (Exception ex) {
log.error("Malformed IRI for param library " + value, ex);
throw new WebApplicationException(ex, BAD_REQUEST);
}
}
if (data.getTextParameterValues("stored").length > 0) {
String value = data.getTextParameterValues("stored")[0];
keys.add(value);
}
log.debug("Parameters:");
log.debug("file: {}", file);
log.debug("url: {}", location);
log.debug("format: {}", format);
log.debug("keys: {}", keys);
boolean fileOk = file != null;
// }
if (fileOk || location != null || library != null) {
// File and location take precedence
// src = new GraphContentInputSource(content, format, ontologyProvider.getStore());
// Then add the file
OntologyInputSource<?> src = null;
if (fileOk) {
/*
* Because the ontology provider's load method could fail after only one attempt without
* resetting the stream, we might have to do that ourselves.
*/
List<String> formats;
if (format != null && !format.trim().isEmpty())
formats = Collections.singletonList(format);
else
// The RESTful API has its own list of preferred formats
formats = Arrays.asList(RDF_XML, TURTLE, X_TURTLE, N3, N_TRIPLE, OWL_XML, FUNCTIONAL_OWL, MANCHESTER_OWL, RDF_JSON);
int unsupported = 0, failed = 0;
Iterator<String> itf = formats.iterator();
if (!itf.hasNext())
throw new OntologyLoadingException("No suitable format found or defined.");
do {
String f = itf.next();
try {
// Re-instantiate the stream on every attempt
InputStream content = new ByteArrayInputStream(file.getContent());
// ClerezzaOWLUtils.guessOntologyID(new FileInputStream(file), Parser.getInstance(),
// f);
OWLOntologyID guessed = OWLUtils.guessOntologyID(content, Parser.getInstance(), f);
log.debug("guessed ontology id: {}", guessed);
if (guessed != null && !guessed.isAnonymous() && ontologyProvider.hasOntology(guessed)) {
// rb = Response.status(Status.CONFLICT);
this.submitted = guessed;
if (headers.getAcceptableMediaTypes().contains(MediaType.TEXT_HTML_TYPE)) {
rb.entity(new Viewable("conflict.ftl", new ScopeResultData()));
rb.header(HttpHeaders.CONTENT_TYPE, MediaType.TEXT_HTML + "; charset=utf-8");
}
break;
} else {
content = new ByteArrayInputStream(file.getContent());
log.debug("Recreated input stream for format {}", f);
src = new GraphContentInputSource(content, f, ontologyProvider.getStore());
}
} catch (UnsupportedFormatException e) {
log.warn("POST method failed for media type {}. This should not happen (should fail earlier)", headers.getMediaType());
// rb = Response.status(UNSUPPORTED_MEDIA_TYPE);
unsupported++;
} catch (IOException e) {
log.debug(">>> FAILURE format {} (I/O error)", f);
failed++;
} catch (Exception e) {
// SAXParseException and others
log.debug(">>> FAILURE format {} (parse error)", f);
failed++;
}
} while (src == null && itf.hasNext());
}
if (src != null) {
OWLOntologyID key = scope.getCustomSpace().addOntology(src);
if (key == null || key.isAnonymous())
throw new WebApplicationException(INTERNAL_SERVER_ERROR);
// FIXME ugly but will have to do for the time being
// key.split("::")[1];
String uri = OntologyUtils.encode(key);
// uri = uri.substring((ontologyProvider.getGraphPrefix() + "::").length());
if (uri != null && !uri.isEmpty()) {
rb = Response.seeOther(URI.create("/ontonet/ontology/" + scope.getID() + "/" + uri));
} else
rb = Response.ok();
} else if (rb == null)
rb = Response.status(INTERNAL_SERVER_ERROR);
}
if (!keys.isEmpty()) {
for (String key : keys) scope.getCustomSpace().addOntology(new StoredOntologySource(OntologyUtils.decode(key)));
rb = Response.seeOther(URI.create("/ontonet/ontology/" + scope.getID()));
}
// addCORSOrigin(servletContext, rb, headers);
return rb.build();
}
use of javax.ws.rs.core.Response.ResponseBuilder in project stanbol by apache.
the class ScopeResource method managedOntologyGetGraph.
/**
* Gets the ontology with the given identifier in its version managed by the session.
*
* @param sessionId
* the session identifier.
* @param ontologyId
* the ontology identifier.
* @param uriInfo
* @param headers
* @return the requested managed ontology, or {@link Status#NOT_FOUND} if either the sessionn does not
* exist, or the if the ontology either does not exist or is not managed.
*/
@GET
@Path("/{ontologyId:.+}")
@Produces(value = { APPLICATION_JSON, N3, N_TRIPLE, RDF_JSON })
public Response managedOntologyGetGraph(@PathParam("scopeid") String scopeid, @PathParam("ontologyId") String ontologyId, @DefaultValue("false") @QueryParam("merge") boolean merge, @Context UriInfo uriInfo, @Context HttpHeaders headers) {
log.debug("Absolute URL Path {}", uriInfo.getRequestUri());
log.debug("Ontology ID {}", ontologyId);
ResponseBuilder rb;
scope = onm.getScope(scopeid);
if (scope == null)
rb = Response.status(NOT_FOUND);
else {
IRI prefix = IRI.create(getPublicBaseUri() + "ontonet/ontology/");
ImmutableGraph o = null;
OWLOntologyID id = OntologyUtils.decode(ontologyId);
OntologySpace spc = scope.getCustomSpace();
if (spc != null && spc.hasOntology(id)) {
o = spc.getOntology(id, ImmutableGraph.class, merge, prefix);
} else {
spc = scope.getCoreSpace();
if (spc != null && spc.hasOntology(id))
o = spc.getOntology(id, ImmutableGraph.class, merge, prefix);
}
if (o == null)
rb = Response.status(NOT_FOUND);
else
rb = Response.ok(o);
}
// addCORSOrigin(servletContext, rb, headers);
return rb.build();
}
use of javax.ws.rs.core.Response.ResponseBuilder in project stanbol by apache.
the class SessionResource method asOntologyMixed.
@GET
@Produces(value = { RDF_XML, TURTLE, X_TURTLE })
public Response asOntologyMixed(@PathParam(value = "id") String sessionId, @PathParam("scopeid") String scopeid, @DefaultValue("false") @QueryParam("merge") boolean merge, @Context HttpHeaders headers) {
session = sesMgr.getSession(sessionId);
if (session == null)
return Response.status(NOT_FOUND).build();
ResponseBuilder rb;
IRI prefix = IRI.create(getPublicBaseUri() + "ontonet/session/");
// Export smaller graphs to OWLOntology due to the more human-readable rendering.
if (merge)
rb = Response.ok(session.export(ImmutableGraph.class, merge, prefix));
else
rb = Response.ok(session.export(OWLOntology.class, merge, prefix));
// addCORSOrigin(servletContext, rb, headers);
return rb.build();
}
use of javax.ws.rs.core.Response.ResponseBuilder in project stanbol by apache.
the class SessionResource method asOntologyOWL.
@GET
@Produces(value = { MANCHESTER_OWL, FUNCTIONAL_OWL, OWL_XML, TEXT_PLAIN })
public Response asOntologyOWL(@PathParam(value = "id") String sessionId, @PathParam("scopeid") String scopeid, @DefaultValue("false") @QueryParam("merge") boolean merge, @Context HttpHeaders headers) {
session = sesMgr.getSession(sessionId);
if (session == null)
return Response.status(NOT_FOUND).build();
IRI prefix = IRI.create(getPublicBaseUri() + "ontonet/session/");
// Export to OWLOntology, the only to support OWL formats.
ResponseBuilder rb = Response.ok(session.export(OWLOntology.class, merge, prefix));
// addCORSOrigin(servletContext, rb, headers);
return rb.build();
}
Aggregations