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 <[email protected]> Authored: Fri Aug 7 21:37:43 2015 +0100 Committer: Claude Warren <[email protected]> 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());
