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 2013/01/17 07:56:34 UTC

svn commit: r1434567 - /incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/step/DescendantOrSelfPathStepScalarEvaluator.java

Author: prestonc
Date: Thu Jan 17 06:56:34 2013
New Revision: 1434567

URL: http://svn.apache.org/viewvc?rev=1434567&view=rev
Log:
Found a way to get the self part of descendant-or-self working.

Modified:
    incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/step/DescendantOrSelfPathStepScalarEvaluator.java

Modified: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/step/DescendantOrSelfPathStepScalarEvaluator.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/step/DescendantOrSelfPathStepScalarEvaluator.java?rev=1434567&r1=1434566&r2=1434567&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/step/DescendantOrSelfPathStepScalarEvaluator.java (original)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/step/DescendantOrSelfPathStepScalarEvaluator.java Thu Jan 17 06:56:34 2013
@@ -22,6 +22,7 @@ import org.apache.vxquery.datamodel.acce
 import org.apache.vxquery.datamodel.values.ValueTag;
 import org.apache.vxquery.exceptions.ErrorCode;
 import org.apache.vxquery.exceptions.SystemException;
+import org.apache.vxquery.types.DocumentType;
 import org.apache.vxquery.types.ElementType;
 import org.apache.vxquery.types.Quantifier;
 import org.apache.vxquery.types.SequenceType;
@@ -60,14 +61,17 @@ public class DescendantOrSelfPathStepSca
             ntp.getRootNode(rootTVP);
 
             // Solve for self.
-            if (args[1].getTag() != ValueTag.XS_INT_TAG) {
-                throw new IllegalArgumentException("Expected int value tag, got: " + args[1].getTag());
+            switch (rootTVP.getTag()) {
+                case ValueTag.DOCUMENT_NODE_TAG:
+                    setNodeTest(SequenceType.create(DocumentType.ANYDOCUMENT, Quantifier.QUANT_ONE));
+                    break;
+                case ValueTag.ELEMENT_NODE_TAG:
+                    setNodeTest(SequenceType.create(ElementType.ANYELEMENT, Quantifier.QUANT_ONE));
+                    break;
+                default:
+                    throw new SystemException(ErrorCode.SYSE0001);
             }
-            args[1].getValue(ip);
-            int typeCode = ip.getInteger();
-            SequenceType sType = dCtx.getStaticContext().lookupSequenceType(typeCode);
-            setNodeTest(sType);
-            rootTVP.set(itemTvp);
+            itemTvp.set(rootTVP);
             if (matches()) {
                 appendNodeToResult();
             }