Author: reto
Date: Tue May 21 08:27:12 2013
New Revision: 1484693
URL: http://svn.apache.org/r1484693
Log:
STANBOL-1077: code invoked from template perfomed as privileged. The real
solutionwould be to pass a value-object to the viewable or better to use
rdfViewable.
Modified:
stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/OntoNetRootResource.java
Modified:
stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/OntoNetRootResource.java
URL:
http://svn.apache.org/viewvc/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/OntoNetRootResource.java?rev=1484693&r1=1484692&r2=1484693&view=diff
==============================================================================
---
stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/OntoNetRootResource.java
(original)
+++
stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/OntoNetRootResource.java
Tue May 21 08:27:12 2013
@@ -131,21 +131,21 @@ import com.sun.jersey.api.view.ImplicitP
import com.sun.jersey.multipart.BodyPart;
import com.sun.jersey.multipart.FormDataBodyPart;
import com.sun.jersey.multipart.FormDataMultiPart;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
/**
- * Provides the basic HTTP methods for storing and managing ontologies
regardless of them belonging to a
- * specific network, scope or session.
- *
+ * Provides the basic HTTP methods for storing and managing ontologies
+ * regardless of them belonging to a specific network, scope or session.
+ *
* @author anuzzolese, alexdma
- *
+ *
*/
-
@Path("/ontonet")
@ImplicitProduces(MediaType.TEXT_HTML + ";qs=2")
public class OntoNetRootResource extends AbstractOntologyAccessResource {
private Logger log = LoggerFactory.getLogger(getClass());
-
protected ScopeManager onManager;
/*
@@ -157,20 +157,19 @@ public class OntoNetRootResource extends
* Placeholder for the OntologyProvider to be fetched from the servlet
context.
*/
protected RegistryManager registryManager;
-
protected SessionManager sessionManager;
public OntoNetRootResource(@Context ServletContext servletContext) {
super();
this.servletContext = servletContext;
this.ontologyProvider = (OntologyProvider<?>)
ContextHelper.getServiceFromContext(
- OntologyProvider.class, servletContext);
+ OntologyProvider.class, servletContext);
this.onManager = (ScopeManager)
ContextHelper.getServiceFromContext(ScopeManager.class,
- servletContext);
+ servletContext);
this.sessionManager = (SessionManager)
ContextHelper.getServiceFromContext(SessionManager.class,
- servletContext);
+ servletContext);
this.registryManager = (RegistryManager)
ContextHelper.getServiceFromContext(RegistryManager.class,
- servletContext);
+ servletContext);
}
/*
@@ -187,12 +186,13 @@ public class OntoNetRootResource extends
@PUT
@Path("/{ontologyId:.+}")
public Response createOntologyEntry(@PathParam("ontologyId") String
ontologyId,
- @Context HttpHeaders headers,
- @Context UriInfo uriInfo) {
+ @Context HttpHeaders headers,
+ @Context UriInfo uriInfo) {
OWLOntologyID key = OntologyUtils.decode(ontologyId);
ResponseBuilder rb;
- if (ontologyProvider.listAllRegisteredEntries().contains(key)) rb =
Response.status(CONFLICT);
- else {
+ if (ontologyProvider.listAllRegisteredEntries().contains(key)) {
+ rb = Response.status(CONFLICT);
+ } else {
ontologyProvider.createBlankOntologyEntry(key);
rb = Response.created(uriInfo.getRequestUri());
}
@@ -206,13 +206,16 @@ public class OntoNetRootResource extends
OWLOntologyID key = OntologyUtils.decode(ontologyId);
ResponseBuilder rb;
try {
- if (!ontologyProvider.hasOntology(key)) rb =
Response.status(NOT_FOUND);
- else try {
- // TODO check aliases!
- ontologyProvider.removeOntology(key);
- rb = Response.ok();
- } catch (OntologyHandleException e) {
- rb = Response.status(CONFLICT);
+ if (!ontologyProvider.hasOntology(key)) {
+ rb = Response.status(NOT_FOUND);
+ } else {
+ try {
+ // TODO check aliases!
+ ontologyProvider.removeOntology(key);
+ rb = Response.ok();
+ } catch (OntologyHandleException e) {
+ rb = Response.status(CONFLICT);
+ }
}
} catch (OrphanOntologyKeyException e) {
log.warn("Orphan ontology key {}. No associated graph found in
store.", e.getOntologyKey());
@@ -222,11 +225,20 @@ public class OntoNetRootResource extends
return rb.build();
}
- public Set<String> getAliases(OWLOntologyID ontologyId) {
- Set<String> aliases = new HashSet<String>();
- for (OWLOntologyID alias : ontologyProvider.listAliases(ontologyId))
- aliases.add(OntologyUtils.encode(alias));
- return aliases;
+ public Set<String> getAliases(final OWLOntologyID ontologyId) {
+ //TODO use rdfViewable instead of Vieable to make separation of
+ //presentation and application logic cleaner
+ return AccessController.doPrivileged(new
PrivilegedAction<Set<String>>() {
+ @Override
+ public Set<String> run() {
+ Set<String> aliases = new HashSet<String>();
+ for (OWLOntologyID alias :
ontologyProvider.listAliases(ontologyId)) {
+ aliases.add(OntologyUtils.encode(alias));
+ }
+ return aliases;
+ }
+ });
+
}
private MGraph getGraph(String ontologyId, boolean merged, URI requestUri)
{
@@ -276,7 +288,9 @@ public class OntoNetRootResource extends
// This is needed because we need to change import statements. No need
to use a more efficient but
// resource-intensive IndexedMGraph, since both o and oTemp will be
GC'ed after serialization.
- if (oTemp != null) o = new SimpleMGraph(oTemp);
+ if (oTemp != null) {
+ o = new SimpleMGraph(oTemp);
+ }
if (o == null) {
log.debug("Ontology {} not found in any ontology provider or
library.", ontologyId);
@@ -296,12 +310,15 @@ public class OntoNetRootResource extends
*/
Iterator<Triple> imports = o.filter(null, OWL.imports, null);
Set<Triple> oldImports = new HashSet<Triple>();
- while (imports.hasNext())
+ while (imports.hasNext()) {
oldImports.add(imports.next());
+ }
for (Triple t : oldImports) {
// construct new statement
String s = ((UriRef) t.getObject()).getUnicodeString();
- if (s.contains("::")) s = s.substring(s.indexOf("::") + 2,
s.length());
+ if (s.contains("::")) {
+ s = s.substring(s.indexOf("::") + 2, s.length());
+ }
UriRef target = new UriRef(base + "/" + s);
o.add(new TripleImpl(t.getSubject(), OWL.imports, target));
// remove old statement
@@ -318,18 +335,36 @@ public class OntoNetRootResource extends
}
log.debug("Exported as Clerezza Graph in {} ms. Handing over to
writer.", System.currentTimeMillis()
-
- before);
+ - before);
return o;
}
- public Set<String> getHandles(OWLOntologyID ontologyId) {
- Set<String> handles = new HashSet<String>();
- if (onManager != null) for (Scope scope :
onManager.getRegisteredScopes())
- if (scope.getCoreSpace().hasOntology(ontologyId)
- || scope.getCustomSpace().hasOntology(ontologyId))
handles.add(scope.getID());
- if (sessionManager != null) for (String sesId :
sessionManager.getRegisteredSessionIDs())
- if (sessionManager.getSession(sesId).hasOntology(ontologyId))
handles.add(sesId);
- return handles;
+ public Set<String> getHandles(final OWLOntologyID ontologyId) {
+ //TODO use rdfViewable instead of Vieable to make separation of
+ //presentation and application logic cleaner
+ return AccessController.doPrivileged(new
PrivilegedAction<Set<String>>() {
+ @Override
+ public Set<String> run() {
+ Set<String> handles = new HashSet<String>();
+ if (onManager != null) {
+ for (Scope scope : onManager.getRegisteredScopes()) {
+ if (scope.getCoreSpace().hasOntology(ontologyId)
+ ||
scope.getCustomSpace().hasOntology(ontologyId)) {
+ handles.add(scope.getID());
+ }
+ }
+ }
+ if (sessionManager != null) {
+ for (String sesId :
sessionManager.getRegisteredSessionIDs()) {
+ if
(sessionManager.getSession(sesId).hasOntology(ontologyId)) {
+ handles.add(sesId);
+ }
+ }
+ }
+ return handles;
+ }
+ });
+
}
@GET
@@ -350,16 +385,38 @@ public class OntoNetRootResource extends
}
public SortedSet<OWLOntologyID> getOntologies() {
- // No orphans included.
- SortedSet<OWLOntologyID> filtered = new TreeSet<OWLOntologyID>();
- Set<OWLOntologyID> orphans = ontologyProvider.listOrphans();
- for (OWLOntologyID id : ontologyProvider.getPublicKeys())
- if (id != null && !orphans.contains(id)) filtered.add(id);
- return filtered;
+ //As this method is invoked from the template it would be too late
+ //to handle AccessControlExceptionS
+ //TODO use rdfViewable instead of Vieable to make separation of
+ //presentation and application logic cleaner
+ return AccessController.doPrivileged(new
PrivilegedAction<SortedSet<OWLOntologyID>>() {
+ @Override
+ public SortedSet<OWLOntologyID> run() {
+ // No orphans included.
+ SortedSet<OWLOntologyID> filtered = new
TreeSet<OWLOntologyID>();
+ Set<OWLOntologyID> orphans = ontologyProvider.listOrphans();
+ for (OWLOntologyID id : ontologyProvider.getPublicKeys()) {
+ if (id != null && !orphans.contains(id)) {
+ filtered.add(id);
+ }
+ }
+ return filtered;
+ }
+ });
}
public Set<OWLOntologyID> getOrphans() {
- return ontologyProvider.listOrphans();
+ //As this method is invoked from the template it would be too late
+ //to handle AccessControlExceptionS
+ //TODO use rdfViewable instead of Vieable to make separation of
+ //presentation and application logic cleaner
+ return AccessController.doPrivileged(new
PrivilegedAction<Set<OWLOntologyID>>() {
+
+ @Override
+ public Set<OWLOntologyID> run() {
+ return ontologyProvider.listOrphans();
+ }
+ });
}
private OWLOntology getOWLOntology(String ontologyId, boolean merge, URI
requestUri) {
@@ -413,7 +470,9 @@ public class OntoNetRootResource extends
for (OWLImportsDeclaration oldImp : o.getImportsDeclarations()) {
changes.add(new RemoveImport(o, oldImp));
String s = oldImp.getIRI().toString();
- if (s.contains("::")) s = s.substring(s.indexOf("::") + 2,
s.length());
+ if (s.contains("::")) {
+ s = s.substring(s.indexOf("::") + 2, s.length());
+ }
IRI target = IRI.create(base + s);
changes.add(new AddImport(o, df.getOWLImportsDeclaration(target)));
}
@@ -428,31 +487,44 @@ public class OntoNetRootResource extends
o.getOWLOntologyManager().applyChanges(changes);
log.debug("Exported as Clerezza Graph in {} ms. Handing over to
writer.", System.currentTimeMillis()
-
- before);
+ - before);
return o;
}
- public int getSize(OWLOntologyID ontologyId) {
- Multiplexer desc = new
MGraphMultiplexer(ontologyProvider.getMetaGraph(MGraph.class));
- return desc.getSize(ontologyId);
+ public int getSize(final OWLOntologyID ontologyId) {
+ //TODO use rdfViewable instead of Vieable to make separation of
+ //presentation and application logic cleaner
+ return AccessController.doPrivileged(new PrivilegedAction<Integer>() {
+ @Override
+ public Integer run() {
+ Multiplexer desc = new
MGraphMultiplexer(ontologyProvider.getMetaGraph(MGraph.class));
+ return desc.getSize(ontologyId);
+ }
+ });
+
}
@GET
@Path("/{ontologyId:.+}")
@Produces(value = {APPLICATION_JSON, N3, N_TRIPLE, RDF_JSON})
public Response getStandaloneGraph(@PathParam("ontologyId") String
ontologyId,
- @DefaultValue("false")
@QueryParam("meta") boolean meta,
- @DefaultValue("false")
@QueryParam("merge") boolean merged,
- @Context UriInfo uriInfo,
- @Context HttpHeaders headers) {
+ @DefaultValue("false") @QueryParam("meta") boolean meta,
+ @DefaultValue("false") @QueryParam("merge") boolean merged,
+ @Context UriInfo uriInfo,
+ @Context HttpHeaders headers) {
- if (meta) return getMetadata(ontologyId, uriInfo, headers);
+ if (meta) {
+ return getMetadata(ontologyId, uriInfo, headers);
+ }
ResponseBuilder rb;
- if (ontologyId == null || ontologyId.isEmpty()) rb =
Response.status(BAD_REQUEST);
+ if (ontologyId == null || ontologyId.isEmpty()) {
+ rb = Response.status(BAD_REQUEST);
+ }
OWLOntologyID key = OntologyUtils.decode(ontologyId);
- if (ontologyProvider.listOrphans().contains(key)) rb =
Response.status(NO_CONTENT);
- else {
+ if (ontologyProvider.listOrphans().contains(key)) {
+ rb = Response.status(NO_CONTENT);
+ } else {
TripleCollection o = getGraph(ontologyId, merged,
uriInfo.getRequestUri());
rb = o == null ? Response.status(NOT_FOUND) : Response.ok(o);
}
@@ -461,29 +533,32 @@ public class OntoNetRootResource extends
}
/**
- * Gets the ontology with the given identifier in its version managed by
the session.
- *
- * @param sessionId
- * the session identifier.
- * @param ontologyId
- * the ontology identifier.
+ * 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.
+ * @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 = {RDF_XML, TURTLE, X_TURTLE, MANCHESTER_OWL,
FUNCTIONAL_OWL, OWL_XML, TEXT_PLAIN})
public Response getStandaloneOntology(@PathParam("ontologyId") String
ontologyId,
- @DefaultValue("false")
@QueryParam("merge") boolean merged,
- @Context UriInfo uriInfo,
- @Context HttpHeaders headers) {
+ @DefaultValue("false") @QueryParam("merge") boolean merged,
+ @Context UriInfo uriInfo,
+ @Context HttpHeaders headers) {
ResponseBuilder rb;
- if (ontologyId == null || ontologyId.isEmpty()) rb =
Response.status(BAD_REQUEST);
+ if (ontologyId == null || ontologyId.isEmpty()) {
+ rb = Response.status(BAD_REQUEST);
+ }
OWLOntologyID key = OntologyUtils.decode(ontologyId);
- if (ontologyProvider.listOrphans().contains(key)) rb =
Response.status(NO_CONTENT);
- else {
+ if (ontologyProvider.listOrphans().contains(key)) {
+ rb = Response.status(NO_CONTENT);
+ } else {
OWLOntology o = getOWLOntology(ontologyId, merged,
uriInfo.getRequestUri());
rb = o == null ? Response.status(NOT_FOUND) : Response.ok(o);
}
@@ -492,13 +567,14 @@ public class OntoNetRootResource extends
}
public Response getMetadata(@PathParam("ontologyId") String ontologyId,
- @Context UriInfo uriInfo,
- @Context HttpHeaders headers) {
+ @Context UriInfo uriInfo,
+ @Context HttpHeaders headers) {
ResponseBuilder rb;
UriRef me = new UriRef(getPublicBaseUri() + "ontonet/" + ontologyId);
MGraph mGraph = new SimpleMGraph();
- for (String alias : getAliases(OntologyUtils.decode(ontologyId)))
+ for (String alias : getAliases(OntologyUtils.decode(ontologyId))) {
mGraph.add(new TripleImpl(new UriRef(getPublicBaseUri() +
"ontonet/" + alias), OWL.sameAs, me));
+ }
rb = Response.ok(mGraph);
addCORSOrigin(servletContext, rb, headers);
return rb.build();
@@ -509,18 +585,18 @@ public class OntoNetRootResource extends
@Consumes({MULTIPART_FORM_DATA})
@Produces({TEXT_HTML, TEXT_PLAIN, RDF_XML, TURTLE, X_TURTLE, N3})
public Response loadOntologyContent(@PathParam("ontologyId") String
ontologyId,
- FormDataMultiPart data,
- @Context HttpHeaders headers) {
+ FormDataMultiPart data,
+ @Context HttpHeaders headers) {
ResponseBuilder rb = performLoadOntology(data, headers,
- Origin.create(OntologyUtils.decode(ontologyId)));
+ Origin.create(OntologyUtils.decode(ontologyId)));
// rb.header(HttpHeaders.CONTENT_TYPE, TEXT_HTML + "; charset=utf-8");
addCORSOrigin(servletContext, rb, headers);
return rb.build();
}
protected ResponseBuilder performLoadOntology(FormDataMultiPart data,
- HttpHeaders headers,
- Origin<?>... keys) {
+ HttpHeaders headers,
+ Origin<?>... keys) {
log.debug(" post(FormDataMultiPart data)");
ResponseBuilder rb = null;
@@ -533,22 +609,27 @@ public class OntoNetRootResource extends
if (bpart instanceof FormDataBodyPart) {
FormDataBodyPart dbp = (FormDataBodyPart) bpart;
String name = dbp.getName();
- if (name.equals("file")) file = bpart.getEntityAs(File.class);
- else {
+ if (name.equals("file")) {
+ file = bpart.getEntityAs(File.class);
+ } else {
String value = dbp.getValue();
- if (name.equals("format") && !value.equals("auto")) format
= value;
- else if (name.equals("url")) try {
- URI.create(value); // To throw 400 if malformed.
- location = IRI.create(value);
- } catch (Exception ex) {
- log.error("Malformed IRI for " + value, ex);
- throw new WebApplicationException(ex, BAD_REQUEST);
- }
- else if (name.equals("alias") && !"null".equals(value))
try {
- aliases.add(OntologyUtils.decode(value));
- } catch (Exception ex) {
- log.error("Malformed public key for " + value, ex);
- throw new WebApplicationException(ex, BAD_REQUEST);
+ if (name.equals("format") && !value.equals("auto")) {
+ format = value;
+ } else if (name.equals("url")) {
+ try {
+ URI.create(value); // To throw 400 if malformed.
+ location = IRI.create(value);
+ } catch (Exception ex) {
+ log.error("Malformed IRI for " + value, ex);
+ throw new WebApplicationException(ex, BAD_REQUEST);
+ }
+ } else if (name.equals("alias") && !"null".equals(value)) {
+ try {
+ aliases.add(OntologyUtils.decode(value));
+ } catch (Exception ex) {
+ log.error("Malformed public key for " + value, ex);
+ throw new WebApplicationException(ex, BAD_REQUEST);
+ }
}
}
}
@@ -562,13 +643,18 @@ public class OntoNetRootResource extends
* 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(new String[] {RDF_XML, TURTLE, X_TURTLE,
N3, N_TRIPLE, OWL_XML,
- FUNCTIONAL_OWL,
MANCHESTER_OWL, RDF_JSON});
+ if (format != null && !format.trim().isEmpty()) {
+ formats = Collections.singletonList(format);
+ } else // The RESTful API has its own list of preferred formats
+ {
+ formats = Arrays.asList(new String[]{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.");
+ if (!itf.hasNext()) {
+ throw new OntologyLoadingException("No suitable format found
or defined.");
+ }
do {
String f = itf.next();
try {
@@ -591,8 +677,8 @@ public class OntoNetRootResource extends
}
} catch (UnsupportedFormatException e) {
log.warn(
- "POST method failed for media type {}. This should not
happen (should fail earlier)",
- headers.getMediaType());
+ "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) {
@@ -604,8 +690,11 @@ public class OntoNetRootResource extends
}
} while ((key == null/* || key.isAnonymous() */) && itf.hasNext());
if ((key == null || key.isAnonymous()) && rb == null) {
- if (failed > 0) throw new WebApplicationException(BAD_REQUEST);
- else if (unsupported > 0) throw new
WebApplicationException(UNSUPPORTED_MEDIA_TYPE);
+ if (failed > 0) {
+ throw new WebApplicationException(BAD_REQUEST);
+ } else if (unsupported > 0) {
+ throw new WebApplicationException(UNSUPPORTED_MEDIA_TYPE);
+ }
}
} else if (location != null) {
try { // Here we try every format supported by the Java API
@@ -616,20 +705,26 @@ public class OntoNetRootResource extends
}
} else if (!aliases.isEmpty()) // No content but there are aliases.
{
- for (Origin<?> origin : keys)
+ for (Origin<?> origin : keys) {
if (origin.getReference() instanceof OWLOntologyID) {
OWLOntologyID primary = ((OWLOntologyID)
origin.getReference());
- if (ontologyProvider.getStatus(primary) !=
org.apache.stanbol.ontologymanager.servicesapi.ontology.OntologyProvider.Status.NO_MATCH)
for (OWLOntologyID alias : aliases)
- try {
- if (ontologyProvider.addAlias(primary, alias) &&
key == null) key = alias;
- } catch (IllegalArgumentException ex) {
- log.warn("Cannot add alias");
- log.warn(" ... ontology key: {}", primary);
- log.warn(" ... alias: {}", alias);
- log.warn(" ... reason: ", ex);
- continue;
+ if (ontologyProvider.getStatus(primary) !=
org.apache.stanbol.ontologymanager.servicesapi.ontology.OntologyProvider.Status.NO_MATCH)
{
+ for (OWLOntologyID alias : aliases) {
+ try {
+ if (ontologyProvider.addAlias(primary, alias)
&& key == null) {
+ key = alias;
+ }
+ } catch (IllegalArgumentException ex) {
+ log.warn("Cannot add alias");
+ log.warn(" ... ontology key: {}", primary);
+ log.warn(" ... alias: {}", alias);
+ log.warn(" ... reason: ", ex);
+ continue;
+ }
}
+ }
}
+ }
} else {
log.error("Bad request");
log.error(" file is: {}", file);
@@ -644,40 +739,61 @@ public class OntoNetRootResource extends
rb.entity(new Viewable("index", this));
rb.header(HttpHeaders.CONTENT_TYPE, MediaType.TEXT_HTML +
"; charset=utf-8");
}
- } else rb = Response.ok();
- } else if (rb == null) rb =
Response.status(Status.INTERNAL_SERVER_ERROR);
+ } else {
+ rb = Response.ok();
+ }
+ } else if (rb == null) {
+ rb = Response.status(Status.INTERNAL_SERVER_ERROR);
+ }
return rb;
}
/**
- * Helper method to make sure a ResponseBuilder is created on every
conditions, so that it is then
- * possible to enable CORS on it afterwards.
- *
+ * Helper method to make sure a ResponseBuilder is created on every
+ * conditions, so that it is then possible to enable CORS on it afterwards.
+ *
* @param ontologyId
* @return
*/
protected ResponseBuilder performShowOntology(String ontologyId) {
- if (ontologyId == null || ontologyId.isEmpty()) return
Response.status(BAD_REQUEST);
+ if (ontologyId == null || ontologyId.isEmpty()) {
+ return Response.status(BAD_REQUEST);
+ }
OWLOntologyID key = OntologyUtils.decode(ontologyId);
- if (ontologyProvider.listOrphans().contains(key)) return
Response.status(NO_CONTENT);
+ if (ontologyProvider.listOrphans().contains(key)) {
+ return Response.status(NO_CONTENT);
+ }
OWLOntology o = getOWLOntology(ontologyId, false,
uriInfo.getRequestUri());
- if (o == null) return Response.status(NOT_FOUND);
+ if (o == null) {
+ return Response.status(NOT_FOUND);
+ }
// try {
Set<OntologyCollector> handles = new HashSet<OntologyCollector>();
- if (onManager != null) for (Scope scope :
onManager.getRegisteredScopes()) {
- if (scope.getCoreSpace().hasOntology(key))
handles.add(scope.getCoreSpace());
- if (scope.getCustomSpace().hasOntology(key))
handles.add(scope.getCustomSpace());
- }
- if (sessionManager != null) for (String sesId :
sessionManager.getRegisteredSessionIDs())
- if (sessionManager.getSession(sesId).hasOntology(key))
handles.add(sessionManager
- .getSession(sesId));
+ if (onManager != null) {
+ for (Scope scope : onManager.getRegisteredScopes()) {
+ if (scope.getCoreSpace().hasOntology(key)) {
+ handles.add(scope.getCoreSpace());
+ }
+ if (scope.getCustomSpace().hasOntology(key)) {
+ handles.add(scope.getCustomSpace());
+ }
+ }
+ }
+ if (sessionManager != null) {
+ for (String sesId : sessionManager.getRegisteredSessionIDs()) {
+ if (sessionManager.getSession(sesId).hasOntology(key)) {
+ handles.add(sessionManager
+ .getSession(sesId));
+ }
+ }
+ }
// ByteArrayOutputStream out = new ByteArrayOutputStream();
// o.getOWLOntologyManager().saveOntology(o, new
ManchesterOWLSyntaxOntologyFormat(), out);
return Response.ok(new Viewable("ontology",
- // new OntologyPrettyPrintResource(servletContext,
- // uriInfo, out)
+ // new OntologyPrettyPrintResource(servletContext,
+ // uriInfo, out)
new OntologyStatsResource(servletContext, uriInfo, key, o,
ontologyProvider.listAliases(key),
- handles)));
+ handles)));
// } catch (OWLOntologyStorageException e) {
// throw new WebApplicationException(e, INTERNAL_SERVER_ERROR);
// }
@@ -697,8 +813,8 @@ public class OntoNetRootResource extends
@Path("/{ontologyId:.+}")
@Produces(TEXT_HTML)
public Response showOntology(@PathParam("ontologyId") String ontologyId,
- @Context HttpHeaders headers,
- @Context UriInfo uriInfo) {
+ @Context HttpHeaders headers,
+ @Context UriInfo uriInfo) {
ResponseBuilder rb = performShowOntology(ontologyId);
rb.header(HttpHeaders.CONTENT_TYPE, TEXT_HTML + "; charset=utf-8");
addCORSOrigin(servletContext, rb, headers);
@@ -707,37 +823,39 @@ public class OntoNetRootResource extends
/**
* POSTs an ontology content as application/x-www-form-urlencoded
- *
+ *
* @param content
* @param headers
* @return
*/
@POST
@Consumes(value = {RDF_XML, TURTLE, X_TURTLE, N3, N_TRIPLE, OWL_XML,
FUNCTIONAL_OWL, MANCHESTER_OWL,
- RDF_JSON})
+ RDF_JSON})
public Response storeOntology(InputStream content, @Context HttpHeaders
headers) {
long before = System.currentTimeMillis();
ResponseBuilder rb;
MediaType mt = headers.getMediaType();
if (RDF_XML_TYPE.equals(mt) || TURTLE_TYPE.equals(mt) ||
X_TURTLE_TYPE.equals(mt)
- || N3_TYPE.equals(mt) || N_TRIPLE_TYPE.equals(mt) ||
RDF_JSON_TYPE.equals(mt)) {
+ || N3_TYPE.equals(mt) || N_TRIPLE_TYPE.equals(mt) ||
RDF_JSON_TYPE.equals(mt)) {
OWLOntologyID key = null;
try {
key = ontologyProvider.loadInStore(content,
headers.getMediaType().toString(), true);
rb = Response.ok();
} catch (UnsupportedFormatException e) {
log.warn(
- "POST method failed for media type {}. This should not
happen (should fail earlier)",
- headers.getMediaType());
+ "POST method failed for media type {}. This should not
happen (should fail earlier)",
+ headers.getMediaType());
rb = Response.status(UNSUPPORTED_MEDIA_TYPE);
} catch (IOException e) {
throw new WebApplicationException(e, BAD_REQUEST);
}
// An exception should have been thrown earlier, but just in case.
- if (key == null || key.isAnonymous()) rb =
Response.status(Status.INTERNAL_SERVER_ERROR);
+ if (key == null || key.isAnonymous()) {
+ rb = Response.status(Status.INTERNAL_SERVER_ERROR);
+ }
} else if (OWL_XML_TYPE.equals(mt) || FUNCTIONAL_OWL_TYPE.equals(mt)
- || MANCHESTER_OWL_TYPE.equals(mt)) {
+ || MANCHESTER_OWL_TYPE.equals(mt)) {
try {
OntologyInputSource<OWLOntology> src = new
OntologyContentInputSource(content);
ontologyProvider.loadInStore(src.getRootOntology(), true);
@@ -745,13 +863,14 @@ public class OntoNetRootResource extends
} catch (OWLOntologyCreationException e) {
throw new WebApplicationException(e, INTERNAL_SERVER_ERROR);
}
- } else rb = Response.status(UNSUPPORTED_MEDIA_TYPE);
+ } else {
+ rb = Response.status(UNSUPPORTED_MEDIA_TYPE);
+ }
addCORSOrigin(servletContext, rb, headers);
Response r = rb.build();
log.debug("POST request for ontology addition completed in {} ms with
status {}.",
- (System.currentTimeMillis() - before), r.getStatus());
+ (System.currentTimeMillis() - before), r.getStatus());
return r;
}
-
}