TimeGate now responds with the most recent Memento if date is not given. Tests 
are added.


Project: http://git-wip-us.apache.org/repos/asf/marmotta/repo
Commit: http://git-wip-us.apache.org/repos/asf/marmotta/commit/d216030b
Tree: http://git-wip-us.apache.org/repos/asf/marmotta/tree/d216030b
Diff: http://git-wip-us.apache.org/repos/asf/marmotta/diff/d216030b

Branch: refs/heads/MARMOTTA-655_Memento_Compliance_Issues
Commit: d216030b01ad921b36e2aeb96aec1468590ffe51
Parents: cd789c9
Author: Thomas Kurz <[email protected]>
Authored: Thu Oct 13 17:48:21 2016 +0200
Committer: Thomas Kurz <[email protected]>
Committed: Thu Oct 13 17:48:21 2016 +0200

----------------------------------------------------------------------
 platform/marmotta-versioning-kiwi/pom.xml       | 55 ++++++++++++++++
 .../webservices/MementoWebService.java          | 11 +++-
 .../versioning/MementoWebServiceTest.java       | 69 ++++++++++++++++++++
 .../src/test/resources/data_v1.ttl              |  2 +
 .../src/test/resources/data_v2.ttl              |  1 +
 5 files changed, 136 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/marmotta/blob/d216030b/platform/marmotta-versioning-kiwi/pom.xml
----------------------------------------------------------------------
diff --git a/platform/marmotta-versioning-kiwi/pom.xml 
b/platform/marmotta-versioning-kiwi/pom.xml
index f49926d..53ba8b0 100644
--- a/platform/marmotta-versioning-kiwi/pom.xml
+++ b/platform/marmotta-versioning-kiwi/pom.xml
@@ -170,6 +170,61 @@
             <groupId>org.apache.marmotta</groupId>
             <artifactId>kiwi-versioning</artifactId>
         </dependency>
+        <!-- testing -->
+        <dependency>
+            <groupId>org.apache.marmotta</groupId>
+            <artifactId>marmotta-core</artifactId>
+            <version>${project.version}</version>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.jetty</groupId>
+            <artifactId>jetty-server</artifactId>
+            <version>${jetty.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.jetty</groupId>
+            <artifactId>jetty-servlet</artifactId>
+            <version>${jetty.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.jboss.weld.se</groupId>
+            <artifactId>weld-se-core</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax.el</groupId>
+            <artifactId>javax.el-api</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.h2database</groupId>
+            <artifactId>h2</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.jayway.restassured</groupId>
+            <artifactId>rest-assured</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.hamcrest</groupId>
+            <artifactId>hamcrest-library</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.hamcrest</groupId>
+            <artifactId>hamcrest-core</artifactId>
+            <scope>test</scope>
+        </dependency>
 
         <!-- webjars -->
         <dependency>

http://git-wip-us.apache.org/repos/asf/marmotta/blob/d216030b/platform/marmotta-versioning-kiwi/src/main/java/org/apache/marmotta/platform/versioning/webservices/MementoWebService.java
----------------------------------------------------------------------
diff --git 
a/platform/marmotta-versioning-kiwi/src/main/java/org/apache/marmotta/platform/versioning/webservices/MementoWebService.java
 
b/platform/marmotta-versioning-kiwi/src/main/java/org/apache/marmotta/platform/versioning/webservices/MementoWebService.java
index e481801..2f7dec4 100644
--- 
a/platform/marmotta-versioning-kiwi/src/main/java/org/apache/marmotta/platform/versioning/webservices/MementoWebService.java
+++ 
b/platform/marmotta-versioning-kiwi/src/main/java/org/apache/marmotta/platform/versioning/webservices/MementoWebService.java
@@ -106,11 +106,18 @@ public class MementoWebService {
         try {
             //check preconditions
             Preconditions.checkNotNull(resource_string,"Resource URI may not 
null");
-            Preconditions.checkNotNull(date_string, "Accept-Datetime Header 
may not be null");
 
             final RepositoryConnection conn = sesameService.getConnection();
             try {
-                Date date = DateUtils.parseDate(date_string);
+
+                //if date_string is not set, get NOW, else parse date_string
+                Date date = null;
+
+                if(date_string == null) {
+                    date = new Date();
+                } else {
+                    DateUtils.parseDate(date_string);
+                }
 
                 URI resource = 
conn.getValueFactory().createURI(resource_string);
 

http://git-wip-us.apache.org/repos/asf/marmotta/blob/d216030b/platform/marmotta-versioning-kiwi/src/test/java/org/apache/marmotta/platform/versioning/MementoWebServiceTest.java
----------------------------------------------------------------------
diff --git 
a/platform/marmotta-versioning-kiwi/src/test/java/org/apache/marmotta/platform/versioning/MementoWebServiceTest.java
 
b/platform/marmotta-versioning-kiwi/src/test/java/org/apache/marmotta/platform/versioning/MementoWebServiceTest.java
new file mode 100644
index 0000000..1b165ff
--- /dev/null
+++ 
b/platform/marmotta-versioning-kiwi/src/test/java/org/apache/marmotta/platform/versioning/MementoWebServiceTest.java
@@ -0,0 +1,69 @@
+package org.apache.marmotta.platform.versioning;
+
+import com.jayway.restassured.RestAssured;
+import org.apache.marmotta.platform.core.api.importer.ImportService;
+import org.apache.marmotta.platform.core.api.triplestore.ContextService;
+import org.apache.marmotta.platform.core.api.user.UserService;
+import org.apache.marmotta.platform.core.exception.io.MarmottaImportException;
+import org.apache.marmotta.platform.core.test.base.JettyMarmotta;
+import org.apache.marmotta.platform.versioning.utils.MementoUtils;
+import org.apache.marmotta.platform.versioning.webservices.MementoWebService;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.InputStream;
+import java.net.URISyntaxException;
+
+import static com.jayway.restassured.RestAssured.expect;
+
+/**
+ * @author Thomas Kurz ([email protected])
+ * @since 13.10.16.
+ */
+public class MementoWebServiceTest {
+
+    private static Logger log = 
LoggerFactory.getLogger(MementoWebServiceTest.class);
+
+    private static JettyMarmotta marmotta;
+
+    @BeforeClass
+    public static void setUp() throws MarmottaImportException, 
URISyntaxException {
+        marmotta = new JettyMarmotta("/marmotta", MementoWebService.class);
+
+        ImportService importService = marmotta.getService(ImportService.class);
+        UserService userService = marmotta.getService(UserService.class);
+        ContextService contextService = 
marmotta.getService(ContextService.class);
+
+        //import some data
+        InputStream is_v1 = 
Thread.currentThread().getContextClassLoader().getResourceAsStream("data_v1.ttl");
+        int n_v1 = importService.importData(is_v1, "text/turtle", 
userService.getAnonymousUser(), contextService.getDefaultContext());
+        log.info("Imported RDF data_v1 with {} triples", n_v1);
+
+        //import some data including updates
+        InputStream is_v2 = 
Thread.currentThread().getContextClassLoader().getResourceAsStream("data_v2.ttl");
+        int n_v2 = importService.importData(is_v2, "text/turtle", 
userService.getAnonymousUser(), contextService.getDefaultContext());
+        log.info("Imported RDF data_v2 with {} triples", n_v2);
+
+        RestAssured.baseURI = "http://localhost";;
+        RestAssured.port = marmotta.getPort();
+        RestAssured.basePath = marmotta.getContext();
+    }
+
+    @AfterClass
+    public static void tearDown() {
+        marmotta.shutdown();
+    }
+
+    @Test
+    public void testNegotiationResponse() {
+        expect().
+                log().ifError().
+                statusCode(302).
+                when().request().redirects().follow(false).
+                get(MementoUtils.MEMENTO_WEBSERVICE + "/" + 
MementoUtils.MEMENTO_TIMEGATE + "/http://example.org/resource1";);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/marmotta/blob/d216030b/platform/marmotta-versioning-kiwi/src/test/resources/data_v1.ttl
----------------------------------------------------------------------
diff --git a/platform/marmotta-versioning-kiwi/src/test/resources/data_v1.ttl 
b/platform/marmotta-versioning-kiwi/src/test/resources/data_v1.ttl
new file mode 100644
index 0000000..1cae348
--- /dev/null
+++ b/platform/marmotta-versioning-kiwi/src/test/resources/data_v1.ttl
@@ -0,0 +1,2 @@
+<http://example.org/resource1> <http://test.org/p1> "v1".
+<http://example.org/resource2> <http://test.org/p1> "v1".
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/marmotta/blob/d216030b/platform/marmotta-versioning-kiwi/src/test/resources/data_v2.ttl
----------------------------------------------------------------------
diff --git a/platform/marmotta-versioning-kiwi/src/test/resources/data_v2.ttl 
b/platform/marmotta-versioning-kiwi/src/test/resources/data_v2.ttl
new file mode 100644
index 0000000..c80a86d
--- /dev/null
+++ b/platform/marmotta-versioning-kiwi/src/test/resources/data_v2.ttl
@@ -0,0 +1 @@
+<http://example.org/resource1> <http://test.org/p1> "v2".
\ No newline at end of file

Reply via email to