You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vxquery.apache.org by pr...@apache.org on 2016/08/13 01:06:02 UTC
vxquery git commit: Less code for libjn:descendant-arrays
Repository: vxquery
Updated Branches:
refs/heads/master 8129616e9 -> 782ab8842
Less code for 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/782ab884
Tree: http://git-wip-us.apache.org/repos/asf/vxquery/tree/782ab884
Diff: http://git-wip-us.apache.org/repos/asf/vxquery/diff/782ab884
Branch: refs/heads/master
Commit: 782ab8842971bbf9efe6a50ac78ee542339763da
Parents: 8129616
Author: Christina Pavlopoulou <cp...@ucr.edu>
Authored: Fri Aug 12 17:24:17 2016 -0700
Committer: Preston Carman <pr...@apache.org>
Committed: Fri Aug 12 18:03:13 2016 -0700
----------------------------------------------------------------------
.../LibjnDescendantArraysScalarEvaluator.java | 45 +++++++
...nDescendantArraysScalarEvaluatorFactory.java | 121 +------------------
2 files changed, 46 insertions(+), 120 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/vxquery/blob/782ab884/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/LibjnDescendantArraysScalarEvaluator.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/LibjnDescendantArraysScalarEvaluator.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/LibjnDescendantArraysScalarEvaluator.java
new file mode 100644
index 0000000..f2a5524
--- /dev/null
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/LibjnDescendantArraysScalarEvaluator.java
@@ -0,0 +1,45 @@
+/*
+* 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.
+*/
+package org.apache.vxquery.runtime.functions.json;
+
+import java.io.IOException;
+
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
+import org.apache.vxquery.datamodel.accessors.jsonitem.ObjectPointable;
+
+public class LibjnDescendantArraysScalarEvaluator extends AbstractLibjnDescendantScalarEvaluator {
+
+ public LibjnDescendantArraysScalarEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args) {
+ super(ctx, args);
+ }
+
+ @Override
+ protected void processPair(TaggedValuePointable tvp, ObjectPointable op) throws IOException {
+ tvp.getValue(stringp);
+ op.getValue(stringp, tvp);
+ }
+
+ @Override
+ protected void processArray(TaggedValuePointable tvp) throws IOException {
+ sb.addItem(tvp);
+ super.processArray(tvp);
+ }
+
+}
+
http://git-wip-us.apache.org/repos/asf/vxquery/blob/782ab884/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 4899d9b..5692664 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
@@ -16,25 +16,10 @@
*/
package org.apache.vxquery.runtime.functions.json;
-import java.io.IOException;
-
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.api.context.IHyracksTaskContext;
-import org.apache.hyracks.data.std.api.IPointable;
-import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
-import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
-import org.apache.vxquery.datamodel.accessors.SequencePointable;
-import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
-import org.apache.vxquery.datamodel.accessors.jsonitem.ArrayPointable;
-import org.apache.vxquery.datamodel.accessors.jsonitem.ObjectPointable;
-import org.apache.vxquery.datamodel.builders.sequence.SequenceBuilder;
-import org.apache.vxquery.datamodel.values.ValueTag;
-import org.apache.vxquery.datamodel.values.XDMConstants;
-import org.apache.vxquery.exceptions.ErrorCode;
-import org.apache.vxquery.exceptions.SystemException;
-import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluator;
import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluatorFactory;
public class LibjnDescendantArraysScalarEvaluatorFactory extends AbstractTaggedValueArgumentScalarEvaluatorFactory {
@@ -48,110 +33,6 @@ public class LibjnDescendantArraysScalarEvaluatorFactory extends AbstractTaggedV
@Override
protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args)
throws AlgebricksException {
- final SequencePointable sp = (SequencePointable) SequencePointable.FACTORY.createPointable();
- final ArrayPointable ap = (ArrayPointable) ArrayPointable.FACTORY.createPointable();
- final UTF8StringPointable stringp = (UTF8StringPointable) UTF8StringPointable.FACTORY.createPointable();
- final SequenceBuilder sb = new SequenceBuilder();
- final ArrayBackedValueStorage abvs = new ArrayBackedValueStorage();
-
- return new AbstractTaggedValueArgumentScalarEvaluator(args) {
-
- @Override
- protected void evaluate(TaggedValuePointable[] args, IPointable result) throws SystemException {
- abvs.reset();
- sb.reset(abvs);
- TaggedValuePointable tvp = args[0];
- if (tvp.getTag() == ValueTag.SEQUENCE_TAG) {
- TaggedValuePointable tempTvp = ppool.takeOne(TaggedValuePointable.class);
- tvp.getValue(sp);
- int size = sp.getEntryCount();
- for (int i = 0; i < size; i++) {
- sp.getEntry(i, tempTvp);
- if (tempTvp.getTag() == ValueTag.ARRAY_TAG) {
- nested(tempTvp, ap);
- }
- if (tempTvp.getTag() == ValueTag.OBJECT_TAG) {
- insideObject(tempTvp);
- }
- }
- ppool.giveBack(tempTvp);
- } else if (tvp.getTag() == ValueTag.ARRAY_TAG) {
- nested(tvp, ap);
- } else if (tvp.getTag() == ValueTag.OBJECT_TAG) {
- insideObject(tvp);
- } else {
- XDMConstants.setEmptySequence(tvp);
- }
- try {
- sb.finish();
- result.set(abvs);
- } catch (IOException e) {
- throw new SystemException(ErrorCode.SYSE0001, e);
- }
- }
-
- public void nested(TaggedValuePointable tvp, ArrayPointable ap) throws SystemException {
- TaggedValuePointable tempTvp = ppool.takeOne(TaggedValuePointable.class);
- ArrayPointable tempAp = ppool.takeOne(ArrayPointable.class);
- appendSequence(tvp, ap);
- int size = ap.getEntryCount();
- for (int i = 0; i < size; i++) {
-
- ap.getEntry(i, tempTvp);
- if (tempTvp.getTag() == ValueTag.ARRAY_TAG) {
- nested(tempTvp, tempAp);
- }
- }
- ppool.giveBack(tempTvp);
- ppool.giveBack(tempAp);
- }
-
- public void appendSequence(TaggedValuePointable tvp, ArrayPointable ap) throws SystemException {
- tvp.getValue(ap);
- try {
- sb.addItem(tvp);
- } catch (IOException e) {
- throw new SystemException(ErrorCode.SYSE0001, e);
- }
- }
-
- public void insideObject(TaggedValuePointable tvp) throws SystemException {
- 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);
- 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);
- }
- 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(tvp, ap);
- }
- }
- };
+ return new LibjnDescendantArraysScalarEvaluator(ctx, args);
}
-
}