Author: thomasm
Date: Tue Sep 11 14:35:25 2012
New Revision: 1383432

URL: http://svn.apache.org/viewvc?rev=1383432&view=rev
Log:
OAK-28 Query implementation: improved JQOM compatibility

Modified:
    
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/ChildNodeImpl.java
    
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/ColumnImpl.java
    
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/DescendantNodeImpl.java
    
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/FullTextSearchImpl.java
    
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/FullTextSearchScoreImpl.java
    
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/NodeLocalNameImpl.java
    
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/NodeNameImpl.java
    
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/PropertyExistenceImpl.java
    
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/PropertyValueImpl.java
    
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/QOMNode.java
    
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/QueryObjectModelFactoryImpl.java
    
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/SameNodeImpl.java
    
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/SelectorImpl.java
    
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/query/qom/QomTest.java

Modified: 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/ChildNodeImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/ChildNodeImpl.java?rev=1383432&r1=1383431&r2=1383432&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/ChildNodeImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/ChildNodeImpl.java
 Tue Sep 11 14:35:25 2012
@@ -45,9 +45,13 @@ public class ChildNodeImpl extends Const
 
     @Override
     public String toString() {
-        return "ISCHILDNODE(" +
-                quoteSelectorName(selectorName) + ", " +
-                quotePath(parentPath) + ')';
+        StringBuilder buff = new StringBuilder();
+        buff.append("ISCHILDNODE(");
+        if (selectorName != null) {
+            buff.append(quoteSelectorName(selectorName)).append(", ");
+        }
+        buff.append(quotePath(parentPath)).append(')');
+        return buff.toString();
     }
 
     @Override

Modified: 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/ColumnImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/ColumnImpl.java?rev=1383432&r1=1383431&r2=1383432&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/ColumnImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/ColumnImpl.java
 Tue Sep 11 14:35:25 2012
@@ -50,12 +50,20 @@ public class ColumnImpl extends QOMNode 
 
     @Override
     public String toString() {
+        StringBuilder buff = new StringBuilder();
+        if (selectorName != null) {
+            buff.append(quoteSelectorName(selectorName));
+            buff.append('.');
+        }
         if (propertyName != null) {
-            return quoteSelectorName(selectorName) + '.' +
-                    quotePropertyName(propertyName) +
-                    " AS " + quoteColumnName(columnName);
+            buff.append(quotePropertyName(propertyName));
+        } else {
+            buff.append('*');
+        }
+        if (columnName != null) {
+            buff.append(" AS ").append(quoteColumnName(columnName));
         }
-        return quoteSelectorName(selectorName) + ".*";
+        return buff.toString();
     }
 
 }

Modified: 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/DescendantNodeImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/DescendantNodeImpl.java?rev=1383432&r1=1383431&r2=1383432&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/DescendantNodeImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/DescendantNodeImpl.java
 Tue Sep 11 14:35:25 2012
@@ -45,9 +45,13 @@ public class DescendantNodeImpl extends 
 
     @Override
     public String toString() {
-        return "ISDESCENDANTNODE(" +
-                quoteSelectorName(selectorName) + ", " +
-                quotePath(ancestorPath) + ')';
+        StringBuilder buff = new StringBuilder();
+        buff.append("ISDESCENDANTNODE(");
+        if (selectorName != null) {
+            buff.append(quoteSelectorName(selectorName)).append(", ");
+        }
+        buff.append(quotePath(ancestorPath)).append(')');
+        return buff.toString();
     }
 
     @Override

Modified: 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/FullTextSearchImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/FullTextSearchImpl.java?rev=1383432&r1=1383431&r2=1383432&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/FullTextSearchImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/FullTextSearchImpl.java
 Tue Sep 11 14:35:25 2012
@@ -55,14 +55,16 @@ public class FullTextSearchImpl extends 
     public String toString() {
         StringBuilder builder = new StringBuilder();
         builder.append("CONTAINS(");
-        builder.append(quoteSelectorName(selectorName));
-        if (propertyName != null) {
+        if (selectorName != null) {
+            builder.append(quoteSelectorName(selectorName));
             builder.append('.');
+        }
+        if (propertyName != null) {
             builder.append(quotePropertyName(propertyName));
-            builder.append(", ");
         } else {
-            builder.append(".*, ");
+            builder.append('*');
         }
+        builder.append(", ");
         builder.append(getFullTextSearchExpression());
         builder.append(')');
         return builder.toString();

Modified: 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/FullTextSearchScoreImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/FullTextSearchScoreImpl.java?rev=1383432&r1=1383431&r2=1383432&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/FullTextSearchScoreImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/FullTextSearchScoreImpl.java
 Tue Sep 11 14:35:25 2012
@@ -38,6 +38,9 @@ public class FullTextSearchScoreImpl ext
 
     @Override
     public String toString() {
+        if (selectorName == null) {
+            return "SCORE()";
+        }
         return "SCORE(" + quoteSelectorName(selectorName) + ')';
     }
 

Modified: 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/NodeLocalNameImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/NodeLocalNameImpl.java?rev=1383432&r1=1383431&r2=1383432&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/NodeLocalNameImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/NodeLocalNameImpl.java
 Tue Sep 11 14:35:25 2012
@@ -38,6 +38,9 @@ public class NodeLocalNameImpl extends D
 
     @Override
     public String toString() {
+        if (selectorName == null) {
+            return "LOCALNAME()";
+        }
         return "LOCALNAME(" + quoteSelectorName(selectorName) + ')';
     }
 

Modified: 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/NodeNameImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/NodeNameImpl.java?rev=1383432&r1=1383431&r2=1383432&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/NodeNameImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/NodeNameImpl.java
 Tue Sep 11 14:35:25 2012
@@ -38,6 +38,9 @@ public class NodeNameImpl extends Dynami
 
     @Override
     public String toString() {
+        if (selectorName == null) {
+            return "NAME()";
+        }
         return "NAME(" + quoteSelectorName(selectorName) + ')';
     }
 

Modified: 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/PropertyExistenceImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/PropertyExistenceImpl.java?rev=1383432&r1=1383431&r2=1383432&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/PropertyExistenceImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/PropertyExistenceImpl.java
 Tue Sep 11 14:35:25 2012
@@ -45,9 +45,17 @@ public class PropertyExistenceImpl exten
 
     @Override
     public String toString() {
-        return quoteSelectorName(selectorName) + '.' +
-                quotePropertyName(propertyName) +
-                " IS NOT NULL";
+        StringBuilder buff = new StringBuilder();
+        if (selectorName != null) {
+            buff.append(quoteSelectorName(selectorName)).append('.');
+        }
+        if (propertyName != null) {
+            buff.append(quotePropertyName(propertyName));
+        } else {
+            buff.append("*");
+        }
+        buff.append(" IS NOT NULL");
+        return buff.toString();
     }
 
     @Override

Modified: 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/PropertyValueImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/PropertyValueImpl.java?rev=1383432&r1=1383431&r2=1383432&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/PropertyValueImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/PropertyValueImpl.java
 Tue Sep 11 14:35:25 2012
@@ -45,8 +45,16 @@ public class PropertyValueImpl extends D
 
     @Override
     public String toString() {
-        return quoteSelectorName(selectorName) + '.' +
-                quotePropertyName(propertyName);
+        StringBuilder buff = new StringBuilder();
+        if (selectorName != null) {
+            buff.append(quoteSelectorName(selectorName)).append('.');
+        }
+        if (propertyName != null) {
+            buff.append(quotePropertyName(propertyName));
+        } else {
+            buff.append("*");
+        }
+        return buff.toString();
     }
 
 }

Modified: 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/QOMNode.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/QOMNode.java?rev=1383432&r1=1383431&r2=1383432&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/QOMNode.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/QOMNode.java
 Tue Sep 11 14:35:25 2012
@@ -22,7 +22,7 @@ package org.apache.jackrabbit.oak.jcr.qu
  * The base class for all QOM nodes.
  */
 abstract class QOMNode {
-
+    
     protected String protect(Object expression) {
         String str = expression.toString();
         if (str.indexOf(' ') >= 0) {

Modified: 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/QueryObjectModelFactoryImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/QueryObjectModelFactoryImpl.java?rev=1383432&r1=1383431&r2=1383432&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/QueryObjectModelFactoryImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/QueryObjectModelFactoryImpl.java
 Tue Sep 11 14:35:25 2012
@@ -13,6 +13,7 @@
  */
 package org.apache.jackrabbit.oak.jcr.query.qom;
 
+import javax.jcr.RepositoryException;
 import javax.jcr.Value;
 import javax.jcr.ValueFactory;
 import javax.jcr.query.qom.ChildNode;
@@ -82,20 +83,22 @@ public class QueryObjectModelFactoryImpl
     }
 
     @Override
-    public ChildNodeJoinCondition childNodeJoinCondition(String 
childSelectorName, String parentSelectorName)
-            {
+    public ChildNodeJoinCondition childNodeJoinCondition(
+            String childSelectorName, String parentSelectorName) {
         return new ChildNodeJoinConditionImpl(childSelectorName, 
parentSelectorName);
     }
 
     @Override
-    public Column column(String selectorName, String propertyName, String 
columnName) {
-        return new ColumnImpl(selectorName, propertyName, columnName);
+    public Column column(String selectorName, 
+            String propertyName, String columnName) throws RepositoryException 
{
+        return new ColumnImpl(selectorName, getOakName(propertyName), 
columnName);
     }
 
     @Override
-    public Comparison comparison(DynamicOperand operand1, String operator, 
StaticOperand operand2)
-            {
-        return new ComparisonImpl((DynamicOperandImpl) operand1, 
Operator.getOperatorByName(operator), (StaticOperandImpl) operand2);
+    public Comparison comparison(DynamicOperand operand1, 
+            String operator, StaticOperand operand2) {
+        return new ComparisonImpl((DynamicOperandImpl) operand1, 
+                Operator.getOperatorByName(operator), (StaticOperandImpl) 
operand2);
     }
 
     @Override
@@ -104,9 +107,11 @@ public class QueryObjectModelFactoryImpl
     }
 
     @Override
-    public DescendantNodeJoinCondition descendantNodeJoinCondition(String 
descendantSelectorName,
+    public DescendantNodeJoinCondition descendantNodeJoinCondition(
+            String descendantSelectorName,
             String ancestorSelectorName) {
-        return new DescendantNodeJoinConditionImpl(descendantSelectorName, 
ancestorSelectorName);
+        return new DescendantNodeJoinConditionImpl(
+                descendantSelectorName, ancestorSelectorName);
     }
 
     @Override
@@ -115,15 +120,18 @@ public class QueryObjectModelFactoryImpl
     }
 
     @Override
-    public EquiJoinCondition equiJoinCondition(String selector1Name, String 
property1Name, String selector2Name,
-            String property2Name) {
-        return new EquiJoinConditionImpl(selector1Name, property1Name, 
selector2Name, property2Name);
+    public EquiJoinCondition equiJoinCondition(
+            String selector1Name, String property1Name, 
+            String selector2Name, String property2Name) throws 
RepositoryException {
+        return new EquiJoinConditionImpl(selector1Name, 
getOakName(property1Name), 
+                selector2Name, getOakName(property2Name));
     }
 
     @Override
     public FullTextSearch fullTextSearch(String selectorName, String 
propertyName,
-            StaticOperand fullTextSearchExpression) {
-        return new FullTextSearchImpl(selectorName, propertyName, 
(StaticOperandImpl) fullTextSearchExpression);
+            StaticOperand fullTextSearchExpression) throws RepositoryException 
{
+        return new FullTextSearchImpl(selectorName, getOakName(propertyName), 
+                (StaticOperandImpl) fullTextSearchExpression);
     }
 
     @Override
@@ -133,7 +141,8 @@ public class QueryObjectModelFactoryImpl
 
     @Override
     public Join join(Source left, Source right, String joinType, JoinCondition 
joinCondition) {
-        return new JoinImpl((SourceImpl) left, (SourceImpl) right, 
JoinType.getJoinTypeByName(joinType), (JoinConditionImpl) joinCondition);
+        return new JoinImpl((SourceImpl) left, (SourceImpl) right, 
+                JoinType.getJoinTypeByName(joinType), (JoinConditionImpl) 
joinCondition);
     }
 
     @Override
@@ -172,13 +181,16 @@ public class QueryObjectModelFactoryImpl
     }
 
     @Override
-    public PropertyExistence propertyExistence(String selectorName, String 
propertyName) {
-        return new PropertyExistenceImpl(selectorName, propertyName);
+    public PropertyExistence propertyExistence(String selectorName, 
+            String propertyName) throws RepositoryException {
+        return new PropertyExistenceImpl(selectorName, 
+                getOakName(propertyName));
     }
 
     @Override
-    public PropertyValue propertyValue(String selectorName, String 
propertyName) {
-        return new PropertyValueImpl(selectorName, propertyName);
+    public PropertyValue propertyValue(String selectorName, 
+            String propertyName) throws RepositoryException {
+        return new PropertyValueImpl(selectorName, getOakName(propertyName));
     }
 
     @Override
@@ -187,13 +199,15 @@ public class QueryObjectModelFactoryImpl
     }
 
     @Override
-    public SameNodeJoinCondition sameNodeJoinCondition(String selector1Name, 
String selector2Name, String selector2Path) {
+    public SameNodeJoinCondition sameNodeJoinCondition(String selector1Name, 
+            String selector2Name, String selector2Path) {
         return new SameNodeJoinConditionImpl(selector1Name, selector2Name, 
selector2Path);
     }
 
     @Override
-    public Selector selector(String nodeTypeName, String selectorName) {
-        return new SelectorImpl(nodeTypeName, selectorName);
+    public Selector selector(String nodeTypeName, String selectorName) 
+            throws RepositoryException {
+        return new SelectorImpl(getOakName(nodeTypeName), selectorName);
     }
 
     @Override
@@ -202,10 +216,19 @@ public class QueryObjectModelFactoryImpl
     }
 
     @Override
-    public QueryObjectModel createQuery(Source source, Constraint constraint, 
Ordering[] orderings, Column[] columns) {
-        QueryObjectModelImpl qom = new QueryObjectModelImpl(queryManager, 
valueFactory, source, constraint, orderings, columns);
+    public QueryObjectModel createQuery(Source source, Constraint constraint, 
+            Ordering[] orderings, Column[] columns) {
+        QueryObjectModelImpl qom = new QueryObjectModelImpl(queryManager, 
+                valueFactory, source, constraint, orderings, columns);
         qom.bindVariables();
         return qom;
     }
+    
+    private String getOakName(String jcrName) throws RepositoryException {
+        if (jcrName == null) {
+            return null;
+        }
+        return queryManager.getSessionDelegate().getOakNameOrThrow(jcrName);
+    }
 
 }

Modified: 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/SameNodeImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/SameNodeImpl.java?rev=1383432&r1=1383431&r2=1383432&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/SameNodeImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/SameNodeImpl.java
 Tue Sep 11 14:35:25 2012
@@ -45,8 +45,13 @@ public class SameNodeImpl extends Constr
 
     @Override
     public String toString() {
-        return "ISSAMENODE(" + quoteSelectorName(selectorName) +
-                ", " + quotePath(path) + ')';
+        StringBuilder buff = new StringBuilder();
+        buff.append("ISSAMENODE(");
+        if (selectorName != null) {
+            buff.append(quoteSelectorName(selectorName)).append(", ");
+        }
+        buff.append(quotePath(path)).append(')');
+        return buff.toString();
     }
 
     @Override

Modified: 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/SelectorImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/SelectorImpl.java?rev=1383432&r1=1383431&r2=1383432&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/SelectorImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/qom/SelectorImpl.java
 Tue Sep 11 14:35:25 2012
@@ -44,8 +44,12 @@ public class SelectorImpl extends Source
 
     @Override
     public String toString() {
-        return quoteNodeTypeName(nodeTypeName) + " AS " +
-                quoteSelectorName(selectorName);
+        StringBuilder buff = new StringBuilder();
+        buff.append(quoteNodeTypeName(nodeTypeName));
+        if (selectorName != null) {
+            buff.append(" AS ").append(quoteSelectorName(selectorName));
+        }
+        return buff.toString();
     }
 
 }

Modified: 
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/query/qom/QomTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/query/qom/QomTest.java?rev=1383432&r1=1383431&r2=1383432&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/query/qom/QomTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/query/qom/QomTest.java
 Tue Sep 11 14:35:25 2012
@@ -18,10 +18,12 @@
  */
 package org.apache.jackrabbit.oak.jcr.query.qom;
 
+import javax.jcr.PropertyType;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 import javax.jcr.Value;
 import javax.jcr.ValueFactory;
+import javax.jcr.nodetype.NodeType;
 import javax.jcr.query.Query;
 import javax.jcr.query.QueryManager;
 import javax.jcr.query.qom.And;
@@ -77,6 +79,33 @@ public class QomTest extends AbstractRep
         QueryManager qm = session.getWorkspace().getQueryManager();
         f = qm.getQOMFactory();
     }
+    
+    @Test
+    public void jcrNameConversion() throws RepositoryException {
+        assertEquals("[nt:base]", 
+                f.column(null, NodeType.NT_BASE, null).toString());
+        assertEquals("[s1].[nt:base] = [s2].[nt:base]", 
+                f.equiJoinCondition("s1", NodeType.NT_BASE, "s2", 
NodeType.NT_BASE).toString());
+        assertEquals("CONTAINS([nt:base], null)", 
+                f.fullTextSearch(null, NodeType.NT_BASE, null).toString());
+        assertEquals("CAST('nt:base' AS NAME)", 
+                f.literal(vf.createValue(NodeType.NT_BASE, 
PropertyType.NAME)).toString());
+        assertEquals("[nt:base] IS NOT NULL", 
+                f.propertyExistence(null, NodeType.NT_BASE).toString());
+        assertEquals("[nt:base]", 
+                f.propertyValue(null, NodeType.NT_BASE).toString());
+        assertEquals("[nt:base]", 
+                f.selector(NodeType.NT_BASE, null).toString());
+        
+        Source source1 = f.selector(NodeType.NT_BASE, "selector");
+        Column[] columns = new Column[] { f.column("selector", null, null) };
+        Constraint constraint2 = f.childNode("selector", "/");
+        QueryObjectModel qom = f.createQuery(source1, constraint2, null,
+                columns);
+        assertEquals("select [selector].* from " + 
+                "[nt:base] AS [selector] " + 
+                "where ISCHILDNODE([selector], [/])", qom.toString());
+    }
 
     @Test
     public void and() throws RepositoryException {
@@ -110,6 +139,8 @@ public class QomTest extends AbstractRep
         assertEquals("selectorName", cn.getSelectorName());
         assertEquals("parentPath", cn.getParentPath());
         assertEquals("ISCHILDNODE([selectorName], [parentPath])", 
cn.toString());
+        
+        assertEquals("ISCHILDNODE([p])", f.childNode(null, "p").toString());
     }
 
     @Test
@@ -129,6 +160,15 @@ public class QomTest extends AbstractRep
         assertEquals("propertyName", c.getPropertyName());
         assertEquals("columnName", c.getColumnName());
         assertEquals("[selectorName].[propertyName] AS [columnName]", 
c.toString());
+        
+        assertEquals("[p]", f.column(null, "p", null).toString());
+        assertEquals("[p] AS [c]", f.column(null, "p", "c").toString());
+        assertEquals("[s].[p]", f.column("s", "p", null).toString());
+        assertEquals("[s].[p] AS [c]", f.column("s", "p", "c").toString());
+        assertEquals("[s].* AS [c]", f.column("s", null, "c").toString());
+        assertEquals("* AS [c]", f.column(null, null, "c").toString());
+        assertEquals("*", f.column(null, null, null).toString());
+        assertEquals("[s].*", f.column("s", null, null).toString());
     }
 
     @Test
@@ -148,6 +188,9 @@ public class QomTest extends AbstractRep
         assertEquals("selectorName", d.getSelectorName());
         assertEquals("path", d.getAncestorPath());
         assertEquals("ISDESCENDANTNODE([selectorName], [path])", d.toString());
+        
+        assertEquals("ISDESCENDANTNODE([p])", 
+                f.descendantNode(null, "p").toString());
     }
 
     @Test
@@ -189,6 +232,11 @@ public class QomTest extends AbstractRep
         assertEquals("propertyName", x.getPropertyName());
         assertEquals(l, x.getFullTextSearchExpression());
         assertEquals("CONTAINS([selectorName].[propertyName], 1)", 
x.toString());
+        
+        assertEquals("CONTAINS([p], null)", f.fullTextSearch(null,  "p",  
null).toString());
+        assertEquals("CONTAINS([s].[p], null)", f.fullTextSearch("s",  "p",  
null).toString());
+        assertEquals("CONTAINS([s].*, null)", f.fullTextSearch("s",  null,  
null).toString());
+        assertEquals("CONTAINS(*, null)", f.fullTextSearch(null,  null,  
null).toString());
     }
 
     @Test
@@ -196,6 +244,9 @@ public class QomTest extends AbstractRep
         FullTextSearchScore x = f.fullTextSearchScore("selectorName");
         assertEquals("selectorName", x.getSelectorName());
         assertEquals("SCORE([selectorName])", x.toString());
+        
+        assertEquals("SCORE()", f.fullTextSearchScore(null).toString());
+
     }
 
     @Test
@@ -243,6 +294,7 @@ public class QomTest extends AbstractRep
         NodeLocalName n = f.nodeLocalName("selectorName");
         assertEquals("selectorName", n.getSelectorName());
         assertEquals("LOCALNAME([selectorName])", n.toString());
+        assertEquals("LOCALNAME()", f.nodeLocalName(null).toString());
     }
 
     @Test
@@ -250,6 +302,7 @@ public class QomTest extends AbstractRep
         NodeName n = f.nodeName("selectorName");
         assertEquals("selectorName", n.getSelectorName());
         assertEquals("NAME([selectorName])", n.toString());
+        assertEquals("NAME()", f.nodeName(null).toString());
     }
 
     @Test
@@ -258,6 +311,11 @@ public class QomTest extends AbstractRep
         Not n = f.not(c);
         assertEquals(c, n.getConstraint());
         assertEquals("[x].[c0] IS NOT NULL", c.toString());
+        
+        assertEquals("* IS NOT NULL", f.propertyExistence(null, 
null).toString());
+        assertEquals("[s].* IS NOT NULL", f.propertyExistence("s", 
null).toString());
+        assertEquals("[p] IS NOT NULL", f.propertyExistence(null, 
"p").toString());
+        assertEquals("[s].[p] IS NOT NULL", f.propertyExistence("s", 
"p").toString());
     }
 
     @Test
@@ -276,6 +334,15 @@ public class QomTest extends AbstractRep
         assertEquals("selectorName", pe.getSelectorName());
         assertEquals("propertyName", pe.getPropertyName());
         assertEquals("[selectorName].[propertyName] IS NOT NULL", 
pe.toString());
+        
+        assertEquals("* IS NOT NULL", 
+                f.propertyExistence(null, null).toString());
+        assertEquals("[s].* IS NOT NULL", 
+                f.propertyExistence("s", null).toString());
+        assertEquals("[p] IS NOT NULL", 
+                f.propertyExistence(null, "p").toString());
+        assertEquals("[s].[p] IS NOT NULL", 
+                f.propertyExistence("s", "p").toString());
     }
 
     @Test
@@ -284,6 +351,11 @@ public class QomTest extends AbstractRep
         assertEquals("selectorName", pv.getSelectorName());
         assertEquals("propertyName", pv.getPropertyName());
         assertEquals("[selectorName].[propertyName]", pv.toString());
+        
+        assertEquals("*", f.propertyValue(null, null).toString());
+        assertEquals("[s].*", f.propertyValue("s", null).toString());
+        assertEquals("[p]", f.propertyValue(null, "p").toString());
+        assertEquals("[s].[p]", f.propertyValue("s", "p").toString());
     }
 
     @Test
@@ -292,6 +364,10 @@ public class QomTest extends AbstractRep
         assertEquals("selectorName", s.getSelectorName());
         assertEquals("path", s.getPath());
         assertEquals("ISSAMENODE([selectorName], [path])", s.toString());
+        
+        assertEquals("ISSAMENODE([path])", f.sameNode(null, 
"path").toString());
+        assertEquals("ISSAMENODE([s], [path])", f.sameNode("s", 
"path").toString());
+
     }
 
     @Test
@@ -310,7 +386,8 @@ public class QomTest extends AbstractRep
         assertEquals("nodeTypeName", s.getNodeTypeName());
         assertEquals("selectorName", s.getSelectorName());
         assertEquals("[nodeTypeName] AS [selectorName]", s.toString());
-    }
+        assertEquals("[n]", f.selector("n",  null).toString());
+           }
 
     @Test
     public void upperCase() throws RepositoryException {


Reply via email to