Repository: jena
Updated Branches:
  refs/heads/master 24fcee58e -> bd4d4db11


The behaviour of TextDatasetGraph's
two-phase commit did not have a test to ensure that a TextDocProducer with state
did not fail when closed because that state was not flushed. 
CustomDyadicTextDocProducer
is now exercised in TestTextDatasetAssembler with a begin-add-commit-close
to ensure that finish() is called before the rest of the commit process.


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

Branch: refs/heads/master
Commit: 36933e64fb51cdf50b53a1ff1b09e79934a21430
Parents: 15577f7
Author: Chris Dollin <[email protected]>
Authored: Tue Mar 17 12:02:44 2015 +0000
Committer: Chris Dollin <[email protected]>
Committed: Tue Mar 17 12:02:44 2015 +0000

----------------------------------------------------------------------
 .../assembler/TestTextDatasetAssembler.java     | 168 +++++++++++--------
 1 file changed, 97 insertions(+), 71 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/36933e64/jena-text/src/test/java/org/apache/jena/query/text/assembler/TestTextDatasetAssembler.java
----------------------------------------------------------------------
diff --git 
a/jena-text/src/test/java/org/apache/jena/query/text/assembler/TestTextDatasetAssembler.java
 
b/jena-text/src/test/java/org/apache/jena/query/text/assembler/TestTextDatasetAssembler.java
index 4b8adcf..7185745 100644
--- 
a/jena-text/src/test/java/org/apache/jena/query/text/assembler/TestTextDatasetAssembler.java
+++ 
b/jena-text/src/test/java/org/apache/jena/query/text/assembler/TestTextDatasetAssembler.java
@@ -19,99 +19,115 @@
 package org.apache.jena.query.text.assembler;
 
 import static org.junit.Assert.assertTrue ;
+
+import java.util.Iterator;
+
 import org.apache.jena.query.text.* ;
 import org.junit.Test ;
 
 import com.hp.hpl.jena.assembler.Assembler ;
 import com.hp.hpl.jena.assembler.exceptions.AssemblerException ;
 import com.hp.hpl.jena.graph.Node ;
+import com.hp.hpl.jena.graph.NodeFactory;
 import com.hp.hpl.jena.query.Dataset ;
+import com.hp.hpl.jena.query.ReadWrite;
 import com.hp.hpl.jena.rdf.model.Resource ;
 import com.hp.hpl.jena.sparql.core.DatasetGraph ;
+import com.hp.hpl.jena.sparql.core.Quad;
 import com.hp.hpl.jena.sparql.core.QuadAction ;
 import com.hp.hpl.jena.tdb.assembler.AssemblerTDB ;
 import com.hp.hpl.jena.vocabulary.RDF ;
 
+
 /**
  * Test the text dataset assembler.
  */
 public class TestTextDatasetAssembler extends AbstractTestTextAssembler {
-       
-       private static final String TESTBASE = 
"http://example.org/testDatasetAssembler/";;
-       
-       private static final Resource spec1;
-       private static final Resource noDatasetPropertySpec;
-       private static final Resource noIndexPropertySpec;
-       private static final Resource customTextDocProducerSpec;
-       private static final Resource customDyadicTextDocProducerSpec;
-       
-       @Test
-       public void testSimpleDatasetAssembler() {
-               Dataset dataset = (Dataset) Assembler.general.open(spec1);
-               assertTrue(dataset.getContext().get(TextQuery.textIndex) 
instanceof TextIndexLucene);
-       }
-       
-       @Test(expected = AssemblerException.class)
-       public void testErrorOnNoDataset() {
-           Assembler.general.open(noDatasetPropertySpec);
-       }
-       
-       @Test(expected = AssemblerException.class)
-       public void testErrorOnNoIndex() {
-           Assembler.general.open(noIndexPropertySpec);
-       }
-       
-       @Test
-       public void testCustomTextDocProducer() {
-           Dataset dataset = 
(Dataset)Assembler.general.open(customTextDocProducerSpec) ;
-           DatasetGraphText dsgText = 
(DatasetGraphText)dataset.asDatasetGraph() ;
+
+        private static final String TESTBASE = 
"http://example.org/testDatasetAssembler/";;
+
+        private static final Resource spec1;
+        private static final Resource noDatasetPropertySpec;
+        private static final Resource noIndexPropertySpec;
+        private static final Resource customTextDocProducerSpec;
+        private static final Resource customDyadicTextDocProducerSpec;
+
+        @Test
+        public void testSimpleDatasetAssembler() {
+                Dataset dataset = (Dataset) Assembler.general.open(spec1);
+                assertTrue(dataset.getContext().get(TextQuery.textIndex) 
instanceof TextIndexLucene);
+        }
+
+        @Test(expected = AssemblerException.class)
+        public void testErrorOnNoDataset() {
+            Assembler.general.open(noDatasetPropertySpec);
+        }
+
+        @Test(expected = AssemblerException.class)
+        public void testErrorOnNoIndex() {
+            Assembler.general.open(noIndexPropertySpec);
+        }
+
+        @Test
+        public void testCustomTextDocProducer() {
+            Dataset dataset = 
(Dataset)Assembler.general.open(customTextDocProducerSpec) ;
+            DatasetGraphText dsgText = 
(DatasetGraphText)dataset.asDatasetGraph() ;
         assertTrue(dsgText.getMonitor() instanceof CustomTextDocProducer) ;
         dataset.close();
-       }
-       
-       @Test
-       public void testCustomTextDocProducerDyadicConstructor() {
-           Dataset dataset = 
(Dataset)Assembler.general.open(customDyadicTextDocProducerSpec) ;
-           DatasetGraphText dsgText = 
(DatasetGraphText)dataset.asDatasetGraph() ;
+        }
+
+        @Test
+        public void testCustomTextDocProducerDyadicConstructor() {
+            Dataset dataset = 
(Dataset)Assembler.general.open(customDyadicTextDocProducerSpec) ;
+            DatasetGraphText dsgText = 
(DatasetGraphText)dataset.asDatasetGraph() ;
         assertTrue(dsgText.getMonitor() instanceof 
CustomDyadicTextDocProducer) ;
+        
+        Node G= NodeFactory.createURI("http://example.com/G";);
+        Node S = NodeFactory.createURI("http://example.com/S";);
+        Node P = NodeFactory.createURI("http://example.com/P";);
+        Node O = NodeFactory.createLiteral("http://example.com/O";);
+        
+        dsgText.begin(ReadWrite.WRITE);
+        dsgText.add(G, S, P, O);
+        dsgText.commit();
         dataset.close();
-       }
-       
-       static {
-               TextAssembler.init();
-               AssemblerTDB.init();
-               spec1 =
-                               model.createResource(TESTBASE + "spec1")
-                                    .addProperty(RDF.type, 
TextVocab.textDataset)
-                                    .addProperty(TextVocab.pDataset, 
SIMPLE_DATASET_SPEC)
-                                    .addProperty(TextVocab.pIndex, 
SIMPLE_INDEX_SPEC3);
-               noDatasetPropertySpec =
-                               model.createResource(TESTBASE + 
"noDatasetPropertySpec")
-                                    .addProperty(RDF.type, 
TextVocab.textDataset)
-                                    .addProperty(TextVocab.pIndex, 
SIMPLE_INDEX_SPEC4);
-               noIndexPropertySpec =
-                               model.createResource(TESTBASE + 
"noIndexPropertySpec")
-                                    .addProperty(RDF.type, 
TextVocab.textDataset)
-                                    .addProperty(TextVocab.pDataset, 
SIMPLE_DATASET_SPEC);
-               customTextDocProducerSpec =
+        }
+
+        static {
+                TextAssembler.init();
+                AssemblerTDB.init();
+                spec1 =
+                                model.createResource(TESTBASE + "spec1")
+                                     .addProperty(RDF.type, 
TextVocab.textDataset)
+                                     .addProperty(TextVocab.pDataset, 
SIMPLE_DATASET_SPEC)
+                                     .addProperty(TextVocab.pIndex, 
SIMPLE_INDEX_SPEC3);
+                noDatasetPropertySpec =
+                                model.createResource(TESTBASE + 
"noDatasetPropertySpec")
+                                     .addProperty(RDF.type, 
TextVocab.textDataset)
+                                     .addProperty(TextVocab.pIndex, 
SIMPLE_INDEX_SPEC4);
+                noIndexPropertySpec =
+                                model.createResource(TESTBASE + 
"noIndexPropertySpec")
+                                     .addProperty(RDF.type, 
TextVocab.textDataset)
+                                     .addProperty(TextVocab.pDataset, 
SIMPLE_DATASET_SPEC);
+                customTextDocProducerSpec =
                 model.createResource(TESTBASE + "customTextDocProducerSpec")
                      .addProperty(RDF.type, TextVocab.textDataset)
                      .addProperty(TextVocab.pDataset, SIMPLE_DATASET_SPEC)
                      .addProperty(TextVocab.pIndex, SIMPLE_INDEX_SPEC5)
                      .addProperty(TextVocab.pTextDocProducer, 
model.createResource("java:org.apache.jena.query.text.assembler.TestTextDatasetAssembler$CustomTextDocProducer"));
-               
-               customDyadicTextDocProducerSpec =
+
+                customDyadicTextDocProducerSpec =
                 model.createResource(TESTBASE + 
"customDyadicTextDocProducerSpec")
                      .addProperty(RDF.type, TextVocab.textDataset)
                      .addProperty(TextVocab.pDataset, SIMPLE_DATASET_SPEC)
                      .addProperty(TextVocab.pIndex, SIMPLE_INDEX_SPEC5)
                      .addProperty(TextVocab.pTextDocProducer, 
model.createResource("java:org.apache.jena.query.text.assembler.TestTextDatasetAssembler$CustomDyadicTextDocProducer"));
-               
-       }
-       
-       private static class CustomTextDocProducer implements TextDocProducer {
-           
-           public CustomTextDocProducer(TextIndex textIndex) { }
+
+        }
+
+        private static class CustomTextDocProducer implements TextDocProducer {
+            
+            public CustomTextDocProducer(TextIndex textIndex) { }
 
         @Override
         public void start() { }
@@ -121,21 +137,31 @@ public class TestTextDatasetAssembler extends 
AbstractTestTextAssembler {
 
         @Override
         public void change(QuadAction qaction, Node g, Node s, Node p, Node o) 
{ }
-       }
-       
-       
-       private static class CustomDyadicTextDocProducer implements 
TextDocProducer {
-           
-           public CustomDyadicTextDocProducer(DatasetGraph dg, TextIndex 
textIndex) { }
+        }
+
+
+        private static class CustomDyadicTextDocProducer implements 
TextDocProducer {
+            
+                final DatasetGraph dg;
+                Node lastSubject = null;
+
+                public CustomDyadicTextDocProducer(DatasetGraph dg, TextIndex 
textIndex) { 
+                        this.dg = dg;
+                }
 
         @Override
         public void start() { }
 
         @Override
-        public void finish() { }
+        public void finish() { 
+                Iterator<Quad> qi = dg.find(null, lastSubject, Node.ANY, 
Node.ANY);
+                while (qi.hasNext()) qi.next();
+        }
 
         @Override
-        public void change(QuadAction qaction, Node g, Node s, Node p, Node o) 
{ }
-       }
+        public void change(QuadAction qaction, Node g, Node s, Node p, Node o) 
{ 
+                lastSubject = s;
+        }
+        }
 
 }

Reply via email to