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());