[Mulgara-svn] r1402 - trunk/src/jar/resolver-lucene/java/org/mulgara/resolver/lucene

ronald at mulgara.org ronald at mulgara.org
Fri Dec 5 11:56:21 UTC 2008


Author: ronald
Date: 2008-12-05 03:56:21 -0800 (Fri, 05 Dec 2008)
New Revision: 1402

Modified:
   trunk/src/jar/resolver-lucene/java/org/mulgara/resolver/lucene/FullTextStringIndex.java
   trunk/src/jar/resolver-lucene/java/org/mulgara/resolver/lucene/FullTextStringIndexUnitTest.java
Log:
Fixed a bug where a statement with an empty literal could be inserted but
not deleted.

Modified: trunk/src/jar/resolver-lucene/java/org/mulgara/resolver/lucene/FullTextStringIndex.java
===================================================================
--- trunk/src/jar/resolver-lucene/java/org/mulgara/resolver/lucene/FullTextStringIndex.java	2008-12-05 11:56:15 UTC (rev 1401)
+++ trunk/src/jar/resolver-lucene/java/org/mulgara/resolver/lucene/FullTextStringIndex.java	2008-12-05 11:56:21 UTC (rev 1402)
@@ -438,7 +438,6 @@
       throws FullTextStringIndexException {
     boolean removed = false;
     if ((literal == null) ||
-        (literal.length() == 0) ||
         (subject == null) ||
         (subject.length() == 0) ||
         (predicate == null) ||

Modified: trunk/src/jar/resolver-lucene/java/org/mulgara/resolver/lucene/FullTextStringIndexUnitTest.java
===================================================================
--- trunk/src/jar/resolver-lucene/java/org/mulgara/resolver/lucene/FullTextStringIndexUnitTest.java	2008-12-05 11:56:15 UTC (rev 1401)
+++ trunk/src/jar/resolver-lucene/java/org/mulgara/resolver/lucene/FullTextStringIndexUnitTest.java	2008-12-05 11:56:21 UTC (rev 1402)
@@ -103,6 +103,7 @@
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTest(new FullTextStringIndexUnitTest("testFullTextStringPool"));
+    suite.addTest(new FullTextStringIndexUnitTest("testFullTextStringPoolCornerCases"));
     suite.addTest(new FullTextStringIndexUnitTest("testFullTextStringPoolwithFiles"));
     suite.addTest(new FullTextStringIndexUnitTest("testFullTextStringPoolTransactions"));
 
@@ -325,7 +326,104 @@
     }
   }
 
+
   /**
+   * Test corner cases (null subject, object, predicate, etc).
+   *
+   * @throws Exception Test fails
+   */
+  public void testFullTextStringPoolCornerCases() throws Exception {
+    LuceneIndexerCache cache = new LuceneIndexerCache(indexDirectory);
+    FullTextStringIndex index = null;
+
+    try {
+      String document = "http://mulgara.org/mulgara/document#";
+      String has = "http://mulgara.org/mulgara/document#has";
+
+      //Clean any existing indexes.
+      cache.close();
+      cache.removeAllIndexes();
+      cache = new LuceneIndexerCache(indexDirectory);
+
+      //create the index
+      index = new FullTextStringIndex(cache, true, true);
+
+      // Add strings to the index
+      try {
+        index.add(null, has, "foo");
+        fail("exception expected for adding null subject");
+      } catch (FullTextStringIndexException ftsie) {
+      }
+
+      try {
+        index.add(document, null, "foo");
+        fail("exception expected for adding null predicate");
+      } catch (FullTextStringIndexException ftsie) {
+      }
+
+      try {
+        index.add(document, has, null);
+        fail("exception expected for adding null literal");
+      } catch (FullTextStringIndexException ftsie) {
+      }
+
+      try {
+        index.add("", has, "foo");
+        fail("exception expected for adding empty subject");
+      } catch (FullTextStringIndexException ftsie) {
+      }
+
+      try {
+        index.add(document, "", "foo");
+        fail("exception expected for adding empty predicate");
+      } catch (FullTextStringIndexException ftsie) {
+      }
+
+      index.add(document, has, "");
+
+      // remove strings from the index
+      try {
+        index.remove(null, has, "foo");
+        fail("exception expected for removing null subject");
+      } catch (FullTextStringIndexException ftsie) {
+      }
+
+      try {
+        index.remove(document, null, "foo");
+        fail("exception expected for removing null predicate");
+      } catch (FullTextStringIndexException ftsie) {
+      }
+
+      try {
+        index.remove(document, has, null);
+        fail("exception expected for removing null literal");
+      } catch (FullTextStringIndexException ftsie) {
+      }
+
+      try {
+        index.remove("", has, "foo");
+        fail("exception expected for removing empty subject");
+      } catch (FullTextStringIndexException ftsie) {
+      }
+
+      try {
+        index.remove(document, "", "foo");
+        fail("exception expected for removing empty predicate");
+      } catch (FullTextStringIndexException ftsie) {
+      }
+
+      index.remove(document, has, "");
+
+    } finally {
+      if (index != null) {
+        index.close();
+        cache.close();
+        assertTrue("Unable to remove all index files", cache.removeAllIndexes());
+      }
+    }
+  }
+
+  /**
    * 1. Test the loading of text files into the fulltext string pool 2. Checking
    * for existance 3. Test removal of files
    *




More information about the Mulgara-svn mailing list