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

Reply via email to