You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by cl...@apache.org on 2018/02/07 20:30:28 UTC

[01/10] jena git commit: fixed Graph tests

Repository: jena
Updated Branches:
  refs/heads/master 0bcaaaa1e -> fcaff1881


fixed Graph tests

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

Branch: refs/heads/master
Commit: 50703b41060227741304d5e6e236ef57c10b6df8
Parents: 08d231d
Author: Claude Warren <cl...@apache.org>
Authored: Fri Dec 29 20:45:33 2017 +0000
Committer: Claude Warren <cl...@apache.org>
Committed: Fri Dec 29 20:45:33 2017 +0000

----------------------------------------------------------------------
 jena-core/pom.xml                               |   1 +
 .../apache/jena/graph/GraphContractTest.java    | 511 +++++++++++++++----
 .../graph/GraphWithPerformContractTest.java     |  15 +-
 .../AbstractGraphProducer.java                  |   2 +
 .../jena/testing_framework/GraphHelper.java     |   8 +
 5 files changed, 446 insertions(+), 91 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/50703b41/jena-core/pom.xml
----------------------------------------------------------------------
diff --git a/jena-core/pom.xml b/jena-core/pom.xml
index b883411..2afd219 100644
--- a/jena-core/pom.xml
+++ b/jena-core/pom.xml
@@ -71,6 +71,7 @@
       <groupId>org.xenei</groupId>
       <artifactId>junit-contracts</artifactId>
       <scope>test</scope>
+      <version>0.1.8-SNAPSHOT</version>
     </dependency>
 
     <dependency>

http://git-wip-us.apache.org/repos/asf/jena/blob/50703b41/jena-core/src/test/java/org/apache/jena/graph/GraphContractTest.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/GraphContractTest.java b/jena-core/src/test/java/org/apache/jena/graph/GraphContractTest.java
index addad6c..295efca 100644
--- a/jena-core/src/test/java/org/apache/jena/graph/GraphContractTest.java
+++ b/jena-core/src/test/java/org/apache/jena/graph/GraphContractTest.java
@@ -31,6 +31,7 @@ import static org.apache.jena.testing_framework.GraphHelper.triple ;
 import static org.apache.jena.testing_framework.GraphHelper.tripleArray ;
 import static org.apache.jena.testing_framework.GraphHelper.tripleSet ;
 import static org.apache.jena.testing_framework.GraphHelper.txnBegin ;
+import static org.apache.jena.testing_framework.GraphHelper.txnRun ;
 import static org.apache.jena.testing_framework.GraphHelper.txnCommit ;
 import static org.apache.jena.testing_framework.GraphHelper.txnRollback ;
 import static org.apache.jena.testing_framework.TestUtils.assertDiffer ;
@@ -64,6 +65,7 @@ import org.apache.jena.testing_framework.NodeCreateUtils ;
 import org.apache.jena.util.iterator.ClosableIterator ;
 import org.apache.jena.util.iterator.ExtendedIterator ;
 import org.junit.After ;
+import org.junit.Assert;
 import org.slf4j.Logger ;
 import org.slf4j.LoggerFactory ;
 import org.xenei.junit.contract.Contract ;
@@ -102,8 +104,15 @@ public class GraphContractTest<T extends Graph>  {
 		graph.add(triple("S P O"));
 		txnCommit(graph);
 		GL.assertHasStart("add", graph, triple("S P O"));
-		assertTrue("Graph should contain <S P O>",
-				graph.contains(triple("S P O")));
+		txnRun( graph, new Runnable() {
+
+			@Override
+			public void run()
+			{
+				assertTrue("Graph should contain <S P O>",
+						graph.contains(triple("S P O")));		
+			}});
+		
 	}
 
 	/**
@@ -142,26 +151,53 @@ public class GraphContractTest<T extends Graph>  {
 	 * that expected ~= initialContent + addedStuff - removed - initialContent.
 	 */
 	@ContractTest
-	public void testClear() {
+	public void testClear_Empty() {
 		Graph graph = producer.newInstance();
 		Graph base = copy(graph);
 
 		graph.getEventManager().register(GL);
-		txnBegin(graph);
-		graph.clear();
-		txnCommit(graph);
-		assertEmpty(graph, base);
+		txnRun( graph, new Runnable() {
+			
+			@Override
+			public void run()
+			{
+				graph.clear();
+			}});
+		
+		txnRun( graph, new Runnable() {
+			
+			@Override
+			public void run()
+			{
+				assertEmpty(graph, base);
+			}});
 		GL.assertHasStart("someEvent", graph, GraphEvents.removeAll);
 		GL.clear();
-
+	}
+	
+	@ContractTest
+	public void testClear() {
+		Graph graph = producer.newInstance();
+		Graph base = copy(graph);
 		// test after adding
-		graph = graphWith(producer.newInstance(),
+		graphWith(graph,
 				"S P O; S e:ff 27; _1 P P3; S4 P4 'en'");
 		graph.getEventManager().register(GL);
-		txnBegin(graph);
-		graph.clear();
-		txnCommit(graph);
-		assertEmpty(graph, base);
+		txnRun( graph, new Runnable() {
+			
+			@Override
+			public void run()
+			{
+				graph.clear();
+			}});
+		
+		txnRun( graph, new Runnable() {
+			
+			@Override
+			public void run()
+			{
+				assertEmpty(graph, base);
+			}});
 		if (GL.contains("delete")) {
 			// deletes are listed -- ensure all deletes are listed
 			GL.assertContains("delete", graph, triple("S P O"));
@@ -180,8 +216,15 @@ public class GraphContractTest<T extends Graph>  {
 				"S P O; S P2 O2; S3 P P3");
 		graph.getEventManager().register(GL);
 		assertFalse("Graph was constructed closed", graph.isClosed());
-
-		graph.close();
+		
+		txnRun( graph, new Runnable() {
+			
+			@Override
+			public void run()
+			{
+				graph.close();
+			}});
+		
 		assertTrue("Graph should be closed", graph.isClosed());
 
 		// exception may be thrown on begin or on execution.
@@ -314,14 +357,20 @@ public class GraphContractTest<T extends Graph>  {
 		Graph graph = graphWith(producer.newInstance(),
 				"S P O; S2 P2 O2; S3 P3 O3");
 
-		assertTrue(graph.contains(node("S"), node("P"), node("O")));
-		assertFalse(graph.contains(node("S"), node("P"), node("O2")));
-		assertFalse(graph.contains(node("S"), node("P2"), node("O")));
-		assertFalse(graph.contains(node("S2"), node("P"), node("O")));
-		assertTrue(graph.contains(Node.ANY, Node.ANY, Node.ANY));
-		assertTrue(graph.contains(Node.ANY, Node.ANY, node("O")));
-		assertTrue(graph.contains(Node.ANY, node("P"), Node.ANY));
-		assertTrue(graph.contains(node("S"), Node.ANY, Node.ANY));
+		txnRun( graph, new Runnable() {
+			
+			@Override
+			public void run()
+			{	
+				assertTrue(graph.contains(node("S"), node("P"), node("O")));
+				assertFalse(graph.contains(node("S"), node("P"), node("O2")));
+				assertFalse(graph.contains(node("S"), node("P2"), node("O")));
+				assertFalse(graph.contains(node("S2"), node("P"), node("O")));
+				assertTrue(graph.contains(Node.ANY, Node.ANY, Node.ANY));
+				assertTrue(graph.contains(Node.ANY, Node.ANY, node("O")));
+				assertTrue(graph.contains(Node.ANY, node("P"), Node.ANY));
+				assertTrue(graph.contains(node("S"), Node.ANY, Node.ANY));
+			}});
 	}
 
 	@ContractTest
@@ -334,36 +383,63 @@ public class GraphContractTest<T extends Graph>  {
 		Node Q = node("Q");
 		Node r = node("r");
 		Node any = node("??");
-		assertTrue(g.contains(s, P, o));
-		assertTrue(g.contains(s, Q, r));
-		assertTrue(g.contains(any, P, o));
-		assertTrue(g.contains(any, Q, r));
-		assertTrue(g.contains(any, P, any));
-		assertTrue(g.contains(any, Q, any));
+		txnRun( g, new Runnable() {
+			
+			@Override
+			public void run()
+			{
+				assertTrue(g.contains(s, P, o));
+				assertTrue(g.contains(s, Q, r));
+				assertTrue(g.contains(any, P, o));
+				assertTrue(g.contains(any, Q, r));
+				assertTrue(g.contains(any, P, any));
+				assertTrue(g.contains(any, Q, any));
+			}});
 	}
 
 	@ContractTest
 	public void testContains_Node_Node_Node_ByValue() {
 		Node x = node("x");
 		Node P = node("P");
-		if (producer.newInstance().getCapabilities()
+		Graph g1 = producer.newInstance();
+		if (g1.getCapabilities()
 				.handlesLiteralTyping()) {
-			Graph g1 = graphWith(producer.newInstance(),
+			graphWith(g1,
 					"x P '1'xsd:integer");
-			assertTrue(
-					String.format(
-							"literal type equality failed, does %s really implement literal typing",
-							g1.getClass()), g1.contains(x, P,
-							node("'01'xsd:int")));
+			txnRun( g1, new Runnable() {
+				
+				@Override
+				public void run()
+				{
+					assertTrue(
+							String.format(
+									"literal type equality failed, does %s really implement literal typing",
+									g1.getClass()), g1.contains(x, P,
+											node("'01'xsd:int")));
+				}});
 			//
 			Graph g2 = graphWith(producer.newInstance(), "x P '1'xsd:int");
-			assertTrue("Literal equality with '1'xsd:integer failed",
+			txnRun( g2, new Runnable() {
+				
+				@Override
+				public void run()
+				{
+				
+					assertTrue("Literal equality with '1'xsd:integer failed",
 					g2.contains(x, P, node("'1'xsd:integer")));
+				}});
 			//
 			Graph g3 = graphWith(producer.newInstance(),
 					"x P '123'xsd:string");
-			assertTrue("Literal equality with '123' failed",
+			txnRun( g3, new Runnable() {
+				
+				@Override
+				public void run()
+				{
+				
+					assertTrue("Literal equality with '123' failed",
 					g3.contains(x, P, node("'123'")));
+				}});
 		}
 	}
 
@@ -374,17 +450,23 @@ public class GraphContractTest<T extends Graph>  {
 		Node o = node("o");
 
 		Node _x = node("_x");
-		Node _R = node("_R");
+		Node R = node("R");
 		Node _y = node("_y");
 
 		Node x = node("x");
 		Node S = node("S");
 
 		Graph g = graphWith(producer.newInstance(),
-				"s P o; _x _R _y; x S 0");
+				"s P o; _x R _y; x S 0");
+		txnRun( g, new Runnable() {
+			
+			@Override
+			public void run()
+			{
+			
 		assertTrue("Graph should have contained s P o", g.contains(s, P, o));
 		assertTrue("Graph should have contained _x _R _y",
-				g.contains(_x, _R, _y));
+				g.contains(_x, R, _y));
 		assertTrue("Graph should have contained x S 'O'",
 				g.contains(x, S, node("0")));
 		/* */
@@ -393,7 +475,35 @@ public class GraphContractTest<T extends Graph>  {
 		assertFalse(g.contains(s, node("p"), o));
 		assertFalse(g.contains(_x, node("_r"), _y));
 		assertFalse(g.contains(x, S, node("1")));
-	}
+			}});
+	}
+
+		@ContractTest
+		public void testContains_Node_Node_Node_Concrete_BlankPredicate() {
+			Node s = node("s");
+			Node P = node("P");
+			Node o = node("o");
+
+			Node _x = node("_x");
+			Node _R = node("_R");
+			Node _y = node("_y");
+
+			Node x = node("x");
+			Node S = node("S");
+
+			Graph g = graphWith(producer.newInstance(),
+					"s P o; _x _R _y; x S 0");
+			txnRun( g, new Runnable() {
+				
+				@Override
+				public void run()
+				{
+				
+			assertTrue("Graph should have contained _x _R _y",
+					g.contains(_x, _R, _y));
+			assertFalse(g.contains(_x, node("_r"), _y));
+				}});
+		}
 
 	@ContractTest
 	public void testContains_Node_Node_Node_Fluid() {
@@ -404,6 +514,12 @@ public class GraphContractTest<T extends Graph>  {
 		Node a = node("a");
 		Node b = node("b");
 		Graph g = graphWith(producer.newInstance(), "x R y; a P b");
+		
+		txnRun( g, new Runnable() {
+			
+			@Override
+			public void run()
+			{
 		assertTrue(g.contains(Node.ANY, R, y));
 		assertTrue(g.contains(x, Node.ANY, y));
 		assertTrue(g.contains(x, R, Node.ANY));
@@ -418,13 +534,18 @@ public class GraphContractTest<T extends Graph>  {
 		assertFalse(g.contains(Node.ANY, R, x));
 		assertFalse(g.contains(x, Node.ANY, R));
 		assertFalse(g.contains(a, node("S"), Node.ANY));
+			}});
 	}
 
 	@ContractTest
 	public void testContains_Triple() {
 		Graph graph = graphWith(producer.newInstance(),
 				"S P O; S2 P2 O2; S3 P3 O3");
-
+		txnRun( graph, new Runnable() {
+			
+			@Override
+			public void run()
+			{
 		assertTrue(graph.contains(triple("S P O")));
 		assertFalse(graph.contains(triple("S P O2")));
 		assertFalse(graph.contains(triple("S P2 O")));
@@ -433,6 +554,7 @@ public class GraphContractTest<T extends Graph>  {
 		assertTrue(graph.contains(new Triple(Node.ANY, Node.ANY, node("O"))));
 		assertTrue(graph.contains(new Triple(Node.ANY, node("P"), Node.ANY)));
 		assertTrue(graph.contains(new Triple(node("S"), Node.ANY, Node.ANY)));
+			}});
 
 	}
 
@@ -440,42 +562,91 @@ public class GraphContractTest<T extends Graph>  {
 	public void testContains_Triple_RepeatedSubjectDoesNotConceal() {
 
 		Graph g = graphWith(producer.newInstance(), "s P o; s Q r");
+		txnRun( g, new Runnable() {
+			
+			@Override
+			public void run()
+			{
 		assertTrue(g.contains(triple("s P o")));
 		assertTrue(g.contains(triple("s Q r")));
 		assertTrue(g.contains(triple("?? P o")));
 		assertTrue(g.contains(triple("?? Q r")));
 		assertTrue(g.contains(triple("?? P ??")));
 		assertTrue(g.contains(triple("?? Q ??")));
+			}});
 	}
 
 	@ContractTest
 	public void testContains_Triple_ByValue() {
-
-		if (producer.newInstance().getCapabilities()
+		Graph g1 = producer.newInstance();
+		if (g1.getCapabilities()
 				.handlesLiteralTyping()) {
-			Graph g1 = graphWith(producer.newInstance(),
-					"x P '1'xsd:integer");
+			graphWith(g1, "x P '1'xsd:integer");
+			txnRun( g1, new Runnable() {
+				
+				@Override
+				public void run()
+				{
 			assertTrue(
 					String.format(
 							"did not find x P '01'xsd:int, does %s really implement literal typing",
 							g1.getClass()),
 					g1.contains(triple("x P '01'xsd:int")));
+				}});
 			//
 			Graph g2 = graphWith(producer.newInstance(), "x P '1'xsd:int");
+			txnRun( g2, new Runnable() {
+				
+				@Override
+				public void run()
+				{
 			assertTrue("did not find x P '1'xsd:integer",
 					g2.contains(triple("x P '1'xsd:integer")));
+				}});
 			//
 			Graph g3 = graphWith(producer.newInstance(),
 					"x P '123'xsd:string");
+			txnRun( g3, new Runnable() {
+				
+				@Override
+				public void run()
+				{
 			assertTrue("did not find x P '123'xsd:string",
 					g3.contains(triple("x P '123'")));
+				}});
 		}
 	}
 
 	@ContractTest
 	public void testContains_Triple_Concrete() {
 		Graph g = graphWith(producer.newInstance(),
+				"s P o; _x R _y; x S 0");
+		txnRun( g, new Runnable() {
+			
+			@Override
+			public void run()
+			{
+		assertTrue(g.contains(triple("s P o")));
+		assertTrue(g.contains(triple("_x R _y")));
+		assertTrue(g.contains(triple("x S 0")));
+		/* */
+		assertFalse(g.contains(triple("s P Oh")));
+		assertFalse(g.contains(triple("S P O")));
+		assertFalse(g.contains(triple("s p o")));
+		assertFalse(g.contains(triple("_x _r _y")));
+		assertFalse(g.contains(triple("x S 1")));
+			}});
+	}
+
+	@ContractTest
+	public void testContains_Triple_Concrete_BlankPredicate() {
+		Graph g = graphWith(producer.newInstance(),
 				"s P o; _x _R _y; x S 0");
+		txnRun( g, new Runnable() {
+			
+			@Override
+			public void run()
+			{
 		assertTrue(g.contains(triple("s P o")));
 		assertTrue(g.contains(triple("_x _R _y")));
 		assertTrue(g.contains(triple("x S 0")));
@@ -485,11 +656,18 @@ public class GraphContractTest<T extends Graph>  {
 		assertFalse(g.contains(triple("s p o")));
 		assertFalse(g.contains(triple("_x _r _y")));
 		assertFalse(g.contains(triple("x S 1")));
+			}});
 	}
-
+	
 	@ContractTest
 	public void testContains_Triple_Fluid() {
 		Graph g = graphWith(producer.newInstance(), "x R y; a P b");
+		txnRun( g, new Runnable() {
+			
+			@Override
+			public void run()
+			{
+		
 		assertTrue(g.contains(triple("?? R y")));
 		assertTrue(g.contains(triple("x ?? y")));
 		assertTrue(g.contains(triple("x R ??")));
@@ -504,6 +682,7 @@ public class GraphContractTest<T extends Graph>  {
 		assertFalse(g.contains(triple("?? R x")));
 		assertFalse(g.contains(triple("x ?? R")));
 		assertFalse(g.contains(triple("a S ??")));
+			}});
 	}
 
 	/**
@@ -515,10 +694,23 @@ public class GraphContractTest<T extends Graph>  {
 				"S P O; S2 P2 O2; S3 P3 O3");
 		Graph base = producer.newInstance();
 		graph.getEventManager().register(GL);
-		txnBegin(graph);
+		
+		try {
+			txnBegin(graph);
 		graph.delete(triple("S P O"));
 		txnCommit(graph);
+		} catch (DeleteDeniedException expected) {
+			txnRollback(graph);
+			fail( "delete( S P O ) failed: "+ expected.getMessage());
+		}
+		
 		GL.assertContains("delete", graph, triple("S P O"));
+		
+		txnRun( graph, new Runnable() {
+			
+			@Override
+			public void run()
+			{
 		assertFalse("Graph should not contain <S P O>",
 				graph.contains(triple("S P O")));
 		assertNotEmpty(graph, base);
@@ -526,7 +718,15 @@ public class GraphContractTest<T extends Graph>  {
 				graph.contains(triple("S2 P2 O2")));
 		assertTrue("Graph should contain <S3 P3 O3>",
 				graph.contains(triple("S3 P3 O3")));
-
+			}});
+	}
+	@ContractTest
+	public void testDelete_Triple_Wildcard() {
+		Graph graph = graphWith(producer.newInstance(),
+				"S P O; S2 P2 O2; S3 P3 O3");
+		Graph base = producer.newInstance();
+		graph.getEventManager().register(GL);
+		
 		// should not modify anything on wildcard delete
 		GL.clear();
 		try {
@@ -534,12 +734,19 @@ public class GraphContractTest<T extends Graph>  {
 			graph.delete(new Triple(node("S2"), node("P2"), Node.ANY));
 			txnCommit(graph);
 		} catch (DeleteDeniedException expected) {
-			txnRollback(graph);
+			txnRollback(graph);			
 		}
+		txnRun( graph, new Runnable() {
+			
+			@Override
+			public void run()
+			{
+		
 		assertTrue("Graph should contain <S2 P2 O2>",
 				graph.contains(triple("S2 P2 O2")));
 		assertTrue("Graph should contain <S3 P3 O3>",
 				graph.contains(triple("S3 P3 O3")));
+			}});
 		GL.assertHas("delete", graph, new Triple(node("S2"), node("P2"),
 				Node.ANY));
 	}
@@ -578,6 +785,7 @@ public class GraphContractTest<T extends Graph>  {
 	public void testFind_Node_Node_Node() {
 		Graph graph = graphWith(producer.newInstance(),
 				"S P O; S2 P2 O2; S3 P3 O3");
+		txnBegin( graph );
 		List<Triple> s = graph.find(Node.ANY, Node.ANY, Node.ANY).toList();
 		assertEquals(3, s.size());
 		List<Triple> expected = Arrays.asList(new Triple[] { triple("S P O"),
@@ -612,7 +820,7 @@ public class GraphContractTest<T extends Graph>  {
 
 		s = graph.find(node("S3"), node("P2"), Node.ANY).toList();
 		assertEquals(0, s.size());
-
+		txnRollback(graph);
 	}
 
 	@ContractTest
@@ -622,9 +830,11 @@ public class GraphContractTest<T extends Graph>  {
 		Node z = node("z");
 		Graph g = graphWith(producer.newInstance(), "x y z ");
 		Set<Triple> expect = tripleSet("x y z");
+		txnBegin( g );
 		assertEquals(expect, g.find(Node.ANY, y, z).toSet());
 		assertEquals(expect, g.find(x, Node.ANY, z).toSet());
 		assertEquals(expect, g.find(x, y, Node.ANY).toSet());
+		txnRollback(g);
 	}
 
 	@ContractTest
@@ -657,6 +867,7 @@ public class GraphContractTest<T extends Graph>  {
 				fail(e.getMessage());
 			}
 			txnCommit(g);
+			txnBegin(g);
 			assertEquals(
 					String.format(
 							"Should have found 4 elements, does %s really implement literal typing",
@@ -665,33 +876,38 @@ public class GraphContractTest<T extends Graph>  {
 					iteratorToSet(
 							g.find(Node.ANY, P, NodeCreateUtils.create("42")))
 							.size());
+			txnRollback(g);
 		}
 	}
 
 	@ContractTest
 	public void testFind_Node_Node_Node_MatchLanguagedLiteralCaseInsensitive() {
-		Graph m = graphWith(producer.newInstance(), "a p 'chat'en");
-		if (m.getCapabilities().handlesLiteralTyping()) {
+		Graph g = graphWith(producer.newInstance(), "a p 'chat'en");
+		if (g.getCapabilities().handlesLiteralTyping()) {
 			Node chaten = node("'chat'en"), chatEN = node("'chat'EN");
 			assertDiffer(chaten, chatEN);
 			assertTrue(chaten.sameValueAs(chatEN));
 			assertEquals(chaten.getIndexingValue(), chatEN.getIndexingValue());
-			assertEquals(1, m.find(Node.ANY, Node.ANY, chaten).toList().size());
-			assertEquals(1, m.find(Node.ANY, Node.ANY, chatEN).toList().size());
+			txnBegin( g );
+			assertEquals(1, g.find(Node.ANY, Node.ANY, chaten).toList().size());
+			assertEquals(1, g.find(Node.ANY, Node.ANY, chatEN).toList().size());
+			txnRollback(g);
 		}
 	}
 
 	@ContractTest
 	public void testFind_Node_Node_Node_NoMatchAgainstUnlanguagesLiteral() {
-		Graph m = graphWith(producer.newInstance(),
+		Graph g = graphWith(producer.newInstance(),
 				"a p 'chat'en; a p 'chat'");
-		if (m.getCapabilities().handlesLiteralTyping()) {
+		if (g.getCapabilities().handlesLiteralTyping()) {
 			Node chaten = node("'chat'en"), chatEN = node("'chat'EN");
 			assertDiffer(chaten, chatEN);
 			assertTrue(chaten.sameValueAs(chatEN));
 			assertEquals(chaten.getIndexingValue(), chatEN.getIndexingValue());
-			assertEquals(1, m.find(Node.ANY, Node.ANY, chaten).toList().size());
-			assertEquals(1, m.find(Node.ANY, Node.ANY, chatEN).toList().size());
+			txnBegin( g );
+			assertEquals(1, g.find(Node.ANY, Node.ANY, chaten).toList().size());
+			assertEquals(1, g.find(Node.ANY, Node.ANY, chatEN).toList().size());
+			txnRollback(g);
 		}
 	}
 
@@ -699,6 +915,7 @@ public class GraphContractTest<T extends Graph>  {
 	public void testFind_Triple() {
 		Graph graph = graphWith(producer.newInstance(),
 				"S P O; S2 P2 O2; S3 P3 O3");
+		txnBegin(graph);
 		List<Triple> s = graph.find(Triple.ANY).toList();
 		assertEquals(3, s.size());
 		List<Triple> expected = Arrays.asList(new Triple[] { triple("S P O"),
@@ -732,16 +949,18 @@ public class GraphContractTest<T extends Graph>  {
 
 		s = graph.find(new Triple(node("S3"), node("P2"), Node.ANY)).toList();
 		assertEquals(0, s.size());
-
+		txnRollback( graph );
 	}
 
 	@ContractTest
 	public void testFind_Triple_ByFluidTriple() {
 		Graph g = graphWith(producer.newInstance(), "x y z ");
 		Set<Triple> expect = tripleSet("x y z");
+		txnBegin( g );
 		assertEquals(expect, g.find(triple("?? y z")).toSet());
 		assertEquals(expect, g.find(triple("x ?? z")).toSet());
 		assertEquals(expect, g.find(triple("x y ??")).toSet());
+		txnRollback( g );
 	}
 
 	@ContractTest
@@ -774,6 +993,7 @@ public class GraphContractTest<T extends Graph>  {
 				fail(e.getMessage());
 			}
 			txnCommit(g);
+			txnBegin(g);
 			assertEquals(
 					String.format(
 							"Should have found 4 elements, does %s really implement literal typing",
@@ -782,30 +1002,39 @@ public class GraphContractTest<T extends Graph>  {
 					iteratorToSet(
 							g.find(new Triple(Node.ANY, P, NodeCreateUtils
 									.create("42")))).size());
+			txnRollback(g);
 		}
 	}
 
 	@ContractTest
 	public void testFind_Triple_MatchLanguagedLiteralCaseInsensitive() {
-		Graph m = graphWith(producer.newInstance(), "a p 'chat'en");
+		Graph g = graphWith(producer.newInstance(), "a p 'chat'en");
+		if (g.getCapabilities().handlesLiteralTyping()) {
 		Node chaten = node("'chat'en"), chatEN = node("'chat'EN");
 		assertDiffer(chaten, chatEN);
 		assertTrue(chaten.sameValueAs(chatEN));
 		assertEquals(chaten.getIndexingValue(), chatEN.getIndexingValue());
-		assertEquals(1, m.find(new Triple(Node.ANY, Node.ANY, chaten)).toList().size());
-		assertEquals(1, m.find(new Triple(Node.ANY, Node.ANY, chatEN)).toList().size());
+		txnBegin( g );
+		assertEquals(1, g.find(new Triple(Node.ANY, Node.ANY, chaten)).toList().size());
+		assertEquals(1, g.find(new Triple(Node.ANY, Node.ANY, chatEN)).toList().size());
+		txnRollback( g );
+		}
 	}
 
 	@ContractTest
 	public void testFind_Triple_NoMatchAgainstUnlanguagesLiteral() {
-		Graph m = graphWith(producer.newInstance(),
+		Graph g = graphWith(producer.newInstance(),
 				"a p 'chat'en; a p 'chat'");
+		if (g.getCapabilities().handlesLiteralTyping()) {
 		Node chaten = node("'chat'en"), chatEN = node("'chat'EN");
 		assertDiffer(chaten, chatEN);
 		assertTrue(chaten.sameValueAs(chatEN));
 		assertEquals(chaten.getIndexingValue(), chatEN.getIndexingValue());
-		assertEquals(1, m.find(new Triple(Node.ANY, Node.ANY, chaten)).toList().size());
-		assertEquals(1, m.find(new Triple(Node.ANY, Node.ANY, chatEN)).toList().size());
+		txnBegin( g );
+		assertEquals(1, g.find(new Triple(Node.ANY, Node.ANY, chaten)).toList().size());
+		assertEquals(1, g.find(new Triple(Node.ANY, Node.ANY, chatEN)).toList().size());
+		txnRollback( g );
+		}
 	}
 
 	@ContractTest
@@ -839,18 +1068,20 @@ public class GraphContractTest<T extends Graph>  {
 	@ContractTest
 	public void testGetPrefixMapping() {
 		Graph g = producer.newInstance();
+		txnBegin( g );
 		PrefixMapping pm = g.getPrefixMapping();
 		assertNotNull("Must return prefix mapping", pm);
 		assertSame("getPrefixMapping must always return the same object", pm,
 				g.getPrefixMapping());
-
-	
+		txnRollback( g );	
 		pm.setNsPrefix("pfx1", "http://example.com/");
 		pm.setNsPrefix("pfx2", "scheme:rope/string#");
-
+		
+		txnBegin( g );
 		// assert same after adding to other mapl
 		assertSame("getPrefixMapping must always return the same object", pm,
 				g.getPrefixMapping());
+		txnRollback( g );
 
 	}
 
@@ -876,31 +1107,46 @@ public class GraphContractTest<T extends Graph>  {
 	public void testIsClosed() {
 		Graph g = producer.newInstance();
 		assertFalse("Graph created in closed state", g.isClosed());
+		txnBegin(g);
 		g.close();
+		txnCommit(g);
+		txnBegin(g);
 		assertTrue("Graph does not report closed state after close called",
 				g.isClosed());
+		txnRollback(g);
 	}
 
 	@ContractTest
 	public void testIsEmpty() {
 		Graph g = producer.newInstance();
+		txnBegin( g );
 		if (!g.isEmpty()) {
 			LOG.warn(String.format(
 					"Graph type %s can not be empty (Empty test skipped)",
 					g.getClass()));
+			txnRollback(g);
 		} else {
+			txnRollback(g);
 			graphAddTxn(g, "S P O");
+			txnBegin(g);
 			assertFalse("Graph reports empty after add", g.isEmpty());
+			txnRollback(g);
+			
 			txnBegin(g);
 			g.add(NodeCreateUtils.createTriple("Foo B C"));
 			g.delete(NodeCreateUtils.createTriple("S P O"));
 			txnCommit(g);
+			txnBegin(g);
 			assertFalse("Should not report empty", g.isEmpty());
+			txnRollback(g);
+			
 			txnBegin(g);
 			g.delete(NodeCreateUtils.createTriple("Foo B C"));
 			txnCommit(g);
+			txnBegin(g);
 			assertTrue("Should report empty after all entries deleted",
 					g.isEmpty());
+			txnRollback(g);
 		}
 	}
 
@@ -908,13 +1154,16 @@ public class GraphContractTest<T extends Graph>  {
 	public void testIsIsomorphicWith_Graph() {
 		Graph graph = producer.newInstance();
 		Graph g2 = memGraph();
+		txnBegin( graph );
 		assertTrue("Empty graphs should be isomorphic",
 				graph.isIsomorphicWith(g2));
-
-		graph = graphWith(producer.newInstance(),
+		txnRollback( graph );
+		graphWith(graph,
 				"S P O; S2 P2 O2; S3 P3 O3");
 		g2 = graphWith("S3 P3 O3; S2 P2 O2; S P O");
+		txnBegin( graph );
 		assertTrue("Should be isomorphic", graph.isIsomorphicWith(g2));
+		txnRollback( graph );
 		txnBegin(graph);
 		graph.add(triple("_1, P4 S4"));
 		txnCommit(graph);
@@ -922,9 +1171,11 @@ public class GraphContractTest<T extends Graph>  {
 		txnBegin(g2);
 		g2.add(triple("_2, P4 S4"));
 		txnCommit(g2);
+		txnBegin( graph );
 		assertTrue("Should be isomorphic after adding anonymous nodes",
 				graph.isIsomorphicWith(g2));
-
+		txnRollback( graph );
+		
 		txnBegin(graph);
 		graph.add(triple("_1, P3 S4"));
 		txnCommit(graph);
@@ -932,7 +1183,9 @@ public class GraphContractTest<T extends Graph>  {
 		txnBegin(g2);
 		g2.add(triple("_2, P4 S4"));
 		txnCommit(g2);
+		txnBegin( graph );
 		assertFalse("Should not be isomorphic", graph.isIsomorphicWith(g2));
+		txnRollback( graph );
 	}
 
 	private Graph copy(Graph g) {
@@ -989,7 +1242,9 @@ public class GraphContractTest<T extends Graph>  {
 
 				content.getEventManager().unregister(GL);
 				Graph finalContent = remove(copy(content), baseContent);
+				txnBegin(finalContent);
 				assertIsomorphic(cases[i][1], expected, finalContent);
+				txnRollback(finalContent);
 			}
 	}
 
@@ -1009,8 +1264,10 @@ public class GraphContractTest<T extends Graph>  {
 
 	private void testRemove(String findRemove, String findCheck) {
 		Graph g = graphWith(producer.newInstance(), "S P O");
+		txnBegin(g);
 		ExtendedIterator<Triple> it = g.find(NodeCreateUtils
 				.createTriple(findRemove));
+		txnRollback(g);
 		try {
 			it.next();
 			it.remove();
@@ -1035,11 +1292,13 @@ public class GraphContractTest<T extends Graph>  {
 		try {
 			g.add(Triple.create(r, p, s));
 			txnCommit(g);
+			txnBegin(g);
 			assertTrue(g.contains(r, p, Node.ANY));
 			assertEquals(1, g.find(r, p, Node.ANY).toList().size());
 		} catch (Exception e) {
-			txnRollback(g);
 			fail(e.getMessage());
+		} finally {
+			txnRollback(g);
 		}
 	}
 
@@ -1051,19 +1310,25 @@ public class GraphContractTest<T extends Graph>  {
 	public void testAGraph() {
 		String title = this.getClass().getName();
 		Graph g = producer.newInstance();
+		txnBegin(g);
 		int baseSize = g.size();
+		txnRollback(g);
 		graphAddTxn(g, "x R y; p S q; a T b");
 		/* */
+		txnBegin(g);
 		assertContainsAll(title + ": simple graph", g, "x R y; p S q; a T b");
 		assertEquals(title + ": size", baseSize + 3, g.size());
-
+		txnRollback(g);
+		
 		graphAddTxn(g,
 				"spindizzies lift cities; Diracs communicate instantaneously");
-		assertEquals(title + ": size after adding", baseSize + 5, g.size());
 		txnBegin(g);
+		assertEquals(title + ": size after adding", baseSize + 5, g.size());
+
 		g.delete(triple("x R y"));
 		g.delete(triple("a T b"));
 		txnCommit(g);
+		txnBegin(g);
 		assertEquals(title + ": size after deleting", baseSize + 3, g.size());
 		assertContainsAll(title + ": modified simple graph", g,
 				"p S q; spindizzies lift cities; Diracs communicate instantaneously");
@@ -1074,6 +1339,7 @@ public class GraphContractTest<T extends Graph>  {
 		assertEquals(title + ": finds a 'lift' triple",
 				triple("spindizzies lift cities"), it.next());
 		assertFalse(title + ": finds exactly one triple", it.hasNext());
+		txnRollback(g);
 		it.close();
 	}
 
@@ -1083,7 +1349,9 @@ public class GraphContractTest<T extends Graph>  {
 		txnBegin(g);
 		xSPO(g);
 		txnCommit(g);
+		txnBegin(g);
 		assertFalse(g.isEmpty());
+		txnRollback(g);
 	}
 
 	protected void xSPOyXYZ(Graph g) {
@@ -1107,6 +1375,7 @@ public class GraphContractTest<T extends Graph>  {
 	    final Graph g = producer.newInstance();
 	    try {
 	        graphAddTxn(g, "c S d; e:ff GGG hhhh; _i J 27; Ell Em 'en'");
+	        txnBegin(g);
 	        Iterator<Triple> it = new TrackingTripleIterator(g.find(Triple.ANY)) {
 	            @Override
 	            public void remove() {
@@ -1114,11 +1383,14 @@ public class GraphContractTest<T extends Graph>  {
 	                g.delete(current); // no-op.
 	            }
 	        };
+	        txnRollback(g);
 	        while (it.hasNext()) {
 	            it.next();
 	            it.remove();
 	        }
+	        txnBegin(g);
 	        assertTrue(g.isEmpty());
+	        txnRollback(g);
 	    } catch (UnsupportedOperationException e) {
 	        // No Iterator.remove
 	    }
@@ -1182,11 +1454,17 @@ public class GraphContractTest<T extends Graph>  {
 		Model m1 = ModelFactory.createModelForGraph(g1);
 		Model m2 = ModelFactory.createModelForGraph(g2);
 
+		txnBegin(g1);
 		m1.read(getInputStream(n, 1, suffix), "http://www.example.org/", lang);
-
+		txnCommit(g1);
+		
+		txnBegin(g2);
 		m2.read(getInputStream(n, 2, suffix), "http://www.example.org/", lang);
+		txnCommit(g2);
 
+		txnBegin(g1);
 		boolean rslt = g1.isIsomorphicWith(g2) == result;
+		txnRollback(g1);
 		if (!rslt) {
 			System.out.println("g1:");
 			m1.write(System.out, "N-TRIPLE");
@@ -1280,11 +1558,25 @@ public class GraphContractTest<T extends Graph>  {
 	public void testPartialUpdate() {
 		Graph source = graphWith(producer.newInstance(), "a R b; b S e");
 		Graph dest = graphWith(producer.newInstance(), "b R d");
-		GraphExtract e = new GraphExtract(TripleBoundary.stopNowhere);
-		e.extractInto(dest, node("a"), source);
+		txnBegin(source);
+		try {
+			GraphExtract e = new GraphExtract(TripleBoundary.stopNowhere);
+			e.extractInto(dest, node("a"), source);
+			txnCommit(source);
+		}
+		catch (RuntimeException e)
+		{
+			txnRollback(source);
+			e.printStackTrace();
+			fail( e.getMessage() );
+			
+		}
+		txnBegin(source);
 		assertIsomorphic(
-				graphWith(producer.newInstance(), "a R b; b S e; b R d"),
+				graphWith( "a R b; b S e; b R d"),
 				dest);
+		txnRollback(source);
+		
 	}
 
 	/**
@@ -1294,13 +1586,13 @@ public class GraphContractTest<T extends Graph>  {
 	@ContractTest
 	public void testIterator_Remove() {
 	    Graph graph = graphWith(producer.newInstance(), "a R b; b S e");
-	    try {
-	        graph.getEventManager().register(GL);
-	        txnBegin(graph);
-
-	        Triple toRemove = triple("a R b");
-	        ExtendedIterator<Triple> rtr = graph.find(toRemove);
-	        assertTrue("ensure a(t least) one triple", rtr.hasNext());
+	    graph.getEventManager().register(GL);
+        txnBegin(graph);
+        Triple toRemove = triple("a R b");
+        ExtendedIterator<Triple> rtr = graph.find(toRemove);
+        assertTrue("ensure a(t least) one triple", rtr.hasNext());
+        txnRollback(graph);
+	    try {	        
 	        rtr.next();
 	        rtr.remove();
 	        rtr.close();
@@ -1315,19 +1607,22 @@ public class GraphContractTest<T extends Graph>  {
 	public void testTransactionHandler_Commit() {
 		Graph g = producer.newInstance();
 		if (g.getTransactionHandler().transactionsSupported()) {
-			Graph initial = graphWith(producer.newInstance(),
+			Graph initial = graphWith(
 					"initial hasValue 42; also hasURI hello");
-			Graph extra = graphWith(producer.newInstance(),
+			Graph extra = graphWith(
 					"extra hasValue 17; also hasURI world");
-
+			g.getTransactionHandler().begin();			
 			GraphUtil.addInto(g, initial);
+			g.getTransactionHandler().commit();
 			g.getTransactionHandler().begin();
 			GraphUtil.addInto(g, extra);
 			g.getTransactionHandler().commit();
 			Graph union = memGraph();
 			GraphUtil.addInto(union, initial);
 			GraphUtil.addInto(union, extra);
+			g.getTransactionHandler().begin();
 			assertIsomorphic(union, g);
+			g.getTransactionHandler().abort();
 			// Model inFiIProducer<TransactionHandler>le =
 			// ModelFactory.createDefaultModel();
 			// inFile.read( "file:///" + foo, "N-TRIPLES" );
@@ -1343,11 +1638,17 @@ public class GraphContractTest<T extends Graph>  {
 					"initial hasValue 42; also hasURI hello");
 			Graph extra = graphWith(producer.newInstance(),
 					"extra hasValue 17; also hasURI world");
+			g.getTransactionHandler().begin();
 			GraphUtil.addInto(g, initial);
+			g.getTransactionHandler().commit();
+
 			g.getTransactionHandler().begin();
 			GraphUtil.addInto(g, extra);
 			g.getTransactionHandler().abort();
+			
+			g.getTransactionHandler().begin();
 			assertIsomorphic(initial, g);
+			g.getTransactionHandler().abort();
 		}
 	}
 
@@ -1365,7 +1666,9 @@ public class GraphContractTest<T extends Graph>  {
 			g.getTransactionHandler().begin();
 			GraphUtil.addInto(g, extra);
 			g.getTransactionHandler().abort();
+			g.getTransactionHandler().begin();
 			assertIsomorphic(initial, g);
+			g.getTransactionHandler().abort();
 			// Model inFile = ModelFactory.createDefaultModel();
 			// inFile.read( "file:///" + foo, "N-TRIPLES" );
 			// assertIsomorphic( initial, inFile.getGraph() );
@@ -1395,10 +1698,12 @@ public class GraphContractTest<T extends Graph>  {
 
 			Node literal = NodeCreateUtils.create(search);
 			//
+			txnBegin(g);
 			assertEquals("graph has wrong size", size, g.size());
 			Set<Node> got = g.find(Node.ANY, Node.ANY, literal)
 					.mapWith(getObject).toSet();
 			assertEquals(nodeSet(results), got);
+			txnRollback(g);
 		}
 	}
 
@@ -1457,7 +1762,9 @@ public class GraphContractTest<T extends Graph>  {
 	@ContractTest
 	public void testQuadRemove() {
 		Graph g = producer.newInstance();
+		txnBegin(g);
 		assertEquals(0, g.size());
+		txnRollback(g);
 		Triple s = triple("x rdf:subject s");
 		Triple p = triple("x rdf:predicate p");
 		Triple o = triple("x rdf:object o");
@@ -1468,23 +1775,31 @@ public class GraphContractTest<T extends Graph>  {
 		g.add(o);
 		g.add(t);
 		txnCommit(g);
+		txnBegin(g);
 		assertEquals(4, g.size());
+		txnRollback(g);
 		txnBegin(g);
 		g.delete(s);
 		g.delete(p);
 		g.delete(o);
 		g.delete(t);
 		txnCommit(g);
+		txnBegin(g);
 		assertEquals(0, g.size());
+		txnRollback(g);
 	}
 
 	@ContractTest
 	public void testSizeAfterRemove() {
 	    Graph g = graphWith(producer.newInstance(), "x p y");
 	    try {
+	    	txnBegin(g);
 	        ExtendedIterator<Triple> it = g.find(triple("x ?? ??"));
+	        txnRollback(g);
 	        it.removeNext();
+	        txnBegin(g);
 	        assertEquals(0, g.size());
+	        txnRollback(g);
 	    } catch (UnsupportedOperationException e) {
 	        // No Iterator.remove
 	    }
@@ -1581,13 +1896,17 @@ public class GraphContractTest<T extends Graph>  {
 	public void testBrokenIndexes() {
 	    Graph g = graphWith(producer.newInstance(), "x R y; x S z");
 	    try {
+	    	txnBegin(g);
 	        ExtendedIterator<Triple> it = g.find(Node.ANY, Node.ANY,
 	                                             Node.ANY);
+	        txnRollback(g);
 	        it.removeNext();
 	        it.removeNext();
+	        txnBegin(g);
 	        assertFalse(g.find(node("x"), Node.ANY, Node.ANY).hasNext());
 	        assertFalse(g.find(Node.ANY, node("R"), Node.ANY).hasNext());
 	        assertFalse(g.find(Node.ANY, Node.ANY, node("y")).hasNext());
+	        txnRollback(g);
 	    } catch (UnsupportedOperationException e) {
 	        // No Iterator.remove
 	    }
@@ -1597,9 +1916,13 @@ public class GraphContractTest<T extends Graph>  {
 	public void testBrokenSubject() {
 		Graph g = graphWith(producer.newInstance(), "x brokenSubject y");
 		try {
+	    	txnBegin(g);
 		    ExtendedIterator<Triple> it = g.find(node("x"), Node.ANY, Node.ANY);
+	        txnRollback(g);
 		    it.removeNext();
+	    	txnBegin(g);
 		    assertFalse(g.find(Node.ANY, Node.ANY, Node.ANY).hasNext());
+	        txnRollback(g);
 		} catch (UnsupportedOperationException e) {
 		    // No Iterator.remove
 		}
@@ -1609,9 +1932,13 @@ public class GraphContractTest<T extends Graph>  {
 	public void testBrokenPredicate() {
 		Graph g = graphWith(producer.newInstance(), "x brokenPredicate y");
 		try {
+	    	txnBegin(g);
 		    ExtendedIterator<Triple> it = g.find(Node.ANY, node("brokenPredicate"), Node.ANY);
+	        txnRollback(g);
 		    it.removeNext();
+	    	txnBegin(g);
 		    assertFalse(g.find(Node.ANY, Node.ANY, Node.ANY).hasNext());
+	        txnRollback(g);
 		} catch (UnsupportedOperationException e) {
 		    // No Iterator.remove
 		}
@@ -1622,9 +1949,13 @@ public class GraphContractTest<T extends Graph>  {
 	    Graph g = graphWith(producer.newInstance(), "x brokenObject y");
 
 	    try {
+	    	txnBegin(g);
 	        ExtendedIterator<Triple> it = g.find(Node.ANY, Node.ANY, node("y"));
+	        txnRollback(g);
 	        it.removeNext();
+	    	txnBegin(g);
 	        assertFalse(g.find(Node.ANY, Node.ANY, Node.ANY).hasNext());
+	    	txnRollback(g);
 
 	    } catch (UnsupportedOperationException e) {
 	        // No Iterator.remove

http://git-wip-us.apache.org/repos/asf/jena/blob/50703b41/jena-core/src/test/java/org/apache/jena/graph/GraphWithPerformContractTest.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/GraphWithPerformContractTest.java b/jena-core/src/test/java/org/apache/jena/graph/GraphWithPerformContractTest.java
index 574afef..713f0be 100644
--- a/jena-core/src/test/java/org/apache/jena/graph/GraphWithPerformContractTest.java
+++ b/jena-core/src/test/java/org/apache/jena/graph/GraphWithPerformContractTest.java
@@ -22,7 +22,7 @@ import static org.apache.jena.testing_framework.GraphHelper.graphWith;
 import static org.apache.jena.testing_framework.GraphHelper.triple;
 import static org.apache.jena.testing_framework.GraphHelper.txnBegin;
 import static org.apache.jena.testing_framework.GraphHelper.txnCommit;
-
+import static org.apache.jena.testing_framework.GraphHelper.txnRun;
 import static org.junit.Assert.*;
 
 import org.junit.After;
@@ -68,7 +68,13 @@ public class GraphWithPerformContractTest<T extends GraphWithPerform> {
 		g.performAdd(triple("S3 P3 O3"));
 		txnCommit(g);
 		GL.assertEmpty();
+		txnRun( g, new Runnable() {
+			
+			@Override
+			public void run()
+			{
 		assertTrue(g.contains(triple("S3 P3 O3")));
+			}});
 	}
 
 	@ContractTest
@@ -80,7 +86,14 @@ public class GraphWithPerformContractTest<T extends GraphWithPerform> {
 		g.performDelete(triple("S2 P2 O2"));
 		txnCommit(g);
 		GL.assertEmpty();
+		txnRun( g, new Runnable() {
+			
+			@Override
+			public void run()
+			{
 		assertFalse(g.contains(triple("S2 P2 O2")));
+			}});
+		
 	}
 
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/50703b41/jena-core/src/test/java/org/apache/jena/testing_framework/AbstractGraphProducer.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/AbstractGraphProducer.java b/jena-core/src/test/java/org/apache/jena/testing_framework/AbstractGraphProducer.java
index 7c4cc6d..8b58197 100644
--- a/jena-core/src/test/java/org/apache/jena/testing_framework/AbstractGraphProducer.java
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/AbstractGraphProducer.java
@@ -72,7 +72,9 @@ public abstract class AbstractGraphProducer<T extends Graph> implements
 	final public void cleanUp() {
 		for (Graph g : graphList) {
 			if (!g.isClosed()) {
+				GraphHelper.txnBegin(g);
 				g.close();
+				GraphHelper.txnCommit(g);
 			}
 			afterClose(g);
 		}

http://git-wip-us.apache.org/repos/asf/jena/blob/50703b41/jena-core/src/test/java/org/apache/jena/testing_framework/GraphHelper.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/GraphHelper.java b/jena-core/src/test/java/org/apache/jena/testing_framework/GraphHelper.java
index cc72479..b8bbe0c 100644
--- a/jena-core/src/test/java/org/apache/jena/testing_framework/GraphHelper.java
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/GraphHelper.java
@@ -493,6 +493,14 @@ public class GraphHelper extends TestUtils {
 			g.getTransactionHandler().commit();
 		}
 	}
+	
+	public static void txnRun( Graph g, Runnable r ) {
+		if (g.getTransactionHandler().transactionsSupported()) {
+			g.getTransactionHandler().execute( r );
+		} else {
+			r.run();
+		}
+	}
 
 	/**
 	 * Rollback (abort) the transaction on the graph if transactions are


[09/10] jena git commit: JENA-1457 Fix graph contract test transaction usage

Posted by cl...@apache.org.
JENA-1457 Fix graph contract test transaction usage

this closes #352


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

Branch: refs/heads/master
Commit: 8567e272d8d1bb33284ee2c4bdba056b69d76139
Parents: 567f405
Author: Claude Warren <cl...@apache.org>
Authored: Sun Feb 4 11:11:46 2018 +0000
Committer: Claude Warren <cl...@apache.org>
Committed: Wed Feb 7 20:09:34 2018 +0000

----------------------------------------------------------------------
 .../apache/jena/sparql/resultset/JSONInput.java | 170 +------------------
 1 file changed, 1 insertion(+), 169 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/8567e272/jena-arq/src/main/java/org/apache/jena/sparql/resultset/JSONInput.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/JSONInput.java b/jena-arq/src/main/java/org/apache/jena/sparql/resultset/JSONInput.java
index 1b4d895..264ac6c 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/JSONInput.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/resultset/JSONInput.java
@@ -20,16 +20,6 @@ package org.apache.jena.sparql.resultset;
 
 import java.io.InputStream;
 
-import org.apache.jena.atlas.json.JSON;
-import org.apache.jena.atlas.json.JsonArray;
-import org.apache.jena.atlas.json.JsonObject;
-import org.apache.jena.atlas.json.JsonValue;
-import org.apache.jena.atlas.logging.Log;
-import org.apache.jena.datatypes.RDFDatatype;
-import org.apache.jena.datatypes.TypeMapper;
-import org.apache.jena.graph.Node;
-import org.apache.jena.graph.NodeFactory;
-import org.apache.jena.query.ARQ;
 import org.apache.jena.query.ResultSet;
 import org.apache.jena.rdf.model.Model;
 import org.apache.jena.riot.resultset.ResultSetLang;
@@ -60,166 +50,8 @@ public class JSONInput extends SPARQLResult {
     }
 
     public static SPARQLResult make(InputStream input, Model model) {
-        return new JSONInput().process(input, model);
+        return make(input);
     }
 
     private JSONInput() {}
-
-    private Boolean       booleanResult = null; // Valid if rows is null.
-    private List<Binding> rows          = null;
-    private List<Var>     vars          = null;
-
-    // TODO Streaming version of JSON Result set processing
-
-    private SPARQLResult process(InputStream in, Model model) {
-        parse(in);
-        if ( model == null )
-            model = GraphFactory.makeJenaDefaultModel();
-        if ( rows != null ) {
-            QueryIterator qIter = new QueryIterPlainWrapper(rows.iterator());
-            ResultSet rs = new ResultSetStream(Var.varNames(vars), model, qIter);
-            super.set(rs);
-        } else
-            super.set(booleanResult);
-        return this;
-    }
-
-    private void parse(InputStream in) {
-        JsonObject obj = JSON.parse(in);
-
-        if ( obj.hasKey(kBoolean) ) {
-            checkContains(obj, true, true, kHead, kBoolean);
-            booleanResult = obj.get(kBoolean).getAsBoolean().value();
-            rows = null;
-            return;
-        }
-
-        rows = new ArrayList<>(1000);
-
-        checkContains(obj, true, true, kHead, kResults);
-
-        // process head
-        if ( !obj.get(kHead).isObject() )
-            throw new ResultSetException("Key 'head' must have a JSON object as value: found: " + obj.get(kHead));
-        JsonObject head = obj.get(kHead).getAsObject();
-
-        // ---- Head
-        // -- Link - array.
-        if ( head.hasKey(kLink) ) {
-            List<String> links = new ArrayList<>();
-
-            if ( head.get(kLink).isString() ) {
-                Log.warn(this, "Link field is a string, should be an array of strings");
-                links.add(head.get(kLink).getAsString().value());
-            } else {
-                if ( !head.get(kLink).isArray() )
-                    throw new ResultSetException("Key 'link' must have be an array: found: " + obj.get(kLink));
-
-                for ( JsonValue v : head.get(kLink).getAsArray() ) {
-                    if ( !v.isString() )
-                        throw new ResultSetException("Key 'link' must have be an array of strings: found: " + v);
-                    links.add(v.getAsString().value());
-                }
-            }
-        }
-        // -- Vars
-        vars = parseVars(head);
-
-        // ---- Results
-        JsonObject results = obj.get(kResults).getAsObject();
-        if ( !results.get(kBindings).isArray() )
-            throw new ResultSetException("'bindings' must be an array");
-        JsonArray array = results.get(kBindings).getAsArray();
-        Iterator<JsonValue> iter = array.iterator();
-
-        for ( ; iter.hasNext() ; ) {
-            BindingMap b = BindingFactory.create();
-            JsonValue v = iter.next();
-            if ( !v.isObject() )
-                throw new ResultSetException("Entry in 'bindings' array must be an object {}");
-            JsonObject x = v.getAsObject();
-            Set<String> varNames = x.keys();
-            for ( String vn : varNames ) {
-                // if ( ! vars.contains(vn) ) {}
-                JsonValue vt = x.get(vn);
-                if ( !vt.isObject() )
-                    throw new ResultSetException("Binding for variable '" + vn + "' is not a JSON object: " + vt);
-                Node n = parseOneTerm(vt.getAsObject());
-                b.add(Var.alloc(vn), n);
-            }
-            rows.add(b);
-        }
-    }
-
-    private List<Var> parseVars(JsonObject obj) {
-        if ( !obj.get(kVars).isArray() )
-            throw new ResultSetException("Key 'vars' must be a JSON array");
-        JsonArray a = obj.get(kVars).getAsArray();
-        Iterator<JsonValue> iter = a.iterator();
-        List<Var> vars = new ArrayList<>();
-        for ( ; iter.hasNext() ; ) {
-            JsonValue v = iter.next();
-            if ( !v.isString() )
-                throw new ResultSetException("Entries in vars array must be strings");
-            Var var = Var.alloc(v.getAsString().value());
-            vars.add(var);
-        }
-        return vars;
-    }
-
-    private LabelToNode labelMap = ARQ.getContext().isTrue(ARQ.inputGraphBNodeLabels) ?
-        SyntaxLabels.createLabelToNodeAsGiven() :
-        SyntaxLabels.createLabelToNode();
-
-    private Node parseOneTerm(JsonObject term) {
-        checkContains(term, false, false, kType, kValue, kXmlLang, kDatatype);
-
-        String type = stringOrNull(term, kType);
-        String v = stringOrNull(term, kValue);
-
-        if ( kUri.equals(type) ) {
-            checkContains(term, false, true, kType, kValue);
-            String uri = v;
-            Node n = NodeFactory.createURI(v);
-            return n;
-        }
-
-        if ( kLiteral.equals(type) || kTypedLiteral.equals(type) ) {
-            String lang = stringOrNull(term, kXmlLang);
-            String dtStr = stringOrNull(term, kDatatype);
-            if ( lang != null && dtStr != null )
-                throw new ResultSetException("Both language and datatype defined: " + term);
-            RDFDatatype dt = TypeMapper.getInstance().getSafeTypeByName(dtStr);
-            return NodeFactory.createLiteral(v, lang, dt);
-        }
-
-        if ( kBnode.equals(type) )
-            return labelMap.get(null, v);
-
-        throw new ResultSetException("Object key not recognized as valid for an RDF term: " + term);
-    }
-
-    private static String stringOrNull(JsonObject obj, String key) {
-        JsonValue v = obj.get(key);
-        if ( v == null )
-            return null;
-        if ( !v.isString() )
-            throw new ResultSetException("Not a string: key: " + key);
-        return v.getAsString().value();
-
-    }
-
-    private static void checkContains(JsonObject term, boolean allowUndefinedKeys, boolean requireAllExpectedKeys, String... keys) {
-        List<String> expectedKeys = Arrays.asList(keys);
-        Set<String> declared = new HashSet<>();
-        for ( String k : term.keys() ) {
-            if ( !expectedKeys.contains(k) && !allowUndefinedKeys )
-                throw new ResultSetException("Expected only object keys " + Arrays.asList(keys) + " but encountered '" + k + "'");
-            if ( expectedKeys.contains(k) )
-                declared.add(k);
-        }
-
-        if ( requireAllExpectedKeys && declared.size() < expectedKeys.size() )
-            throw new ResultSetException("One or more of the required keys " + expectedKeys + " was not found");
-    }
 }


Re: [08/10] jena git commit: Merge branch 'master' into FixGraphContractTestTransactionUsage

Posted by ajs6f <aj...@apache.org>.
+1!

My habit long ago became to rebase constantly while working up a PR (and working on feedback) and rebasing right up until I merge it. It makes the public history much easier to understand, and because Git keeps reasonable metadata on all commits, it doesn't "hide" or destroy any genuinely useful info.


ajs6f

> On Feb 8, 2018, at 9:51 AM, Andy Seaborne <an...@apache.org> wrote:
> 
> Claude,
> 
> I think using "git rebase" rather than "git merge" would have made this cleaner. Rebase undoes the differences, merges cleanly the other branch (fast forward) then redoes the differences.
> 
>    Andy
> 
> On 07/02/18 20:30, claude@apache.org wrote:
>> Merge branch 'master' into FixGraphContractTestTransactionUsage
>> Project: http://git-wip-us.apache.org/repos/asf/jena/repo
>> Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/567f4053
>> Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/567f4053
>> Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/567f4053
>> Branch: refs/heads/master
>> Commit: 567f40531b02ea4808a51837ae8005b98da76886
>> Parents: 02ae269 568b822
>> Author: Claude Warren <cl...@apache.org>
>> Authored: Sun Feb 4 11:05:28 2018 +0000
>> Committer: Claude Warren <cl...@apache.org>
>> Committed: Sun Feb 4 11:05:28 2018 +0000
>> ----------------------------------------------------------------------
>>  .../java/org/apache/jena/riot/RDFLanguages.java | 16 +++--
>>  .../jena/sparql/algebra/table/TableBase.java    |  2 +
>>  .../jena/sparql/algebra/table/TableEmpty.java   |  4 ++
>>  .../jena/sparql/algebra/table/TableUnit.java    |  9 ++-
>>  .../sparql/graph/TransactionHandlerNull.java    |  2 +-
>>  .../jena/sparql/sse/writers/WriterOp.java       |  9 ++-
>>  .../java/org/apache/jena/riot/TestLangRIOT.java |  5 ++
>>  .../apache/jena/sparql/algebra/TS_Algebra.java  |  3 +-
>>  .../jena/sparql/algebra/TestOpAsQuery.java      | 26 +++++++-
>>  .../apache/jena/sparql/algebra/TestTable.java   | 68 ++++++++++++++++++++
>>  .../algebra/optimize/TestTransformFilters.java  |  2 +-
>>  .../transaction/AbstractTestTransPromote.java   | 26 ++++----
>>  .../AbstractTestTransactionLifecycle.java       | 24 ++++++-
>>  .../main/java/org/apache/jena/tdb2/TDB2.java    |  3 +
>>  .../jena/tdb2/store/GraphViewSwitchable.java    |  5 --
>>  .../org/apache/jena/fuseki/async/AsyncPool.java | 25 +++++--
>>  .../src/main/java/org/apache/jena/tdb/TDB.java  |  3 +
>>  .../jena/tdb/graph/TransactionHandlerTDB.java   | 62 ------------------
>>  .../apache/jena/tdb/store/GraphNonTxnTDB.java   | 56 ++++++++++++----
>>  .../tdb/transaction/TransactionManager.java     | 59 ++++++++++-------
>>  20 files changed, 269 insertions(+), 140 deletions(-)
>> ----------------------------------------------------------------------


Re: [08/10] jena git commit: Merge branch 'master' into FixGraphContractTestTransactionUsage

Posted by Andy Seaborne <an...@apache.org>.
Claude,

I think using "git rebase" rather than "git merge" would have made this 
cleaner. Rebase undoes the differences, merges cleanly the other branch 
(fast forward) then redoes the differences.

     Andy

On 07/02/18 20:30, claude@apache.org wrote:
> Merge branch 'master' into FixGraphContractTestTransactionUsage
> 
> Project: http://git-wip-us.apache.org/repos/asf/jena/repo
> Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/567f4053
> Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/567f4053
> Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/567f4053
> 
> Branch: refs/heads/master
> Commit: 567f40531b02ea4808a51837ae8005b98da76886
> Parents: 02ae269 568b822
> Author: Claude Warren <cl...@apache.org>
> Authored: Sun Feb 4 11:05:28 2018 +0000
> Committer: Claude Warren <cl...@apache.org>
> Committed: Sun Feb 4 11:05:28 2018 +0000
> 
> ----------------------------------------------------------------------
>   .../java/org/apache/jena/riot/RDFLanguages.java | 16 +++--
>   .../jena/sparql/algebra/table/TableBase.java    |  2 +
>   .../jena/sparql/algebra/table/TableEmpty.java   |  4 ++
>   .../jena/sparql/algebra/table/TableUnit.java    |  9 ++-
>   .../sparql/graph/TransactionHandlerNull.java    |  2 +-
>   .../jena/sparql/sse/writers/WriterOp.java       |  9 ++-
>   .../java/org/apache/jena/riot/TestLangRIOT.java |  5 ++
>   .../apache/jena/sparql/algebra/TS_Algebra.java  |  3 +-
>   .../jena/sparql/algebra/TestOpAsQuery.java      | 26 +++++++-
>   .../apache/jena/sparql/algebra/TestTable.java   | 68 ++++++++++++++++++++
>   .../algebra/optimize/TestTransformFilters.java  |  2 +-
>   .../transaction/AbstractTestTransPromote.java   | 26 ++++----
>   .../AbstractTestTransactionLifecycle.java       | 24 ++++++-
>   .../main/java/org/apache/jena/tdb2/TDB2.java    |  3 +
>   .../jena/tdb2/store/GraphViewSwitchable.java    |  5 --
>   .../org/apache/jena/fuseki/async/AsyncPool.java | 25 +++++--
>   .../src/main/java/org/apache/jena/tdb/TDB.java  |  3 +
>   .../jena/tdb/graph/TransactionHandlerTDB.java   | 62 ------------------
>   .../apache/jena/tdb/store/GraphNonTxnTDB.java   | 56 ++++++++++++----
>   .../tdb/transaction/TransactionManager.java     | 59 ++++++++++-------
>   20 files changed, 269 insertions(+), 140 deletions(-)
> ----------------------------------------------------------------------
> 
> 

[08/10] jena git commit: Merge branch 'master' into FixGraphContractTestTransactionUsage

Posted by cl...@apache.org.
Merge branch 'master' into FixGraphContractTestTransactionUsage

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

Branch: refs/heads/master
Commit: 567f40531b02ea4808a51837ae8005b98da76886
Parents: 02ae269 568b822
Author: Claude Warren <cl...@apache.org>
Authored: Sun Feb 4 11:05:28 2018 +0000
Committer: Claude Warren <cl...@apache.org>
Committed: Sun Feb 4 11:05:28 2018 +0000

----------------------------------------------------------------------
 .../java/org/apache/jena/riot/RDFLanguages.java | 16 +++--
 .../jena/sparql/algebra/table/TableBase.java    |  2 +
 .../jena/sparql/algebra/table/TableEmpty.java   |  4 ++
 .../jena/sparql/algebra/table/TableUnit.java    |  9 ++-
 .../sparql/graph/TransactionHandlerNull.java    |  2 +-
 .../jena/sparql/sse/writers/WriterOp.java       |  9 ++-
 .../java/org/apache/jena/riot/TestLangRIOT.java |  5 ++
 .../apache/jena/sparql/algebra/TS_Algebra.java  |  3 +-
 .../jena/sparql/algebra/TestOpAsQuery.java      | 26 +++++++-
 .../apache/jena/sparql/algebra/TestTable.java   | 68 ++++++++++++++++++++
 .../algebra/optimize/TestTransformFilters.java  |  2 +-
 .../transaction/AbstractTestTransPromote.java   | 26 ++++----
 .../AbstractTestTransactionLifecycle.java       | 24 ++++++-
 .../main/java/org/apache/jena/tdb2/TDB2.java    |  3 +
 .../jena/tdb2/store/GraphViewSwitchable.java    |  5 --
 .../org/apache/jena/fuseki/async/AsyncPool.java | 25 +++++--
 .../src/main/java/org/apache/jena/tdb/TDB.java  |  3 +
 .../jena/tdb/graph/TransactionHandlerTDB.java   | 62 ------------------
 .../apache/jena/tdb/store/GraphNonTxnTDB.java   | 56 ++++++++++++----
 .../tdb/transaction/TransactionManager.java     | 59 ++++++++++-------
 20 files changed, 269 insertions(+), 140 deletions(-)
----------------------------------------------------------------------



[04/10] jena git commit: Added .recommenders to RAT exclusion.

Posted by cl...@apache.org.
Added .recommenders to RAT exclusion.


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

Branch: refs/heads/master
Commit: fa23c25835247e2586ed37ad491c45322dca45b6
Parents: 30989a5
Author: Claude Warren <cl...@apache.org>
Authored: Sat Jan 20 10:40:33 2018 +0000
Committer: Claude Warren <cl...@apache.org>
Committed: Sat Jan 20 10:40:33 2018 +0000

----------------------------------------------------------------------
 pom.xml | 2 ++
 1 file changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/fa23c258/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index fbff992..85ebfa8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -700,6 +700,8 @@
             <exclude>**/run/**/*</exclude>
             <!-- Cached classpath for commands - autogenerated -->
             <exclude>**/*.classpath</exclude>
+            <!-- Cached recommenders by Eclipse  - autogenerated -->
+            <exclude>**/*.recommenders/**/*</exclude>
 
             <!-- Exclude anything created during the build (plugin generated files) ->-->
             <exclude>**/target/**/*</exclude>


[02/10] jena git commit: Blank node labels for JSON Result Set reading

Posted by cl...@apache.org.
Blank node labels for JSON Result Set reading


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

Branch: refs/heads/master
Commit: 20b78ae0ddc7a2102602a28f9ed3f48a40c99a1b
Parents: 94eb3fc
Author: Andy Seaborne <an...@apache.org>
Authored: Mon Dec 18 14:49:40 2017 +0000
Committer: Claude Warren <cl...@xenei.com>
Committed: Sat Jan 20 09:29:56 2018 +0000

----------------------------------------------------------------------
 .../apache/jena/sparql/resultset/JSONInput.java | 170 ++++++++++++++++++-
 1 file changed, 169 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/20b78ae0/jena-arq/src/main/java/org/apache/jena/sparql/resultset/JSONInput.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/JSONInput.java b/jena-arq/src/main/java/org/apache/jena/sparql/resultset/JSONInput.java
index 264ac6c..1b4d895 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/JSONInput.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/resultset/JSONInput.java
@@ -20,6 +20,16 @@ package org.apache.jena.sparql.resultset;
 
 import java.io.InputStream;
 
+import org.apache.jena.atlas.json.JSON;
+import org.apache.jena.atlas.json.JsonArray;
+import org.apache.jena.atlas.json.JsonObject;
+import org.apache.jena.atlas.json.JsonValue;
+import org.apache.jena.atlas.logging.Log;
+import org.apache.jena.datatypes.RDFDatatype;
+import org.apache.jena.datatypes.TypeMapper;
+import org.apache.jena.graph.Node;
+import org.apache.jena.graph.NodeFactory;
+import org.apache.jena.query.ARQ;
 import org.apache.jena.query.ResultSet;
 import org.apache.jena.rdf.model.Model;
 import org.apache.jena.riot.resultset.ResultSetLang;
@@ -50,8 +60,166 @@ public class JSONInput extends SPARQLResult {
     }
 
     public static SPARQLResult make(InputStream input, Model model) {
-        return make(input);
+        return new JSONInput().process(input, model);
     }
 
     private JSONInput() {}
+
+    private Boolean       booleanResult = null; // Valid if rows is null.
+    private List<Binding> rows          = null;
+    private List<Var>     vars          = null;
+
+    // TODO Streaming version of JSON Result set processing
+
+    private SPARQLResult process(InputStream in, Model model) {
+        parse(in);
+        if ( model == null )
+            model = GraphFactory.makeJenaDefaultModel();
+        if ( rows != null ) {
+            QueryIterator qIter = new QueryIterPlainWrapper(rows.iterator());
+            ResultSet rs = new ResultSetStream(Var.varNames(vars), model, qIter);
+            super.set(rs);
+        } else
+            super.set(booleanResult);
+        return this;
+    }
+
+    private void parse(InputStream in) {
+        JsonObject obj = JSON.parse(in);
+
+        if ( obj.hasKey(kBoolean) ) {
+            checkContains(obj, true, true, kHead, kBoolean);
+            booleanResult = obj.get(kBoolean).getAsBoolean().value();
+            rows = null;
+            return;
+        }
+
+        rows = new ArrayList<>(1000);
+
+        checkContains(obj, true, true, kHead, kResults);
+
+        // process head
+        if ( !obj.get(kHead).isObject() )
+            throw new ResultSetException("Key 'head' must have a JSON object as value: found: " + obj.get(kHead));
+        JsonObject head = obj.get(kHead).getAsObject();
+
+        // ---- Head
+        // -- Link - array.
+        if ( head.hasKey(kLink) ) {
+            List<String> links = new ArrayList<>();
+
+            if ( head.get(kLink).isString() ) {
+                Log.warn(this, "Link field is a string, should be an array of strings");
+                links.add(head.get(kLink).getAsString().value());
+            } else {
+                if ( !head.get(kLink).isArray() )
+                    throw new ResultSetException("Key 'link' must have be an array: found: " + obj.get(kLink));
+
+                for ( JsonValue v : head.get(kLink).getAsArray() ) {
+                    if ( !v.isString() )
+                        throw new ResultSetException("Key 'link' must have be an array of strings: found: " + v);
+                    links.add(v.getAsString().value());
+                }
+            }
+        }
+        // -- Vars
+        vars = parseVars(head);
+
+        // ---- Results
+        JsonObject results = obj.get(kResults).getAsObject();
+        if ( !results.get(kBindings).isArray() )
+            throw new ResultSetException("'bindings' must be an array");
+        JsonArray array = results.get(kBindings).getAsArray();
+        Iterator<JsonValue> iter = array.iterator();
+
+        for ( ; iter.hasNext() ; ) {
+            BindingMap b = BindingFactory.create();
+            JsonValue v = iter.next();
+            if ( !v.isObject() )
+                throw new ResultSetException("Entry in 'bindings' array must be an object {}");
+            JsonObject x = v.getAsObject();
+            Set<String> varNames = x.keys();
+            for ( String vn : varNames ) {
+                // if ( ! vars.contains(vn) ) {}
+                JsonValue vt = x.get(vn);
+                if ( !vt.isObject() )
+                    throw new ResultSetException("Binding for variable '" + vn + "' is not a JSON object: " + vt);
+                Node n = parseOneTerm(vt.getAsObject());
+                b.add(Var.alloc(vn), n);
+            }
+            rows.add(b);
+        }
+    }
+
+    private List<Var> parseVars(JsonObject obj) {
+        if ( !obj.get(kVars).isArray() )
+            throw new ResultSetException("Key 'vars' must be a JSON array");
+        JsonArray a = obj.get(kVars).getAsArray();
+        Iterator<JsonValue> iter = a.iterator();
+        List<Var> vars = new ArrayList<>();
+        for ( ; iter.hasNext() ; ) {
+            JsonValue v = iter.next();
+            if ( !v.isString() )
+                throw new ResultSetException("Entries in vars array must be strings");
+            Var var = Var.alloc(v.getAsString().value());
+            vars.add(var);
+        }
+        return vars;
+    }
+
+    private LabelToNode labelMap = ARQ.getContext().isTrue(ARQ.inputGraphBNodeLabels) ?
+        SyntaxLabels.createLabelToNodeAsGiven() :
+        SyntaxLabels.createLabelToNode();
+
+    private Node parseOneTerm(JsonObject term) {
+        checkContains(term, false, false, kType, kValue, kXmlLang, kDatatype);
+
+        String type = stringOrNull(term, kType);
+        String v = stringOrNull(term, kValue);
+
+        if ( kUri.equals(type) ) {
+            checkContains(term, false, true, kType, kValue);
+            String uri = v;
+            Node n = NodeFactory.createURI(v);
+            return n;
+        }
+
+        if ( kLiteral.equals(type) || kTypedLiteral.equals(type) ) {
+            String lang = stringOrNull(term, kXmlLang);
+            String dtStr = stringOrNull(term, kDatatype);
+            if ( lang != null && dtStr != null )
+                throw new ResultSetException("Both language and datatype defined: " + term);
+            RDFDatatype dt = TypeMapper.getInstance().getSafeTypeByName(dtStr);
+            return NodeFactory.createLiteral(v, lang, dt);
+        }
+
+        if ( kBnode.equals(type) )
+            return labelMap.get(null, v);
+
+        throw new ResultSetException("Object key not recognized as valid for an RDF term: " + term);
+    }
+
+    private static String stringOrNull(JsonObject obj, String key) {
+        JsonValue v = obj.get(key);
+        if ( v == null )
+            return null;
+        if ( !v.isString() )
+            throw new ResultSetException("Not a string: key: " + key);
+        return v.getAsString().value();
+
+    }
+
+    private static void checkContains(JsonObject term, boolean allowUndefinedKeys, boolean requireAllExpectedKeys, String... keys) {
+        List<String> expectedKeys = Arrays.asList(keys);
+        Set<String> declared = new HashSet<>();
+        for ( String k : term.keys() ) {
+            if ( !expectedKeys.contains(k) && !allowUndefinedKeys )
+                throw new ResultSetException("Expected only object keys " + Arrays.asList(keys) + " but encountered '" + k + "'");
+            if ( expectedKeys.contains(k) )
+                declared.add(k);
+        }
+
+        if ( requireAllExpectedKeys && declared.size() < expectedKeys.size() )
+            throw new ResultSetException("One or more of the required keys " + expectedKeys + " was not found");
+    }
 }


[03/10] jena git commit: Merge remote-tracking branch 'apache/master' into FixGraphContractTestTransactionUsage

Posted by cl...@apache.org.
Merge remote-tracking branch 'apache/master' into FixGraphContractTestTransactionUsage

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

Branch: refs/heads/master
Commit: 30989a54b4aec3453152ce970832eea8e8acc0d3
Parents: 50703b4 94eb3fc
Author: Claude Warren <cl...@apache.org>
Authored: Sat Jan 20 10:10:53 2018 +0000
Committer: Claude Warren <cl...@apache.org>
Committed: Sat Jan 20 10:10:53 2018 +0000

----------------------------------------------------------------------
 NOTICE                                          |   2 +-
 .../src/main/resources/META-INF/NOTICE          |   2 +-
 apache-jena/dist/NOTICE                         |   2 +-
 jena-arq/NOTICE                                 |   2 +-
 .../main/java/org/apache/jena/query/ARQ.java    |  10 +
 .../org/apache/jena/query/ResultSetFactory.java |  81 +--
 .../apache/jena/query/ResultSetFormatter.java   | 139 ++--
 .../java/org/apache/jena/query/TxnType.java     |  77 +++
 .../org/apache/jena/riot/RDFParserRegistry.java |  14 +-
 .../java/org/apache/jena/riot/ResultSetMgr.java | 274 +++++---
 .../java/org/apache/jena/riot/WebContent.java   |  15 +
 .../apache/jena/riot/checker/CheckerIRI.java    |   2 +-
 .../riot/lang/BlankNodeAllocatorGlobal.java     |  58 ++
 .../lang/BlankNodeAllocatorTraditional.java     |  59 --
 .../org/apache/jena/riot/lang/LabelToNode.java  |   8 +-
 .../apache/jena/riot/lang/ReaderRIOTRDFXML.java |   3 +-
 .../org/apache/jena/riot/out/NodeFmtLib.java    |   2 +-
 .../apache/jena/riot/out/NodeFormatterTTL.java  |   2 +-
 .../jena/riot/resultset/ResultSetLang.java      |   2 +-
 .../jena/riot/resultset/ResultSetReader.java    |  31 +-
 .../riot/resultset/ResultSetReaderRegistry.java |  73 +-
 .../riot/resultset/ResultSetWriterRegistry.java |  85 +--
 .../riot/resultset/rw/JSONInputIterator.java    | 657 ++++++++++++++++++
 .../jena/riot/resultset/rw/JSONResultsKW.java   |  44 ++
 .../jena/riot/resultset/rw/ReadAnything.java    | 100 +++
 .../riot/resultset/rw/ResultSetReaderJSON.java  | 247 +++++++
 .../resultset/rw/ResultSetReaderThrift.java     |  60 ++
 .../riot/resultset/rw/ResultSetReaderXML.java   |  54 ++
 .../riot/resultset/rw/ResultSetWriterJSON.java  | 305 +++++++++
 .../resultset/rw/ResultSetWriterThrift.java     |  54 ++
 .../riot/resultset/rw/ResultSetWriterXML.java   | 380 +++++++++++
 .../jena/riot/resultset/rw/ResultsReader.java   | 161 +++++
 .../jena/riot/resultset/rw/ResultsStAX.java     | 473 +++++++++++++
 .../jena/riot/resultset/rw/ResultsWriter.java   | 133 ++++
 .../jena/riot/resultset/rw/XMLResults.java      |  50 ++
 .../org/apache/jena/riot/system/Checker.java    |   2 +-
 .../apache/jena/riot/system/IRIResolver.java    | 248 +++----
 .../apache/jena/riot/system/PrefixMapBase.java  |   3 +-
 .../apache/jena/riot/system/PrefixMapStd.java   |   3 +-
 .../jena/riot/system/stream/StreamManager.java  |   5 +-
 .../org/apache/jena/sparql/ARQConstants.java    |   7 +
 .../jena/sparql/core/DatasetGraphMap.java       |  18 +-
 .../jena/sparql/core/DatasetGraphMapLink.java   |  17 +-
 .../jena/sparql/core/DatasetGraphOne.java       |  20 +-
 .../jena/sparql/core/DatasetGraphSink.java      |   6 +-
 .../sparql/core/DatasetGraphTrackActive.java    |  18 +-
 .../jena/sparql/core/DatasetGraphWithLock.java  |  14 +-
 .../jena/sparql/core/DatasetGraphWrapper.java   | 128 ++--
 .../jena/sparql/core/DatasetGraphZero.java      |   8 +-
 .../apache/jena/sparql/core/DatasetImpl.java    |  36 +-
 .../sparql/core/TransactionHandlerView.java     |   7 +-
 .../apache/jena/sparql/core/Transactional.java  | 111 ++-
 .../jena/sparql/core/TransactionalLock.java     |  95 ++-
 .../jena/sparql/core/TransactionalMutex.java    |  63 --
 .../sparql/core/TransactionalNotSupported.java  |  44 +-
 .../core/TransactionalNotSupportedMixin.java    |  37 +-
 .../jena/sparql/core/TransactionalNull.java     |  60 +-
 .../sparql/core/mem/DatasetGraphInMemory.java   | 183 +++--
 .../jena/sparql/engine/QueryEngineBase.java     |   2 +-
 .../jena/sparql/engine/QueryExecutionBase.java  |   2 +-
 .../sparql/engine/http/QueryEngineHTTP.java     |  61 +-
 .../org/apache/jena/sparql/expr/E_BNode.java    |   4 +-
 .../org/apache/jena/sparql/expr/E_Function.java |  44 +-
 .../jena/sparql/expr/ExprUndefFunction.java     |  32 +
 .../sparql/expr/nodevalue/NodeFunctions.java    |   3 +-
 .../jena/sparql/function/FunctionBase.java      |   2 +-
 .../jena/sparql/function/js/EnvJavaScript.java  | 138 ++++
 .../sparql/function/js/FunctionJavaScript.java  |  91 +++
 .../jena/sparql/function/js/JSEngine.java       | 109 +++
 .../org/apache/jena/sparql/function/js/NV.java  | 217 ++++++
 .../apache/jena/sparql/function/js/RDFJS.java   |  35 +
 .../org/apache/jena/sparql/lang/ParserBase.java |   1 +
 .../sparql/modify/UpdateProcessRemoteBase.java  |   2 +-
 .../jena/sparql/modify/UpdateProcessorBase.java |   2 +-
 .../modify/UpdateProcessorStreamingBase.java    |   2 +-
 .../apache/jena/sparql/resultset/JSONInput.java | 227 +------
 .../sparql/resultset/JSONInputIterator.java     | 657 ------------------
 .../jena/sparql/resultset/JSONOutput.java       |  21 +-
 .../jena/sparql/resultset/JSONOutputASK.java    |  54 --
 .../sparql/resultset/JSONOutputResultSet.java   | 266 --------
 .../jena/sparql/resultset/JSONResultsKW.java    |  43 --
 .../jena/sparql/resultset/ResultsFormat.java    |  19 +-
 .../jena/sparql/resultset/SPARQLResult.java     |  20 +-
 .../apache/jena/sparql/resultset/XMLInput.java  |  12 +-
 .../jena/sparql/resultset/XMLInputSAX.java      |  25 +-
 .../jena/sparql/resultset/XMLInputStAX.java     | 516 --------------
 .../apache/jena/sparql/resultset/XMLOutput.java |  54 +-
 .../jena/sparql/resultset/XMLOutputASK.java     |  74 --
 .../sparql/resultset/XMLOutputResultSet.java    | 286 --------
 .../jena/sparql/resultset/XMLResults.java       |  50 --
 .../jena/sparql/sse/lang/ParseHandlerPlain.java |   6 +-
 .../org/apache/jena/sparql/util/Context.java    |  74 +-
 .../sparql/util/DifferenceDatasetGraph.java     | 103 +++
 .../jena/sparql/util/DyadicDatasetGraph.java    | 248 +++++++
 .../org/apache/jena/sparql/util/FmtUtils.java   |   2 +-
 .../sparql/util/IntersectionDatasetGraph.java   |  93 +++
 .../apache/jena/sparql/util/LabelToNodeMap.java |   7 +-
 .../apache/jena/sparql/util/QueryExecUtils.java |  16 +-
 .../jena/sparql/util/UnionDatasetGraph.java     | 110 +++
 .../sparql/util/compose/DatasetCollector.java   | 125 ++++
 .../jena/sparql/util/compose/DatasetLib.java    |  72 ++
 .../jena/sparql/util/graph/GraphUtils.java      |   9 +-
 .../java/org/apache/jena/system/ThreadTxn.java  |  36 +-
 .../main/java/org/apache/jena/system/Txn.java   | 127 ++--
 .../java/org/apache/jena/system/TxnCounter.java | 194 ++++--
 jena-arq/src/main/resources/META-INF/NOTICE     |   2 +-
 .../query/TestParameterizedSparqlString.java    |   4 +-
 .../org/apache/jena/riot/TS_RiotGeneral.java    |   1 +
 .../jena/riot/TestParseURISchemeBases.java      | 384 +++++++++++
 .../jena/riot/lang/TestBlankNodeAllocator.java  |   2 +-
 .../java/org/apache/jena/riot/lang/TestIRI.java |   3 +-
 .../apache/jena/riot/lang/TestLabelToNode.java  |   2 +-
 .../jena/riot/langsuite/FactoryTestRiot.java    |   1 -
 .../jena/riot/system/AbstractTestPrefixMap.java |   2 +-
 .../jena/riot/system/TestPrefixMapOther.java    |   4 +-
 .../java/org/apache/jena/sparql/TC_General.java |   2 +
 .../jena/sparql/core/DatasetGraphSimpleMem.java |   5 +
 .../org/apache/jena/sparql/core/TS_Core.java    |   1 -
 .../sparql/core/TestDatasetGraphWithLock.java   |  30 -
 .../jena/sparql/core/mem/TS_DatasetTxnMem.java  |   2 +-
 .../core/mem/TestDatasetGraphInMemoryLock.java  |   4 +-
 .../mem/TestDatasetGraphInMemoryPromote.java    |  25 -
 .../jena/sparql/function/js/TS_FunctionJS.java  |  49 ++
 .../function/js/TestJavaScriptFunctions.java    | 198 ++++++
 .../apache/jena/sparql/function/js/TestNV.java  |  71 ++
 .../jena/sparql/function/js/TestSPARQL_JS.java  |  49 ++
 .../function/library/TS_LibraryFunctions.java   |   2 +-
 .../jena/sparql/resultset/TestResultSet.java    |  64 +-
 .../transaction/AbstractTestTransPromote.java   | 202 +++---
 .../AbstractTestTransactionLifecycle.java       | 187 ++++-
 .../jena/sparql/transaction/TS_Transaction.java |   2 -
 .../TestTransactionDSGWithLockNoAbort.java      |  41 --
 .../TestTransactionDSGWithLockWithAbort.java    |  38 --
 .../transaction/TestTransactionSupport.java     |   6 +-
 .../sparql/util/TS_DyadicDatasetGraphs.java     |  28 +
 .../org/apache/jena/sparql/util/TS_Util.java    |   6 +-
 .../sparql/util/TestDifferenceDatasetGraph.java |  53 ++
 .../sparql/util/TestDyadicDatasetGraph.java     | 233 +++++++
 .../util/TestIntersectionDatasetGraph.java      |  55 ++
 .../jena/sparql/util/TestUnionDatasetGraph.java |  54 ++
 .../util/compose/TS_DatasetCollectors.java      |  28 +
 .../util/compose/TestDatasetCollector.java      |  79 +++
 .../TestIntersectionDatasetCollector.java       |  65 ++
 .../util/compose/TestUnionDatasetCollector.java |  73 ++
 .../java/org/apache/jena/system/TestTxn.java    | 139 +++-
 .../apache/jena/system/TestTxnLifecycle.java    |  21 +
 jena-arq/testing/ARQ/JS/data.ttl                |   5 +
 jena-arq/testing/ARQ/JS/js-query-1.rq           |   4 +
 jena-arq/testing/ARQ/JS/js-query-1.srj          |  12 +
 jena-arq/testing/ARQ/JS/js-query-2.rq           |   4 +
 jena-arq/testing/ARQ/JS/js-query-2.srj          |  12 +
 jena-arq/testing/ARQ/JS/js-query-3.rq           |   4 +
 jena-arq/testing/ARQ/JS/js-query-3.srj          |  12 +
 jena-arq/testing/ARQ/JS/js-query-4.rq           |   9 +
 jena-arq/testing/ARQ/JS/js-query-4.srj          |  14 +
 jena-arq/testing/ARQ/JS/js-query-5.rq           |   7 +
 jena-arq/testing/ARQ/JS/js-query-5.srj          |   8 +
 jena-arq/testing/ARQ/JS/manifest.ttl            |  56 ++
 jena-arq/testing/ARQ/JS/test-library.js         |  14 +
 jena-arq/testing/RIOT/URISchemes/app-base.rdf   |   8 +
 jena-arq/testing/RIOT/URISchemes/app-base.ttl   |   5 +
 jena-arq/testing/RIOT/URISchemes/app.rdf        |   7 +
 jena-arq/testing/RIOT/URISchemes/app.ttl        |   3 +
 jena-arq/testing/RIOT/URISchemes/example.rdf    |   7 +
 jena-arq/testing/RIOT/URISchemes/example.ttl    |   3 +
 jena-arq/testing/RIOT/URISchemes/file-base.rdf  |   8 +
 jena-arq/testing/RIOT/URISchemes/file-base.ttl  |   5 +
 jena-arq/testing/RIOT/URISchemes/file.rdf       |   7 +
 jena-arq/testing/RIOT/URISchemes/file.ttl       |   3 +
 jena-arq/testing/RIOT/URISchemes/http-base.rdf  |   8 +
 jena-arq/testing/RIOT/URISchemes/http-base.ttl  |   5 +
 jena-arq/testing/RIOT/URISchemes/http.rdf       |   7 +
 jena-arq/testing/RIOT/URISchemes/http.ttl       |   3 +
 jena-arq/testing/RIOT/URISchemes/jena.rdf       |   7 +
 jena-arq/testing/RIOT/URISchemes/jena.ttl       |   3 +
 jena-arq/testing/RIOT/URISchemes/rel.rdf        |   7 +
 jena-arq/testing/RIOT/URISchemes/rel.ttl        |   2 +
 jena-arq/testing/RIOT/URISchemes/ssh-base.rdf   |   8 +
 jena-arq/testing/RIOT/URISchemes/ssh-base.ttl   |   3 +
 jena-arq/testing/RIOT/URISchemes/ssh.rdf        |   7 +
 jena-arq/testing/RIOT/URISchemes/ssh.ttl        |   2 +
 jena-arq/testing/RIOT/URISchemes/x-madeup.rdf   |   7 +
 jena-arq/testing/RIOT/URISchemes/x-madeup.ttl   |   2 +
 jena-base/NOTICE                                |   2 +-
 .../org/apache/jena/atlas/iterator/Action.java  |  30 -
 .../org/apache/jena/atlas/iterator/Filter.java  |  29 -
 .../org/apache/jena/atlas/iterator/Iter.java    |   6 +-
 .../jena/atlas/iterator/IteratorArray.java      |  99 ---
 .../apache/jena/atlas/iterator/Transform.java   |  28 -
 .../apache/jena/atlas/lib/ActionKeyValue.java   |  29 -
 .../java/org/apache/jena/atlas/lib/Cache.java   |   2 +-
 .../java/org/apache/jena/atlas/lib/IRILib.java  |   6 +-
 .../jena/atlas/lib/IdentityFinishCollector.java |  59 ++
 .../java/org/apache/jena/atlas/lib/Lib.java     |  11 +
 .../java/org/apache/jena/atlas/lib/Pair.java    |   2 +-
 .../apache/jena/atlas/lib/PairOfSameType.java   |  45 ++
 .../org/apache/jena/atlas/logging/LogCtl.java   |  25 +-
 .../apache/jena/atlas/iterator/TS_Iterator.java |   1 -
 .../jena/atlas/iterator/TestIteratorArray.java  | 107 ---
 .../jena/atlas/lib/TestFilenameProcessing.java  |   7 +-
 jena-cmds/src/main/java/arq/iri.java            |   2 +-
 jena-cmds/src/main/java/tdb2/tdbdump.java       |   2 +-
 jena-cmds/src/main/java/tdb2/tdbstats.java      |   2 +-
 jena-core/NOTICE                                |   2 +-
 .../java/org/apache/jena/n3/N3IRIResolver.java  |  34 +-
 .../apache/jena/rdfxml/xmlinput/ARPOptions.java |   6 +
 .../rdfxml/xmloutput/impl/BaseXMLWriter.java    |   2 +
 .../jena/shared/wg/LazyFileInputStream.java     |  46 --
 .../apache/jena/shared/wg/LazyInputStream.java  |  62 --
 .../jena/shared/wg/LazyURLInputStream.java      |  50 --
 .../jena/shared/wg/LazyZipEntryInputStream.java |  52 --
 .../jena/shared/wg/TestInputStreamFactory.java  | 192 ------
 .../java/org/apache/jena/shared/wg/package.html |  30 -
 .../java/org/apache/jena/util/FileUtils.java    |  15 +-
 .../org/apache/jena/util/ModelCollector.java    |  85 +++
 .../jena/util/iterator/ArrayIterator.java       |  63 --
 .../util/iterator/ConcatenatedIterator.java     | 164 -----
 .../org/apache/jena/util/iterator/Filter.java   | 126 ----
 .../jena/util/iterator/IteratorIterator.java    |  73 --
 .../org/apache/jena/util/iterator/Map1.java     |  33 -
 jena-core/src/main/resources/META-INF/NOTICE    |   2 +-
 .../java/org/apache/jena/n3/TestResolver.java   |   7 +-
 .../jena/rdfxml/xmlinput/NTripleTestSuite.java  |   8 +-
 .../jena/rdfxml/xmlinput/TestARPMain.java       |   8 +-
 .../apache/jena/rdfxml/xmlinput/URITests.java   |   2 +
 .../jena/rdfxml/xmlinput/WGTestSuite.java       |  12 +-
 .../jena/shared/wg/InputStreamFactoryTests.java | 193 ++++++
 .../jena/shared/wg/LazyFileInputStream.java     |  46 ++
 .../apache/jena/shared/wg/LazyInputStream.java  |  62 ++
 .../jena/shared/wg/LazyURLInputStream.java      |  50 ++
 .../jena/shared/wg/LazyZipEntryInputStream.java |  52 ++
 .../java/org/apache/jena/shared/wg/package.html |  30 +
 .../org/apache/jena/util/TestFileUtils.java     |   3 +-
 .../apache/jena/util/TestModelCollector.java    | 133 ++++
 .../java/org/apache/jena/util/TestPackage.java  |   1 +
 jena-csv/NOTICE                                 |   2 +-
 jena-csv/src/main/resources/META-INF/NOTICE     |   2 +-
 .../java/org/apache/jena/dboe/jenax/Txn.java    |  42 --
 .../dboe/trans/bplustree/TestBPlusTreeTxn.java  |   2 +-
 .../trans/data/TestTransBinaryDataFile.java     |   7 +-
 .../jena/dboe/trans/data/TestTransBlob.java     |   7 +-
 .../trans/data/TestTransBlobPersistent.java     |   2 +-
 .../apache/jena/dboe/transaction/ThreadTxn.java | 144 ----
 .../jena/dboe/transaction/TransInteger.java     |   6 +
 .../jena/dboe/transaction/Transactional.java    |  78 +--
 .../dboe/transaction/TransactionalMonitor.java  |   8 +-
 .../dboe/transaction/txn/QuorumGenerator.java   |   6 +-
 .../jena/dboe/transaction/txn/Transaction.java  |  27 +-
 .../transaction/txn/TransactionCoordinator.java | 167 +++--
 .../dboe/transaction/txn/TransactionInfo.java   |  15 +-
 .../dboe/transaction/txn/TransactionalBase.java |  47 +-
 .../transaction/txn/TransactionalSystem.java    |   9 -
 .../transaction/TestThreadingTransactions.java  |  19 +-
 .../TestTransactionCoordinatorControl.java      |  36 +-
 .../transaction/TestTransactionLifecycle.java   | 179 ++++-
 .../transaction/TestTransactionLifecycle2.java  |  69 +-
 .../jena/dboe/transaction/TestTxnLib.java       |  25 +-
 .../jena/dboe/transaction/TestTxnLib2.java      |   2 +-
 .../jena/dboe/transaction/TestTxnSwitching.java |  19 +-
 .../org/apache/jena/tdb2/loader/Loader.java     |   2 +-
 .../apache/jena/tdb2/store/DatasetGraphTDB.java |  31 +-
 .../jena/tdb2/store/GraphViewSwitchable.java    |  32 +-
 .../java/org/apache/jena/tdb2/sys/CopyDSG.java  |   2 +-
 .../org/apache/jena/tdb2/sys/DatabaseOps.java   |   2 +-
 .../org/apache/jena/tdb2/TestDatabaseMgr.java   |   2 +-
 .../org/apache/jena/tdb2/TestTDBFactory.java    |   2 +-
 .../apache/jena/tdb2/graph/TestGraphsTDB2.java  |   2 +-
 .../apache/jena/tdb2/junit/QueryTestTDB.java    |   2 +-
 .../org/apache/jena/tdb2/solver/TestStats.java  |   2 +-
 .../AbstractTestStoreConnectionBasics.java      |   2 +-
 .../store/AbstractTestTransPromoteTDB2.java     |  67 --
 .../jena/tdb2/store/TestTransPromoteTDB.java    |  29 +-
 .../jena/tdb2/store/TestTransactions.java       |   2 +-
 .../apache/jena/tdb2/store/Test_SPARQL_TDB.java |   2 +-
 .../apache/jena/tdb2/sys/TestDatabaseOps.java   |   2 +-
 jena-elephas/NOTICE                             |   2 +-
 jena-fuseki1/NOTICE                             |   2 +-
 jena-fuseki1/dist/NOTICE                        |   2 +-
 .../apache/jena/fuseki/servlets/HttpAction.java |   2 +-
 .../jena/fuseki/validation/IRIValidator.java    |   3 +-
 jena-fuseki1/src/main/resources/META-INF/NOTICE |   2 +-
 jena-fuseki2/NOTICE                             |   2 +-
 jena-fuseki2/apache-jena-fuseki/dist/NOTICE     |   2 +-
 jena-fuseki2/examples/service-tdb1-B.ttl        |   1 +
 .../main/java/org/apache/jena/fuseki/DEF.java   |   6 +
 .../apache/jena/fuseki/build/FusekiConfig.java  |  51 +-
 .../apache/jena/fuseki/mgt/ActionDatasets.java  |   2 +-
 .../apache/jena/fuseki/server/FusekiSystem.java |  29 +-
 .../apache/jena/fuseki/servlets/ActionBase.java |   6 -
 .../apache/jena/fuseki/servlets/HttpAction.java |   8 +
 .../jena/fuseki/servlets/ResponseDataset.java   |   2 +-
 .../jena/fuseki/servlets/ResponseOps.java       |  21 +
 .../jena/fuseki/servlets/ResponseResultSet.java | 187 +++--
 .../validation/html/IRIValidatorHTML.java       |   2 +-
 .../validation/json/IRIValidatorJSON.java       |   2 +-
 .../src/main/resources/META-INF/NOTICE          |   2 +-
 .../jena/fuseki/embedded/FusekiServer.java      |  28 +-
 jena-integration-tests/NOTICE                   |   2 +-
 jena-iri/NOTICE                                 |   2 +-
 jena-iri/src/main/resources/META-INF/NOTICE     |   2 +-
 jena-jdbc/NOTICE                                |   2 +-
 jena-jdbc/jena-jdbc-core/NOTICE                 |   2 +-
 jena-jdbc/jena-jdbc-driver-bundle/NOTICE        |   2 +-
 jena-jdbc/jena-jdbc-driver-mem/NOTICE           |   2 +-
 jena-jdbc/jena-jdbc-driver-remote/NOTICE        |   2 +-
 jena-jdbc/jena-jdbc-driver-tdb/NOTICE           |   2 +-
 jena-permissions/NOTICE                         |   2 +-
 jena-rdfconnection/NOTICE                       |   2 +-
 .../jena/rdfconnection/RDFConnectionLocal.java  |  26 +-
 .../rdfconnection/RDFConnectionModular.java     |  27 +-
 .../jena/rdfconnection/RDFConnectionRemote.java |  71 +-
 jena-sdb/NOTICE                                 |   2 +-
 jena-sdb/dist/NOTICE                            |   2 +-
 .../apache/jena/sdb/store/DatasetGraphSDB.java  |  25 +-
 jena-sdb/src/main/resources/META-INF/NOTICE     |   2 +-
 jena-spatial/NOTICE                             |   2 +-
 jena-spatial/src/main/resources/META-INF/NOTICE |   2 +-
 jena-tdb/NOTICE                                 |   2 +-
 .../org/apache/jena/tdb/StoreConnection.java    |  31 +-
 .../java/org/apache/jena/tdb/TDBBackup.java     |   4 +-
 .../apache/jena/tdb/store/DatasetGraphTDB.java  |  18 +-
 .../jena/tdb/transaction/BlockMgrJournal.java   |   2 +-
 .../transaction/DatasetGraphTransaction.java    |  81 ++-
 .../jena/tdb/transaction/DatasetGraphTxn.java   |   7 +
 .../jena/tdb/transaction/Transaction.java       |  11 +-
 .../tdb/transaction/TransactionManager.java     | 144 ++--
 jena-tdb/src/main/resources/META-INF/NOTICE     |   2 +-
 .../jena/tdb/extra/T_TDBWriteTransaction.java   | 151 -----
 .../jena/tdb/extra/T_TimeoutTDBPattern.java     | 112 ---
 .../apache/jena/tdb/extra/T_TransSystem.java    | 674 -------------------
 .../tdb/extra/T_TransSystemMultiDatasets.java   | 553 ---------------
 .../jena/tdb/extra/T_TxnDeadlockTest.java       | 141 ----
 .../tdb/store/AbstractStoreConnections.java     |  30 +-
 .../AbstractTestObjectFileTrans.java            |   3 +-
 .../AbstractTestObjectFileTransComplex.java     |   3 +-
 .../tdb/transaction/AbstractTestTransSeq.java   | 116 ++--
 .../tdb/transaction/TestTransPromoteTDB.java    |  33 +-
 .../jena/tdb/transaction/TestTransRestart.java  |   8 +-
 .../tdb/transaction/TestTransactionTDB.java     |   3 +-
 jena-text-es/NOTICE                             |   2 +-
 .../apache/jena/query/text/es/TextIndexES.java  |   5 +
 jena-text-es/src/main/resources/META-INF/NOTICE |   2 +-
 jena-text/NOTICE                                |   2 +-
 jena-text/pom.xml                               |   6 +
 .../jena/query/text/DatasetGraphText.java       |  12 +
 .../org/apache/jena/query/text/TextHit.java     |  15 +-
 .../org/apache/jena/query/text/TextIndex.java   |   2 +
 .../apache/jena/query/text/TextIndexLucene.java | 222 ++++--
 .../apache/jena/query/text/TextQueryFuncs.java  |   3 -
 .../org/apache/jena/query/text/TextQueryPF.java |  76 ++-
 jena-text/src/main/resources/META-INF/NOTICE    |   2 +-
 .../org/apache/jena/query/text/TS_Text.java     |   2 +
 .../TestDatasetWithLuceneStoredLiterals.java    |   5 +-
 .../query/text/TestTextGraphIndexExtra2.java    | 335 +++++++++
 .../jena/query/text/TestTextHighlighting.java   | 238 +++++++
 355 files changed, 10710 insertions(+), 7726 deletions(-)
----------------------------------------------------------------------



[07/10] jena git commit: Removed unnecsssary "new Runnable()" constructs

Posted by cl...@apache.org.
Removed unnecsssary "new Runnable()" constructs

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

Branch: refs/heads/master
Commit: 02ae2697dbc265c98c21885d284a7c0210125a5c
Parents: 363e958
Author: Claude Warren <cl...@apache.org>
Authored: Sun Feb 4 10:56:18 2018 +0000
Committer: Claude Warren <cl...@apache.org>
Committed: Sun Feb 4 10:56:18 2018 +0000

----------------------------------------------------------------------
 .../apache/jena/graph/GraphContractTest.java    | 1555 +++++++++---------
 .../graph/GraphWithPerformContractTest.java     |   36 +-
 2 files changed, 826 insertions(+), 765 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/02ae2697/jena-core/src/test/java/org/apache/jena/graph/GraphContractTest.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/GraphContractTest.java b/jena-core/src/test/java/org/apache/jena/graph/GraphContractTest.java
index 295efca..ca409b6 100644
--- a/jena-core/src/test/java/org/apache/jena/graph/GraphContractTest.java
+++ b/jena-core/src/test/java/org/apache/jena/graph/GraphContractTest.java
@@ -18,101 +18,99 @@
 
 package org.apache.jena.graph;
 
-import static org.apache.jena.testing_framework.GraphHelper.assertContainsAll ;
-import static org.apache.jena.testing_framework.GraphHelper.assertIsomorphic ;
-import static org.apache.jena.testing_framework.GraphHelper.assertOmitsAll ;
-import static org.apache.jena.testing_framework.GraphHelper.graphAddTxn ;
-import static org.apache.jena.testing_framework.GraphHelper.graphWith ;
-import static org.apache.jena.testing_framework.GraphHelper.iteratorToSet ;
-import static org.apache.jena.testing_framework.GraphHelper.memGraph ;
-import static org.apache.jena.testing_framework.GraphHelper.node ;
-import static org.apache.jena.testing_framework.GraphHelper.nodeSet ;
-import static org.apache.jena.testing_framework.GraphHelper.triple ;
-import static org.apache.jena.testing_framework.GraphHelper.tripleArray ;
-import static org.apache.jena.testing_framework.GraphHelper.tripleSet ;
-import static org.apache.jena.testing_framework.GraphHelper.txnBegin ;
-import static org.apache.jena.testing_framework.GraphHelper.txnRun ;
-import static org.apache.jena.testing_framework.GraphHelper.txnCommit ;
-import static org.apache.jena.testing_framework.GraphHelper.txnRollback ;
-import static org.apache.jena.testing_framework.TestUtils.assertDiffer ;
-import static org.junit.Assert.assertEquals ;
-import static org.junit.Assert.assertFalse ;
-import static org.junit.Assert.assertNotEquals ;
-import static org.junit.Assert.assertNotNull ;
-import static org.junit.Assert.assertSame ;
-import static org.junit.Assert.assertTrue ;
-import static org.junit.Assert.fail ;
-
-import java.io.InputStream ;
-import java.net.MalformedURLException ;
-import java.net.URISyntaxException ;
-import java.util.Arrays ;
-import java.util.Iterator ;
-import java.util.List ;
-import java.util.Set ;
-import java.util.function.Function ;
-
-import org.apache.jena.graph.impl.LiteralLabelFactory ;
-import org.apache.jena.mem.TrackingTripleIterator ;
-import org.apache.jena.rdf.model.Model ;
-import org.apache.jena.rdf.model.ModelFactory ;
-import org.apache.jena.rdf.model.impl.ReifierStd ;
-import org.apache.jena.shared.ClosedException ;
-import org.apache.jena.shared.DeleteDeniedException ;
-import org.apache.jena.shared.PrefixMapping ;
-import org.apache.jena.testing_framework.AbstractGraphProducer ;
-import org.apache.jena.testing_framework.NodeCreateUtils ;
-import org.apache.jena.util.iterator.ClosableIterator ;
-import org.apache.jena.util.iterator.ExtendedIterator ;
-import org.junit.After ;
+import static org.apache.jena.testing_framework.GraphHelper.assertContainsAll;
+import static org.apache.jena.testing_framework.GraphHelper.assertIsomorphic;
+import static org.apache.jena.testing_framework.GraphHelper.assertOmitsAll;
+import static org.apache.jena.testing_framework.GraphHelper.graphAddTxn;
+import static org.apache.jena.testing_framework.GraphHelper.graphWith;
+import static org.apache.jena.testing_framework.GraphHelper.iteratorToSet;
+import static org.apache.jena.testing_framework.GraphHelper.memGraph;
+import static org.apache.jena.testing_framework.GraphHelper.node;
+import static org.apache.jena.testing_framework.GraphHelper.nodeSet;
+import static org.apache.jena.testing_framework.GraphHelper.triple;
+import static org.apache.jena.testing_framework.GraphHelper.tripleArray;
+import static org.apache.jena.testing_framework.GraphHelper.tripleSet;
+import static org.apache.jena.testing_framework.GraphHelper.txnBegin;
+import static org.apache.jena.testing_framework.GraphHelper.txnRun;
+import static org.apache.jena.testing_framework.GraphHelper.txnCommit;
+import static org.apache.jena.testing_framework.GraphHelper.txnRollback;
+import static org.apache.jena.testing_framework.TestUtils.assertDiffer;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URISyntaxException;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+import java.util.function.Function;
+
+import org.apache.jena.graph.impl.LiteralLabelFactory;
+import org.apache.jena.mem.TrackingTripleIterator;
+import org.apache.jena.rdf.model.Model;
+import org.apache.jena.rdf.model.ModelFactory;
+import org.apache.jena.rdf.model.impl.ReifierStd;
+import org.apache.jena.shared.ClosedException;
+import org.apache.jena.shared.DeleteDeniedException;
+import org.apache.jena.shared.PrefixMapping;
+import org.apache.jena.testing_framework.AbstractGraphProducer;
+import org.apache.jena.testing_framework.NodeCreateUtils;
+import org.apache.jena.util.iterator.ClosableIterator;
+import org.apache.jena.util.iterator.ExtendedIterator;
+import org.junit.After;
 import org.junit.Assert;
-import org.slf4j.Logger ;
-import org.slf4j.LoggerFactory ;
-import org.xenei.junit.contract.Contract ;
-import org.xenei.junit.contract.ContractTest ;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.xenei.junit.contract.Contract;
+import org.xenei.junit.contract.ContractTest;
 
 /**
  * Graph contract test.
  */
 @Contract(Graph.class)
-public class GraphContractTest<T extends Graph>  {
+public class GraphContractTest<T extends Graph>
+{
 
 	private static final Logger LOG = LoggerFactory
 			.getLogger(GraphContractTest.class);
 
 	private AbstractGraphProducer<T> producer;
-	
+
 	protected RecordingGraphListener GL = new RecordingGraphListener();
 
 	@Contract.Inject
 	public final void setGraphContractTestProducer(
-			AbstractGraphProducer<T> graphProducer) {
+			AbstractGraphProducer<T> graphProducer)
+	{
 		producer = graphProducer;
 	}
 
 	@After
-	public final void afterGraphContractTest() {
+	public final void afterGraphContractTest()
+	{
 		producer.cleanUp();
 		GL.clear();
 	}
 
 	@ContractTest
-	public void testAdd_Triple() {
+	public void testAdd_Triple()
+	{
 		Graph graph = producer.newInstance();
 		graph.getEventManager().register(GL);
 		txnBegin(graph);
 		graph.add(triple("S P O"));
 		txnCommit(graph);
 		GL.assertHasStart("add", graph, triple("S P O"));
-		txnRun( graph, new Runnable() {
+		txnRun(graph, () -> assertTrue("Graph should contain <S P O>",
+				graph.contains(triple("S P O"))));
 
-			@Override
-			public void run()
-			{
-				assertTrue("Graph should contain <S P O>",
-						graph.contains(triple("S P O")));		
-			}});
-		
 	}
 
 	/**
@@ -121,12 +119,15 @@ public class GraphContractTest<T extends Graph>  {
 	 * @param g
 	 * @param b
 	 */
-	private void assertEmpty(Graph g, Graph b) {
-		if (b.isEmpty()) {
+	private void assertEmpty(Graph g, Graph b)
+	{
+		if (b.isEmpty())
+		{
 			assertTrue("Graph should be empty", g.isEmpty());
-		} else {
-			assertEquals("Graph should be in base state", b.find(Triple.ANY)
-					.toList(), g.find(Triple.ANY).toList());
+		} else
+		{
+			assertEquals("Graph should be in base state",
+					b.find(Triple.ANY).toList(), g.find(Triple.ANY).toList());
 		}
 	}
 
@@ -136,10 +137,13 @@ public class GraphContractTest<T extends Graph>  {
 	 * @param g
 	 * @param b
 	 */
-	private void assertNotEmpty(Graph g, Graph b) {
-		if (b.isEmpty()) {
+	private void assertNotEmpty(Graph g, Graph b)
+	{
+		if (b.isEmpty())
+		{
 			assertFalse("Graph not should be empty", g.isEmpty());
-		} else {
+		} else
+		{
 			assertNotEquals("Graph should not be in base state",
 					b.find(Triple.ANY).toList(), g.find(Triple.ANY).toList());
 		}
@@ -151,54 +155,32 @@ public class GraphContractTest<T extends Graph>  {
 	 * that expected ~= initialContent + addedStuff - removed - initialContent.
 	 */
 	@ContractTest
-	public void testClear_Empty() {
+	public void testClear_Empty()
+	{
 		Graph graph = producer.newInstance();
 		Graph base = copy(graph);
 
 		graph.getEventManager().register(GL);
-		txnRun( graph, new Runnable() {
-			
-			@Override
-			public void run()
-			{
-				graph.clear();
-			}});
-		
-		txnRun( graph, new Runnable() {
-			
-			@Override
-			public void run()
-			{
-				assertEmpty(graph, base);
-			}});
+		txnRun(graph, () -> graph.clear());
+
+		txnRun(graph, () -> assertEmpty(graph, base));
 		GL.assertHasStart("someEvent", graph, GraphEvents.removeAll);
 		GL.clear();
 	}
-	
+
 	@ContractTest
-	public void testClear() {
+	public void testClear()
+	{
 		Graph graph = producer.newInstance();
 		Graph base = copy(graph);
 		// test after adding
-		graphWith(graph,
-				"S P O; S e:ff 27; _1 P P3; S4 P4 'en'");
+		graphWith(graph, "S P O; S e:ff 27; _1 P P3; S4 P4 'en'");
 		graph.getEventManager().register(GL);
-		txnRun( graph, new Runnable() {
-			
-			@Override
-			public void run()
-			{
-				graph.clear();
-			}});
-		
-		txnRun( graph, new Runnable() {
-			
-			@Override
-			public void run()
-			{
-				assertEmpty(graph, base);
-			}});
-		if (GL.contains("delete")) {
+		txnRun(graph, () -> graph.clear());
+
+		txnRun(graph, () -> assertEmpty(graph, base));
+		if (GL.contains("delete"))
+		{
 			// deletes are listed -- ensure all deletes are listed
 			GL.assertContains("delete", graph, triple("S P O"));
 			GL.assertContains("delete", graph, triple("S e:ff 27"));
@@ -211,170 +193,203 @@ public class GraphContractTest<T extends Graph>  {
 	}
 
 	@ContractTest
-	public void testClose() {
+	public void testClose()
+	{
 		Graph graph = graphWith(producer.newInstance(),
 				"S P O; S P2 O2; S3 P P3");
 		graph.getEventManager().register(GL);
 		assertFalse("Graph was constructed closed", graph.isClosed());
-		
-		txnRun( graph, new Runnable() {
-			
-			@Override
-			public void run()
-			{
-				graph.close();
-			}});
-		
+
+		txnRun(graph, () -> graph.close());
+
 		assertTrue("Graph should be closed", graph.isClosed());
 
 		// exception may be thrown on begin or on execution.
-		try {
+		try
+		{
 			txnBegin(graph);
-			try {
+			try
+			{
 				graph.add(triple("S P O"));
 				fail("added when closed");
-			} catch (Exception expected) {
+			} catch (Exception expected)
+			{
 				GL.assertEmpty();
 				// expected
-			} finally {
+			} finally
+			{
 				txnRollback(graph);
 			}
-		} catch (Exception expected) {
+		} catch (Exception expected)
+		{
 			GL.assertEmpty();
 			// expected
 		}
 
-		try {
+		try
+		{
 			txnBegin(graph);
-			try {
+			try
+			{
 				graph.delete(triple("x R y"));
 				fail("delete when closed");
-			} catch (ClosedException c) {
+			} catch (ClosedException c)
+			{
 				// Expected
-			} finally {
+			} finally
+			{
 				txnRollback(graph);
 				GL.assertEmpty();
 			}
-		} catch (Exception expected) {
+		} catch (Exception expected)
+		{
 			GL.assertEmpty();
 			// expected
 		}
 
-		try {
+		try
+		{
 			txnBegin(graph);
 
-			try {
+			try
+			{
 				graph.add(triple("x R y"));
 				fail("add when closed");
-			} catch (ClosedException c) { /* as required */
-			} finally {
+			} catch (ClosedException c)
+			{ /* as required */
+			} finally
+			{
 				txnRollback(graph);
 				GL.assertEmpty();
 			}
-		} catch (Exception expected) {
+		} catch (Exception expected)
+		{
 			GL.assertEmpty();
 			// expected
 		}
 
-		try {
+		try
+		{
 			txnBegin(graph);
-			try {
+			try
+			{
 				graph.contains(triple("x R y"));
 				fail("contains[triple] when closed");
-			} catch (ClosedException c) { /* as required */
-			} finally {
+			} catch (ClosedException c)
+			{ /* as required */
+			} finally
+			{
 				txnRollback(graph);
 				GL.assertEmpty();
 			}
-		} catch (Exception expected) {
+		} catch (Exception expected)
+		{
 			GL.assertEmpty();
 			// expected
 		}
 
-		try {
+		try
+		{
 			txnBegin(graph);
-			try {
+			try
+			{
 				graph.contains(Node.ANY, Node.ANY, Node.ANY);
 				fail("contains[SPO] when closed");
-			} catch (ClosedException c) { /* as required */
-			} finally {
+			} catch (ClosedException c)
+			{ /* as required */
+			} finally
+			{
 				txnRollback(graph);
 				GL.assertEmpty();
 			}
-		} catch (Exception expected) {
+		} catch (Exception expected)
+		{
 			GL.assertEmpty();
 			// expected
 		}
 
-		try {
+		try
+		{
 			txnBegin(graph);
-			try {
+			try
+			{
 				graph.find(triple("x R y"));
 				fail("find [triple] when closed");
-			} catch (ClosedException c) { /* as required */
-			} finally {
+			} catch (ClosedException c)
+			{ /* as required */
+			} finally
+			{
 				txnRollback(graph);
 				GL.assertEmpty();
 			}
-		} catch (Exception expected) {
+		} catch (Exception expected)
+		{
 			GL.assertEmpty();
 			// expected
 		}
 
-		try {
+		try
+		{
 			txnBegin(graph);
-			try {
+			try
+			{
 				graph.find(Node.ANY, Node.ANY, Node.ANY);
 				fail("find[SPO] when closed");
-			} catch (ClosedException c) { /* as required */
-			} finally {
+			} catch (ClosedException c)
+			{ /* as required */
+			} finally
+			{
 				txnRollback(graph);
 				GL.assertEmpty();
 			}
-		} catch (Exception expected) {
+		} catch (Exception expected)
+		{
 			GL.assertEmpty();
 			// expected
 		}
 
-		try {
+		try
+		{
 			txnBegin(graph);
-			try {
+			try
+			{
 				graph.size();
 				fail("size when closed (" + this.getClass() + ")");
-			} catch (ClosedException c) { /* as required */
-			} finally {
+			} catch (ClosedException c)
+			{ /* as required */
+			} finally
+			{
 				txnRollback(graph);
 				GL.assertEmpty();
 			}
-		} catch (Exception expected) {
+		} catch (Exception expected)
+		{
 			GL.assertEmpty();
 			// expected
 		}
 	}
 
 	@ContractTest
-	public void testContains_Node_Node_Node() {
+	public void testContains_Node_Node_Node()
+	{
 		Graph graph = graphWith(producer.newInstance(),
 				"S P O; S2 P2 O2; S3 P3 O3");
 
-		txnRun( graph, new Runnable() {
-			
-			@Override
-			public void run()
-			{	
-				assertTrue(graph.contains(node("S"), node("P"), node("O")));
-				assertFalse(graph.contains(node("S"), node("P"), node("O2")));
-				assertFalse(graph.contains(node("S"), node("P2"), node("O")));
-				assertFalse(graph.contains(node("S2"), node("P"), node("O")));
-				assertTrue(graph.contains(Node.ANY, Node.ANY, Node.ANY));
-				assertTrue(graph.contains(Node.ANY, Node.ANY, node("O")));
-				assertTrue(graph.contains(Node.ANY, node("P"), Node.ANY));
-				assertTrue(graph.contains(node("S"), Node.ANY, Node.ANY));
-			}});
+		txnRun(graph, () -> {
+			assertTrue(graph.contains(node("S"), node("P"), node("O")));
+			assertFalse(graph.contains(node("S"), node("P"), node("O2")));
+			assertFalse(graph.contains(node("S"), node("P2"), node("O")));
+			assertFalse(graph.contains(node("S2"), node("P"), node("O")));
+			assertTrue(graph.contains(Node.ANY, Node.ANY, Node.ANY));
+			assertTrue(graph.contains(Node.ANY, Node.ANY, node("O")));
+			assertTrue(graph.contains(Node.ANY, node("P"), Node.ANY));
+			assertTrue(graph.contains(node("S"), Node.ANY, Node.ANY));
+		});
 	}
 
 	@ContractTest
-	public void testContains_Node_Node_Node_RepeatedSubjectDoesNotConceal() {
+	public void testContains_Node_Node_Node_RepeatedSubjectDoesNotConceal()
+	{
 
 		Graph g = graphWith(producer.newInstance(), "s P o; s Q r");
 		Node s = node("s");
@@ -383,68 +398,49 @@ public class GraphContractTest<T extends Graph>  {
 		Node Q = node("Q");
 		Node r = node("r");
 		Node any = node("??");
-		txnRun( g, new Runnable() {
-			
-			@Override
-			public void run()
-			{
-				assertTrue(g.contains(s, P, o));
-				assertTrue(g.contains(s, Q, r));
-				assertTrue(g.contains(any, P, o));
-				assertTrue(g.contains(any, Q, r));
-				assertTrue(g.contains(any, P, any));
-				assertTrue(g.contains(any, Q, any));
-			}});
+		txnRun(g, () -> {
+			assertTrue(g.contains(s, P, o));
+			assertTrue(g.contains(s, Q, r));
+			assertTrue(g.contains(any, P, o));
+			assertTrue(g.contains(any, Q, r));
+			assertTrue(g.contains(any, P, any));
+			assertTrue(g.contains(any, Q, any));
+		});
 	}
 
 	@ContractTest
-	public void testContains_Node_Node_Node_ByValue() {
+	public void testContains_Node_Node_Node_ByValue()
+	{
 		Node x = node("x");
 		Node P = node("P");
 		Graph g1 = producer.newInstance();
-		if (g1.getCapabilities()
-				.handlesLiteralTyping()) {
-			graphWith(g1,
-					"x P '1'xsd:integer");
-			txnRun( g1, new Runnable() {
-				
-				@Override
-				public void run()
-				{
-					assertTrue(
+		if (g1.getCapabilities().handlesLiteralTyping())
+		{
+			graphWith(g1, "x P '1'xsd:integer");
+			txnRun(g1,
+					() -> assertTrue(
 							String.format(
 									"literal type equality failed, does %s really implement literal typing",
-									g1.getClass()), g1.contains(x, P,
-											node("'01'xsd:int")));
-				}});
+									g1.getClass()),
+							g1.contains(x, P, node("'01'xsd:int"))));
 			//
 			Graph g2 = graphWith(producer.newInstance(), "x P '1'xsd:int");
-			txnRun( g2, new Runnable() {
-				
-				@Override
-				public void run()
-				{
-				
-					assertTrue("Literal equality with '1'xsd:integer failed",
-					g2.contains(x, P, node("'1'xsd:integer")));
-				}});
+			txnRun(g2, () -> {
+				assertTrue("Literal equality with '1'xsd:integer failed",
+						g2.contains(x, P, node("'1'xsd:integer")));
+			});
 			//
-			Graph g3 = graphWith(producer.newInstance(),
-					"x P '123'xsd:string");
-			txnRun( g3, new Runnable() {
-				
-				@Override
-				public void run()
-				{
-				
-					assertTrue("Literal equality with '123' failed",
-					g3.contains(x, P, node("'123'")));
-				}});
+			Graph g3 = graphWith(producer.newInstance(), "x P '123'xsd:string");
+			txnRun(g3, () -> {
+				assertTrue("Literal equality with '123' failed",
+						g3.contains(x, P, node("'123'")));
+			});
 		}
 	}
 
 	@ContractTest
-	public void testContains_Node_Node_Node_Concrete() {
+	public void testContains_Node_Node_Node_Concrete()
+	{
 		Node s = node("s");
 		Node P = node("P");
 		Node o = node("o");
@@ -456,57 +452,50 @@ public class GraphContractTest<T extends Graph>  {
 		Node x = node("x");
 		Node S = node("S");
 
-		Graph g = graphWith(producer.newInstance(),
-				"s P o; _x R _y; x S 0");
-		txnRun( g, new Runnable() {
-			
-			@Override
-			public void run()
-			{
-			
-		assertTrue("Graph should have contained s P o", g.contains(s, P, o));
-		assertTrue("Graph should have contained _x _R _y",
-				g.contains(_x, R, _y));
-		assertTrue("Graph should have contained x S 'O'",
-				g.contains(x, S, node("0")));
-		/* */
-		assertFalse(g.contains(s, P, node("Oh")));
-		assertFalse(g.contains(S, P, node("O")));
-		assertFalse(g.contains(s, node("p"), o));
-		assertFalse(g.contains(_x, node("_r"), _y));
-		assertFalse(g.contains(x, S, node("1")));
-			}});
-	}
-
-		@ContractTest
-		public void testContains_Node_Node_Node_Concrete_BlankPredicate() {
-			Node s = node("s");
-			Node P = node("P");
-			Node o = node("o");
-
-			Node _x = node("_x");
-			Node _R = node("_R");
-			Node _y = node("_y");
-
-			Node x = node("x");
-			Node S = node("S");
-
-			Graph g = graphWith(producer.newInstance(),
-					"s P o; _x _R _y; x S 0");
-			txnRun( g, new Runnable() {
-				
-				@Override
-				public void run()
-				{
-				
+		Graph g = graphWith(producer.newInstance(), "s P o; _x R _y; x S 0");
+		txnRun(g, () -> {
+
+			assertTrue("Graph should have contained s P o",
+					g.contains(s, P, o));
+			assertTrue("Graph should have contained _x _R _y",
+					g.contains(_x, R, _y));
+			assertTrue("Graph should have contained x S 'O'",
+					g.contains(x, S, node("0")));
+			/* */
+			assertFalse(g.contains(s, P, node("Oh")));
+			assertFalse(g.contains(S, P, node("O")));
+			assertFalse(g.contains(s, node("p"), o));
+			assertFalse(g.contains(_x, node("_r"), _y));
+			assertFalse(g.contains(x, S, node("1")));
+		});
+	}
+
+	@ContractTest
+	public void testContains_Node_Node_Node_Concrete_BlankPredicate()
+	{
+		Node s = node("s");
+		Node P = node("P");
+		Node o = node("o");
+
+		Node _x = node("_x");
+		Node _R = node("_R");
+		Node _y = node("_y");
+
+		Node x = node("x");
+		Node S = node("S");
+
+		Graph g = graphWith(producer.newInstance(), "s P o; _x _R _y; x S 0");
+		txnRun(g, () -> {
+
 			assertTrue("Graph should have contained _x _R _y",
 					g.contains(_x, _R, _y));
 			assertFalse(g.contains(_x, node("_r"), _y));
-				}});
-		}
+		});
+	}
 
 	@ContractTest
-	public void testContains_Node_Node_Node_Fluid() {
+	public void testContains_Node_Node_Node_Fluid()
+	{
 		Node x = node("x");
 		Node R = node("R");
 		Node P = node("P");
@@ -514,245 +503,213 @@ public class GraphContractTest<T extends Graph>  {
 		Node a = node("a");
 		Node b = node("b");
 		Graph g = graphWith(producer.newInstance(), "x R y; a P b");
-		
-		txnRun( g, new Runnable() {
-			
-			@Override
-			public void run()
-			{
-		assertTrue(g.contains(Node.ANY, R, y));
-		assertTrue(g.contains(x, Node.ANY, y));
-		assertTrue(g.contains(x, R, Node.ANY));
-		assertTrue(g.contains(Node.ANY, P, b));
-		assertTrue(g.contains(a, Node.ANY, b));
-		assertTrue(g.contains(a, P, Node.ANY));
-		assertTrue(g.contains(Node.ANY, R, y));
-		/* */
-		assertFalse(g.contains(Node.ANY, R, b));
-		assertFalse(g.contains(a, Node.ANY, y));
-		assertFalse(g.contains(x, P, Node.ANY));
-		assertFalse(g.contains(Node.ANY, R, x));
-		assertFalse(g.contains(x, Node.ANY, R));
-		assertFalse(g.contains(a, node("S"), Node.ANY));
-			}});
+
+		txnRun(g, () -> {
+			assertTrue(g.contains(Node.ANY, R, y));
+			assertTrue(g.contains(x, Node.ANY, y));
+			assertTrue(g.contains(x, R, Node.ANY));
+			assertTrue(g.contains(Node.ANY, P, b));
+			assertTrue(g.contains(a, Node.ANY, b));
+			assertTrue(g.contains(a, P, Node.ANY));
+			assertTrue(g.contains(Node.ANY, R, y));
+			/* */
+			assertFalse(g.contains(Node.ANY, R, b));
+			assertFalse(g.contains(a, Node.ANY, y));
+			assertFalse(g.contains(x, P, Node.ANY));
+			assertFalse(g.contains(Node.ANY, R, x));
+			assertFalse(g.contains(x, Node.ANY, R));
+			assertFalse(g.contains(a, node("S"), Node.ANY));
+		});
 	}
 
 	@ContractTest
-	public void testContains_Triple() {
+	public void testContains_Triple()
+	{
 		Graph graph = graphWith(producer.newInstance(),
 				"S P O; S2 P2 O2; S3 P3 O3");
-		txnRun( graph, new Runnable() {
-			
-			@Override
-			public void run()
-			{
-		assertTrue(graph.contains(triple("S P O")));
-		assertFalse(graph.contains(triple("S P O2")));
-		assertFalse(graph.contains(triple("S P2 O")));
-		assertFalse(graph.contains(triple("S2 P O")));
-		assertTrue(graph.contains(Triple.ANY));
-		assertTrue(graph.contains(new Triple(Node.ANY, Node.ANY, node("O"))));
-		assertTrue(graph.contains(new Triple(Node.ANY, node("P"), Node.ANY)));
-		assertTrue(graph.contains(new Triple(node("S"), Node.ANY, Node.ANY)));
-			}});
+		txnRun(graph, () -> {
+			assertTrue(graph.contains(triple("S P O")));
+			assertFalse(graph.contains(triple("S P O2")));
+			assertFalse(graph.contains(triple("S P2 O")));
+			assertFalse(graph.contains(triple("S2 P O")));
+			assertTrue(graph.contains(Triple.ANY));
+			assertTrue(
+					graph.contains(new Triple(Node.ANY, Node.ANY, node("O"))));
+			assertTrue(
+					graph.contains(new Triple(Node.ANY, node("P"), Node.ANY)));
+			assertTrue(
+					graph.contains(new Triple(node("S"), Node.ANY, Node.ANY)));
+		});
 
 	}
 
 	@ContractTest
-	public void testContains_Triple_RepeatedSubjectDoesNotConceal() {
+	public void testContains_Triple_RepeatedSubjectDoesNotConceal()
+	{
 
 		Graph g = graphWith(producer.newInstance(), "s P o; s Q r");
-		txnRun( g, new Runnable() {
-			
-			@Override
-			public void run()
-			{
-		assertTrue(g.contains(triple("s P o")));
-		assertTrue(g.contains(triple("s Q r")));
-		assertTrue(g.contains(triple("?? P o")));
-		assertTrue(g.contains(triple("?? Q r")));
-		assertTrue(g.contains(triple("?? P ??")));
-		assertTrue(g.contains(triple("?? Q ??")));
-			}});
+		txnRun(g, () -> {
+			assertTrue(g.contains(triple("s P o")));
+			assertTrue(g.contains(triple("s Q r")));
+			assertTrue(g.contains(triple("?? P o")));
+			assertTrue(g.contains(triple("?? Q r")));
+			assertTrue(g.contains(triple("?? P ??")));
+			assertTrue(g.contains(triple("?? Q ??")));
+		});
 	}
 
 	@ContractTest
-	public void testContains_Triple_ByValue() {
+	public void testContains_Triple_ByValue()
+	{
 		Graph g1 = producer.newInstance();
-		if (g1.getCapabilities()
-				.handlesLiteralTyping()) {
+		if (g1.getCapabilities().handlesLiteralTyping())
+		{
 			graphWith(g1, "x P '1'xsd:integer");
-			txnRun( g1, new Runnable() {
-				
-				@Override
-				public void run()
-				{
-			assertTrue(
-					String.format(
-							"did not find x P '01'xsd:int, does %s really implement literal typing",
-							g1.getClass()),
-					g1.contains(triple("x P '01'xsd:int")));
-				}});
+			txnRun(g1, () -> {
+				assertTrue(
+						String.format(
+								"did not find x P '01'xsd:int, does %s really implement literal typing",
+								g1.getClass()),
+						g1.contains(triple("x P '01'xsd:int")));
+			});
 			//
 			Graph g2 = graphWith(producer.newInstance(), "x P '1'xsd:int");
-			txnRun( g2, new Runnable() {
-				
-				@Override
-				public void run()
-				{
-			assertTrue("did not find x P '1'xsd:integer",
-					g2.contains(triple("x P '1'xsd:integer")));
-				}});
+			txnRun(g2, () -> {
+				assertTrue("did not find x P '1'xsd:integer",
+						g2.contains(triple("x P '1'xsd:integer")));
+			});
 			//
-			Graph g3 = graphWith(producer.newInstance(),
-					"x P '123'xsd:string");
-			txnRun( g3, new Runnable() {
-				
-				@Override
-				public void run()
-				{
-			assertTrue("did not find x P '123'xsd:string",
-					g3.contains(triple("x P '123'")));
-				}});
+			Graph g3 = graphWith(producer.newInstance(), "x P '123'xsd:string");
+			txnRun(g3, () -> assertTrue("did not find x P '123'xsd:string",
+					g3.contains(triple("x P '123'"))));
 		}
 	}
 
 	@ContractTest
-	public void testContains_Triple_Concrete() {
-		Graph g = graphWith(producer.newInstance(),
-				"s P o; _x R _y; x S 0");
-		txnRun( g, new Runnable() {
-			
-			@Override
-			public void run()
-			{
-		assertTrue(g.contains(triple("s P o")));
-		assertTrue(g.contains(triple("_x R _y")));
-		assertTrue(g.contains(triple("x S 0")));
-		/* */
-		assertFalse(g.contains(triple("s P Oh")));
-		assertFalse(g.contains(triple("S P O")));
-		assertFalse(g.contains(triple("s p o")));
-		assertFalse(g.contains(triple("_x _r _y")));
-		assertFalse(g.contains(triple("x S 1")));
-			}});
+	public void testContains_Triple_Concrete()
+	{
+		Graph g = graphWith(producer.newInstance(), "s P o; _x R _y; x S 0");
+		txnRun(g, () -> {
+			assertTrue(g.contains(triple("s P o")));
+			assertTrue(g.contains(triple("_x R _y")));
+			assertTrue(g.contains(triple("x S 0")));
+			/* */
+			assertFalse(g.contains(triple("s P Oh")));
+			assertFalse(g.contains(triple("S P O")));
+			assertFalse(g.contains(triple("s p o")));
+			assertFalse(g.contains(triple("_x _r _y")));
+			assertFalse(g.contains(triple("x S 1")));
+		});
 	}
 
 	@ContractTest
-	public void testContains_Triple_Concrete_BlankPredicate() {
-		Graph g = graphWith(producer.newInstance(),
-				"s P o; _x _R _y; x S 0");
-		txnRun( g, new Runnable() {
-			
-			@Override
-			public void run()
-			{
-		assertTrue(g.contains(triple("s P o")));
-		assertTrue(g.contains(triple("_x _R _y")));
-		assertTrue(g.contains(triple("x S 0")));
-		/* */
-		assertFalse(g.contains(triple("s P Oh")));
-		assertFalse(g.contains(triple("S P O")));
-		assertFalse(g.contains(triple("s p o")));
-		assertFalse(g.contains(triple("_x _r _y")));
-		assertFalse(g.contains(triple("x S 1")));
-			}});
-	}
-	
+	public void testContains_Triple_Concrete_BlankPredicate()
+	{
+		Graph g = graphWith(producer.newInstance(), "s P o; _x _R _y; x S 0");
+		txnRun(g, () -> {
+			assertTrue(g.contains(triple("s P o")));
+			assertTrue(g.contains(triple("_x _R _y")));
+			assertTrue(g.contains(triple("x S 0")));
+			/* */
+			assertFalse(g.contains(triple("s P Oh")));
+			assertFalse(g.contains(triple("S P O")));
+			assertFalse(g.contains(triple("s p o")));
+			assertFalse(g.contains(triple("_x _r _y")));
+			assertFalse(g.contains(triple("x S 1")));
+		});
+	}
+
 	@ContractTest
-	public void testContains_Triple_Fluid() {
+	public void testContains_Triple_Fluid()
+	{
 		Graph g = graphWith(producer.newInstance(), "x R y; a P b");
-		txnRun( g, new Runnable() {
-			
-			@Override
-			public void run()
-			{
-		
-		assertTrue(g.contains(triple("?? R y")));
-		assertTrue(g.contains(triple("x ?? y")));
-		assertTrue(g.contains(triple("x R ??")));
-		assertTrue(g.contains(triple("?? P b")));
-		assertTrue(g.contains(triple("a ?? b")));
-		assertTrue(g.contains(triple("a P ??")));
-		assertTrue(g.contains(triple("?? R y")));
-		/* */
-		assertFalse(g.contains(triple("?? R b")));
-		assertFalse(g.contains(triple("a ?? y")));
-		assertFalse(g.contains(triple("x P ??")));
-		assertFalse(g.contains(triple("?? R x")));
-		assertFalse(g.contains(triple("x ?? R")));
-		assertFalse(g.contains(triple("a S ??")));
-			}});
+		txnRun(g, () -> {
+
+			assertTrue(g.contains(triple("?? R y")));
+			assertTrue(g.contains(triple("x ?? y")));
+			assertTrue(g.contains(triple("x R ??")));
+			assertTrue(g.contains(triple("?? P b")));
+			assertTrue(g.contains(triple("a ?? b")));
+			assertTrue(g.contains(triple("a P ??")));
+			assertTrue(g.contains(triple("?? R y")));
+			/* */
+			assertFalse(g.contains(triple("?? R b")));
+			assertFalse(g.contains(triple("a ?? y")));
+			assertFalse(g.contains(triple("x P ??")));
+			assertFalse(g.contains(triple("?? R x")));
+			assertFalse(g.contains(triple("x ?? R")));
+			assertFalse(g.contains(triple("a S ??")));
+		});
 	}
 
 	/**
 	 * Inference graphs can not be empty
 	 */
 	@ContractTest
-	public void testDelete_Triple() {
+	public void testDelete_Triple()
+	{
 		Graph graph = graphWith(producer.newInstance(),
 				"S P O; S2 P2 O2; S3 P3 O3");
 		Graph base = producer.newInstance();
 		graph.getEventManager().register(GL);
-		
-		try {
+
+		try
+		{
 			txnBegin(graph);
-		graph.delete(triple("S P O"));
-		txnCommit(graph);
-		} catch (DeleteDeniedException expected) {
+			graph.delete(triple("S P O"));
+			txnCommit(graph);
+		} catch (DeleteDeniedException expected)
+		{
 			txnRollback(graph);
-			fail( "delete( S P O ) failed: "+ expected.getMessage());
+			fail("delete( S P O ) failed: " + expected.getMessage());
 		}
-		
+
 		GL.assertContains("delete", graph, triple("S P O"));
-		
-		txnRun( graph, new Runnable() {
-			
-			@Override
-			public void run()
-			{
-		assertFalse("Graph should not contain <S P O>",
-				graph.contains(triple("S P O")));
-		assertNotEmpty(graph, base);
-		assertTrue("Graph should contain <S2 P2 O2>",
-				graph.contains(triple("S2 P2 O2")));
-		assertTrue("Graph should contain <S3 P3 O3>",
-				graph.contains(triple("S3 P3 O3")));
-			}});
+
+		txnRun(graph, () -> {
+			assertFalse("Graph should not contain <S P O>",
+					graph.contains(triple("S P O")));
+			assertNotEmpty(graph, base);
+			assertTrue("Graph should contain <S2 P2 O2>",
+					graph.contains(triple("S2 P2 O2")));
+			assertTrue("Graph should contain <S3 P3 O3>",
+					graph.contains(triple("S3 P3 O3")));
+		});
 	}
+
 	@ContractTest
-	public void testDelete_Triple_Wildcard() {
+	public void testDelete_Triple_Wildcard()
+	{
 		Graph graph = graphWith(producer.newInstance(),
 				"S P O; S2 P2 O2; S3 P3 O3");
 		Graph base = producer.newInstance();
 		graph.getEventManager().register(GL);
-		
+
 		// should not modify anything on wildcard delete
 		GL.clear();
-		try {
+		try
+		{
 			txnBegin(graph);
 			graph.delete(new Triple(node("S2"), node("P2"), Node.ANY));
 			txnCommit(graph);
-		} catch (DeleteDeniedException expected) {
-			txnRollback(graph);			
+		} catch (DeleteDeniedException expected)
+		{
+			txnRollback(graph);
 		}
-		txnRun( graph, new Runnable() {
-			
-			@Override
-			public void run()
-			{
-		
-		assertTrue("Graph should contain <S2 P2 O2>",
-				graph.contains(triple("S2 P2 O2")));
-		assertTrue("Graph should contain <S3 P3 O3>",
-				graph.contains(triple("S3 P3 O3")));
-			}});
-		GL.assertHas("delete", graph, new Triple(node("S2"), node("P2"),
-				Node.ANY));
+		txnRun(graph, () -> {
+
+			assertTrue("Graph should contain <S2 P2 O2>",
+					graph.contains(triple("S2 P2 O2")));
+			assertTrue("Graph should contain <S3 P3 O3>",
+					graph.contains(triple("S3 P3 O3")));
+		});
+		GL.assertHas("delete", graph,
+				new Triple(node("S2"), node("P2"), Node.ANY));
 	}
 
 	@ContractTest
-	public void testDelete_Triple_FromNothing() {
+	public void testDelete_Triple_FromNothing()
+	{
 		Graph g = producer.newInstance();
 		g.getEventManager().register(GL);
 		txnBegin(g);
@@ -762,19 +719,24 @@ public class GraphContractTest<T extends Graph>  {
 	}
 
 	@ContractTest
-	public void testDependsOn() {
+	public void testDependsOn()
+	{
 		Graph g = producer.newInstance();
 		Graph[] depGraphs = producer.getDependsOn(g);
-		if (depGraphs != null) {
-			for (Graph dg : depGraphs) {
+		if (depGraphs != null)
+		{
+			for (Graph dg : depGraphs)
+			{
 				assertTrue(
 						String.format("Graph %s should depend upon %s", g, dg),
 						g.dependsOn(dg));
 			}
 		}
 		depGraphs = producer.getNotDependsOn(g);
-		if (depGraphs != null) {
-			for (Graph dg : depGraphs) {
+		if (depGraphs != null)
+		{
+			for (Graph dg : depGraphs)
+			{
 				assertFalse(String.format("Graph %s should not depend upon %s",
 						g, dg), g.dependsOn(dg));
 			}
@@ -782,10 +744,11 @@ public class GraphContractTest<T extends Graph>  {
 	}
 
 	@ContractTest
-	public void testFind_Node_Node_Node() {
+	public void testFind_Node_Node_Node()
+	{
 		Graph graph = graphWith(producer.newInstance(),
 				"S P O; S2 P2 O2; S3 P3 O3");
-		txnBegin( graph );
+		txnBegin(graph);
 		List<Triple> s = graph.find(Node.ANY, Node.ANY, Node.ANY).toList();
 		assertEquals(3, s.size());
 		List<Triple> expected = Arrays.asList(new Triple[] { triple("S P O"),
@@ -824,13 +787,14 @@ public class GraphContractTest<T extends Graph>  {
 	}
 
 	@ContractTest
-	public void testFind_Node_Node_Node_ByFluidTriple() {
+	public void testFind_Node_Node_Node_ByFluidTriple()
+	{
 		Node x = node("x");
 		Node y = node("y");
 		Node z = node("z");
 		Graph g = graphWith(producer.newInstance(), "x y z ");
 		Set<Triple> expect = tripleSet("x y z");
-		txnBegin( g );
+		txnBegin(g);
 		assertEquals(expect, g.find(Node.ANY, y, z).toSet());
 		assertEquals(expect, g.find(x, Node.ANY, z).toSet());
 		assertEquals(expect, g.find(x, y, Node.ANY).toSet());
@@ -838,17 +802,19 @@ public class GraphContractTest<T extends Graph>  {
 	}
 
 	@ContractTest
-	public void testFind_Node_Node_Node_ProgrammaticValues() {
+	public void testFind_Node_Node_Node_ProgrammaticValues()
+	{
 		Graph g = producer.newInstance();
-		if (g.getCapabilities().handlesLiteralTyping()) {
+		if (g.getCapabilities().handlesLiteralTyping())
+		{
 			Node ab = NodeFactory.createLiteral(LiteralLabelFactory
 					.createTypedLiteral(new Byte((byte) 42)));
 			Node as = NodeFactory.createLiteral(LiteralLabelFactory
 					.createTypedLiteral(new Short((short) 42)));
-			Node ai = NodeFactory.createLiteral(LiteralLabelFactory
-					.createTypedLiteral(new Integer(42)));
-			Node al = NodeFactory.createLiteral(LiteralLabelFactory
-					.createTypedLiteral(new Long(42)));
+			Node ai = NodeFactory.createLiteral(
+					LiteralLabelFactory.createTypedLiteral(new Integer(42)));
+			Node al = NodeFactory.createLiteral(
+					LiteralLabelFactory.createTypedLiteral(new Long(42)));
 
 			Node SB = NodeCreateUtils.create("SB");
 			Node SS = NodeCreateUtils.create("SS");
@@ -857,12 +823,14 @@ public class GraphContractTest<T extends Graph>  {
 			Node P = NodeCreateUtils.create("P");
 
 			txnBegin(g);
-			try {
+			try
+			{
 				g.add(Triple.create(SB, P, ab));
 				g.add(Triple.create(SS, P, as));
 				g.add(Triple.create(SI, P, ai));
 				g.add(Triple.create(SL, P, al));
-			} catch (Exception e) {
+			} catch (Exception e)
+			{
 				txnRollback(g);
 				fail(e.getMessage());
 			}
@@ -875,20 +843,22 @@ public class GraphContractTest<T extends Graph>  {
 					4,
 					iteratorToSet(
 							g.find(Node.ANY, P, NodeCreateUtils.create("42")))
-							.size());
+									.size());
 			txnRollback(g);
 		}
 	}
 
 	@ContractTest
-	public void testFind_Node_Node_Node_MatchLanguagedLiteralCaseInsensitive() {
+	public void testFind_Node_Node_Node_MatchLanguagedLiteralCaseInsensitive()
+	{
 		Graph g = graphWith(producer.newInstance(), "a p 'chat'en");
-		if (g.getCapabilities().handlesLiteralTyping()) {
+		if (g.getCapabilities().handlesLiteralTyping())
+		{
 			Node chaten = node("'chat'en"), chatEN = node("'chat'EN");
 			assertDiffer(chaten, chatEN);
 			assertTrue(chaten.sameValueAs(chatEN));
 			assertEquals(chaten.getIndexingValue(), chatEN.getIndexingValue());
-			txnBegin( g );
+			txnBegin(g);
 			assertEquals(1, g.find(Node.ANY, Node.ANY, chaten).toList().size());
 			assertEquals(1, g.find(Node.ANY, Node.ANY, chatEN).toList().size());
 			txnRollback(g);
@@ -896,15 +866,16 @@ public class GraphContractTest<T extends Graph>  {
 	}
 
 	@ContractTest
-	public void testFind_Node_Node_Node_NoMatchAgainstUnlanguagesLiteral() {
-		Graph g = graphWith(producer.newInstance(),
-				"a p 'chat'en; a p 'chat'");
-		if (g.getCapabilities().handlesLiteralTyping()) {
+	public void testFind_Node_Node_Node_NoMatchAgainstUnlanguagesLiteral()
+	{
+		Graph g = graphWith(producer.newInstance(), "a p 'chat'en; a p 'chat'");
+		if (g.getCapabilities().handlesLiteralTyping())
+		{
 			Node chaten = node("'chat'en"), chatEN = node("'chat'EN");
 			assertDiffer(chaten, chatEN);
 			assertTrue(chaten.sameValueAs(chatEN));
 			assertEquals(chaten.getIndexingValue(), chatEN.getIndexingValue());
-			txnBegin( g );
+			txnBegin(g);
 			assertEquals(1, g.find(Node.ANY, Node.ANY, chaten).toList().size());
 			assertEquals(1, g.find(Node.ANY, Node.ANY, chatEN).toList().size());
 			txnRollback(g);
@@ -912,7 +883,8 @@ public class GraphContractTest<T extends Graph>  {
 	}
 
 	@ContractTest
-	public void testFind_Triple() {
+	public void testFind_Triple()
+	{
 		Graph graph = graphWith(producer.newInstance(),
 				"S P O; S2 P2 O2; S3 P3 O3");
 		txnBegin(graph);
@@ -949,32 +921,35 @@ public class GraphContractTest<T extends Graph>  {
 
 		s = graph.find(new Triple(node("S3"), node("P2"), Node.ANY)).toList();
 		assertEquals(0, s.size());
-		txnRollback( graph );
+		txnRollback(graph);
 	}
 
 	@ContractTest
-	public void testFind_Triple_ByFluidTriple() {
+	public void testFind_Triple_ByFluidTriple()
+	{
 		Graph g = graphWith(producer.newInstance(), "x y z ");
 		Set<Triple> expect = tripleSet("x y z");
-		txnBegin( g );
+		txnBegin(g);
 		assertEquals(expect, g.find(triple("?? y z")).toSet());
 		assertEquals(expect, g.find(triple("x ?? z")).toSet());
 		assertEquals(expect, g.find(triple("x y ??")).toSet());
-		txnRollback( g );
+		txnRollback(g);
 	}
 
 	@ContractTest
-	public void testFind_Triple_ProgrammaticValues() {
+	public void testFind_Triple_ProgrammaticValues()
+	{
 		Graph g = producer.newInstance();
-		if (g.getCapabilities().handlesLiteralTyping()) {
+		if (g.getCapabilities().handlesLiteralTyping())
+		{
 			Node ab = NodeFactory.createLiteral(LiteralLabelFactory
 					.createTypedLiteral(new Byte((byte) 42)));
 			Node as = NodeFactory.createLiteral(LiteralLabelFactory
 					.createTypedLiteral(new Short((short) 42)));
-			Node ai = NodeFactory.createLiteral(LiteralLabelFactory
-					.createTypedLiteral(new Integer(42)));
-			Node al = NodeFactory.createLiteral(LiteralLabelFactory
-					.createTypedLiteral(new Long(42)));
+			Node ai = NodeFactory.createLiteral(
+					LiteralLabelFactory.createTypedLiteral(new Integer(42)));
+			Node al = NodeFactory.createLiteral(
+					LiteralLabelFactory.createTypedLiteral(new Long(42)));
 
 			Node SB = NodeCreateUtils.create("SB");
 			Node SS = NodeCreateUtils.create("SS");
@@ -983,12 +958,14 @@ public class GraphContractTest<T extends Graph>  {
 			Node P = NodeCreateUtils.create("P");
 
 			txnBegin(g);
-			try {
+			try
+			{
 				g.add(Triple.create(SB, P, ab));
 				g.add(Triple.create(SS, P, as));
 				g.add(Triple.create(SI, P, ai));
 				g.add(Triple.create(SL, P, al));
-			} catch (Exception e) {
+			} catch (Exception e)
+			{
 				txnRollback(g);
 				fail(e.getMessage());
 			}
@@ -998,98 +975,114 @@ public class GraphContractTest<T extends Graph>  {
 					String.format(
 							"Should have found 4 elements, does %s really implement literal typing",
 							g.getClass()),
-					4,
-					iteratorToSet(
-							g.find(new Triple(Node.ANY, P, NodeCreateUtils
-									.create("42")))).size());
+					4, iteratorToSet(g.find(new Triple(Node.ANY, P,
+							NodeCreateUtils.create("42")))).size());
 			txnRollback(g);
 		}
 	}
 
 	@ContractTest
-	public void testFind_Triple_MatchLanguagedLiteralCaseInsensitive() {
+	public void testFind_Triple_MatchLanguagedLiteralCaseInsensitive()
+	{
 		Graph g = graphWith(producer.newInstance(), "a p 'chat'en");
-		if (g.getCapabilities().handlesLiteralTyping()) {
-		Node chaten = node("'chat'en"), chatEN = node("'chat'EN");
-		assertDiffer(chaten, chatEN);
-		assertTrue(chaten.sameValueAs(chatEN));
-		assertEquals(chaten.getIndexingValue(), chatEN.getIndexingValue());
-		txnBegin( g );
-		assertEquals(1, g.find(new Triple(Node.ANY, Node.ANY, chaten)).toList().size());
-		assertEquals(1, g.find(new Triple(Node.ANY, Node.ANY, chatEN)).toList().size());
-		txnRollback( g );
+		if (g.getCapabilities().handlesLiteralTyping())
+		{
+			Node chaten = node("'chat'en"), chatEN = node("'chat'EN");
+			assertDiffer(chaten, chatEN);
+			assertTrue(chaten.sameValueAs(chatEN));
+			assertEquals(chaten.getIndexingValue(), chatEN.getIndexingValue());
+			txnBegin(g);
+			assertEquals(1, g.find(new Triple(Node.ANY, Node.ANY, chaten))
+					.toList().size());
+			assertEquals(1, g.find(new Triple(Node.ANY, Node.ANY, chatEN))
+					.toList().size());
+			txnRollback(g);
 		}
 	}
 
 	@ContractTest
-	public void testFind_Triple_NoMatchAgainstUnlanguagesLiteral() {
-		Graph g = graphWith(producer.newInstance(),
-				"a p 'chat'en; a p 'chat'");
-		if (g.getCapabilities().handlesLiteralTyping()) {
-		Node chaten = node("'chat'en"), chatEN = node("'chat'EN");
-		assertDiffer(chaten, chatEN);
-		assertTrue(chaten.sameValueAs(chatEN));
-		assertEquals(chaten.getIndexingValue(), chatEN.getIndexingValue());
-		txnBegin( g );
-		assertEquals(1, g.find(new Triple(Node.ANY, Node.ANY, chaten)).toList().size());
-		assertEquals(1, g.find(new Triple(Node.ANY, Node.ANY, chatEN)).toList().size());
-		txnRollback( g );
+	public void testFind_Triple_NoMatchAgainstUnlanguagesLiteral()
+	{
+		Graph g = graphWith(producer.newInstance(), "a p 'chat'en; a p 'chat'");
+		if (g.getCapabilities().handlesLiteralTyping())
+		{
+			Node chaten = node("'chat'en"), chatEN = node("'chat'EN");
+			assertDiffer(chaten, chatEN);
+			assertTrue(chaten.sameValueAs(chatEN));
+			assertEquals(chaten.getIndexingValue(), chatEN.getIndexingValue());
+			txnBegin(g);
+			assertEquals(1, g.find(new Triple(Node.ANY, Node.ANY, chaten))
+					.toList().size());
+			assertEquals(1, g.find(new Triple(Node.ANY, Node.ANY, chatEN))
+					.toList().size());
+			txnRollback(g);
 		}
 	}
 
 	@ContractTest
-	public void testGetCapabilities() {
+	public void testGetCapabilities()
+	{
 		Graph g = producer.newInstance();
 		Capabilities c = g.getCapabilities();
 		assertNotNull("Capabilities are not returned", c);
-		try {
+		try
+		{
 			c.sizeAccurate();
-		} catch (Exception e) {
+		} catch (Exception e)
+		{
 			fail("sizeAccurate() threw Exception: " + e.toString());
 		}
-		try {
+		try
+		{
 			c.addAllowed();
-		} catch (Exception e) {
+		} catch (Exception e)
+		{
 			fail("addAllowed() threw Exception: " + e.toString());
 		}
-		try {
+		try
+		{
 			c.deleteAllowed();
-		} catch (Exception e) {
+		} catch (Exception e)
+		{
 			fail("deleteAllowed() threw Exception: " + e.toString());
 		}
 	}
 
 	@ContractTest
-	public void testGetEventManager() {
-		assertNotNull("Must return an EventManager", producer
-				.newInstance().getEventManager());
+	public void testGetEventManager()
+	{
+		assertNotNull("Must return an EventManager",
+				producer.newInstance().getEventManager());
 	}
 
 	@ContractTest
-	public void testGetPrefixMapping() {
+	public void testGetPrefixMapping()
+	{
 		Graph g = producer.newInstance();
-		txnBegin( g );
+		txnBegin(g);
 		PrefixMapping pm = g.getPrefixMapping();
 		assertNotNull("Must return prefix mapping", pm);
 		assertSame("getPrefixMapping must always return the same object", pm,
 				g.getPrefixMapping());
-		txnRollback( g );	
+		txnRollback(g);
 		pm.setNsPrefix("pfx1", "http://example.com/");
 		pm.setNsPrefix("pfx2", "scheme:rope/string#");
-		
-		txnBegin( g );
+
+		txnBegin(g);
 		// assert same after adding to other mapl
 		assertSame("getPrefixMapping must always return the same object", pm,
 				g.getPrefixMapping());
-		txnRollback( g );
+		txnRollback(g);
 
 	}
 
 	@ContractTest
-	public void testGetStatisticsHandler() {
+	public void testGetStatisticsHandler()
+	{
 		Graph g = producer.newInstance();
 		GraphStatisticsHandler sh = g.getStatisticsHandler();
-		if (sh != null) {
+		if (sh != null)
+		{
 			assertSame(
 					"getStatisticsHandler must always return the same object",
 					sh, g.getStatisticsHandler());
@@ -1097,14 +1090,16 @@ public class GraphContractTest<T extends Graph>  {
 	}
 
 	@ContractTest
-	public void testGetTransactionHandler() {
+	public void testGetTransactionHandler()
+	{
 		Graph g = producer.newInstance();
 		assertNotNull("Must return a Transaction handler",
 				g.getTransactionHandler());
 	}
 
 	@ContractTest
-	public void testIsClosed() {
+	public void testIsClosed()
+	{
 		Graph g = producer.newInstance();
 		assertFalse("Graph created in closed state", g.isClosed());
 		txnBegin(g);
@@ -1117,21 +1112,24 @@ public class GraphContractTest<T extends Graph>  {
 	}
 
 	@ContractTest
-	public void testIsEmpty() {
+	public void testIsEmpty()
+	{
 		Graph g = producer.newInstance();
-		txnBegin( g );
-		if (!g.isEmpty()) {
+		txnBegin(g);
+		if (!g.isEmpty())
+		{
 			LOG.warn(String.format(
 					"Graph type %s can not be empty (Empty test skipped)",
 					g.getClass()));
 			txnRollback(g);
-		} else {
+		} else
+		{
 			txnRollback(g);
 			graphAddTxn(g, "S P O");
 			txnBegin(g);
 			assertFalse("Graph reports empty after add", g.isEmpty());
 			txnRollback(g);
-			
+
 			txnBegin(g);
 			g.add(NodeCreateUtils.createTriple("Foo B C"));
 			g.delete(NodeCreateUtils.createTriple("S P O"));
@@ -1139,7 +1137,7 @@ public class GraphContractTest<T extends Graph>  {
 			txnBegin(g);
 			assertFalse("Should not report empty", g.isEmpty());
 			txnRollback(g);
-			
+
 			txnBegin(g);
 			g.delete(NodeCreateUtils.createTriple("Foo B C"));
 			txnCommit(g);
@@ -1151,19 +1149,19 @@ public class GraphContractTest<T extends Graph>  {
 	}
 
 	@ContractTest
-	public void testIsIsomorphicWith_Graph() {
+	public void testIsIsomorphicWith_Graph()
+	{
 		Graph graph = producer.newInstance();
 		Graph g2 = memGraph();
-		txnBegin( graph );
+		txnBegin(graph);
 		assertTrue("Empty graphs should be isomorphic",
 				graph.isIsomorphicWith(g2));
-		txnRollback( graph );
-		graphWith(graph,
-				"S P O; S2 P2 O2; S3 P3 O3");
+		txnRollback(graph);
+		graphWith(graph, "S P O; S2 P2 O2; S3 P3 O3");
 		g2 = graphWith("S3 P3 O3; S2 P2 O2; S P O");
-		txnBegin( graph );
+		txnBegin(graph);
 		assertTrue("Should be isomorphic", graph.isIsomorphicWith(g2));
-		txnRollback( graph );
+		txnRollback(graph);
 		txnBegin(graph);
 		graph.add(triple("_1, P4 S4"));
 		txnCommit(graph);
@@ -1171,11 +1169,11 @@ public class GraphContractTest<T extends Graph>  {
 		txnBegin(g2);
 		g2.add(triple("_2, P4 S4"));
 		txnCommit(g2);
-		txnBegin( graph );
+		txnBegin(graph);
 		assertTrue("Should be isomorphic after adding anonymous nodes",
 				graph.isIsomorphicWith(g2));
-		txnRollback( graph );
-		
+		txnRollback(graph);
+
 		txnBegin(graph);
 		graph.add(triple("_1, P3 S4"));
 		txnCommit(graph);
@@ -1183,12 +1181,13 @@ public class GraphContractTest<T extends Graph>  {
 		txnBegin(g2);
 		g2.add(triple("_2, P4 S4"));
 		txnCommit(g2);
-		txnBegin( graph );
+		txnBegin(graph);
 		assertFalse("Should not be isomorphic", graph.isIsomorphicWith(g2));
-		txnRollback( graph );
+		txnRollback(graph);
 	}
 
-	private Graph copy(Graph g) {
+	private Graph copy(Graph g)
+	{
 		Graph result = producer.newInstance();
 		txnBegin(result);
 		GraphUtil.addInto(result, g);
@@ -1196,7 +1195,8 @@ public class GraphContractTest<T extends Graph>  {
 		return result;
 	}
 
-	private Graph remove(Graph toUpdate, Graph toRemove) {
+	private Graph remove(Graph toUpdate, Graph toRemove)
+	{
 		txnBegin(toUpdate);
 		GraphUtil.deleteFrom(toUpdate, toRemove);
 		txnCommit(toUpdate);
@@ -1210,9 +1210,11 @@ public class GraphContractTest<T extends Graph>  {
 	 * initialContent.
 	 */
 	@ContractTest
-	public void testRemove_Node_Node_Node() {
+	public void testRemove_Node_Node_Node()
+	{
 		for (int i = 0; i < cases.length; i += 1)
-			for (int j = 0; j < 3; j += 1) {
+			for (int j = 0; j < 3; j += 1)
+			{
 				Graph content = producer.newInstance();
 
 				Graph baseContent = copy(content);
@@ -1228,15 +1230,15 @@ public class GraphContractTest<T extends Graph>  {
 				txnCommit(content);
 
 				// check for optional delete notifications
-				if (GL.contains("delete")) {
+				if (GL.contains("delete"))
+				{
 					// if it contains any it must contain all.
-					for (Triple t : removed) {
+					for (Triple t : removed)
+					{
 						GL.assertContains("delete", content, t);
 					}
 				}
-				GL.assertHasEnd(
-						"someEvent",
-						content,
+				GL.assertHasEnd("someEvent", content,
 						GraphEvents.remove(remove.getSubject(),
 								remove.getPredicate(), remove.getObject()));
 
@@ -1249,7 +1251,8 @@ public class GraphContractTest<T extends Graph>  {
 	}
 
 	@ContractTest
-	public void testRemove_ByIterator() {
+	public void testRemove_ByIterator()
+	{
 		testRemove("?? ?? ??", "?? ?? ??");
 		testRemove("S ?? ??", "S ?? ??");
 		testRemove("S ?? ??", "?? P ??");
@@ -1262,19 +1265,22 @@ public class GraphContractTest<T extends Graph>  {
 		testRemove("?? ?? O", "?? ?? O");
 	}
 
-	private void testRemove(String findRemove, String findCheck) {
+	private void testRemove(String findRemove, String findCheck)
+	{
 		Graph g = graphWith(producer.newInstance(), "S P O");
 		txnBegin(g);
-		ExtendedIterator<Triple> it = g.find(NodeCreateUtils
-				.createTriple(findRemove));
+		ExtendedIterator<Triple> it = g
+				.find(NodeCreateUtils.createTriple(findRemove));
 		txnRollback(g);
-		try {
+		try
+		{
 			it.next();
 			it.remove();
 			it.close();
 			assertEquals("remove with " + findRemove + ":", 0, g.size());
 			assertFalse(g.contains(NodeCreateUtils.createTriple(findCheck)));
-		} catch (UnsupportedOperationException e) {
+		} catch (UnsupportedOperationException e)
+		{
 			it.close();
 		}
 	}
@@ -1284,20 +1290,24 @@ public class GraphContractTest<T extends Graph>  {
 	 * keeping up with changes to the find interface.
 	 */
 	@ContractTest
-	public void testFindAndContains() {
+	public void testFindAndContains()
+	{
 		Graph g = producer.newInstance();
-		Node r = NodeCreateUtils.create("r"), s = NodeCreateUtils.create("s"), p = NodeCreateUtils
-				.create("P");
+		Node r = NodeCreateUtils.create("r"), s = NodeCreateUtils.create("s"),
+				p = NodeCreateUtils.create("P");
 		txnBegin(g);
-		try {
+		try
+		{
 			g.add(Triple.create(r, p, s));
 			txnCommit(g);
 			txnBegin(g);
 			assertTrue(g.contains(r, p, Node.ANY));
 			assertEquals(1, g.find(r, p, Node.ANY).toList().size());
-		} catch (Exception e) {
+		} catch (Exception e)
+		{
 			fail(e.getMessage());
-		} finally {
+		} finally
+		{
 			txnRollback(g);
 		}
 	}
@@ -1307,7 +1317,8 @@ public class GraphContractTest<T extends Graph>  {
 	 */
 
 	@ContractTest
-	public void testAGraph() {
+	public void testAGraph()
+	{
 		String title = this.getClass().getName();
 		Graph g = producer.newInstance();
 		txnBegin(g);
@@ -1319,7 +1330,7 @@ public class GraphContractTest<T extends Graph>  {
 		assertContainsAll(title + ": simple graph", g, "x R y; p S q; a T b");
 		assertEquals(title + ": size", baseSize + 3, g.size());
 		txnRollback(g);
-		
+
 		graphAddTxn(g,
 				"spindizzies lift cities; Diracs communicate instantaneously");
 		txnBegin(g);
@@ -1344,7 +1355,8 @@ public class GraphContractTest<T extends Graph>  {
 	}
 
 	@ContractTest
-	public void testAddWithReificationPreamble() {
+	public void testAddWithReificationPreamble()
+	{
 		Graph g = producer.newInstance();
 		txnBegin(g);
 		xSPO(g);
@@ -1354,49 +1366,57 @@ public class GraphContractTest<T extends Graph>  {
 		txnRollback(g);
 	}
 
-	protected void xSPOyXYZ(Graph g) {
+	protected void xSPOyXYZ(Graph g)
+	{
 		xSPO(g);
 		ReifierStd.reifyAs(g, NodeCreateUtils.create("y"),
 				NodeCreateUtils.createTriple("X Y Z"));
 	}
 
-	protected void aABC(Graph g) {
+	protected void aABC(Graph g)
+	{
 		ReifierStd.reifyAs(g, NodeCreateUtils.create("a"),
 				NodeCreateUtils.createTriple("Foo B C"));
 	}
 
-	protected void xSPO(Graph g) {
+	protected void xSPO(Graph g)
+	{
 		ReifierStd.reifyAs(g, NodeCreateUtils.create("x"),
 				NodeCreateUtils.createTriple("S P O"));
 	}
 
 	@ContractTest
-	public void failingTestDoubleRemoveAll() {
-	    final Graph g = producer.newInstance();
-	    try {
-	        graphAddTxn(g, "c S d; e:ff GGG hhhh; _i J 27; Ell Em 'en'");
-	        txnBegin(g);
-	        Iterator<Triple> it = new TrackingTripleIterator(g.find(Triple.ANY)) {
-	            @Override
-	            public void remove() {
-	                super.remove(); // removes current
-	                g.delete(current); // no-op.
-	            }
-	        };
-	        txnRollback(g);
-	        while (it.hasNext()) {
-	            it.next();
-	            it.remove();
-	        }
-	        txnBegin(g);
-	        assertTrue(g.isEmpty());
-	        txnRollback(g);
-	    } catch (UnsupportedOperationException e) {
-	        // No Iterator.remove
-	    }
+	public void failingTestDoubleRemoveAll()
+	{
+		final Graph g = producer.newInstance();
+		try
+		{
+			graphAddTxn(g, "c S d; e:ff GGG hhhh; _i J 27; Ell Em 'en'");
+			txnBegin(g);
+			Iterator<Triple> it = new TrackingTripleIterator(g.find(Triple.ANY))
+			{
+				@Override
+				public void remove()
+				{
+					super.remove(); // removes current
+					g.delete(current); // no-op.
+				}
+			};
+			txnRollback(g);
+			while (it.hasNext())
+			{
+				it.next();
+				it.remove();
+			}
+			txnBegin(g);
+			assertTrue(g.isEmpty());
+			txnRollback(g);
+		} catch (UnsupportedOperationException e)
+		{
+			// No Iterator.remove
+		}
 	}
 
-
 	/**
 	 * Test cases for RemoveSPO(); each entry is a triple (add, remove, result).
 	 * <ul>
@@ -1418,10 +1438,12 @@ public class GraphContractTest<T extends Graph>  {
 	 * testIsomorphism from file data
 	 * 
 	 * @throws URISyntaxException
-	 * @throws MalformedURLException 
+	 * @throws MalformedURLException
 	 */
 	@ContractTest
-	public void testIsomorphismFile() throws URISyntaxException, MalformedURLException {
+	public void testIsomorphismFile()
+			throws URISyntaxException, MalformedURLException
+	{
 		testIsomorphismXMLFile(1, true);
 		testIsomorphismXMLFile(2, true);
 		testIsomorphismXMLFile(3, true);
@@ -1433,22 +1455,27 @@ public class GraphContractTest<T extends Graph>  {
 
 	}
 
-	private void testIsomorphismNTripleFile(int i, boolean result) {
+	private void testIsomorphismNTripleFile(int i, boolean result)
+	{
 		testIsomorphismFile(i, "N-TRIPLE", "nt", result);
 	}
 
-	private void testIsomorphismXMLFile(int i, boolean result) {
+	private void testIsomorphismXMLFile(int i, boolean result)
+	{
 		testIsomorphismFile(i, "RDF/XML", "rdf", result);
 	}
 
-	private InputStream getInputStream(int n, int n2, String suffix) {
+	private InputStream getInputStream(int n, int n2, String suffix)
+	{
 		String urlStr = String.format("regression/testModelEquals/%s-%s.%s", n,
 				n2, suffix);
-		return GraphContractTest.class.getClassLoader().getResourceAsStream(
-				urlStr);
+		return GraphContractTest.class.getClassLoader()
+				.getResourceAsStream(urlStr);
 	}
 
-	private void testIsomorphismFile(int n, String lang, String suffix, boolean result) {
+	private void testIsomorphismFile(int n, String lang, String suffix,
+			boolean result)
+	{
 		Graph g1 = producer.newInstance();
 		Graph g2 = producer.newInstance();
 		Model m1 = ModelFactory.createModelForGraph(g1);
@@ -1457,7 +1484,7 @@ public class GraphContractTest<T extends Graph>  {
 		txnBegin(g1);
 		m1.read(getInputStream(n, 1, suffix), "http://www.example.org/", lang);
 		txnCommit(g1);
-		
+
 		txnBegin(g2);
 		m2.read(getInputStream(n, 2, suffix), "http://www.example.org/", lang);
 		txnCommit(g2);
@@ -1465,7 +1492,8 @@ public class GraphContractTest<T extends Graph>  {
 		txnBegin(g1);
 		boolean rslt = g1.isIsomorphicWith(g2) == result;
 		txnRollback(g1);
-		if (!rslt) {
+		if (!rslt)
+		{
 			System.out.println("g1:");
 			m1.write(System.out, "N-TRIPLE");
 			System.out.println("g2:");
@@ -1474,7 +1502,8 @@ public class GraphContractTest<T extends Graph>  {
 		assertTrue("Isomorphism test failed", rslt);
 	}
 
-	protected Graph getClosed() {
+	protected Graph getClosed()
+	{
 		Graph result = producer.newInstance();
 		result.close();
 		return result;
@@ -1555,28 +1584,27 @@ public class GraphContractTest<T extends Graph>  {
 	 * added.
 	 */
 	@ContractTest
-	public void testPartialUpdate() {
+	public void testPartialUpdate()
+	{
 		Graph source = graphWith(producer.newInstance(), "a R b; b S e");
 		Graph dest = graphWith(producer.newInstance(), "b R d");
 		txnBegin(source);
-		try {
+		try
+		{
 			GraphExtract e = new GraphExtract(TripleBoundary.stopNowhere);
 			e.extractInto(dest, node("a"), source);
 			txnCommit(source);
-		}
-		catch (RuntimeException e)
+		} catch (RuntimeException e)
 		{
 			txnRollback(source);
 			e.printStackTrace();
-			fail( e.getMessage() );
-			
+			fail(e.getMessage());
+
 		}
 		txnBegin(source);
-		assertIsomorphic(
-				graphWith( "a R b; b S e; b R d"),
-				dest);
+		assertIsomorphic(graphWith("a R b; b S e; b R d"), dest);
 		txnRollback(source);
-		
+
 	}
 
 	/**
@@ -1584,34 +1612,36 @@ public class GraphContractTest<T extends Graph>  {
 	 * by a find() will generate deletion notifications.
 	 */
 	@ContractTest
-	public void testIterator_Remove() {
-	    Graph graph = graphWith(producer.newInstance(), "a R b; b S e");
-	    graph.getEventManager().register(GL);
-        txnBegin(graph);
-        Triple toRemove = triple("a R b");
-        ExtendedIterator<Triple> rtr = graph.find(toRemove);
-        assertTrue("ensure a(t least) one triple", rtr.hasNext());
-        txnRollback(graph);
-	    try {	        
-	        rtr.next();
-	        rtr.remove();
-	        rtr.close();
-	        GL.assertHas("delete", graph, toRemove);
-	    } catch (UnsupportedOperationException e) {
-	        // No Iterator.remove
-	    }
+	public void testIterator_Remove()
+	{
+		Graph graph = graphWith(producer.newInstance(), "a R b; b S e");
+		graph.getEventManager().register(GL);
+		txnBegin(graph);
+		Triple toRemove = triple("a R b");
+		ExtendedIterator<Triple> rtr = graph.find(toRemove);
+		assertTrue("ensure a(t least) one triple", rtr.hasNext());
+		txnRollback(graph);
+		try
+		{
+			rtr.next();
+			rtr.remove();
+			rtr.close();
+			GL.assertHas("delete", graph, toRemove);
+		} catch (UnsupportedOperationException e)
+		{
+			// No Iterator.remove
+		}
 	}
 
-
 	@ContractTest
-	public void testTransactionHandler_Commit() {
+	public void testTransactionHandler_Commit()
+	{
 		Graph g = producer.newInstance();
-		if (g.getTransactionHandler().transactionsSupported()) {
-			Graph initial = graphWith(
-					"initial hasValue 42; also hasURI hello");
-			Graph extra = graphWith(
-					"extra hasValue 17; also hasURI world");
-			g.getTransactionHandler().begin();			
+		if (g.getTransactionHandler().transactionsSupported())
+		{
+			Graph initial = graphWith("initial hasValue 42; also hasURI hello");
+			Graph extra = graphWith("extra hasValue 17; also hasURI world");
+			g.getTransactionHandler().begin();
 			GraphUtil.addInto(g, initial);
 			g.getTransactionHandler().commit();
 			g.getTransactionHandler().begin();
@@ -1631,9 +1661,11 @@ public class GraphContractTest<T extends Graph>  {
 	}
 
 	@ContractTest
-	public void testTransactionHandler_Abort() {
+	public void testTransactionHandler_Abort()
+	{
 		Graph g = producer.newInstance();
-		if (g.getTransactionHandler().transactionsSupported()) {
+		if (g.getTransactionHandler().transactionsSupported())
+		{
 			Graph initial = graphWith(producer.newInstance(),
 					"initial hasValue 42; also hasURI hello");
 			Graph extra = graphWith(producer.newInstance(),
@@ -1645,7 +1677,7 @@ public class GraphContractTest<T extends Graph>  {
 			g.getTransactionHandler().begin();
 			GraphUtil.addInto(g, extra);
 			g.getTransactionHandler().abort();
-			
+
 			g.getTransactionHandler().begin();
 			assertIsomorphic(initial, g);
 			g.getTransactionHandler().abort();
@@ -1653,9 +1685,11 @@ public class GraphContractTest<T extends Graph>  {
 	}
 
 	@ContractTest
-	public void testTransactionHandler_CommitThenAbort() {
+	public void testTransactionHandler_CommitThenAbort()
+	{
 		Graph g = producer.newInstance();
-		if (g.getTransactionHandler().transactionsSupported()) {
+		if (g.getTransactionHandler().transactionsSupported())
+		{
 			Graph initial = graphWith(producer.newInstance(),
 					"Foo pings B; B pings C");
 			Graph extra = graphWith(producer.newInstance(),
@@ -1681,19 +1715,23 @@ public class GraphContractTest<T extends Graph>  {
 
 	// used to find the object set from the returned set for literal testing
 
-	private static final Function<Triple, Node> getObject = new Function<Triple, Node>() {
+	private static final Function<Triple, Node> getObject = new Function<Triple, Node>()
+	{
 		@Override
-		public Node apply(Triple t) {
+		public Node apply(Triple t)
+		{
 			return t.getObject();
 		}
 	};
 
 	private void testLiteralTypingBasedFind(final String data, final int size,
-			final String search, final String results, boolean reqLitType) {
+			final String search, final String results, boolean reqLitType)
+	{
 
 		Graph g = producer.newInstance();
 
-		if (!reqLitType || g.getCapabilities().handlesLiteralTyping()) {
+		if (!reqLitType || g.getCapabilities().handlesLiteralTyping())
+		{
 			graphWith(g, data);
 
 			Node literal = NodeCreateUtils.create(search);
@@ -1708,14 +1746,16 @@ public class GraphContractTest<T extends Graph>  {
 	}
 
 	@ContractTest
-	public void testLiteralTypingBasedFind() {
+	public void testLiteralTypingBasedFind()
+	{
 		testLiteralTypingBasedFind("a P 'simple'", 1, "'simple'", "'simple'",
 				false);
 		testLiteralTypingBasedFind("a P 'simple'xsd:string", 1, "'simple'",
 				"'simple'xsd:string", true);
 		testLiteralTypingBasedFind("a P 'simple'", 1, "'simple'xsd:string",
 				"'simple'", true);
-		// ensure that adding identical strings one with type yields single result
+		// ensure that adding identical strings one with type yields single
+		// result
 		// and that querying with or without type works
 		testLiteralTypingBasedFind("a P 'simple'xsd:string", 1,
 				"'simple'xsd:string", "'simple'xsd:string", false);
@@ -1760,7 +1800,8 @@ public class GraphContractTest<T extends Graph>  {
 	}
 
 	@ContractTest
-	public void testQuadRemove() {
+	public void testQuadRemove()
+	{
 		Graph g = producer.newInstance();
 		txnBegin(g);
 		assertEquals(0, g.size());
@@ -1790,27 +1831,32 @@ public class GraphContractTest<T extends Graph>  {
 	}
 
 	@ContractTest
-	public void testSizeAfterRemove() {
-	    Graph g = graphWith(producer.newInstance(), "x p y");
-	    try {
-	    	txnBegin(g);
-	        ExtendedIterator<Triple> it = g.find(triple("x ?? ??"));
-	        txnRollback(g);
-	        it.removeNext();
-	        txnBegin(g);
-	        assertEquals(0, g.size());
-	        txnRollback(g);
-	    } catch (UnsupportedOperationException e) {
-	        // No Iterator.remove
-	    }
+	public void testSizeAfterRemove()
+	{
+		Graph g = graphWith(producer.newInstance(), "x p y");
+		try
+		{
+			txnBegin(g);
+			ExtendedIterator<Triple> it = g.find(triple("x ?? ??"));
+			txnRollback(g);
+			it.removeNext();
+			txnBegin(g);
+			assertEquals(0, g.size());
+			txnRollback(g);
+		} catch (UnsupportedOperationException e)
+		{
+			// No Iterator.remove
+		}
 	}
 
 	@ContractTest
-	public void testSingletonStatisticsWithSingleTriple() {
+	public void testSingletonStatisticsWithSingleTriple()
+	{
 
 		Graph g = graphWith(producer.newInstance(), "a P b");
 		GraphStatisticsHandler h = g.getStatisticsHandler();
-		if (h != null) {
+		if (h != null)
+		{
 			assertEquals(1L, h.getStatistic(node("a"), Node.ANY, Node.ANY));
 			assertEquals(0L, h.getStatistic(node("x"), Node.ANY, Node.ANY));
 			//
@@ -1823,12 +1869,14 @@ public class GraphContractTest<T extends Graph>  {
 	}
 
 	@ContractTest
-	public void testSingletonStatisticsWithSeveralTriples() {
+	public void testSingletonStatisticsWithSeveralTriples()
+	{
 
 		Graph g = graphWith(producer.newInstance(),
 				"a P b; a P c; a Q b; x S y");
 		GraphStatisticsHandler h = g.getStatisticsHandler();
-		if (h != null) {
+		if (h != null)
+		{
 			assertEquals(3L, h.getStatistic(node("a"), Node.ANY, Node.ANY));
 			assertEquals(1L, h.getStatistic(node("x"), Node.ANY, Node.ANY));
 			assertEquals(0L, h.getStatistic(node("y"), Node.ANY, Node.ANY));
@@ -1844,12 +1892,14 @@ public class GraphContractTest<T extends Graph>  {
 	}
 
 	@ContractTest
-	public void testDoubletonStatisticsWithTriples() {
+	public void testDoubletonStatisticsWithTriples()
+	{
 
 		Graph g = graphWith(producer.newInstance(),
 				"a P b; a P c; a Q b; x S y");
 		GraphStatisticsHandler h = g.getStatisticsHandler();
-		if (h != null) {
+		if (h != null)
+		{
 			assertEquals(-1L, h.getStatistic(node("a"), node("P"), Node.ANY));
 			assertEquals(-1L, h.getStatistic(Node.ANY, node("P"), node("b")));
 			assertEquals(-1L, h.getStatistic(node("a"), Node.ANY, node("b")));
@@ -1859,107 +1909,124 @@ public class GraphContractTest<T extends Graph>  {
 	}
 
 	@ContractTest
-	public void testStatisticsWithOnlyVariables() {
+	public void testStatisticsWithOnlyVariables()
+	{
 		testStatsWithAllVariables("");
 		testStatsWithAllVariables("a P b");
 		testStatsWithAllVariables("a P b; a P c");
 		testStatsWithAllVariables("a P b; a P c; a Q b; x S y");
 	}
 
-	private void testStatsWithAllVariables(String triples) {
+	private void testStatsWithAllVariables(String triples)
+	{
 		Graph g = graphWith(producer.newInstance(), triples);
 		GraphStatisticsHandler h = g.getStatisticsHandler();
-		if (h != null) {
-			assertEquals(g.size(), h.getStatistic(Node.ANY, Node.ANY, Node.ANY));
+		if (h != null)
+		{
+			assertEquals(g.size(),
+					h.getStatistic(Node.ANY, Node.ANY, Node.ANY));
 		}
 	}
 
 	@ContractTest
-	public void testStatsWithConcreteTriple() {
+	public void testStatsWithConcreteTriple()
+	{
 		testStatsWithConcreteTriple(0, "x P y", "");
 	}
 
 	private void testStatsWithConcreteTriple(int expect, String triple,
-			String graph) {
+			String graph)
+	{
 		Graph g = graphWith(producer.newInstance(), graph);
 		GraphStatisticsHandler h = g.getStatisticsHandler();
-		if (h != null) {
+		if (h != null)
+		{
 			Triple t = triple(triple);
-			assertEquals(
-					expect,
-					h.getStatistic(t.getSubject(), t.getPredicate(),
-							t.getObject()));
+			assertEquals(expect, h.getStatistic(t.getSubject(),
+					t.getPredicate(), t.getObject()));
 		}
 	}
 
 	@ContractTest
-	public void testBrokenIndexes() {
-	    Graph g = graphWith(producer.newInstance(), "x R y; x S z");
-	    try {
-	    	txnBegin(g);
-	        ExtendedIterator<Triple> it = g.find(Node.ANY, Node.ANY,
-	                                             Node.ANY);
-	        txnRollback(g);
-	        it.removeNext();
-	        it.removeNext();
-	        txnBegin(g);
-	        assertFalse(g.find(node("x"), Node.ANY, Node.ANY).hasNext());
-	        assertFalse(g.find(Node.ANY, node("R"), Node.ANY).hasNext());
-	        assertFalse(g.find(Node.ANY, Node.ANY, node("y")).hasNext());
-	        txnRollback(g);
-	    } catch (UnsupportedOperationException e) {
-	        // No Iterator.remove
-	    }
+	public void testBrokenIndexes()
+	{
+		Graph g = graphWith(producer.newInstance(), "x R y; x S z");
+		try
+		{
+			txnBegin(g);
+			ExtendedIterator<Triple> it = g.find(Node.ANY, Node.ANY, Node.ANY);
+			txnRollback(g);
+			it.removeNext();
+			it.removeNext();
+			txnBegin(g);
+			assertFalse(g.find(node("x"), Node.ANY, Node.ANY).hasNext());
+			assertFalse(g.find(Node.ANY, node("R"), Node.ANY).hasNext());
+			assertFalse(g.find(Node.ANY, Node.ANY, node("y")).hasNext());
+			txnRollback(g);
+		} catch (UnsupportedOperationException e)
+		{
+			// No Iterator.remove
+		}
 	}
 
 	@ContractTest
-	public void testBrokenSubject() {
+	public void testBrokenSubject()
+	{
 		Graph g = graphWith(producer.newInstance(), "x brokenSubject y");
-		try {
-	    	txnBegin(g);
-		    ExtendedIterator<Triple> it = g.find(node("x"), Node.ANY, Node.ANY);
-	        txnRollback(g);
-		    it.removeNext();
-	    	txnBegin(g);
-		    assertFalse(g.find(Node.ANY, Node.ANY, Node.ANY).hasNext());
-	        txnRollback(g);
-		} catch (UnsupportedOperationException e) {
-		    // No Iterator.remove
+		try
+		{
+			txnBegin(g);
+			ExtendedIterator<Triple> it = g.find(node("x"), Node.ANY, Node.ANY);
+			txnRollback(g);
+			it.removeNext();
+			txnBegin(g);
+			assertFalse(g.find(Node.ANY, Node.ANY, Node.ANY).hasNext());
+			txnRollback(g);
+		} catch (UnsupportedOperationException e)
+		{
+			// No Iterator.remove
 		}
 	}
 
 	@ContractTest
-	public void testBrokenPredicate() {
+	public void testBrokenPredicate()
+	{
 		Graph g = graphWith(producer.newInstance(), "x brokenPredicate y");
-		try {
-	    	txnBegin(g);
-		    ExtendedIterator<Triple> it = g.find(Node.ANY, node("brokenPredicate"), Node.ANY);
-	        txnRollback(g);
-		    it.removeNext();
-	    	txnBegin(g);
-		    assertFalse(g.find(Node.ANY, Node.ANY, Node.ANY).hasNext());
-	        txnRollback(g);
-		} catch (UnsupportedOperationException e) {
-		    // No Iterator.remove
+		try
+		{
+			txnBegin(g);
+			ExtendedIterator<Triple> it = g.find(Node.ANY,
+					node("brokenPredicate"), Node.ANY);
+			txnRollback(g);
+			it.removeNext();
+			txnBegin(g);
+			assertFalse(g.find(Node.ANY, Node.ANY, Node.ANY).hasNext());
+			txnRollback(g);
+		} catch (UnsupportedOperationException e)
+		{
+			// No Iterator.remove
 		}
 	}
 
 	@ContractTest
-	public void testBrokenObject() {
-	    Graph g = graphWith(producer.newInstance(), "x brokenObject y");
-
-	    try {
-	    	txnBegin(g);
-	        ExtendedIterator<Triple> it = g.find(Node.ANY, Node.ANY, node("y"));
-	        txnRollback(g);
-	        it.removeNext();
-	    	txnBegin(g);
-	        assertFalse(g.find(Node.ANY, Node.ANY, Node.ANY).hasNext());
-	    	txnRollback(g);
-
-	    } catch (UnsupportedOperationException e) {
-	        // No Iterator.remove
-	    }
+	public void testBrokenObject()
+	{
+		Graph g = graphWith(producer.newInstance(), "x brokenObject y");
+
+		try
+		{
+			txnBegin(g);
+			ExtendedIterator<Triple> it = g.find(Node.ANY, Node.ANY, node("y"));
+			txnRollback(g);
+			it.removeNext();
+			txnBegin(g);
+			assertFalse(g.find(Node.ANY, Node.ANY, Node.ANY).hasNext());
+			txnRollback(g);
+
+		} catch (UnsupportedOperationException e)
+		{
+			// No Iterator.remove
+		}
 
 	}
 

http://git-wip-us.apache.org/repos/asf/jena/blob/02ae2697/jena-core/src/test/java/org/apache/jena/graph/GraphWithPerformContractTest.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/graph/GraphWithPerformContractTest.java b/jena-core/src/test/java/org/apache/jena/graph/GraphWithPerformContractTest.java
index 713f0be..6f39228 100644
--- a/jena-core/src/test/java/org/apache/jena/graph/GraphWithPerformContractTest.java
+++ b/jena-core/src/test/java/org/apache/jena/graph/GraphWithPerformContractTest.java
@@ -39,28 +39,33 @@ import org.xenei.junit.contract.IProducer;
  * non-notifying versions of add and delete.
  */
 @Contract(GraphWithPerform.class)
-public class GraphWithPerformContractTest<T extends GraphWithPerform> {
+public class GraphWithPerformContractTest<T extends GraphWithPerform>
+{
 
 	private IProducer<T> producer;
 
 	// Recording listener for tests
 	protected RecordingGraphListener GL = new RecordingGraphListener();
 
-	public GraphWithPerformContractTest() {
+	public GraphWithPerformContractTest()
+	{
 	}
 
 	@Contract.Inject
-	public void setGraphWithPerformContractTestProducer(IProducer<T> producer) {
+	public void setGraphWithPerformContractTestProducer(IProducer<T> producer)
+	{
 		this.producer = producer;
 	}
 
 	@After
-	public final void afterGraphWithPerformContractTest() {
+	public final void afterGraphWithPerformContractTest()
+	{
 		producer.cleanUp();
 	}
 
 	@ContractTest
-	public void testPerformAdd_Triple() {
+	public void testPerformAdd_Triple()
+	{
 		GraphWithPerform g = (GraphWithPerform) graphWith(
 				producer.newInstance(), "S P O; S2 P2 O2");
 		g.getEventManager().register(GL);
@@ -68,17 +73,12 @@ public class GraphWithPerformContractTest<T extends GraphWithPerform> {
 		g.performAdd(triple("S3 P3 O3"));
 		txnCommit(g);
 		GL.assertEmpty();
-		txnRun( g, new Runnable() {
-			
-			@Override
-			public void run()
-			{
-		assertTrue(g.contains(triple("S3 P3 O3")));
-			}});
+		txnRun(g, () -> assertTrue(g.contains(triple("S3 P3 O3"))));
 	}
 
 	@ContractTest
-	public void testPerformDelete_Triple() {
+	public void testPerformDelete_Triple()
+	{
 		GraphWithPerform g = (GraphWithPerform) graphWith(
 				producer.newInstance(), "S P O; S2 P2 O2");
 		g.getEventManager().register(GL);
@@ -86,14 +86,8 @@ public class GraphWithPerformContractTest<T extends GraphWithPerform> {
 		g.performDelete(triple("S2 P2 O2"));
 		txnCommit(g);
 		GL.assertEmpty();
-		txnRun( g, new Runnable() {
-			
-			@Override
-			public void run()
-			{
-		assertFalse(g.contains(triple("S2 P2 O2")));
-			}});
-		
+		txnRun(g, () -> assertFalse(g.contains(triple("S2 P2 O2"))));
+
 	}
 
 }


[10/10] jena git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/jena

Posted by cl...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/jena


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

Branch: refs/heads/master
Commit: fcaff18816068224f5d12e8d439274a0cebb0972
Parents: 8567e27 0bcaaaa
Author: Claude Warren <cl...@apache.org>
Authored: Wed Feb 7 20:29:20 2018 +0000
Committer: Claude Warren <cl...@apache.org>
Committed: Wed Feb 7 20:29:20 2018 +0000

----------------------------------------------------------------------
 jena-core/pom.xml                                            | 5 +++++
 .../java/org/apache/jena/datatypes/xsd/XSDbase64Binary.java  | 5 ++---
 .../java/org/apache/jena/datatypes/xsd/XSDhexBinary.java     | 8 +++++---
 .../apache/jena/reasoner/rulesys/builtins/MakeSkolem.java    | 5 ++---
 .../java/org/apache/jena/graph/test/TestTypedLiterals.java   | 5 ++---
 .../src/main/java/org/apache/jena/fuseki/FusekiLib.java      | 4 +++-
 6 files changed, 19 insertions(+), 13 deletions(-)
----------------------------------------------------------------------



[06/10] jena git commit: Merge branch 'master' into FixGraphContractTestTransactionUsage

Posted by cl...@apache.org.
Merge branch 'master' into FixGraphContractTestTransactionUsage

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

Branch: refs/heads/master
Commit: 363e95818710ec45352bf8e1330dcf3bf1f59686
Parents: 185badb 20b78ae
Author: Claude Warren <cl...@apache.org>
Authored: Sun Jan 21 12:13:23 2018 +0000
Committer: Claude Warren <cl...@apache.org>
Committed: Sun Jan 21 12:13:23 2018 +0000

----------------------------------------------------------------------
 .../apache/jena/sparql/resultset/JSONInput.java | 170 ++++++++++++++++++-
 1 file changed, 169 insertions(+), 1 deletion(-)
----------------------------------------------------------------------



[05/10] jena git commit: Updated version number for junit-contracts to 0.2.0

Posted by cl...@apache.org.
Updated version number for junit-contracts to 0.2.0


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

Branch: refs/heads/master
Commit: 185badb543a6290ae533a0142f416ab4f466043b
Parents: fa23c25
Author: Claude Warren <cl...@apache.org>
Authored: Sat Jan 20 21:29:36 2018 +0000
Committer: Claude Warren <cl...@apache.org>
Committed: Sat Jan 20 21:29:36 2018 +0000

----------------------------------------------------------------------
 jena-core/pom.xml | 1 -
 pom.xml           | 2 +-
 2 files changed, 1 insertion(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/185badb5/jena-core/pom.xml
----------------------------------------------------------------------
diff --git a/jena-core/pom.xml b/jena-core/pom.xml
index 2afd219..b883411 100644
--- a/jena-core/pom.xml
+++ b/jena-core/pom.xml
@@ -71,7 +71,6 @@
       <groupId>org.xenei</groupId>
       <artifactId>junit-contracts</artifactId>
       <scope>test</scope>
-      <version>0.1.8-SNAPSHOT</version>
     </dependency>
 
     <dependency>

http://git-wip-us.apache.org/repos/asf/jena/blob/185badb5/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 85ebfa8..86b743d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -100,7 +100,7 @@
 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <maven.build.timestamp.format>yyyy-MM-dd'T'HH:mm:ssZ</maven.build.timestamp.format>
-    <ver.contract.tests>0.1.7</ver.contract.tests>
+    <ver.contract.tests>0.2.0</ver.contract.tests>
   </properties>
 
   <issueManagement>