Repository: vxquery Updated Branches: refs/heads/master b6f0f7d74 -> fa0b77a84
Updating libjn:descendant-arrays Project: http://git-wip-us.apache.org/repos/asf/vxquery/repo Commit: http://git-wip-us.apache.org/repos/asf/vxquery/commit/fa0b77a8 Tree: http://git-wip-us.apache.org/repos/asf/vxquery/tree/fa0b77a8 Diff: http://git-wip-us.apache.org/repos/asf/vxquery/diff/fa0b77a8 Branch: refs/heads/master Commit: fa0b77a8444631ac70315c9a525b229d5c98e5b7 Parents: b6f0f7d Author: Christina Pavlopoulou <[email protected]> Authored: Thu Jul 28 10:23:05 2016 -0700 Committer: Christina Pavlopoulou <[email protected]> Committed: Thu Jul 28 10:23:05 2016 -0700 ---------------------------------------------------------------------- ...nDescendantArraysScalarEvaluatorFactory.java | 34 +++++++++++++++----- .../Json/Libraries/descendant_arrays3.txt | 2 ++ .../XQuery/Json/Libraries/descendant_arrays3.xq | 21 ++++++++++++ .../test/resources/cat/LibrariesInJSONiq.xml | 5 +++ 4 files changed, 54 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/vxquery/blob/fa0b77a8/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/LibjnDescendantArraysScalarEvaluatorFactory.java ---------------------------------------------------------------------- diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/LibjnDescendantArraysScalarEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/LibjnDescendantArraysScalarEvaluatorFactory.java index 7896555..4899d9b 100644 --- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/LibjnDescendantArraysScalarEvaluatorFactory.java +++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/LibjnDescendantArraysScalarEvaluatorFactory.java @@ -50,7 +50,6 @@ public class LibjnDescendantArraysScalarEvaluatorFactory extends AbstractTaggedV throws AlgebricksException { final SequencePointable sp = (SequencePointable) SequencePointable.FACTORY.createPointable(); final ArrayPointable ap = (ArrayPointable) ArrayPointable.FACTORY.createPointable(); - final ObjectPointable op = (ObjectPointable) ObjectPointable.FACTORY.createPointable(); final UTF8StringPointable stringp = (UTF8StringPointable) UTF8StringPointable.FACTORY.createPointable(); final SequenceBuilder sb = new SequenceBuilder(); final ArrayBackedValueStorage abvs = new ArrayBackedValueStorage(); @@ -117,21 +116,40 @@ public class LibjnDescendantArraysScalarEvaluatorFactory extends AbstractTaggedV } public void insideObject(TaggedValuePointable tvp) throws SystemException { - tvp.getValue(op); TaggedValuePointable tempTvp = ppool.takeOne(TaggedValuePointable.class); + ObjectPointable op = ppool.takeOne(ObjectPointable.class); + SequencePointable sp = ppool.takeOne(SequencePointable.class); + tvp.getValue(op); try { op.getKeys(tvp); - tvp.getValue(stringp); - op.getValue(stringp, tempTvp); + if (tvp.getTag() == ValueTag.XS_STRING_TAG) { + tvp.getValue(stringp); + op.getValue(stringp, tempTvp); + checkFunction(tempTvp); + } else if (tvp.getTag() == ValueTag.SEQUENCE_TAG) { + tvp.getValue(sp); + int size = sp.getEntryCount(); + for (int i = 0; i < size; i++) { + sp.getEntry(i, tempTvp); + tempTvp.getValue(stringp); + op.getValue(stringp, tempTvp); + checkFunction(tempTvp); + } + } } catch (IOException e1) { throw new SystemException(ErrorCode.SYSE0001, e1); } - if (tempTvp.getTag() == ValueTag.OBJECT_TAG) { - insideObject(tempTvp); + ppool.giveBack(sp); + ppool.giveBack(op); + ppool.giveBack(tempTvp); + } + + public void checkFunction(TaggedValuePointable tvp) throws SystemException { + if (tvp.getTag() == ValueTag.OBJECT_TAG) { + insideObject(tvp); } else { - nested(tempTvp, ap); + nested(tvp, ap); } - ppool.giveBack(tempTvp); } }; } http://git-wip-us.apache.org/repos/asf/vxquery/blob/fa0b77a8/vxquery-xtest/src/test/resources/ExpectedTestResults/Json/Libraries/descendant_arrays3.txt ---------------------------------------------------------------------- diff --git a/vxquery-xtest/src/test/resources/ExpectedTestResults/Json/Libraries/descendant_arrays3.txt b/vxquery-xtest/src/test/resources/ExpectedTestResults/Json/Libraries/descendant_arrays3.txt new file mode 100644 index 0000000..57ad8a3 --- /dev/null +++ b/vxquery-xtest/src/test/resources/ExpectedTestResults/Json/Libraries/descendant_arrays3.txt @@ -0,0 +1,2 @@ +[1,2] +[3,4] http://git-wip-us.apache.org/repos/asf/vxquery/blob/fa0b77a8/vxquery-xtest/src/test/resources/Queries/XQuery/Json/Libraries/descendant_arrays3.xq ---------------------------------------------------------------------- diff --git a/vxquery-xtest/src/test/resources/Queries/XQuery/Json/Libraries/descendant_arrays3.xq b/vxquery-xtest/src/test/resources/Queries/XQuery/Json/Libraries/descendant_arrays3.xq new file mode 100644 index 0000000..7f4fad8 --- /dev/null +++ b/vxquery-xtest/src/test/resources/Queries/XQuery/Json/Libraries/descendant_arrays3.xq @@ -0,0 +1,21 @@ +(: Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. :) + +(: JSONiq libjn:descendant_arrays :) +( + libjn:descendant-arrays({"foo": [1,2], "bar":[3,4]}) +) http://git-wip-us.apache.org/repos/asf/vxquery/blob/fa0b77a8/vxquery-xtest/src/test/resources/cat/LibrariesInJSONiq.xml ---------------------------------------------------------------------- diff --git a/vxquery-xtest/src/test/resources/cat/LibrariesInJSONiq.xml b/vxquery-xtest/src/test/resources/cat/LibrariesInJSONiq.xml index 4c18447..fcae9a9 100644 --- a/vxquery-xtest/src/test/resources/cat/LibrariesInJSONiq.xml +++ b/vxquery-xtest/src/test/resources/cat/LibrariesInJSONiq.xml @@ -30,6 +30,11 @@ <query name="descendant_arrays2" date="2016-07-19"/> <output-file compare="Text">descendant_arrays2.txt</output-file> </test-case> + <test-case name="descendant-arrays3" FilePath="Json/Libraries/" Creator="Christina Pavlopoulou"> + <description>Json Libraries.</description> + <query name="descendant_arrays3" date="2016-07-28"/> + <output-file compare="Text">descendant_arrays3.txt</output-file> + </test-case> <test-case name="flatten" FilePath="Json/Libraries/" Creator="Christina Pavlopoulou"> <description>Json Libraries.</description> <query name="flatten" date="2016-07-20"/>
