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