You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by en...@apache.org on 2013/10/13 19:47:26 UTC
svn commit: r1531722 - in /stanbol/branches/commons-ng/ontologymanager/web:
./ src/main/java/org/apache/stanbol/ontologymanager/web/resources/
Author: enridaga
Date: Sun Oct 13 17:47:25 2013
New Revision: 1531722
URL: http://svn.apache.org/r1531722
Log:
STANBOL-1152 Removed dependencies to jersey, and jersey specific features. Needs more on viewables.
Modified:
stanbol/branches/commons-ng/ontologymanager/web/pom.xml
stanbol/branches/commons-ng/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/OntoNetRootResource.java
stanbol/branches/commons-ng/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/ScopeResource.java
stanbol/branches/commons-ng/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/SessionResource.java
Modified: stanbol/branches/commons-ng/ontologymanager/web/pom.xml
URL: http://svn.apache.org/viewvc/stanbol/branches/commons-ng/ontologymanager/web/pom.xml?rev=1531722&r1=1531721&r2=1531722&view=diff
==============================================================================
--- stanbol/branches/commons-ng/ontologymanager/web/pom.xml (original)
+++ stanbol/branches/commons-ng/ontologymanager/web/pom.xml Sun Oct 13 17:47:25 2013
@@ -59,6 +59,7 @@
<Import-Package>
javax.ws.rs.*; version="[2.0,3]",
org.apache.stanbol.commons.web.base; provide:=true; version="[1.0.0,2)",
+ org.apache.clerezza.jaxrs.utils.*,
com.sun.jersey.*; version="[1.15.0,2)",
com.sun.net.httpserver.*,
*
@@ -129,33 +130,37 @@
<version>0.11.0-SNAPSHOT</version>
</dependency>
-
<!-- specific deps for this project -->
<dependency>
<groupId>org.apache.stanbol</groupId>
<artifactId>org.apache.stanbol.commons.web.viewable</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
+
+ <dependency>
+ <groupId>org.apache.clerezza</groupId>
+ <artifactId>jaxrs.utils</artifactId>
+ </dependency>
<!-- Jersey specific JAX-RS annotations -->
- <dependency> <!-- because of ImplicitProduces -->
+ <!--<dependency> because of ImplicitProduces
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.15</version>
<scope>compile</scope>
- </dependency>
- <dependency> <!-- because of multipart -->
+ </dependency>-->
+ <!-- dependency> because of multipart
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-multipart</artifactId>
<version>1.15</version>
<scope>compile</scope>
</dependency>
- <dependency> <!-- because of jersey (temporary) -->
+ <dependency> because of jersey (temporary)
<groupId>com.sun.net.httpserver</groupId>
<artifactId>http</artifactId>
<version>20070405</version>
<scope>compile</scope>
- </dependency>
+ </dependency>-->
Modified: stanbol/branches/commons-ng/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/OntoNetRootResource.java
URL: http://svn.apache.org/viewvc/stanbol/branches/commons-ng/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/OntoNetRootResource.java?rev=1531722&r1=1531721&r2=1531722&view=diff
==============================================================================
--- stanbol/branches/commons-ng/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/OntoNetRootResource.java (original)
+++ stanbol/branches/commons-ng/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/OntoNetRootResource.java Sun Oct 13 17:47:25 2013
@@ -80,6 +80,7 @@ import javax.ws.rs.core.Response.Respons
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.core.UriInfo;
+import org.apache.clerezza.jaxrs.utils.form.MultiPartBody;
import org.apache.clerezza.rdf.core.Graph;
import org.apache.clerezza.rdf.core.MGraph;
import org.apache.clerezza.rdf.core.Triple;
@@ -111,8 +112,10 @@ import org.apache.stanbol.ontologymanage
import org.apache.stanbol.ontologymanager.servicesapi.ontology.OntologyLoadingException;
import org.apache.stanbol.ontologymanager.servicesapi.ontology.OntologyProvider;
import org.apache.stanbol.ontologymanager.servicesapi.ontology.OrphanOntologyKeyException;
+import org.apache.stanbol.ontologymanager.servicesapi.scope.OntologySpace;
import org.apache.stanbol.ontologymanager.servicesapi.scope.Scope;
import org.apache.stanbol.ontologymanager.servicesapi.scope.ScopeManager;
+import org.apache.stanbol.ontologymanager.servicesapi.session.Session;
import org.apache.stanbol.ontologymanager.servicesapi.session.SessionManager;
import org.apache.stanbol.ontologymanager.servicesapi.util.OntologyUtils;
import org.apache.stanbol.ontologymanager.sources.owlapi.OntologyContentInputSource;
@@ -130,10 +133,10 @@ import org.semanticweb.owlapi.model.SetO
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.sun.jersey.api.view.ImplicitProduces;
-import com.sun.jersey.multipart.BodyPart;
-import com.sun.jersey.multipart.FormDataBodyPart;
-import com.sun.jersey.multipart.FormDataMultiPart;
+//import com.sun.jersey.api.view.ImplicitProduces;
+//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;
@@ -148,7 +151,7 @@ import java.security.PrivilegedAction;
@Service(Object.class)
@Property(name="javax.ws.rs", boolValue=true)
@Path("/ontonet")
-@ImplicitProduces(MediaType.TEXT_HTML + ";qs=2")
+//@ImplicitProduces(MediaType.TEXT_HTML + ";qs=2")
public class OntoNetRootResource extends AbstractOntologyAccessResource {
private Logger log = LoggerFactory.getLogger(getClass());
@@ -597,7 +600,7 @@ 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,
+ MultiPartBody data,
@Context HttpHeaders headers) {
ResponseBuilder rb = performLoadOntology(data, headers,
Origin.create(OntologyUtils.decode(ontologyId)));
@@ -606,46 +609,56 @@ public class OntoNetRootResource extends
return rb.build();
}
- protected ResponseBuilder performLoadOntology(FormDataMultiPart data,
+ protected ResponseBuilder performLoadOntology(MultiPartBody data,
HttpHeaders headers,
Origin<?>... keys) {
- log.debug(" post(FormDataMultiPart data)");
+ log.debug(" post(MultiPartBody data)");
ResponseBuilder rb = null;
IRI location = null;
File file = null; // If found, it takes precedence over location.
String format = null;
List<OWLOntologyID> aliases = new ArrayList<OWLOntologyID>();
- for (BodyPart bpart : data.getBodyParts()) {
- log.debug("is a {}", bpart.getClass());
- if (bpart instanceof FormDataBodyPart) {
- FormDataBodyPart dbp = (FormDataBodyPart) bpart;
- String name = dbp.getName();
- 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 (data.getFormFileParameterValues("file").length > 0) {
+ file = new File(data.getFormFileParameterValues("file")[0].getFileName());
+ }
+ // 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 {
+ 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);
+ }
+ }
+ if (data.getTextParameterValues("alias").length > 0) {
+ for(String value : data.getTextParameterValues("alias")){
+ if (!"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);
}
}
}
}
+
+ log.debug("Parameters:");
+ log.debug("file: {}", file);
+ log.debug("url: {}", location);
+ log.debug("format: {}", format);
+ log.debug("alias: {}", aliases);
+
// Then add the file
OWLOntologyID key = null;
if (file != null && file.canRead() && file.exists()) {
@@ -814,7 +827,7 @@ public class OntoNetRootResource extends
@POST
@Consumes({MULTIPART_FORM_DATA})
@Produces({TEXT_HTML, TEXT_PLAIN, RDF_XML, TURTLE, X_TURTLE, N3})
- public Response postOntology(FormDataMultiPart data, @Context HttpHeaders headers) {
+ public Response postOntology(MultiPartBody data, @Context HttpHeaders headers) {
ResponseBuilder rb = performLoadOntology(data, headers);
// rb.header(HttpHeaders.CONTENT_TYPE, TEXT_HTML + "; charset=utf-8");
//addCORSOrigin(servletContext, rb, headers);
@@ -885,4 +898,64 @@ public class OntoNetRootResource extends
(System.currentTimeMillis() - before), r.getStatus());
return r;
}
+
+ public class OntologyStatsResource extends ResultData {
+
+ private Set<OntologyCollector> handles;
+
+ private Set<OWLOntologyID> identifiers;
+
+ private OWLOntology o;
+
+ private UriInfo uriInfo;
+
+ private OWLOntologyID submitted;
+
+ public OntologyStatsResource(
+ UriInfo uriInfo,
+ OWLOntologyID key,
+ OWLOntology o,
+ Set<OWLOntologyID> identifiers,
+ Set<OntologyCollector> handles) {
+// this.servletContext = context;
+ this.uriInfo = uriInfo;
+ this.submitted = key;
+ this.o = o;
+ this.identifiers = identifiers;
+ this.handles = handles;
+ }
+
+ public Set<String> getAliases() {
+ Set<String> aliases = new HashSet<String>();
+ for (OWLOntologyID alias : identifiers)
+ // if (!o.getOntologyID().equals(alias))
+ aliases.add(OntologyUtils.encode(alias));
+ return Collections.unmodifiableSet(aliases);
+ }
+
+ public Set<String> getScopeHandles() {
+ Set<String> handles = new HashSet<String>();
+ for (OntologyCollector handle : this.handles)
+ if (handle instanceof OntologySpace) handles.add(handle.getID());
+ return handles;
+ }
+
+ public Set<String> getSessionHandles() {
+ Set<String> handles = new HashSet<String>();
+ for (OntologyCollector handle : this.handles)
+ if (handle instanceof Session) handles.add(handle.getID());
+ return handles;
+ }
+
+ public int getTotalAxioms() {
+ return o.getAxiomCount();
+ }
+ public OWLOntologyID getRepresentedOntologyKey() {
+ return submitted;
+ }
+
+ public String stringForm(OWLOntologyID ontologyID) {
+ return OntologyUtils.encode(ontologyID);
+ }
+ }
}
Modified: stanbol/branches/commons-ng/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/ScopeResource.java
URL: http://svn.apache.org/viewvc/stanbol/branches/commons-ng/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/ScopeResource.java?rev=1531722&r1=1531721&r2=1531722&view=diff
==============================================================================
--- stanbol/branches/commons-ng/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/ScopeResource.java (original)
+++ stanbol/branches/commons-ng/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/ScopeResource.java Sun Oct 13 17:47:25 2013
@@ -30,9 +30,6 @@ import static javax.ws.rs.core.Response.
import static javax.ws.rs.core.Response.Status.FORBIDDEN;
import static javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR;
import static javax.ws.rs.core.Response.Status.NOT_FOUND;
-import static javax.ws.rs.core.Response.Status.UNSUPPORTED_MEDIA_TYPE;
-//import static org.apache.stanbol.commons.web.base.CorsHelper.addCORSOrigin;
-//import static org.apache.stanbol.commons.web.base.CorsHelper.enableCORS;
import static org.apache.stanbol.commons.web.base.format.KRFormat.FUNCTIONAL_OWL;
import static org.apache.stanbol.commons.web.base.format.KRFormat.MANCHESTER_OWL;
import static org.apache.stanbol.commons.web.base.format.KRFormat.N3;
@@ -43,9 +40,8 @@ import static org.apache.stanbol.commons
import static org.apache.stanbol.commons.web.base.format.KRFormat.TURTLE;
import static org.apache.stanbol.commons.web.base.format.KRFormat.X_TURTLE;
+import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
@@ -80,6 +76,8 @@ import javax.ws.rs.core.Response.Respons
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.core.UriInfo;
+import org.apache.clerezza.jaxrs.utils.form.FormFile;
+import org.apache.clerezza.jaxrs.utils.form.MultiPartBody;
import org.apache.clerezza.rdf.core.Graph;
import org.apache.clerezza.rdf.core.TripleCollection;
import org.apache.clerezza.rdf.core.access.TcProvider;
@@ -92,7 +90,6 @@ import org.apache.felix.scr.annotations.
import org.apache.stanbol.commons.owl.util.OWLUtils;
import org.apache.stanbol.commons.owl.util.URIUtils;
import org.apache.stanbol.commons.web.viewable.Viewable;
-//import org.apache.stanbol.commons.web.base.ContextHelper;
import org.apache.stanbol.ontologymanager.ontonet.api.scope.OntologyScope;
import org.apache.stanbol.ontologymanager.registry.api.RegistryManager;
import org.apache.stanbol.ontologymanager.registry.api.model.Library;
@@ -122,10 +119,9 @@ import org.semanticweb.owlapi.model.OWLO
import org.semanticweb.owlapi.model.OWLOntologyStorageException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
-import com.sun.jersey.multipart.BodyPart;
-import com.sun.jersey.multipart.FormDataBodyPart;
-import com.sun.jersey.multipart.FormDataMultiPart;
+//import static org.apache.stanbol.commons.web.base.CorsHelper.addCORSOrigin;
+//import static org.apache.stanbol.commons.web.base.CorsHelper.enableCORS;
+//import org.apache.stanbol.commons.web.base.ContextHelper;
/**
* The REST resource of an OntoNet {@link OntologyScope} whose identifier is known.
@@ -135,7 +131,7 @@ import com.sun.jersey.multipart.FormData
*/
@Component
@Service(Object.class)
-@Property(name="javax.ws.rs", boolValue=true)
+@Property(name = "javax.ws.rs", boolValue = true)
@Path("/ontonet/ontology/{scopeid}")
public class ScopeResource extends AbstractOntologyAccessResource {
@@ -157,23 +153,22 @@ public class ScopeResource extends Abstr
protected Scope scope;
-
public ScopeResource() {
super();
-// log.info("<init> with scope {}", scopeId);
-//
-// this.servletContext = servletContext;
-// this.onm = (ScopeManager) ContextHelper.getServiceFromContext(ScopeManager.class, servletContext);
-// this.regMgr = (RegistryManager) ContextHelper.getServiceFromContext(RegistryManager.class,
-// servletContext);
-// this.ontologyProvider = (OntologyProvider<TcProvider>) ContextHelper.getServiceFromContext(
-// OntologyProvider.class, servletContext);
-
-// if (scopeId == null || scopeId.isEmpty()) {
-// log.error("Missing path parameter scopeid={}", scopeId);
-// throw new WebApplicationException(NOT_FOUND);
-// }
-// scope = onm.getScope(scopeId);
+ // log.info("<init> with scope {}", scopeId);
+ //
+ // this.servletContext = servletContext;
+ // this.onm = (ScopeManager) ContextHelper.getServiceFromContext(ScopeManager.class, servletContext);
+ // this.regMgr = (RegistryManager) ContextHelper.getServiceFromContext(RegistryManager.class,
+ // servletContext);
+ // this.ontologyProvider = (OntologyProvider<TcProvider>) ContextHelper.getServiceFromContext(
+ // OntologyProvider.class, servletContext);
+
+ // if (scopeId == null || scopeId.isEmpty()) {
+ // log.error("Missing path parameter scopeid={}", scopeId);
+ // throw new WebApplicationException(NOT_FOUND);
+ // }
+ // scope = onm.getScope(scopeId);
// // Skip null checks: the scope might be created with a PUT
// if (scope == null) {
@@ -189,12 +184,12 @@ public class ScopeResource extends Abstr
@Context HttpHeaders headers) {
scope = onm.getScope(scopeid);
-
+
if (scope == null) return Response.status(NOT_FOUND).build();
IRI prefix = IRI.create(getPublicBaseUri() + "ontonet/ontology/");
// Export to Clerezza Graph, which can be rendered as JSON-LD.
ResponseBuilder rb = Response.ok(scope.export(Graph.class, merge, prefix));
-// addCORSOrigin(servletContext, rb, headers);
+ // addCORSOrigin(servletContext, rb, headers);
return rb.build();
}
@@ -204,14 +199,14 @@ public class ScopeResource extends Abstr
@DefaultValue("false") @QueryParam("merge") boolean merge,
@Context HttpHeaders headers) {
scope = onm.getScope(scopeid);
-
+
if (scope == null) return Response.status(NOT_FOUND).build();
// Export smaller graphs to OWLOntology due to the more human-readable rendering.
ResponseBuilder rb;
IRI prefix = IRI.create(getPublicBaseUri() + "ontonet/ontology/");
if (merge) rb = Response.ok(scope.export(Graph.class, merge, prefix));
else rb = Response.ok(scope.export(OWLOntology.class, merge, prefix));
-// addCORSOrigin(servletContext, rb, headers);
+ // addCORSOrigin(servletContext, rb, headers);
return rb.build();
}
@@ -221,12 +216,12 @@ public class ScopeResource extends Abstr
@DefaultValue("false") @QueryParam("merge") boolean merge,
@Context HttpHeaders headers) {
scope = onm.getScope(scopeid);
-
+
if (scope == null) return Response.status(NOT_FOUND).build();
IRI prefix = IRI.create(getPublicBaseUri() + "ontonet/ontology/");
// Export to OWLOntology due to the more human-readable rendering.
ResponseBuilder rb = Response.ok(scope.export(OWLOntology.class, merge, prefix));
-// addCORSOrigin(servletContext, rb, headers);
+ // addCORSOrigin(servletContext, rb, headers);
return rb.build();
}
@@ -236,11 +231,11 @@ public class ScopeResource extends Abstr
@Context HttpHeaders headers,
@Context ServletContext servletContext) {
scope = onm.getScope(scopeid);
-
+
onm.deregisterScope(scope);
scope = null;
ResponseBuilder rb = Response.ok();
-// addCORSOrigin(servletContext, rb, headers);
+ // addCORSOrigin(servletContext, rb, headers);
return rb.build();
}
@@ -259,12 +254,12 @@ public class ScopeResource extends Abstr
@Context UriInfo uriInfo,
@Context HttpHeaders headers) {
scope = onm.getScope(scopeid);
-
+
OntologySpace space = scope.getCoreSpace();
IRI prefix = IRI.create(getPublicBaseUri() + "ontonet/ontology/");
Graph o = space.export(Graph.class, merge, prefix);
ResponseBuilder rb = Response.ok(o);
-// addCORSOrigin(servletContext, rb, headers);
+ // addCORSOrigin(servletContext, rb, headers);
return rb.build();
}
@@ -276,12 +271,12 @@ public class ScopeResource extends Abstr
@Context UriInfo uriInfo,
@Context HttpHeaders headers) {
scope = onm.getScope(scopeid);
-
+
OntologySpace space = scope.getCoreSpace();
IRI prefix = IRI.create(getPublicBaseUri() + "ontonet/ontology/");
OWLOntology o = space.export(OWLOntology.class, merge, prefix);
ResponseBuilder rb = Response.ok(o);
-// addCORSOrigin(servletContext, rb, headers);
+ // addCORSOrigin(servletContext, rb, headers);
return rb.build();
}
@@ -304,12 +299,12 @@ public class ScopeResource extends Abstr
@Context UriInfo uriInfo,
@Context HttpHeaders headers) {
scope = onm.getScope(scopeid);
-
+
OntologySpace space = scope.getCustomSpace();
IRI prefix = IRI.create(getPublicBaseUri() + "ontonet/ontology/");
Graph o = space.export(Graph.class, merge, prefix);
ResponseBuilder rb = Response.ok(o);
-// addCORSOrigin(servletContext, rb, headers);
+ // addCORSOrigin(servletContext, rb, headers);
return rb.build();
}
@@ -321,12 +316,12 @@ public class ScopeResource extends Abstr
@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);
+ // addCORSOrigin(servletContext, rb, headers);
return rb.build();
}
@@ -335,11 +330,11 @@ public class ScopeResource extends Abstr
public Response getHtmlInfo(@PathParam("scopeid") String scopeid, @Context HttpHeaders headers) {
ResponseBuilder rb;
scope = onm.getScope(scopeid);
-
+
if (scope == null) rb = Response.status(NOT_FOUND);
else rb = Response.ok(new Viewable("index", this)); // TODO move to a dedicated class
rb.header(HttpHeaders.CONTENT_TYPE, TEXT_HTML + "; charset=utf-8");
-// addCORSOrigin(servletContext, rb, headers);
+ // addCORSOrigin(servletContext, rb, headers);
return rb.build();
}
@@ -372,7 +367,7 @@ public class ScopeResource extends Abstr
@OPTIONS
public Response handleCorsPreflight(@Context HttpHeaders headers) {
ResponseBuilder rb = Response.ok();
-// enableCORS(servletContext, rb, headers, GET, POST, PUT, DELETE, OPTIONS);
+ // enableCORS(servletContext, rb, headers, GET, POST, PUT, DELETE, OPTIONS);
return rb.build();
}
@@ -380,7 +375,7 @@ public class ScopeResource extends Abstr
@Path("/core")
public Response handleCorsPreflightCore(@Context HttpHeaders headers) {
ResponseBuilder rb = Response.ok();
-// enableCORS(servletContext, rb, headers, GET, OPTIONS);
+ // enableCORS(servletContext, rb, headers, GET, OPTIONS);
return rb.build();
}
@@ -388,7 +383,7 @@ public class ScopeResource extends Abstr
@Path("/custom")
public Response handleCorsPreflightCustom(@Context HttpHeaders headers) {
ResponseBuilder rb = Response.ok();
-// enableCORS(servletContext, rb, headers, GET, OPTIONS);
+ // enableCORS(servletContext, rb, headers, GET, OPTIONS);
return rb.build();
}
@@ -396,7 +391,7 @@ public class ScopeResource extends Abstr
@Path("/{ontologyId:.+}")
public Response handleCorsPreflightOntology(@Context HttpHeaders headers) {
ResponseBuilder rb = Response.ok();
-// enableCORS(servletContext, rb, headers, GET, DELETE, OPTIONS);
+ // enableCORS(servletContext, rb, headers, GET, DELETE, OPTIONS);
return rb.build();
}
@@ -424,7 +419,7 @@ public class ScopeResource extends Abstr
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/");
@@ -441,7 +436,7 @@ public class ScopeResource extends Abstr
else rb = Response.ok(o);
}
-// addCORSOrigin(servletContext, rb, headers);
+ // addCORSOrigin(servletContext, rb, headers);
return rb.build();
}
@@ -460,8 +455,7 @@ public class ScopeResource extends Abstr
@GET
@Path("/{ontologyId:.+}")
@Produces(value = {RDF_XML, TURTLE, X_TURTLE, MANCHESTER_OWL, FUNCTIONAL_OWL, OWL_XML, TEXT_PLAIN})
- public Response managedOntologyGetOWL(
- @PathParam("scopeid") String scopeid,
+ public Response managedOntologyGetOWL(@PathParam("scopeid") String scopeid,
@PathParam("ontologyId") String ontologyId,
@DefaultValue("false") @QueryParam("merge") boolean merge,
@Context UriInfo uriInfo,
@@ -470,7 +464,7 @@ public class ScopeResource extends Abstr
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/");
@@ -487,7 +481,7 @@ public class ScopeResource extends Abstr
if (o == null) rb = Response.status(NOT_FOUND);
else rb = Response.ok(o);
}
-// addCORSOrigin(servletContext, rb, headers);
+ // addCORSOrigin(servletContext, rb, headers);
return rb.build();
}
@@ -514,14 +508,14 @@ public class ScopeResource extends Abstr
else try {
ByteArrayOutputStream out = new ByteArrayOutputStream();
o.getOWLOntologyManager().saveOntology(o, new ManchesterOWLSyntaxOntologyFormat(), out);
- rb = Response.ok(new Viewable("ontology", new OntologyPrettyPrintResource(
- uriInfo, out, scope)));
+ rb = Response.ok(new Viewable("ontology",
+ new OntologyPrettyPrintResource(uriInfo, out, scope)));
} catch (OWLOntologyStorageException e) {
throw new WebApplicationException(e, INTERNAL_SERVER_ERROR);
}
}
rb.header(HttpHeaders.CONTENT_TYPE, TEXT_HTML + "; charset=utf-8");
-// addCORSOrigin(servletContext, rb, headers);
+ // addCORSOrigin(servletContext, rb, headers);
return rb.build();
}
@@ -560,7 +554,7 @@ public class ScopeResource extends Abstr
onm.setScopeActive(scopeId, true);
}
} else rb = Response.status(BAD_REQUEST); // null/blank ontology ID
-// addCORSOrigin(servletContext, rb, headers);
+ // addCORSOrigin(servletContext, rb, headers);
return rb.build();
}
@@ -579,7 +573,9 @@ public class ScopeResource extends Abstr
@POST
@Consumes(value = {RDF_XML, OWL_XML, N_TRIPLE, N3, TURTLE, X_TURTLE, FUNCTIONAL_OWL, MANCHESTER_OWL,
RDF_JSON})
- public Response manageOntology(InputStream content,@PathParam("scopeid") String scopeid, @Context HttpHeaders headers) {
+ public Response manageOntology(InputStream content,
+ @PathParam("scopeid") String scopeid,
+ @Context HttpHeaders headers) {
long before = System.currentTimeMillis();
ResponseBuilder rb;
scope = onm.getScope(scopeid);
@@ -615,7 +611,7 @@ public class ScopeResource extends Abstr
} catch (UnmodifiableOntologyCollectorException e) {
throw new WebApplicationException(e, FORBIDDEN);
}
-// addCORSOrigin(servletContext, rb, headers);
+ // addCORSOrigin(servletContext, rb, headers);
return rb.build();
}
@@ -633,7 +629,9 @@ public class ScopeResource extends Abstr
*/
@POST
@Consumes(value = MediaType.TEXT_PLAIN)
- public Response manageOntology(String iri,@PathParam("scopeid") String scopeid, @Context HttpHeaders headers) {
+ public Response manageOntology(String iri,
+ @PathParam("scopeid") String scopeid,
+ @Context HttpHeaders headers) {
ResponseBuilder rb;
scope = onm.getScope(scopeid);
if (scope == null) rb = Response.status(NOT_FOUND);
@@ -646,15 +644,17 @@ public class ScopeResource extends Abstr
} catch (OWLOntologyCreationException e) {
throw new WebApplicationException(e, INTERNAL_SERVER_ERROR);
}
-// addCORSOrigin(servletContext, rb, headers);
+ // addCORSOrigin(servletContext, rb, headers);
return rb.build();
}
@POST
@Consumes({MULTIPART_FORM_DATA})
@Produces({TEXT_HTML, TEXT_PLAIN, RDF_XML, TURTLE, X_TURTLE, N3})
- public Response postOntology(FormDataMultiPart data, @PathParam("scopeid") String scopeid, @Context HttpHeaders headers) {
- log.debug(" post(FormDataMultiPart data)");
+ 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);
@@ -662,41 +662,88 @@ public class ScopeResource extends Abstr
rb = Response.status(BAD_REQUEST);
IRI location = null, library = null;
- File file = null; // If found, it takes precedence over location.
+ FormFile file = null; // If found, it takes precedence over location.
String format = null;
Set<String> keys = new HashSet<String>();
- for (BodyPart bpart : data.getBodyParts()) {
- log.debug("is a {}", bpart.getClass());
- if (bpart instanceof FormDataBodyPart) {
- FormDataBodyPart dbp = (FormDataBodyPart) bpart;
- String name = dbp.getName();
- 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("library") && !"null".equals(value)) try {
- URI.create(value); // To throw 400 if malformed.
- library = IRI.create(value);
- } catch (Exception ex) {
- log.error("Malformed IRI for " + value, ex);
- throw new WebApplicationException(ex, BAD_REQUEST);
- }
- else if (name.equals("stored") && !"null".equals(value)) {
- log.info("Request to manage ontology with key {}", value);
- keys.add(value);
- }
- }
+ // for (BodyPart bpart : data.getBodyParts()) {
+ // log.debug("is a {}", bpart.getClass());
+ // if (bpart instanceof FormDataBodyPart) {
+ // FormDataBodyPart dbp = (FormDataBodyPart) bpart;
+ // String name = dbp.getName();
+ // 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("library") && !"null".equals(value)) try {
+ // URI.create(value); // To throw 400 if malformed.
+ // library = IRI.create(value);
+ // } catch (Exception ex) {
+ // log.error("Malformed IRI for " + value, ex);
+ // throw new WebApplicationException(ex, BAD_REQUEST);
+ // }
+ // else if (name.equals("stored") && !"null".equals(value)) {
+ // log.info("Request to manage ontology with key {}", value);
+ // keys.add(value);
+ // }
+ // }
+ //
+ // }
+ // }
+
+ 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 {
+ URI.create(value); // To throw 400 if malformed.
+ 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 {
+ URI.create(value); // To throw 400 if malformed.
+ library = IRI.create(value);
+ } catch (Exception ex) {
+ log.error("Malformed IRI for param library " + value, ex);
+ throw new WebApplicationException(ex, BAD_REQUEST);
}
}
- boolean fileOk = file != null && file.canRead() && file.exists();
+ 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 && !(file.canRead() && file.exists())){
+ // log.error("File is not accessible: {}", file);
+ // throw new WebApplicationException(INTERNAL_SERVER_ERROR);
+ // }
if (fileOk || location != null || library != null) { // File and location take precedence
// src = new GraphContentInputSource(content, format, ontologyProvider.getStore());
@@ -704,6 +751,7 @@ public class ScopeResource extends Abstr
// 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.
@@ -720,21 +768,22 @@ public class ScopeResource extends Abstr
String f = itf.next();
try {
// Re-instantiate the stream on every attempt
- InputStream content = new FileInputStream(file);
+ 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);
+ // rb = Response.status(Status.CONFLICT);
this.submitted = guessed;
if (headers.getAcceptableMediaTypes().contains(MediaType.TEXT_HTML_TYPE)) {
- rb.entity(new Viewable("/imports/409", this));
+ rb.entity(new Viewable("conflict.ftl", new ScopeResultData()));
rb.header(HttpHeaders.CONTENT_TYPE, MediaType.TEXT_HTML + "; charset=utf-8");
}
break;
} else {
- content = new FileInputStream(file);
+ content = new ByteArrayInputStream(file.getContent());
log.debug("Recreated input stream for format {}", f);
src = new GraphContentInputSource(content, f, ontologyProvider.getStore());
}
@@ -752,10 +801,6 @@ public class ScopeResource extends Abstr
failed++;
}
} while (src == null && itf.hasNext());
-// if (src == null) {
-// if (failed > 0) throw new WebApplicationException(BAD_REQUEST);
-// else if (unsupported > 0) throw new WebApplicationException(UNSUPPORTED_MEDIA_TYPE);
-// }
}
if (src != null) {
@@ -770,6 +815,7 @@ public class ScopeResource extends Abstr
} 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)));
@@ -778,7 +824,7 @@ public class ScopeResource extends Abstr
// else throw new WebApplicationException(BAD_REQUEST);
// rb.header(HttpHeaders.CONTENT_TYPE, TEXT_HTML + "; charset=utf-8");
// FIXME return an appropriate response e.g. 201
-// addCORSOrigin(servletContext, rb, headers);
+ // addCORSOrigin(servletContext, rb, headers);
return rb.build();
}
@@ -857,8 +903,20 @@ public class ScopeResource extends Abstr
}
ResponseBuilder rb = Response.created(uriInfo.getAbsolutePath());
-// addCORSOrigin(servletContext, rb, headers);
+ // addCORSOrigin(servletContext, rb, headers);
return rb.build();
}
+ public class ScopeResultData extends ResultData {
+
+ public OWLOntologyID getRepresentedOntologyKey() {
+ log.info("getRepresentedOntologyKey {}",ScopeResource.this.getRepresentedOntologyKey());
+ return ScopeResource.this.getRepresentedOntologyKey();
+ }
+
+ public String stringForm(OWLOntologyID ontologyID) {
+ return OntologyUtils.encode(ontologyID);
+ }
+ }
+
}
Modified: stanbol/branches/commons-ng/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/SessionResource.java
URL: http://svn.apache.org/viewvc/stanbol/branches/commons-ng/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/SessionResource.java?rev=1531722&r1=1531721&r2=1531722&view=diff
==============================================================================
--- stanbol/branches/commons-ng/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/SessionResource.java (original)
+++ stanbol/branches/commons-ng/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/SessionResource.java Sun Oct 13 17:47:25 2013
@@ -42,6 +42,7 @@ import static org.apache.stanbol.commons
import static org.apache.stanbol.commons.web.base.format.KRFormat.X_TURTLE;
import java.io.BufferedInputStream;
+import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
@@ -76,6 +77,8 @@ import javax.ws.rs.core.Response.Respons
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.core.UriInfo;
+import org.apache.clerezza.jaxrs.utils.form.FormFile;
+import org.apache.clerezza.jaxrs.utils.form.MultiPartBody;
import org.apache.clerezza.rdf.core.Graph;
import org.apache.clerezza.rdf.core.access.TcProvider;
import org.apache.clerezza.rdf.core.serializedform.Parser;
@@ -114,10 +117,10 @@ import org.semanticweb.owlapi.model.OWLO
import org.semanticweb.owlapi.model.OWLOntologyStorageException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
-import com.sun.jersey.multipart.BodyPart;
-import com.sun.jersey.multipart.FormDataBodyPart;
-import com.sun.jersey.multipart.FormDataMultiPart;
+//
+//import com.sun.jersey.multipart.BodyPart;
+//import com.sun.jersey.multipart.FormDataBodyPart;
+//import com.sun.jersey.multipart.FormDataMultiPart;
//import static org.apache.stanbol.commons.web.base.CorsHelper.addCORSOrigin;
//import static org.apache.stanbol.commons.web.base.CorsHelper.enableCORS;
//import org.apache.stanbol.commons.web.base.ContextHelper;
@@ -627,7 +630,7 @@ public class SessionResource extends Abs
@POST
@Consumes({MULTIPART_FORM_DATA})
@Produces({WILDCARD})
- public Response postOntology(FormDataMultiPart data, @Context HttpHeaders headers) {
+ public Response postOntology(MultiPartBody data, @Context HttpHeaders headers) {
log.debug(" post(FormDataMultiPart data)");
long before = System.currentTimeMillis();
ResponseBuilder rb;
@@ -636,53 +639,96 @@ public class SessionResource extends Abs
rb = Response.status(BAD_REQUEST);
IRI location = null, library = null;
- File file = null; // If found, it takes precedence over location.
+ FormFile file = null; // If found, it takes precedence over location.
String format = null;
Set<String> toAppend = null;
Set<String> keys = new HashSet<String>();
- for (BodyPart bpart : data.getBodyParts()) {
- log.debug("Found body part of type {}", bpart.getClass());
- if (bpart instanceof FormDataBodyPart) {
- FormDataBodyPart dbp = (FormDataBodyPart) bpart;
- String name = dbp.getName();
- log.debug("Detected form parameter \"{}\".", name);
- if (name.equals("file")) {
- file = bpart.getEntityAs(File.class);
- } else {
- String value = dbp.getValue();
- if (name.equals("format") && !value.equals("auto")) {
- log.debug(" -- Expected format : {}", value);
- format = value;
- } else if (name.equals("url")) try {
- URI.create(value); // To throw 400 if malformed.
- location = IRI.create(value);
- log.debug(" -- Will load ontology from URL : {}", location);
- } catch (Exception ex) {
- log.error("Malformed IRI for " + value, ex);
- throw new WebApplicationException(ex, BAD_REQUEST);
- }
- else if (name.equals("library") && !"null".equals(value)) try {
- log.debug(" -- Library ID : {}", value);
- URI.create(value); // To throw 400 if malformed.
- library = IRI.create(value);
- log.debug(" ---- (is well-formed URI)");
- } catch (Exception ex) {
- log.error("Malformed IRI for " + value, ex);
- throw new WebApplicationException(ex, BAD_REQUEST);
- }
- else if (name.equals("stored") && !"null".equals(value)) {
- log.info("Request to manage ontology with key {}", value);
- keys.add(value);
- } else if (name.equals("scope")) {
- log.info("Request to append scope \"{}\".", value);
- if (toAppend == null) toAppend = new HashSet<String>();
- toAppend.add(value);
- }
- }
+// for (BodyPart bpart : data.getBodyParts()) {
+// log.debug("Found body part of type {}", bpart.getClass());
+// if (bpart instanceof FormDataBodyPart) {
+// FormDataBodyPart dbp = (FormDataBodyPart) bpart;
+// String name = dbp.getName();
+// log.debug("Detected form parameter \"{}\".", name);
+// if (name.equals("file")) {
+// file = bpart.getEntityAs(File.class);
+// } else {
+// String value = dbp.getValue();
+// if (name.equals("format") && !value.equals("auto")) {
+// log.debug(" -- Expected format : {}", value);
+// format = value;
+// } else if (name.equals("url")) try {
+// URI.create(value); // To throw 400 if malformed.
+// location = IRI.create(value);
+// log.debug(" -- Will load ontology from URL : {}", location);
+// } catch (Exception ex) {
+// log.error("Malformed IRI for " + value, ex);
+// throw new WebApplicationException(ex, BAD_REQUEST);
+// }
+// else if (name.equals("library") && !"null".equals(value)) try {
+// log.debug(" -- Library ID : {}", value);
+// URI.create(value); // To throw 400 if malformed.
+// library = IRI.create(value);
+// log.debug(" ---- (is well-formed URI)");
+// } catch (Exception ex) {
+// log.error("Malformed IRI for " + value, ex);
+// throw new WebApplicationException(ex, BAD_REQUEST);
+// }
+// else if (name.equals("stored") && !"null".equals(value)) {
+// log.info("Request to manage ontology with key {}", value);
+// keys.add(value);
+// } else if (name.equals("scope")) {
+// log.info("Request to append scope \"{}\".", value);
+// if (toAppend == null) toAppend = new HashSet<String>();
+// toAppend.add(value);
+// }
+// }
+// }
+// }
+ 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;
}
}
- boolean fileOk = file != null && file.canRead() && file.exists();
+ if (data.getTextParameterValues("url").length > 0) {
+ String value = data.getTextParameterValues("url")[0];
+ try {
+ URI.create(value); // To throw 400 if malformed.
+ 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 {
+ URI.create(value); // To throw 400 if malformed.
+ 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);
+ }
+ if (data.getTextParameterValues("scope").length > 0) {
+ String value = data.getTextParameterValues("scope")[0];
+ log.info("Request to append scope \"{}\".", value);
+ if (toAppend == null) {
+ toAppend = new HashSet<String>();
+ }
+ toAppend.add(value);
+ }
+
+ boolean fileOk = file != null;
if (fileOk || location != null || library != null) { // File and location take precedence
// Then add the file
OntologyInputSource<?> src = null;
@@ -695,7 +741,7 @@ public class SessionResource extends Abs
log.debug("Trying format {}.", f);
long b4buf = System.currentTimeMillis();
// Recreate the stream on each attempt
- InputStream content = new BufferedInputStream(new FileInputStream(file));
+ InputStream content = new BufferedInputStream(new ByteArrayInputStream(file.getContent()));
log.debug("Streams created in {} ms", System.currentTimeMillis() - b4buf);
log.debug("Creating ontology input source...");
b4buf = System.currentTimeMillis();
@@ -709,7 +755,7 @@ public class SessionResource extends Abs
rb.header(HttpHeaders.CONTENT_TYPE, MediaType.TEXT_HTML + "; charset=utf-8");
}
} else {
- content = new BufferedInputStream(new FileInputStream(file));
+ content = new BufferedInputStream(new ByteArrayInputStream(file.getContent()));
src = new GraphContentInputSource(content, f, ontologyProvider.getStore());
}
log.debug("Done in {} ms", System.currentTimeMillis() - b4buf);