Repository: marmotta Updated Branches: refs/heads/ldp 16bd00090 -> cfa63186f
MARMOTTA-440: Improved transaction handling Project: http://git-wip-us.apache.org/repos/asf/marmotta/repo Commit: http://git-wip-us.apache.org/repos/asf/marmotta/commit/2bd128c9 Tree: http://git-wip-us.apache.org/repos/asf/marmotta/tree/2bd128c9 Diff: http://git-wip-us.apache.org/repos/asf/marmotta/diff/2bd128c9 Branch: refs/heads/ldp Commit: 2bd128c9f543aceb58c5189e69215048bf85dc4b Parents: 16bd000 Author: Jakob Frank <[email protected]> Authored: Mon Feb 24 10:28:25 2014 +0100 Committer: Jakob Frank <[email protected]> Committed: Mon Feb 24 10:28:25 2014 +0100 ---------------------------------------------------------------------- .../platform/ldp/webservices/LdpWebService.java | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/marmotta/blob/2bd128c9/platform/marmotta-ldp/src/main/java/org/apache/marmotta/platform/ldp/webservices/LdpWebService.java ---------------------------------------------------------------------- diff --git a/platform/marmotta-ldp/src/main/java/org/apache/marmotta/platform/ldp/webservices/LdpWebService.java b/platform/marmotta-ldp/src/main/java/org/apache/marmotta/platform/ldp/webservices/LdpWebService.java index 2e96207..620fe98 100644 --- a/platform/marmotta-ldp/src/main/java/org/apache/marmotta/platform/ldp/webservices/LdpWebService.java +++ b/platform/marmotta-ldp/src/main/java/org/apache/marmotta/platform/ldp/webservices/LdpWebService.java @@ -164,10 +164,6 @@ public class LdpWebService { @POST public Response POST(@Context UriInfo uriInfo, @HeaderParam("Slug") String slug, InputStream postBody, @HeaderParam(HttpHeaders.CONTENT_TYPE) MediaType type) throws RepositoryException { - /* - * TODO: POST implementation - * a POST to an existing resource converts this resource into an LDP-C - */ final String container = getResourceUri(uriInfo); log.debug("POST to LDP-R <{}>", container); @@ -187,7 +183,7 @@ public class LdpWebService { log.trace("Slug-Header urified: {}", localName); } - String newResource = uriInfo.getRequestUriBuilder().path(localName).build().toString(); + String newResource = UriBuilder.fromUri(java.net.URI.create(container)).path(localName).build().toString(); final RepositoryConnection con = sesameService.getConnection(); try { final URI c = con.getValueFactory().createURI(container); @@ -214,7 +210,6 @@ public class LdpWebService { // Add container triples (Sec. 6.4.3) // container and meta triples! - Literal now = con.getValueFactory().createLiteral(new Date()); con.add(c, RDF.TYPE, LDP.BasicContainer, ldpContext); @@ -226,27 +221,24 @@ public class LdpWebService { con.add(s, DCTERMS.created, now, ldpContext); con.add(s, DCTERMS.modified, now, ldpContext); - // LDP-BC for now! - con.commit(); - // Add the bodyContent log.trace("Content ({}) for new resource <{}>", type, newResource); final RDFFormat rdfFormat = Rio.getParserFormatForMIMEType(type.toString()); if (rdfFormat == null) { log.debug("POST creates new LDP-BR with type {}", type); log.warn("LDP-BR not (yet) supported!"); + con.rollback(); return createResponse(Response.Status.NOT_IMPLEMENTED, uriInfo).entity("LDP-BR not (yet) supported").build(); } else { log.debug("POST creates new LDP-RR, data provided as {}", rdfFormat.getName()); try { - con.begin(); - // FIXME: We are (are we?) allowed to filter out server-managed properties here con.add(postBody, newResource, rdfFormat, s); con.commit(); return createResponse(Response.Status.CREATED, uriInfo).location(java.net.URI.create(newResource)).build(); } catch (IOException | RDFParseException e) { + con.rollback(); return createResponse(Response.Status.BAD_REQUEST, uriInfo).entity(e.getClass().getSimpleName() + ": "+ e.getMessage()).build(); } } @@ -314,7 +306,10 @@ public class LdpWebService { final String resource = getResourceUri(uriInfo); log.debug("DELETE to <{}>", resource); - log.warn("NOT CHECKING EXISTENCE OF <{}>", resource); + final Response.ResponseBuilder rb404 = check404(resource); + if (rb404 != null) { + return rb404.build(); + } final RepositoryConnection con = sesameService.getConnection(); try {
