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 2015/08/07 22:38:32 UTC

jena git commit: Fix for JENA-971

Repository: jena
Updated Branches:
  refs/heads/master 7e7bf2b3a -> b328842dc


Fix for JENA-971


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

Branch: refs/heads/master
Commit: b328842dca96e363c48d5116990bf09ac62eced1
Parents: 7e7bf2b
Author: Claude Warren <cl...@apache.org>
Authored: Fri Aug 7 21:37:43 2015 +0100
Committer: Claude Warren <cl...@apache.org>
Committed: Fri Aug 7 21:37:43 2015 +0100

----------------------------------------------------------------------
 .../arq/querybuilder/handlers/WhereHandler.java | 14 +++++++--
 .../querybuilder/handlers/WhereHandlerTest.java | 33 ++++++++++++++++++++
 2 files changed, 45 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/b328842d/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/handlers/WhereHandler.java
----------------------------------------------------------------------
diff --git a/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/handlers/WhereHandler.java b/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/handlers/WhereHandler.java
index e8cb7c0..d7e4ba4 100644
--- a/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/handlers/WhereHandler.java
+++ b/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/handlers/WhereHandler.java
@@ -250,12 +250,22 @@ public class WhereHandler implements Handler {
 			{
 				union = (ElementUnion) lastElement;
 			}
-		}	
-		if (union == null)
+			else 
+			{
+				// clauses is not empty and is not a union so it is the left side of the union.
+				union = new ElementUnion();
+				union.addElement( clause );
+				query.setQueryPattern( union );
+			}
+		}
+		else
 		{
+			// add the union as the first element in the clause.
 			union = new ElementUnion();
 			clause.addElement( union );
 		}
+		// if there are projected vars then do a full blown subquery
+		// otherwise just add the clause.
 		if (subQuery.getVars().size() > 0) {
 			union.addElement(makeSubQuery(subQuery));
 		} else {

http://git-wip-us.apache.org/repos/asf/jena/blob/b328842d/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/WhereHandlerTest.java
----------------------------------------------------------------------
diff --git a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/WhereHandlerTest.java b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/WhereHandlerTest.java
index 2a093e1..f1bc12d 100644
--- a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/WhereHandlerTest.java
+++ b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/WhereHandlerTest.java
@@ -188,6 +188,22 @@ public class WhereHandlerTest extends AbstractHandlerTest {
 				+ uri("one") + SPACE + uri("two") + SPACE + uri("three")
 				+ OPT_SPACE + CLOSE_CURLY, query.toString());
 	}
+	
+	@Test
+	public void testAddUnionToExisting() {
+		handler.addWhere( new Triple( NodeFactory.createURI( "s"), NodeFactory.createURI("p"),
+				NodeFactory.createURI("o")));
+		SelectBuilder sb = new SelectBuilder();
+		sb.addWhere(new Triple(NodeFactory.createURI("one"), NodeFactory
+				.createURI("two"), NodeFactory.createURI("three")));
+
+		handler.addUnion(sb);
+		assertContainsRegex(WHERE + OPEN_CURLY + OPEN_CURLY 
+				+ uri("s") + SPACE+ uri("p") + SPACE + uri("o")+CLOSE_CURLY
+				+OPT_SPACE + UNION + OPEN_CURLY
+				+ uri("one") + SPACE + uri("two") + SPACE + uri("three")
+				+ OPT_SPACE + CLOSE_CURLY+ CLOSE_CURLY, query.toString());
+	}
 
 	@Test
 	public void testAddUnionWithVar() {
@@ -203,6 +219,23 @@ public class WhereHandlerTest extends AbstractHandlerTest {
 	}
 
 	@Test
+	public void testAddUnionToExistingWithVar() {
+		handler.addWhere( new Triple( NodeFactory.createURI( "s"), NodeFactory.createURI("p"),
+				NodeFactory.createURI("o")));
+		SelectBuilder sb = new SelectBuilder().addVar("x").addWhere(
+				new Triple(NodeFactory.createURI("one"), NodeFactory
+						.createURI("two"), NodeFactory.createURI("three")));
+
+		handler.addUnion(sb);
+		assertContainsRegex(WHERE + OPEN_CURLY + OPEN_CURLY 
+				+ uri("s") + SPACE+ uri("p") + SPACE + uri("o")+CLOSE_CURLY
+				+OPT_SPACE 				
+				+ UNION + OPEN_CURLY + SELECT
+				+ var("x") + SPACE + WHERE + OPEN_CURLY + uri("one") + SPACE
+				+ uri("two") + SPACE + uri("three") + OPT_SPACE
+				+ CLOSE_CURLY, query.toString());
+	}
+	@Test
 	public void addGraph() {
 
 		WhereHandler handler2 = new WhereHandler(new Query());