You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vxquery.apache.org by vi...@apache.org on 2012/03/04 21:55:27 UTC

svn commit: r1296874 - in /incubator/vxquery/branches/vxquery_algebricks: vxquery-core/src/main/java/org/apache/vxquery/context/ vxquery-core/src/main/java/org/apache/vxquery/functions/ vxquery-core/src/main/java/org/apache/vxquery/util/ vxquery-core/s...

Author: vinayakb
Date: Sun Mar  4 20:55:27 2012
New Revision: 1296874

URL: http://svn.apache.org/viewvc?rev=1296874&view=rev
Log:
Added translation for validation expression. Removed Pair and reused the one from apache commons.

Removed:
    incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/util/Pair.java
Modified:
    incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/DelegatingStaticContextImpl.java
    incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/StaticContext.java
    incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/StaticContextImpl.java
    incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/functions/builtin-operators.xml
    incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/translator/XMLQueryTranslator.java
    incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/javacc/xquery-grammar.jj
    incubator/vxquery/branches/vxquery_algebricks/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/TestCaseResult.java

Modified: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/DelegatingStaticContextImpl.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/DelegatingStaticContextImpl.java?rev=1296874&r1=1296873&r2=1296874&view=diff
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/DelegatingStaticContextImpl.java (original)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/DelegatingStaticContextImpl.java Sun Mar  4 20:55:27 2012
@@ -21,13 +21,13 @@ import java.util.List;
 
 import javax.xml.namespace.QName;
 
+import org.apache.commons.lang3.tuple.Pair;
 import org.apache.vxquery.collations.Collation;
 import org.apache.vxquery.functions.Function;
 import org.apache.vxquery.types.AttributeType;
 import org.apache.vxquery.types.ElementType;
 import org.apache.vxquery.types.SchemaType;
 import org.apache.vxquery.types.SequenceType;
-import org.apache.vxquery.util.Pair;
 
 public abstract class DelegatingStaticContextImpl implements StaticContext {
     protected final StaticContext parent;

Modified: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/StaticContext.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/StaticContext.java?rev=1296874&r1=1296873&r2=1296874&view=diff
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/StaticContext.java (original)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/StaticContext.java Sun Mar  4 20:55:27 2012
@@ -21,13 +21,13 @@ import java.util.List;
 
 import javax.xml.namespace.QName;
 
+import org.apache.commons.lang3.tuple.Pair;
 import org.apache.vxquery.collations.Collation;
 import org.apache.vxquery.functions.Function;
 import org.apache.vxquery.types.AttributeType;
 import org.apache.vxquery.types.ElementType;
 import org.apache.vxquery.types.SchemaType;
 import org.apache.vxquery.types.SequenceType;
-import org.apache.vxquery.util.Pair;
 
 public interface StaticContext {
     public abstract DataspaceContext getDataspaceContext();

Modified: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/StaticContextImpl.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/StaticContextImpl.java?rev=1296874&r1=1296873&r2=1296874&view=diff
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/StaticContextImpl.java (original)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/context/StaticContextImpl.java Sun Mar  4 20:55:27 2012
@@ -26,13 +26,13 @@ import java.util.NoSuchElementException;
 
 import javax.xml.namespace.QName;
 
+import org.apache.commons.lang3.tuple.Pair;
 import org.apache.vxquery.collations.Collation;
 import org.apache.vxquery.functions.Function;
 import org.apache.vxquery.types.AttributeType;
 import org.apache.vxquery.types.ElementType;
 import org.apache.vxquery.types.SchemaType;
 import org.apache.vxquery.types.SequenceType;
-import org.apache.vxquery.util.Pair;
 
 public class StaticContextImpl implements StaticContext {
     private final StaticContext parent;
@@ -303,7 +303,7 @@ public class StaticContextImpl implement
 
     @Override
     public void registerModuleImport(String uri, List<String> locations) {
-        moduleImports.add(new Pair<String, List<String>>(uri, locations));
+        moduleImports.add(Pair.<String, List<String>> of(uri, locations));
     }
 
     @Override
@@ -326,7 +326,7 @@ public class StaticContextImpl implement
 
     @Override
     public void registerSchemaImport(String uri, List<String> locations) {
-        schemaImports.add(new Pair<String, List<String>>(uri, locations));
+        schemaImports.add(Pair.<String, List<String>> of(uri, locations));
     }
 
     @Override

Modified: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/functions/builtin-operators.xml
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/functions/builtin-operators.xml?rev=1296874&r1=1296873&r2=1296874&view=diff
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/functions/builtin-operators.xml (original)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/functions/builtin-operators.xml Sun Mar  4 20:55:27 2012
@@ -854,4 +854,16 @@
         <param name="arg" type="item()*"/>
         <return type="item()"/>
     </operator>
+
+    <!-- opext:validate-lax($arg as item()*) as item()* -->
+    <operator name="opext:validate-lax">
+        <param name="arg" type="item()*"/>
+        <return type="item()*"/>
+    </operator>
+
+    <!-- opext:validate-strict($arg as item()*) as item()* -->
+    <operator name="opext:validate-strict">
+        <param name="arg" type="item()*"/>
+        <return type="item()*"/>
+    </operator>
 </operators>

Modified: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/translator/XMLQueryTranslator.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/translator/XMLQueryTranslator.java?rev=1296874&r1=1296873&r2=1296874&view=diff
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/translator/XMLQueryTranslator.java (original)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/java/org/apache/vxquery/xmlquery/translator/XMLQueryTranslator.java Sun Mar  4 20:55:27 2012
@@ -116,6 +116,7 @@ import org.apache.vxquery.xmlquery.ast.T
 import org.apache.vxquery.xmlquery.ast.TypeExprNode;
 import org.apache.vxquery.xmlquery.ast.UnaryExprNode;
 import org.apache.vxquery.xmlquery.ast.UnorderedExprNode;
+import org.apache.vxquery.xmlquery.ast.ValidateExprNode;
 import org.apache.vxquery.xmlquery.ast.VarDeclNode;
 import org.apache.vxquery.xmlquery.ast.VarRefNode;
 import org.apache.vxquery.xmlquery.ast.VersionDeclNode;
@@ -922,7 +923,8 @@ public class XMLQueryTranslator {
                                 tCtx.pushVariableScope();
                                 LogicalVariable forLVar = newLogicalVariable();
                                 LogicalVariable posLVar = newLogicalVariable();
-                                UnnestOperator unnest = new UnnestOperator(forLVar, mutable(seq), posLVar, null);
+                                UnnestOperator unnest = new UnnestOperator(forLVar, mutable(ufce(
+                                        BuiltinOperators.ITERATE, seq)), posLVar, null);
                                 SequenceType forVarType = SequenceType.create(AnyItemType.INSTANCE,
                                         Quantifier.QUANT_ONE);
                                 if (fvdNode.getType() != null) {
@@ -1158,17 +1160,13 @@ public class XMLQueryTranslator {
                         sfce(BuiltinOperators.UNORDERED,
                                 vre(translateExpression(((UnorderedExprNode) value).getExpr(), tCtx))), tCtx);
 
-                /*
-                            case VALIDATE_EXPRESSION: {
-                                ValidateExprNode vNode = (ValidateExprNode) value;
-                                ValidateExpression.Mode mode = ValidateExpression.Mode.DEFAULT;
-                                if (vNode.getMode() != null) {
-                                    mode = XQueryConstants.ValidationMode.LAX.equals(vNode.getMode()) ? ValidateExpression.Mode.LAX
-                                            : ValidateExpression.Mode.STRICT;
-                                }
-                                return new ValidateExpression(currCtx, translateExpression(vNode.getExpr()), mode);
-                            }
-                */
+            case VALIDATE_EXPRESSION: {
+                ValidateExprNode vNode = (ValidateExprNode) value;
+                XQueryConstants.ValidationMode mode = vNode.getMode();
+                Function fn = mode == null || XQueryConstants.ValidationMode.STRICT.equals(mode) ? BuiltinOperators.VALIDATE_STRICT
+                        : BuiltinOperators.VALIDATE_LAX;
+                return createAssignment(sfce(fn, vre(translateExpression(vNode.getExpr(), tCtx))), tCtx);
+            }
             default:
                 throw new IllegalStateException("Unknown node: " + value.getTag());
 
@@ -1262,6 +1260,8 @@ public class XMLQueryTranslator {
                     vars.add(var);
                     exprs.add(mutable(afce(BuiltinOperators.SEQUENCE, false, ctxExpr)));
                     AggregateOperator aop = new AggregateOperator(vars, exprs);
+                    aop.getInputs().add(mutable(tCtx.op));
+                    tCtx.op = aop;
                     tCtx = tCtx.popContext();
                     ctxExpr = vre(var);
                     ctxExpr = sfce(asc ? BuiltinOperators.SORT_DISTINCT_NODES_ASC_OR_ATOMICS
@@ -1279,7 +1279,8 @@ public class XMLQueryTranslator {
                 BuiltinTypeRegistry.XS_INTEGER, Quantifier.QUANT_ONE), lastLVar));
         LogicalVariable forLVar = newLogicalVariable();
         LogicalVariable posLVar = newLogicalVariable();
-        UnnestOperator unnest = new UnnestOperator(forLVar, mutable(vre(seqLVar)), posLVar, null);
+        UnnestOperator unnest = new UnnestOperator(forLVar, mutable(ufce(BuiltinOperators.ITERATE, vre(seqLVar))),
+                posLVar, null);
         SequenceType forVarType = SequenceType.create(AnyItemType.INSTANCE, Quantifier.QUANT_ONE);
         XQueryVariable forVar = new XQueryVariable(XMLQueryCompilerConstants.DOT_VAR_NAME, forVarType, forLVar);
         tCtx.varScope.registerVariable(forVar);
@@ -1737,16 +1738,6 @@ public class XMLQueryTranslator {
         }
     }
 
-    private static class ExpressionTranslationResult {
-        private ILogicalOperator op;
-        private LogicalVariable var;
-
-        public ExpressionTranslationResult(ILogicalOperator op, LogicalVariable var) {
-            this.op = op;
-            this.var = var;
-        }
-    }
-
     private interface IVariableScope {
         public IVariableScope getParentScope();
 

Modified: incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/javacc/xquery-grammar.jj
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/javacc/xquery-grammar.jj?rev=1296874&r1=1296873&r2=1296874&view=diff
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/javacc/xquery-grammar.jj (original)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-core/src/main/javacc/xquery-grammar.jj Sun Mar  4 20:55:27 2012
@@ -24,10 +24,12 @@ PARSER_BEGIN(XMLQuery)
 
 package org.apache.vxquery.xmlquery.query;
 
+import org.apache.commons.lang3.tuple.Pair;
+
 import org.apache.vxquery.xmlquery.ast.*;
 import org.apache.vxquery.context.*;
 import org.apache.vxquery.exceptions.*;
-import org.apache.vxquery.util.*;
+import org.apache.vxquery.util.SourceLocation;
 
 import java.math.*;
 import java.util.*;
@@ -1049,7 +1051,7 @@ ASTNode ComparisonExpr(): 
             | opPair = GeneralComp()
             | opPair = NodeComp()
         ) temp = FTContainsExpr() {
-            result = createInfixExpr(opPair.first, result, temp, opPair.second);
+            result = createInfixExpr(opPair.getLeft(), result, temp, opPair.getRight());
         }
     )? {
         return result;
@@ -1333,7 +1335,7 @@ Pair<Token, InfixExprNode.InfixOperator>
             op = InfixExprNode.InfixOperator.GENERAL_GE;
         }
     ) {
-        return new Pair<Token, InfixExprNode.InfixOperator>(start, op);
+        return Pair.<Token, InfixExprNode.InfixOperator> of(start, op);
     }
 }
 
@@ -1369,7 +1371,7 @@ Pair<Token, InfixExprNode.InfixOperator>
             op = InfixExprNode.InfixOperator.VALUE_GE;
         }
     ) {
-        return new Pair<Token, InfixExprNode.InfixOperator>(start, op);
+        return Pair.<Token, InfixExprNode.InfixOperator> of(start, op);
     }
 }
 
@@ -1393,7 +1395,7 @@ Pair<Token, InfixExprNode.InfixOperator>
             op = InfixExprNode.InfixOperator.FOLLOWS;
         }
     ) {
-        return new Pair<Token, InfixExprNode.InfixOperator>(start, op);
+        return Pair.<Token, InfixExprNode.InfixOperator> of(start, op);
     }
 }
 
@@ -1569,8 +1571,8 @@ AxisStepNode ForwardStep():
 }
 {
     LOOKAHEAD(2) aPair = ForwardAxis() nt = NodeTest() {
-        AxisStepNode as = new AxisStepNode(createSourceLocation(aPair.first));
-        as.setAxis(aPair.second);
+        AxisStepNode as = new AxisStepNode(createSourceLocation(aPair.getLeft()));
+        as.setAxis(aPair.getRight());
         as.setNodeTest(nt);
         return as;
     }
@@ -1608,7 +1610,7 @@ Pair<Token, AxisStepNode.Axis> ForwardAx
             axis = AxisStepNode.Axis.FOLLOWING;
         }
     ) {
-        return new Pair<Token, AxisStepNode.Axis>(t, axis);
+        return Pair.<Token, AxisStepNode.Axis> of(t, axis);
     }
 }
 
@@ -1635,8 +1637,8 @@ AxisStepNode ReverseStep()   :
 }
 {
     aPair = ReverseAxis() nt = NodeTest() {
-        AxisStepNode as = new AxisStepNode(createSourceLocation(aPair.first));
-        as.setAxis(aPair.second);
+        AxisStepNode as = new AxisStepNode(createSourceLocation(aPair.getLeft()));
+        as.setAxis(aPair.getRight());
         as.setNodeTest(nt);
         return as;
     }
@@ -1668,7 +1670,7 @@ Pair<Token, AxisStepNode.Axis> ReverseAx
             axis = AxisStepNode.Axis.ANCESTOR_OR_SELF;
         }
     ) {
-        return new Pair<Token, AxisStepNode.Axis>(t, axis);
+        return Pair.<Token, AxisStepNode.Axis> of(t, axis);
     }
 }
 

Modified: incubator/vxquery/branches/vxquery_algebricks/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/TestCaseResult.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/branches/vxquery_algebricks/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/TestCaseResult.java?rev=1296874&r1=1296873&r2=1296874&view=diff
==============================================================================
--- incubator/vxquery/branches/vxquery_algebricks/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/TestCaseResult.java (original)
+++ incubator/vxquery/branches/vxquery_algebricks/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/TestCaseResult.java Sun Mar  4 20:55:27 2012
@@ -21,8 +21,8 @@ import java.io.StringWriter;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import org.apache.commons.lang3.tuple.Pair;
 import org.apache.vxquery.exceptions.SystemException;
-import org.apache.vxquery.util.Pair;
 
 public class TestCaseResult {
     private static final int DISPLAY_LEN = 1000;
@@ -97,10 +97,10 @@ public class TestCaseResult {
                                 result = result.substring(m.end()).trim();
                             }
                             Pair<Boolean, String> cmp = textCompare(expResult, result);
-                            report = cmp.second;
-                            state = cmp.first ? State.EXPECTED_RESULT_GOT_SAME_RESULT
+                            report = cmp.getRight();
+                            state = cmp.getLeft() ? State.EXPECTED_RESULT_GOT_SAME_RESULT
                                     : State.EXPECTED_RESULT_GOT_DIFFERENT_RESULT;
-                            if (cmp.first) {
+                            if (cmp.getLeft()) {
                                 break;
                             }
                         }
@@ -119,9 +119,9 @@ public class TestCaseResult {
             System.err.println("Result  : " + cmp);
         }
         if (cmp) {
-            return new Pair<Boolean, String>(Boolean.TRUE, "Got expected result");
+            return Pair.<Boolean, String> of(Boolean.TRUE, "Got expected result");
         } else {
-            return new Pair<Boolean, String>(Boolean.FALSE, "Expected: " + truncate(expRes) + " Got: "
+            return Pair.<Boolean, String> of(Boolean.FALSE, "Expected: " + truncate(expRes) + " Got: "
                     + truncate(actRes));
         }
     }