MARMOTTA-508: simplified ldp init
Project: http://git-wip-us.apache.org/repos/asf/marmotta/repo Commit: http://git-wip-us.apache.org/repos/asf/marmotta/commit/5d2675f0 Tree: http://git-wip-us.apache.org/repos/asf/marmotta/tree/5d2675f0 Diff: http://git-wip-us.apache.org/repos/asf/marmotta/diff/5d2675f0 Branch: refs/heads/ldp Commit: 5d2675f0b7d7e9da35df701559e586362358c99d Parents: c34b2fe Author: Sergio Fernández <[email protected]> Authored: Tue Jul 15 13:59:52 2014 +0200 Committer: Sergio Fernández <[email protected]> Committed: Tue Jul 15 13:59:52 2014 +0200 ---------------------------------------------------------------------- .../platform/ldp/services/LdpServiceImpl.java | 6 +-- .../platform/ldp/webservices/LdpPreProcess.java | 53 -------------------- .../platform/ldp/webservices/LdpWebService.java | 44 ++++++++++------ 3 files changed, 32 insertions(+), 71 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/marmotta/blob/5d2675f0/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 eeede1a..c592dea 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 @@ -89,14 +89,14 @@ public class LdpServiceImpl implements LdpService { @Override public void init(RepositoryConnection connection, URI root) throws RepositoryException { + final ValueFactory valueFactory = connection.getValueFactory(); + final Literal now = valueFactory.createLiteral(new Date()); if (!exists(connection, root)) { + connection.add(root, RDFS.LABEL, valueFactory.createLiteral("Marmotta's LDP Root Container"), ldpContext); connection.add(root, RDF.TYPE, LDP.Resource, ldpContext); connection.add(root, RDF.TYPE, LDP.RDFSource, ldpContext); connection.add(root, RDF.TYPE, LDP.Container, ldpContext); connection.add(root, RDF.TYPE, LDP.BasicContainer, ldpContext); - final ValueFactory valueFactory = connection.getValueFactory(); - connection.add(root, RDFS.LABEL, valueFactory.createLiteral("Marmotta's LDP Root Container"), ldpContext); - final Literal now = valueFactory.createLiteral(new Date()); connection.add(root, DCTERMS.created, now, ldpContext); connection.add(root, DCTERMS.modified, now, ldpContext); } http://git-wip-us.apache.org/repos/asf/marmotta/blob/5d2675f0/platform/marmotta-ldp/src/main/java/org/apache/marmotta/platform/ldp/webservices/LdpPreProcess.java ---------------------------------------------------------------------- diff --git a/platform/marmotta-ldp/src/main/java/org/apache/marmotta/platform/ldp/webservices/LdpPreProcess.java b/platform/marmotta-ldp/src/main/java/org/apache/marmotta/platform/ldp/webservices/LdpPreProcess.java deleted file mode 100644 index 342b9b7..0000000 --- a/platform/marmotta-ldp/src/main/java/org/apache/marmotta/platform/ldp/webservices/LdpPreProcess.java +++ /dev/null @@ -1,53 +0,0 @@ -package org.apache.marmotta.platform.ldp.webservices; - -import org.apache.marmotta.platform.core.api.triplestore.SesameService; -import org.apache.marmotta.platform.ldp.api.LdpService; -import org.openrdf.model.URI; -import org.openrdf.repository.RepositoryConnection; -import org.openrdf.repository.RepositoryException; - -import javax.enterprise.context.ApplicationScoped; -import javax.inject.Inject; -import javax.ws.rs.container.ContainerRequestContext; -import javax.ws.rs.container.ContainerRequestFilter; -import javax.ws.rs.container.PreMatching; -import javax.ws.rs.core.UriBuilder; -import javax.ws.rs.core.UriInfo; -import java.io.IOException; - -/** - * Pre-process interceptor for LDP - * - * @author Sergio Fernández - */ -@PreMatching -@ApplicationScoped -public class LdpPreProcess implements ContainerRequestFilter { - - @Inject - private LdpService ldpService; - - @Inject - private SesameService sesameService; - - @Override - public void filter(ContainerRequestContext context) throws IOException { - UriInfo uriInfo = context.getUriInfo(); - UriBuilder resourceUriBuilder = ldpService.getResourceUriBuilder(uriInfo); - //TODO avoid the expensive operations once it's initialized - try { - final RepositoryConnection conn = sesameService.getConnection(); - try { - conn.begin(); - URI root = conn.getValueFactory().createURI(resourceUriBuilder.build().toString()); - ldpService.init(conn, root); - conn.commit(); - } finally { - conn.close(); - } - } catch (RepositoryException e) { - e.printStackTrace(); - throw new IOException(e); - } - } -} http://git-wip-us.apache.org/repos/asf/marmotta/blob/5d2675f0/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 02cd5a8..5a32210 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 @@ -24,6 +24,7 @@ import org.apache.marmotta.commons.vocabulary.LDP; import org.apache.marmotta.platform.core.api.config.ConfigurationService; import org.apache.marmotta.platform.core.api.exporter.ExportService; import org.apache.marmotta.platform.core.api.triplestore.SesameService; +import org.apache.marmotta.platform.core.events.SesameStartupEvent; import org.apache.marmotta.platform.ldp.api.LdpService; import org.apache.marmotta.platform.ldp.exceptions.IncompatibleResourceTypeException; import org.apache.marmotta.platform.ldp.exceptions.InvalidInteractionModelException; @@ -44,6 +45,7 @@ import org.slf4j.Logger; import javax.annotation.PostConstruct; import javax.enterprise.context.ApplicationScoped; +import javax.enterprise.event.Observes; import javax.inject.Inject; import javax.ws.rs.*; import javax.ws.rs.core.*; @@ -83,10 +85,22 @@ public class LdpWebService { @Inject private SesameService sesameService; - @PostConstruct - protected void initialize() { - // TODO: basic initialization + protected void initialize(@Observes SesameStartupEvent event) { log.info("Starting up LDP WebService Endpoint"); + String root = UriBuilder.fromUri(configurationService.getBaseUri()).path(LdpWebService.PATH).build().toASCIIString(); + try { + final RepositoryConnection conn = sesameService.getConnection(); + try { + conn.begin(); + ldpService.init(conn, conn.getValueFactory().createURI(root)); + log.debug("Created LDP root container <{}>", root); + conn.commit(); + } finally { + conn.close(); + } + } catch (RepositoryException e) { + log.error("Error creating LDP root container <{}>: {}", root, e.getMessage(), e); + } } @GET @@ -503,6 +517,18 @@ public class LdpWebService { * Add all the default headers specified in LDP to the Response * * @param connection + * @param status the StatusCode + * @param resource the iri/uri/url of the resouce + * @return the provided ResponseBuilder for chaining + */ + protected Response.ResponseBuilder createResponse(RepositoryConnection connection, Response.Status status, String resource) throws RepositoryException { + return createResponse(connection, status.getStatusCode(), resource); + } + + /** + * Add all the default headers specified in LDP to the Response + * + * @param connection * @param status the status code * @param resource the uri/url of the resouce * @return the provided ResponseBuilder for chaining @@ -567,16 +593,4 @@ public class LdpWebService { return rb; } - /** - * Add all the default headers specified in LDP to the Response - * - * @param connection - * @param status the StatusCode - * @param resource the iri/uri/url of the resouce - * @return the provided ResponseBuilder for chaining - */ - protected Response.ResponseBuilder createResponse(RepositoryConnection connection, Response.Status status, String resource) throws RepositoryException { - return createResponse(connection, status.getStatusCode(), resource); - } - }
