updated references to the spec.
Project: http://git-wip-us.apache.org/repos/asf/marmotta/repo Commit: http://git-wip-us.apache.org/repos/asf/marmotta/commit/3fdc8aeb Tree: http://git-wip-us.apache.org/repos/asf/marmotta/tree/3fdc8aeb Diff: http://git-wip-us.apache.org/repos/asf/marmotta/diff/3fdc8aeb Branch: refs/heads/develop Commit: 3fdc8aeb5a759e5aec47cf9b6536527bddb84ea5 Parents: 0cb20f6 Author: Jakob Frank <[email protected]> Authored: Thu Mar 20 10:19:51 2014 +0100 Committer: Jakob Frank <[email protected]> Committed: Thu Mar 20 11:58:13 2014 +0100 ---------------------------------------------------------------------- .../platform/ldp/services/LdpServiceImpl.java | 4 +-- .../platform/ldp/webservices/LdpWebService.java | 33 +++++++++++--------- 2 files changed, 20 insertions(+), 17 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/marmotta/blob/3fdc8aeb/platform/marmotta-ldp/src/main/java/org/apache/marmotta/platform/ldp/services/LdpServiceImpl.java ---------------------------------------------------------------------- diff --git a/platform/marmotta-ldp/src/main/java/org/apache/marmotta/platform/ldp/services/LdpServiceImpl.java b/platform/marmotta-ldp/src/main/java/org/apache/marmotta/platform/ldp/services/LdpServiceImpl.java index 1e9acb0..821436e 100644 --- a/platform/marmotta-ldp/src/main/java/org/apache/marmotta/platform/ldp/services/LdpServiceImpl.java +++ b/platform/marmotta-ldp/src/main/java/org/apache/marmotta/platform/ldp/services/LdpServiceImpl.java @@ -247,7 +247,7 @@ public class LdpServiceImpl implements LdpService { public String addResource(RepositoryConnection connection, URI container, URI resource, String type, InputStream stream) throws RepositoryException, IOException, RDFParseException { ValueFactory valueFactory = connection.getValueFactory(); - // Add container triples (Sec. 6.4.3) + // Add container triples (Sec. 5.2.3.2) // container and meta triples! final Literal now = valueFactory.createLiteral(new Date()); @@ -294,7 +294,7 @@ public class LdpServiceImpl implements LdpService { return binaryResource.stringValue(); } else { - log.debug("POST creates new LDP-RR, data provided as {}", rdfFormat.getName()); + log.debug("POST creates new LDP-SR, data provided as {}", rdfFormat.getName()); connection.add(container, LDP.contains, resource, ldpContext); // FIXME: We are (are we?) allowed to filter out server-managed properties here http://git-wip-us.apache.org/repos/asf/marmotta/blob/3fdc8aeb/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 0901011..66516fd 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 @@ -193,7 +193,8 @@ public class LdpWebService { * @see <a href="https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp.html#ldpc-HTTP_POST">6.4 LDP-C POST</a> */ @POST - public Response POST(@Context UriInfo uriInfo, @HeaderParam("Slug") String slug, InputStream postBody, @HeaderParam(HttpHeaders.CONTENT_TYPE) MediaType type) + public Response POST(@Context UriInfo uriInfo, @HeaderParam("Slug") String slug, + InputStream postBody, @HeaderParam(HttpHeaders.CONTENT_TYPE) MediaType type) throws RepositoryException { final String container = getResourceUri(uriInfo); @@ -201,14 +202,17 @@ public class LdpWebService { final RepositoryConnection conn = sesameService.getConnection(); try { + conn.begin(); + + // TODO: Check the LDP-Interaction Model (Sec. 5.2.3.4 and Sec. 4.2.1.4) final String localName; if (StringUtils.isBlank(slug)) { - /* Sec. 6.4.9) */ + /* Sec. 5.2.3.8) */ // FIXME: Maybe us a shorter uid? localName = UUID.randomUUID().toString(); } else { - // Honor client wishes from Slug-header (Sec. 6.4.11) + // Honor client wishes from Slug-header (Sec. 5.2.3.10) // http://www.ietf.org/rfc/rfc5023.txt log.trace("Slug-Header is '{}'", slug); localName = LdpUtils.urify(slug); @@ -217,8 +221,6 @@ public class LdpWebService { String newResource = uriInfo.getRequestUriBuilder().path(localName).build().toString(); - conn.begin(); - if (ldpService.isNonRdfSourceResource(conn, container)) { log.info("POSTing to a NonRdfSource is not allowed ({})", container); final Response.ResponseBuilder response = createResponse(conn, Response.Status.METHOD_NOT_ALLOWED, container).entity("POST to NonRdfSource is not allowed\n"); @@ -269,7 +271,7 @@ public class LdpWebService { } /** - * Handle PUT (Sec. 5.5, Sec. 6.5) + * Handle PUT (Sec. 4.2.4, Sec. 5.2.4) */ @PUT public Response PUT(@Context UriInfo uriInfo, @Context Request request, @@ -290,13 +292,13 @@ public class LdpWebService { } if (eTag == null) { - // check for If-Match header (ETag) -> 428 Precondition Required (Sec. 5.5.3) + // check for If-Match header (ETag) -> 428 Precondition Required (Sec. 4.2.4.5) log.trace("No If-Match header, but that's a MUST"); final Response.ResponseBuilder resp = createResponse(con, 428, resource); con.rollback(); return resp.build(); } else { - // check ETag -> 412 Precondition Failed (Sec. 5.5.3) + // check ETag -> 412 Precondition Failed (Sec. 4.2.4.5) log.trace("Checking If-Match: {}", eTag); EntityTag hasTag = ldpService.generateETag(con, resource); if (!EntityTagUtils.equals(eTag, hasTag)) { @@ -310,7 +312,7 @@ public class LdpWebService { /* * TODO: PUT implementation * - * clients should not be allowed to update LDPC-membership triples -> 409 Conflict (Sec. 6.5.1) + * clients should not be allowed to update LDPC-membership triples -> 409 Conflict (Sec. 4.2.4.3) * * if the target resource exists, replace ALL data of the target. */ @@ -325,7 +327,7 @@ public class LdpWebService { } } /** - * Handle delete (Sec. 5.6, Sec. 6.6) + * Handle delete (Sec. 4.2.5, Sec. 5.2.5) */ @DELETE public Response DELETE(@Context UriInfo uriInfo) throws RepositoryException { @@ -417,7 +419,7 @@ public class LdpWebService { } /** - * Handle OPTIONS (Sec. 4.2.8, Sec. ??) + * Handle OPTIONS (Sec. 4.2.8, Sec. 5.2.8) */ @OPTIONS public Response OPTIONS(@Context final UriInfo uriInfo) throws RepositoryException { @@ -438,7 +440,7 @@ public class LdpWebService { } else if (ldpService.isRdfSourceResource(con, resource)) { // Sec. 4.2.8.2 builder.allow("GET", "HEAD", "POST", "PATCH", "OPTIONS"); - // Sec. 4.2.3 / Sec. ?? + // Sec. 4.2.3 / Sec. 5.2.3 // TODO: LDP Interaction Model! builder.header("Accept-Post", LdpUtils.getAcceptPostHeader("*/*")); // Sec. 4.2.7.1 @@ -480,7 +482,7 @@ public class LdpWebService { createResponse(rb); if (ldpService.exists(connection, resource)) { - // Link rel='type' (Sec. 5.2.8, 6.2.8) + // Link rel='type' (Sec. 4.2.1.4, 5.2.1.4) List<Statement> statements = ldpService.getLdpTypes(connection, resource); for (Statement stmt : statements) { Value o = stmt.getObject(); @@ -491,6 +493,7 @@ public class LdpWebService { final URI rdfSource = ldpService.getRdfSourceForNonRdfSource(connection, resource); if (rdfSource != null) { + // Sec. 5.2.8.1 and 5.2.3.12 // FIXME: Sec. 5.2.3.12, see also http://www.w3.org/2012/ldp/track/issues/15 rb.link(rdfSource.stringValue(), "meta"); rb.link(rdfSource.stringValue(), "describedby"); @@ -501,7 +504,7 @@ public class LdpWebService { rb.link(nonRdfSource.stringValue(), "content"); } - // ETag (Sec. 5.2.7) + // ETag (Sec. 4.2.1.3) rb.tag(ldpService.generateETag(connection, resource)); // Last modified date @@ -517,7 +520,7 @@ public class LdpWebService { * @return the updated ResponseBuilder for chaining */ protected Response.ResponseBuilder createResponse(Response.ResponseBuilder rb) { - // Link rel='describedby' (Sec. 5.2.11) + // Link rel='describedby' (Sec. 4.2.1.6) rb.link(LDP_SERVER_CONSTRAINTS, "describedby"); return rb;
