You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@marmotta.apache.org by wi...@apache.org on 2014/07/21 15:38:10 UTC

[14/16] git commit: MARMOTTA-508: simplified ldp init

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 <wi...@apache.org>
Authored: Tue Jul 15 13:59:52 2014 +0200
Committer: Sergio Fernández <wi...@apache.org>
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);
-    }
-
 }