You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by re...@apache.org on 2007/10/30 16:59:46 UTC

svn commit: r590131 - /jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/xpath/XPathQueryBuilder.java

Author: reschke
Date: Tue Oct 30 08:59:41 2007
New Revision: 590131

URL: http://svn.apache.org/viewvc?rev=590131&view=rev
Log:
JCR-1169 Distribution of commons classes - avoid re-formatting Name constants inside query parser

Modified:
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/xpath/XPathQueryBuilder.java

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/xpath/XPathQueryBuilder.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/xpath/XPathQueryBuilder.java?rev=590131&r1=590130&r2=590131&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/xpath/XPathQueryBuilder.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/xpath/XPathQueryBuilder.java Tue Oct 30 08:59:41 2007
@@ -16,6 +16,7 @@
  */
 package org.apache.jackrabbit.core.query.xpath;
 
+import org.apache.jackrabbit.conversion.IllegalNameException;
 import org.apache.jackrabbit.conversion.MalformedPathException;
 import org.apache.jackrabbit.conversion.NameResolver;
 import org.apache.jackrabbit.core.query.DerefQueryNode;
@@ -770,11 +771,12 @@
      */
     private QueryNode createFunction(SimpleNode node, QueryNode queryNode) {
         // find out function name
-        String fName = ((SimpleNode) node.jjtGetChild(0)).getValue();
-        fName = fName.substring(0, fName.length() - 1);
+        String tmp = ((SimpleNode) node.jjtGetChild(0)).getValue();
+        String fName = tmp.substring(0, tmp.length() - 1);
         try {
-            if (resolver.getJCRName(FN_NOT).equals(fName)
-                    || resolver.getJCRName(FN_NOT_10).equals(fName)) {
+            Name funName = resolver.getQName(fName);
+            
+            if (FN_NOT.equals(funName) || FN_NOT_10.equals(funName)) {
                 if (queryNode instanceof NAryQueryNode) {
                     QueryNode not = factory.createNotQueryNode(queryNode);
                     ((NAryQueryNode) queryNode).addOperand(not);
@@ -789,7 +791,7 @@
                 } else {
                     exceptions.add(new InvalidQueryException("Unsupported location for function fn:not"));
                 }
-            } else if (resolver.getJCRName(XS_DATETIME).equals(fName)) {
+            } else if (XS_DATETIME.equals(funName)) {
                 // check arguments
                 if (node.jjtGetNumChildren() == 2) {
                     if (queryNode instanceof RelationQueryNode) {
@@ -815,7 +817,7 @@
                     // wrong number of arguments
                     exceptions.add(new InvalidQueryException("Wrong number of arguments for xs:dateTime"));
                 }
-            } else if (resolver.getJCRName(JCR_CONTAINS).equals(fName)) {
+            } else if (JCR_CONTAINS.equals(funName)) {
                 // check number of arguments
                 if (node.jjtGetNumChildren() == 3) {
                     if (queryNode instanceof NAryQueryNode) {
@@ -835,7 +837,7 @@
                     // wrong number of arguments
                     exceptions.add(new InvalidQueryException("Wrong number of arguments for jcr:contains"));
                 }
-            } else if (resolver.getJCRName(JCR_LIKE).equals(fName)) {
+            } else if (JCR_LIKE.equals(funName)) {
                 // check number of arguments
                 if (node.jjtGetNumChildren() == 3) {
                     if (queryNode instanceof NAryQueryNode) {
@@ -863,21 +865,21 @@
                     // wrong number of arguments
                     exceptions.add(new InvalidQueryException("Wrong number of arguments for jcr:like"));
                 }
-            } else if (resolver.getJCRName(FN_TRUE).equals(fName)) {
+            } else if (FN_TRUE.equals(funName)) {
                 if (queryNode.getType() == QueryNode.TYPE_RELATION) {
                     RelationQueryNode rel = (RelationQueryNode) queryNode;
                     rel.setStringValue("true");
                 } else {
                     exceptions.add(new InvalidQueryException("Unsupported location for true()"));
                 }
-            } else if (resolver.getJCRName(FN_FALSE).equals(fName)) {
+            } else if (FN_FALSE.equals(funName)) {
                 if (queryNode.getType() == QueryNode.TYPE_RELATION) {
                     RelationQueryNode rel = (RelationQueryNode) queryNode;
                     rel.setStringValue("false");
                 } else {
                     exceptions.add(new InvalidQueryException("Unsupported location for false()"));
                 }
-            } else if (resolver.getJCRName(FN_POSITION).equals(fName)) {
+            } else if (FN_POSITION.equals(funName)) {
                 if (queryNode.getType() == QueryNode.TYPE_RELATION) {
                     RelationQueryNode rel = (RelationQueryNode) queryNode;
                     if (rel.getOperation() == RelationQueryNode.OPERATION_EQ_GENERAL) {
@@ -891,7 +893,7 @@
                 } else {
                     exceptions.add(new InvalidQueryException("Unsupported location for position()"));
                 }
-            } else if (resolver.getJCRName(FN_FIRST).equals(fName)) {
+            } else if (FN_FIRST.equals(funName)) {
                 if (queryNode.getType() == QueryNode.TYPE_RELATION) {
                     ((RelationQueryNode) queryNode).setPositionValue(1);
                 } else if (queryNode.getType() == QueryNode.TYPE_LOCATION) {
@@ -899,7 +901,7 @@
                 } else {
                     exceptions.add(new InvalidQueryException("Unsupported location for first()"));
                 }
-            } else if (resolver.getJCRName(FN_LAST).equals(fName)) {
+            } else if (FN_LAST.equals(funName)) {
                 if (queryNode.getType() == QueryNode.TYPE_RELATION) {
                     ((RelationQueryNode) queryNode).setPositionValue(LocationStepQueryNode.LAST);
                 } else if (queryNode.getType() == QueryNode.TYPE_LOCATION) {
@@ -907,7 +909,7 @@
                 } else {
                     exceptions.add(new InvalidQueryException("Unsupported location for last()"));
                 }
-            } else if (resolver.getJCRName(JCR_DEREF).equals(fName)) {
+            } else if (JCR_DEREF.equals(funName)) {
                 // check number of arguments
                 if (node.jjtGetNumChildren() == 3) {
                     boolean descendant = false;
@@ -965,13 +967,13 @@
                         exceptions.add(new InvalidQueryException("Unsupported location for jcr:deref()"));
                     }
                 }
-            } else if (resolver.getJCRName(JCR_SCORE).equals(fName)) {
+            } else if (JCR_SCORE.equals(funName)) {
                 if (queryNode.getType() == QueryNode.TYPE_ORDER) {
                     createOrderSpec(node, (OrderQueryNode) queryNode);
                 } else {
                     exceptions.add(new InvalidQueryException("Unsupported location for jcr:score()"));
                 }
-            } else if (resolver.getJCRName(FN_LOWER_CASE).equals(fName)) {
+            } else if (FN_LOWER_CASE.equals(funName)) {
                 if (node.jjtGetNumChildren() == 2) {
                     if (queryNode.getType() == QueryNode.TYPE_RELATION) {
                         RelationQueryNode relNode = (RelationQueryNode) queryNode;
@@ -985,7 +987,7 @@
                 } else {
                     exceptions.add(new InvalidQueryException("Wrong number of argument for fn:lower-case()"));
                 }
-            } else if (resolver.getJCRName(FN_UPPER_CASE).equals(fName)) {
+            } else if (FN_UPPER_CASE.equals(funName)) {
                 if (node.jjtGetNumChildren() == 2) {
                     if (queryNode.getType() == QueryNode.TYPE_RELATION) {
                         RelationQueryNode relNode = (RelationQueryNode) queryNode;
@@ -999,7 +1001,7 @@
                 } else {
                     exceptions.add(new InvalidQueryException("Unsupported location for fn:upper-case()"));
                 }
-            } else if (resolver.getJCRName(REP_SIMILAR).equals(fName)) {
+            } else if (REP_SIMILAR.equals(funName)) {
                 if (node.jjtGetNumChildren() == 3) {
                     if (queryNode instanceof NAryQueryNode) {
                         NAryQueryNode parent = (NAryQueryNode) queryNode;
@@ -1024,7 +1026,7 @@
                     exceptions.add(new InvalidQueryException(
                             "Wrong number of arguments for rep:similar()"));
                 }
-            } else if (resolver.getJCRName(REP_SPELLCHECK).equals(fName)
+            } else if (REP_SPELLCHECK.equals(funName)
                     && queryNode.getType() != QueryNode.TYPE_PATH) {
                 if (node.jjtGetNumChildren() == 2) {
                     if (queryNode instanceof NAryQueryNode) {
@@ -1073,6 +1075,8 @@
                 exceptions.add(new InvalidQueryException("Unsupported function: " + fName));
             }
         } catch (NamespaceException e) {
+            exceptions.add(e);
+        } catch (IllegalNameException e) {
             exceptions.add(e);
         }
         return queryNode;