You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by mr...@apache.org on 2008/07/16 12:11:30 UTC

svn commit: r677226 - in /jackrabbit/trunk: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/ jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/ jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/...

Author: mreutegg
Date: Wed Jul 16 03:11:29 2008
New Revision: 677226

URL: http://svn.apache.org/viewvc?rev=677226&view=rev
Log:
JCR-1674: Provide means for exception handling for QueryNodeVisitor implementations

Modified:
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/LuceneQueryBuilder.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryImpl.java
    jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/AndQueryNode.java
    jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/DefaultQueryNodeVisitor.java
    jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/DerefQueryNode.java
    jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/ExactQueryNode.java
    jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/LocationStepQueryNode.java
    jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/NAryQueryNode.java
    jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/NodeTypeQueryNode.java
    jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/NotQueryNode.java
    jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/OrQueryNode.java
    jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/OrderQueryNode.java
    jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/PathQueryNode.java
    jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/PropertyFunctionQueryNode.java
    jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/QueryNode.java
    jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/QueryNodeVisitor.java
    jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/QueryRootNode.java
    jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/QueryTreeDump.java
    jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/RelationQueryNode.java
    jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/TextsearchQueryNode.java
    jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/TraversingQueryNodeVisitor.java
    jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/sql/QueryFormat.java
    jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/xpath/QueryFormat.java
    jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/xpath/SimpleNode.java
    jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/xpath/XPathQueryBuilder.java

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/LuceneQueryBuilder.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/LuceneQueryBuilder.java?rev=677226&r1=677225&r2=677226&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/LuceneQueryBuilder.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/LuceneQueryBuilder.java Wed Jul 16 03:11:29 2008
@@ -16,12 +16,26 @@
  */
 package org.apache.jackrabbit.core.query.lucene;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.jcr.NamespaceException;
+import javax.jcr.PropertyType;
+import javax.jcr.RepositoryException;
+import javax.jcr.nodetype.NodeType;
+import javax.jcr.nodetype.NodeTypeIterator;
+import javax.jcr.nodetype.NodeTypeManager;
+import javax.jcr.query.InvalidQueryException;
+
 import org.apache.jackrabbit.core.HierarchyManager;
 import org.apache.jackrabbit.core.HierarchyManagerImpl;
 import org.apache.jackrabbit.core.NodeId;
+import org.apache.jackrabbit.core.RepositoryImpl;
 import org.apache.jackrabbit.core.SearchManager;
 import org.apache.jackrabbit.core.SessionImpl;
-import org.apache.jackrabbit.core.RepositoryImpl;
 import org.apache.jackrabbit.core.query.PropertyTypeRegistry;
 import org.apache.jackrabbit.core.query.lucene.fulltext.ParseException;
 import org.apache.jackrabbit.core.query.lucene.fulltext.QueryParser;
@@ -55,26 +69,13 @@
 import org.apache.jackrabbit.util.XMLChar;
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.index.Term;
-import org.apache.lucene.search.BooleanClause.Occur;
 import org.apache.lucene.search.BooleanQuery;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.TermQuery;
+import org.apache.lucene.search.BooleanClause.Occur;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.jcr.NamespaceException;
-import javax.jcr.PropertyType;
-import javax.jcr.RepositoryException;
-import javax.jcr.nodetype.NodeType;
-import javax.jcr.nodetype.NodeTypeIterator;
-import javax.jcr.nodetype.NodeTypeManager;
-import javax.jcr.query.InvalidQueryException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.Iterator;
-import java.util.List;
-
 /**
  * Implements a query builder that takes an abstract query tree and creates
  * a lucene {@link org.apache.lucene.search.Query} tree that can be executed
@@ -91,57 +92,57 @@
     /**
      * Root node of the abstract query tree
      */
-    private QueryRootNode root;
+    private final QueryRootNode root;
 
     /**
      * Session of the user executing this query
      */
-    private SessionImpl session;
+    private final SessionImpl session;
 
     /**
      * The shared item state manager of the workspace.
      */
-    private ItemStateManager sharedItemMgr;
+    private final ItemStateManager sharedItemMgr;
 
     /**
      * A hierarchy manager based on {@link #sharedItemMgr} to resolve paths.
      */
-    private HierarchyManager hmgr;
+    private final HierarchyManager hmgr;
 
     /**
      * Namespace mappings to internal prefixes
      */
-    private NamespaceMappings nsMappings;
+    private final NamespaceMappings nsMappings;
 
     /**
      * Name and Path resolver
      */
-    private NamePathResolver resolver;
+    private final NamePathResolver resolver;
 
     /**
      * The analyzer instance to use for contains function query parsing
      */
-    private Analyzer analyzer;
+    private final Analyzer analyzer;
 
     /**
      * The property type registry.
      */
-    private PropertyTypeRegistry propRegistry;
+    private final PropertyTypeRegistry propRegistry;
 
     /**
      * The synonym provider or <code>null</code> if none is configured.
      */
-    private SynonymProvider synonymProvider;
+    private final SynonymProvider synonymProvider;
 
     /**
      * Wether the index format is new or old.
      */
-    private IndexFormatVersion indexFormatVersion;
+    private final IndexFormatVersion indexFormatVersion;
 
     /**
      * Exceptions thrown during tree translation
      */
-    private List exceptions = new ArrayList();
+    private final List exceptions = new ArrayList();
 
     /**
      * Creates a new <code>LuceneQueryBuilder</code> instance.
@@ -230,14 +231,15 @@
      * {@link org.apache.lucene.search.Query}.
      *
      * @return the lucene <code>Query</code>.
+     * @throws RepositoryException
      */
-    private Query createLuceneQuery() {
+    private Query createLuceneQuery() throws RepositoryException {
         return (Query) root.accept(this, null);
     }
 
     //---------------------< QueryNodeVisitor interface >-----------------------
 
-    public Object visit(QueryRootNode node, Object data) {
+    public Object visit(QueryRootNode node, Object data) throws RepositoryException {
         BooleanQuery root = new BooleanQuery();
 
         Query wrapped = root;
@@ -248,7 +250,7 @@
         return wrapped;
     }
 
-    public Object visit(OrQueryNode node, Object data) {
+    public Object visit(OrQueryNode node, Object data) throws RepositoryException {
         BooleanQuery orQuery = new BooleanQuery();
         Object[] result = node.acceptOperands(this, null);
         for (int i = 0; i < result.length; i++) {
@@ -258,7 +260,7 @@
         return orQuery;
     }
 
-    public Object visit(AndQueryNode node, Object data) {
+    public Object visit(AndQueryNode node, Object data) throws RepositoryException {
         Object[] result = node.acceptOperands(this, null);
         if (result.length == 0) {
             return null;
@@ -271,7 +273,7 @@
         return andQuery;
     }
 
-    public Object visit(NotQueryNode node, Object data) {
+    public Object visit(NotQueryNode node, Object data) throws RepositoryException {
         Object[] result = node.acceptOperands(this, null);
         if (result.length == 0) {
             return data;
@@ -449,7 +451,7 @@
         return null;
     }
 
-    public Object visit(PathQueryNode node, Object data) {
+    public Object visit(PathQueryNode node, Object data) throws RepositoryException {
         Query context = null;
         LocationStepQueryNode[] steps = node.getPathSteps();
         if (steps.length > 0) {
@@ -495,7 +497,7 @@
         return context;
     }
 
-    public Object visit(LocationStepQueryNode node, Object data) {
+    public Object visit(LocationStepQueryNode node, Object data) throws RepositoryException {
         Query context = (Query) data;
         BooleanQuery andQuery = new BooleanQuery();
 
@@ -578,7 +580,7 @@
         return andQuery;
     }
 
-    public Object visit(DerefQueryNode node, Object data) {
+    public Object visit(DerefQueryNode node, Object data) throws RepositoryException {
         Query context = (Query) data;
         if (context == null) {
             exceptions.add(new IllegalArgumentException("Unsupported query"));
@@ -614,7 +616,7 @@
         return context;
     }
 
-    public Object visit(RelationQueryNode node, Object data) {
+    public Object visit(RelationQueryNode node, Object data) throws RepositoryException {
         Query query;
         String[] stringValues = new String[1];
         switch (node.getValueType()) {

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryImpl.java?rev=677226&r1=677225&r2=677226&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryImpl.java Wed Jul 16 03:11:29 2008
@@ -16,6 +16,15 @@
  */
 package org.apache.jackrabbit.core.query.lucene;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.jcr.RepositoryException;
+import javax.jcr.nodetype.PropertyDefinition;
+import javax.jcr.query.InvalidQueryException;
+import javax.jcr.query.QueryResult;
+
 import org.apache.jackrabbit.core.ItemManager;
 import org.apache.jackrabbit.core.SessionImpl;
 import org.apache.jackrabbit.core.nodetype.NodeTypeImpl;
@@ -32,17 +41,9 @@
 import org.apache.jackrabbit.spi.commons.query.QueryNodeFactory;
 import org.apache.jackrabbit.spi.commons.query.QueryParser;
 import org.apache.jackrabbit.spi.commons.query.QueryRootNode;
+import org.apache.lucene.search.Query;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.apache.lucene.search.Query;
-
-import javax.jcr.RepositoryException;
-import javax.jcr.nodetype.PropertyDefinition;
-import javax.jcr.query.InvalidQueryException;
-import javax.jcr.query.QueryResult;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
 
 /**
  * Implements the {@link org.apache.jackrabbit.core.query.ExecutableQuery}
@@ -149,7 +150,7 @@
             final Name[] ntName = new Name[1];
             steps[steps.length - 1].acceptOperands(new DefaultQueryNodeVisitor() {
 
-                public Object visit(AndQueryNode node, Object data) {
+                public Object visit(AndQueryNode node, Object data) throws RepositoryException {
                     return node.acceptOperands(this, data);
                 }
 

Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/AndQueryNode.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/AndQueryNode.java?rev=677226&r1=677225&r2=677226&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/AndQueryNode.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/AndQueryNode.java Wed Jul 16 03:11:29 2008
@@ -16,6 +16,8 @@
  */
 package org.apache.jackrabbit.spi.commons.query;
 
+import javax.jcr.RepositoryException;
+
 /**
  * Implements a query node that defines an AND operation between arbitrary
  * other {@link QueryNode}s.
@@ -36,8 +38,9 @@
      * This method can return <code>null</code> to indicate that this
      * <code>AndQueryNode</code> does not contain any operands.
      * {@inheritDoc}
+     * @throws RepositoryException
      */
-    public Object accept(QueryNodeVisitor visitor, Object data) {
+    public Object accept(QueryNodeVisitor visitor, Object data) throws RepositoryException {
         return visitor.visit(this, data);
     }
 

Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/DefaultQueryNodeVisitor.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/DefaultQueryNodeVisitor.java?rev=677226&r1=677225&r2=677226&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/DefaultQueryNodeVisitor.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/DefaultQueryNodeVisitor.java Wed Jul 16 03:11:29 2008
@@ -16,61 +16,63 @@
  */
 package org.apache.jackrabbit.spi.commons.query;
 
+import javax.jcr.RepositoryException;
+
 /**
  * Implements the <code>QueryNodeVisitor</code> interface with default behaviour.
  * All methods are no-ops and return the <code>data</code> argument.
  */
 public class DefaultQueryNodeVisitor implements QueryNodeVisitor {
 
-    public Object visit(QueryRootNode node, Object data) {
+    public Object visit(QueryRootNode node, Object data) throws RepositoryException {
         return data;
     }
 
-    public Object visit(OrQueryNode node, Object data) {
+    public Object visit(OrQueryNode node, Object data) throws RepositoryException {
         return data;
     }
 
-    public Object visit(AndQueryNode node, Object data) {
+    public Object visit(AndQueryNode node, Object data) throws RepositoryException {
         return data;
     }
 
-    public Object visit(NotQueryNode node, Object data) {
+    public Object visit(NotQueryNode node, Object data) throws RepositoryException {
         return data;
     }
 
-    public Object visit(ExactQueryNode node, Object data) {
+    public Object visit(ExactQueryNode node, Object data) throws RepositoryException {
         return data;
     }
 
-    public Object visit(NodeTypeQueryNode node, Object data) {
+    public Object visit(NodeTypeQueryNode node, Object data) throws RepositoryException {
         return data;
     }
 
-    public Object visit(TextsearchQueryNode node, Object data) {
+    public Object visit(TextsearchQueryNode node, Object data) throws RepositoryException {
         return data;
     }
 
-    public Object visit(PathQueryNode node, Object data) {
+    public Object visit(PathQueryNode node, Object data) throws RepositoryException {
         return data;
     }
 
-    public Object visit(LocationStepQueryNode node, Object data) {
+    public Object visit(LocationStepQueryNode node, Object data) throws RepositoryException {
         return data;
     }
 
-    public Object visit(RelationQueryNode node, Object data) {
+    public Object visit(RelationQueryNode node, Object data) throws RepositoryException {
         return data;
     }
 
-    public Object visit(OrderQueryNode node, Object data) {
+    public Object visit(OrderQueryNode node, Object data) throws RepositoryException {
         return data;
     }
 
-    public Object visit(DerefQueryNode node, Object data) {
+    public Object visit(DerefQueryNode node, Object data) throws RepositoryException {
         return data;
     }
 
-    public Object visit(PropertyFunctionQueryNode node, Object data) {
+    public Object visit(PropertyFunctionQueryNode node, Object data) throws RepositoryException {
         return data;
     }
 }

Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/DerefQueryNode.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/DerefQueryNode.java?rev=677226&r1=677225&r2=677226&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/DerefQueryNode.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/DerefQueryNode.java Wed Jul 16 03:11:29 2008
@@ -16,6 +16,8 @@
  */
 package org.apache.jackrabbit.spi.commons.query;
 
+import javax.jcr.RepositoryException;
+
 import org.apache.jackrabbit.spi.Name;
 
 /**
@@ -69,8 +71,9 @@
 
     /**
      * {@inheritDoc}
+     * @throws RepositoryException
      */
-    public Object accept(QueryNodeVisitor visitor, Object data) {
+    public Object accept(QueryNodeVisitor visitor, Object data) throws RepositoryException {
         return visitor.visit(this, data);
     }
 

Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/ExactQueryNode.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/ExactQueryNode.java?rev=677226&r1=677225&r2=677226&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/ExactQueryNode.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/ExactQueryNode.java Wed Jul 16 03:11:29 2008
@@ -16,6 +16,8 @@
  */
 package org.apache.jackrabbit.spi.commons.query;
 
+import javax.jcr.RepositoryException;
+
 import org.apache.jackrabbit.spi.Name;
 
 /**
@@ -52,8 +54,9 @@
 
     /**
      * {@inheritDoc}
+     * @throws RepositoryException
      */
-    public Object accept(QueryNodeVisitor visitor, Object data) {
+    public Object accept(QueryNodeVisitor visitor, Object data) throws RepositoryException {
         return visitor.visit(this, data);
     }
 

Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/LocationStepQueryNode.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/LocationStepQueryNode.java?rev=677226&r1=677225&r2=677226&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/LocationStepQueryNode.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/LocationStepQueryNode.java Wed Jul 16 03:11:29 2008
@@ -16,8 +16,10 @@
  */
 package org.apache.jackrabbit.spi.commons.query;
 
-import org.apache.jackrabbit.spi.commons.name.NameFactoryImpl;
+import javax.jcr.RepositoryException;
+
 import org.apache.jackrabbit.spi.Name;
+import org.apache.jackrabbit.spi.commons.name.NameFactoryImpl;
 
 /**
  * Defines a location step for querying the path of a node.
@@ -156,8 +158,9 @@
 
     /**
      * {@inheritDoc}
+     * @throws RepositoryException
      */
-    public Object accept(QueryNodeVisitor visitor, Object data) {
+    public Object accept(QueryNodeVisitor visitor, Object data) throws RepositoryException {
         return visitor.visit(this, data);
     }
 

Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/NAryQueryNode.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/NAryQueryNode.java?rev=677226&r1=677225&r2=677226&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/NAryQueryNode.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/NAryQueryNode.java Wed Jul 16 03:11:29 2008
@@ -21,6 +21,8 @@
 import java.util.Iterator;
 import java.util.List;
 
+import javax.jcr.RepositoryException;
+
 /**
  * Defines an abstract query node for nodes that have child nodes.
  */
@@ -129,8 +131,9 @@
      * @param visitor the visitor to call back.
      * @param data    arbitrary data for the visitor.
      * @return the return values of the <code>visitor.visit()</code> calls.
+     * @throws RepositoryException
      */
-    public Object[] acceptOperands(QueryNodeVisitor visitor, Object data) {
+    public Object[] acceptOperands(QueryNodeVisitor visitor, Object data) throws RepositoryException {
         if (operands == null) {
             return EMPTY;
         }

Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/NodeTypeQueryNode.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/NodeTypeQueryNode.java?rev=677226&r1=677225&r2=677226&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/NodeTypeQueryNode.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/NodeTypeQueryNode.java Wed Jul 16 03:11:29 2008
@@ -16,8 +16,10 @@
  */
 package org.apache.jackrabbit.spi.commons.query;
 
-import org.apache.jackrabbit.spi.commons.name.NameConstants;
+import javax.jcr.RepositoryException;
+
 import org.apache.jackrabbit.spi.Name;
+import org.apache.jackrabbit.spi.commons.name.NameConstants;
 
 /**
  * Implements a query node that defines a node type match.
@@ -39,8 +41,9 @@
 
     /**
      * {@inheritDoc}
+     * @throws RepositoryException
      */
-    public Object accept(QueryNodeVisitor visitor, Object data) {
+    public Object accept(QueryNodeVisitor visitor, Object data) throws RepositoryException {
         return visitor.visit(this, data);
     }
 

Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/NotQueryNode.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/NotQueryNode.java?rev=677226&r1=677225&r2=677226&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/NotQueryNode.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/NotQueryNode.java Wed Jul 16 03:11:29 2008
@@ -16,6 +16,8 @@
  */
 package org.apache.jackrabbit.spi.commons.query;
 
+import javax.jcr.RepositoryException;
+
 /**
  * Implements a query node that defines a not operation on the child query.
  */
@@ -32,8 +34,9 @@
 
     /**
      * {@inheritDoc}
+     * @throws RepositoryException
      */
-    public Object accept(QueryNodeVisitor visitor, Object data) {
+    public Object accept(QueryNodeVisitor visitor, Object data) throws RepositoryException {
         return visitor.visit(this, data);
     }
 

Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/OrQueryNode.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/OrQueryNode.java?rev=677226&r1=677225&r2=677226&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/OrQueryNode.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/OrQueryNode.java Wed Jul 16 03:11:29 2008
@@ -16,6 +16,8 @@
  */
 package org.apache.jackrabbit.spi.commons.query;
 
+import javax.jcr.RepositoryException;
+
 /**
  * Implements a query node that defines an OR operation between arbitrary
  * other {@link QueryNode}s.
@@ -34,8 +36,9 @@
 
     /**
      * {@inheritDoc}
+     * @throws RepositoryException
      */
-    public Object accept(QueryNodeVisitor visitor, Object data) {
+    public Object accept(QueryNodeVisitor visitor, Object data) throws RepositoryException {
         return visitor.visit(this, data);
     }
 

Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/OrderQueryNode.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/OrderQueryNode.java?rev=677226&r1=677225&r2=677226&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/OrderQueryNode.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/OrderQueryNode.java Wed Jul 16 03:11:29 2008
@@ -19,6 +19,8 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import javax.jcr.RepositoryException;
+
 import org.apache.jackrabbit.spi.Name;
 
 /**
@@ -73,8 +75,9 @@
 
     /**
      * {@inheritDoc}
+     * @throws RepositoryException
      */
-    public Object accept(QueryNodeVisitor visitor, Object data) {
+    public Object accept(QueryNodeVisitor visitor, Object data) throws RepositoryException {
         return visitor.visit(this, data);
     }
 
@@ -123,7 +126,7 @@
         /**
          * The name of the property
          */
-        private Name property;
+        private final Name property;
 
         /**
          * If <code>true</code> this property is orderd ascending

Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/PathQueryNode.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/PathQueryNode.java?rev=677226&r1=677225&r2=677226&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/PathQueryNode.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/PathQueryNode.java Wed Jul 16 03:11:29 2008
@@ -18,8 +18,10 @@
 
 import java.util.List;
 
-import org.apache.jackrabbit.spi.commons.name.NameConstants;
+import javax.jcr.RepositoryException;
+
 import org.apache.jackrabbit.spi.Name;
+import org.apache.jackrabbit.spi.commons.name.NameConstants;
 
 /**
  * Implements a query node that defines a path restriction.
@@ -63,8 +65,9 @@
 
     /**
      * {@inheritDoc}
+     * @throws RepositoryException
      */
-    public Object accept(QueryNodeVisitor visitor, Object data) {
+    public Object accept(QueryNodeVisitor visitor, Object data) throws RepositoryException {
         return visitor.visit(this, data);
     }
 

Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/PropertyFunctionQueryNode.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/PropertyFunctionQueryNode.java?rev=677226&r1=677225&r2=677226&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/PropertyFunctionQueryNode.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/PropertyFunctionQueryNode.java Wed Jul 16 03:11:29 2008
@@ -16,9 +16,11 @@
  */
 package org.apache.jackrabbit.spi.commons.query;
 
-import java.util.Set;
-import java.util.HashSet;
 import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.jcr.RepositoryException;
 
 /**
  * <code>PropertyFunctionQueryNode</code> allows to place function calls on properties
@@ -81,8 +83,9 @@
 
     /**
      * {@inheritDoc}
+     * @throws RepositoryException
      */
-    public Object accept(QueryNodeVisitor visitor, Object data) {
+    public Object accept(QueryNodeVisitor visitor, Object data) throws RepositoryException {
         return visitor.visit(this, data);
     }
 

Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/QueryNode.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/QueryNode.java?rev=677226&r1=677225&r2=677226&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/QueryNode.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/QueryNode.java Wed Jul 16 03:11:29 2008
@@ -16,6 +16,8 @@
  */
 package org.apache.jackrabbit.spi.commons.query;
 
+import javax.jcr.RepositoryException;
+
 /**
  * Implements an abstract base class for nodes of a query tree that represents
  * a query. The query tree is independent from the query syntax which is used
@@ -66,7 +68,7 @@
      * References the parent of this <code>QueryNode</code>. If this is the root
      * of a query tree, then <code>parent</code> is <code>null</code>.
      */
-    private QueryNode parent;
+    private final QueryNode parent;
 
     /**
      * Constructs a new <code>QueryNode</code> with a reference to it's parent.
@@ -92,8 +94,9 @@
     /**
      * Dumps this QueryNode and its child nodes to a String.
      * @return the query tree as a String.
+     * @throws RepositoryException
      */
-    public String dump() {
+    public String dump() throws RepositoryException {
         StringBuffer tmp = new StringBuffer();
         QueryTreeDump.dump(this, tmp);
         return tmp.toString();
@@ -107,8 +110,9 @@
      * @param visitor the visitor to call back.
      * @param data    arbitrary data for the visitor.
      * @return the return value of the <code>visitor.visit()</code> call.
+     * @throws RepositoryException
      */
-    public abstract Object accept(QueryNodeVisitor visitor, Object data);
+    public abstract Object accept(QueryNodeVisitor visitor, Object data) throws RepositoryException;
 
     /**
      * Returns the type of this query node.

Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/QueryNodeVisitor.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/QueryNodeVisitor.java?rev=677226&r1=677225&r2=677226&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/QueryNodeVisitor.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/QueryNodeVisitor.java Wed Jul 16 03:11:29 2008
@@ -16,34 +16,36 @@
  */
 package org.apache.jackrabbit.spi.commons.query;
 
+import javax.jcr.RepositoryException;
+
 /**
  * Defines the interface for a <code>QueryNodeVisitor</code>.
  */
 public interface QueryNodeVisitor {
 
-    Object visit(QueryRootNode node, Object data);
+    Object visit(QueryRootNode node, Object data) throws RepositoryException;
 
-    Object visit(OrQueryNode node, Object data);
+    Object visit(OrQueryNode node, Object data) throws RepositoryException;
 
-    Object visit(AndQueryNode node, Object data);
+    Object visit(AndQueryNode node, Object data) throws RepositoryException;
 
-    Object visit(NotQueryNode node, Object data);
+    Object visit(NotQueryNode node, Object data) throws RepositoryException;
 
-    Object visit(ExactQueryNode node, Object data);
+    Object visit(ExactQueryNode node, Object data) throws RepositoryException;
 
-    Object visit(NodeTypeQueryNode node, Object data);
+    Object visit(NodeTypeQueryNode node, Object data) throws RepositoryException;
 
-    Object visit(TextsearchQueryNode node, Object data);
+    Object visit(TextsearchQueryNode node, Object data) throws RepositoryException;
 
-    Object visit(PathQueryNode node, Object data);
+    Object visit(PathQueryNode node, Object data) throws RepositoryException;
 
-    Object visit(LocationStepQueryNode node, Object data);
+    Object visit(LocationStepQueryNode node, Object data) throws RepositoryException;
 
-    Object visit(RelationQueryNode node, Object data);
+    Object visit(RelationQueryNode node, Object data) throws RepositoryException;
 
-    Object visit(OrderQueryNode node, Object data);
+    Object visit(OrderQueryNode node, Object data) throws RepositoryException;
 
-    Object visit(DerefQueryNode node, Object data);
+    Object visit(DerefQueryNode node, Object data) throws RepositoryException;
 
-    Object visit(PropertyFunctionQueryNode node, Object data);
+    Object visit(PropertyFunctionQueryNode node, Object data) throws RepositoryException;
 }

Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/QueryRootNode.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/QueryRootNode.java?rev=677226&r1=677225&r2=677226&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/QueryRootNode.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/QueryRootNode.java Wed Jul 16 03:11:29 2008
@@ -19,6 +19,8 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import javax.jcr.RepositoryException;
+
 import org.apache.jackrabbit.spi.Name;
 
 /**
@@ -35,7 +37,7 @@
      * The list of property names (as {@link org.apache.jackrabbit.spi.Name}s
      * to select.
      */
-    private List selectProperties = new ArrayList();
+    private final List selectProperties = new ArrayList();
 
     /**
      * The list of property names to order the result nodes. Might be null
@@ -107,8 +109,9 @@
 
     /**
      * {@inheritDoc}
+     * @throws RepositoryException
      */
-    public Object accept(QueryNodeVisitor visitor, Object data) {
+    public Object accept(QueryNodeVisitor visitor, Object data) throws RepositoryException {
         return visitor.visit(this, data);
     }
 

Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/QueryTreeDump.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/QueryTreeDump.java?rev=677226&r1=677225&r2=677226&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/QueryTreeDump.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/QueryTreeDump.java Wed Jul 16 03:11:29 2008
@@ -18,6 +18,8 @@
 
 import java.util.Arrays;
 
+import javax.jcr.RepositoryException;
+
 import org.apache.jackrabbit.spi.Name;
 import org.apache.jackrabbit.spi.Path;
 
@@ -49,8 +51,9 @@
      * Dumps the node tree to buffer.
      * @param node the root node.
      * @param buffer where to dump the tree.
+     * @throws RepositoryException
      */
-    private QueryTreeDump(QueryNode node, StringBuffer buffer) {
+    private QueryTreeDump(QueryNode node, StringBuffer buffer) throws RepositoryException {
         node.accept(this, buffer);
     }
 
@@ -58,12 +61,13 @@
      * Dumps a query node tree to the string <code>buffer</code>.
      * @param node the root node of a query tree.
      * @param buffer a string buffer where to dump the tree structure.
+     * @throws RepositoryException
      */
-    public static void dump(QueryNode node, StringBuffer buffer) {
+    public static void dump(QueryNode node, StringBuffer buffer) throws RepositoryException {
         new QueryTreeDump(node, buffer);
     }
 
-    public Object visit(QueryRootNode node, Object data) {
+    public Object visit(QueryRootNode node, Object data) throws RepositoryException {
         StringBuffer buffer = (StringBuffer) data;
         buffer.append("+ Root node");
         buffer.append("\n");
@@ -91,7 +95,7 @@
         return buffer;
     }
 
-    public Object visit(OrQueryNode node, Object data) {
+    public Object visit(OrQueryNode node, Object data) throws RepositoryException {
         StringBuffer buffer = (StringBuffer) data;
         buffer.append(PADDING, 0, indent);
         buffer.append("+ OrQueryNode");
@@ -100,7 +104,7 @@
         return buffer;
     }
 
-    public Object visit(AndQueryNode node, Object data) {
+    public Object visit(AndQueryNode node, Object data) throws RepositoryException {
         StringBuffer buffer = (StringBuffer) data;
         buffer.append(PADDING, 0, indent);
         buffer.append("+ AndQueryNode");
@@ -109,7 +113,7 @@
         return buffer;
     }
 
-    public Object visit(NotQueryNode node, Object data) {
+    public Object visit(NotQueryNode node, Object data) throws RepositoryException {
         StringBuffer buffer = (StringBuffer) data;
         buffer.append(PADDING, 0, indent);
         buffer.append("+ NotQueryNode");
@@ -163,7 +167,7 @@
         return buffer;
     }
 
-    public Object visit(PathQueryNode node, Object data) {
+    public Object visit(PathQueryNode node, Object data) throws RepositoryException {
         StringBuffer buffer = (StringBuffer) data;
         buffer.append(PADDING, 0, indent);
         buffer.append("+ PathQueryNode");
@@ -172,7 +176,7 @@
         return buffer;
     }
 
-    public Object visit(LocationStepQueryNode node, Object data) {
+    public Object visit(LocationStepQueryNode node, Object data) throws RepositoryException {
         StringBuffer buffer = (StringBuffer) data;
         buffer.append(PADDING, 0, indent);
         buffer.append("+ LocationStepQueryNode: ");
@@ -196,7 +200,7 @@
         return buffer;
     }
 
-    public Object visit(RelationQueryNode node, Object data) {
+    public Object visit(RelationQueryNode node, Object data) throws RepositoryException {
         StringBuffer buffer = (StringBuffer) data;
         buffer.append(PADDING, 0, indent);
         buffer.append("+ RelationQueryNode: Op: ");
@@ -290,7 +294,7 @@
         return buffer;
     }
 
-    public Object visit(DerefQueryNode node, Object data) {
+    public Object visit(DerefQueryNode node, Object data) throws RepositoryException {
         StringBuffer buffer = (StringBuffer) data;
         buffer.append(PADDING, 0, indent);
         buffer.append("+ DerefQueryNode: ");
@@ -323,7 +327,7 @@
         return buffer;
     }
 
-    private void traverse(QueryNode[] node, StringBuffer buffer) {
+    private void traverse(QueryNode[] node, StringBuffer buffer) throws RepositoryException {
         indent += 2;
         if (indent > PADDING.length) {
             char[] tmp = new char[indent * 2];

Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/RelationQueryNode.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/RelationQueryNode.java?rev=677226&r1=677225&r2=677226&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/RelationQueryNode.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/RelationQueryNode.java Wed Jul 16 03:11:29 2008
@@ -20,11 +20,11 @@
 
 import javax.jcr.RepositoryException;
 
+import org.apache.jackrabbit.spi.Name;
+import org.apache.jackrabbit.spi.Path;
 import org.apache.jackrabbit.spi.commons.conversion.MalformedPathException;
 import org.apache.jackrabbit.spi.commons.name.NameFactoryImpl;
 import org.apache.jackrabbit.spi.commons.name.PathBuilder;
-import org.apache.jackrabbit.spi.Name;
-import org.apache.jackrabbit.spi.Path;
 
 /**
  * Implements a query node that defines property value relation.
@@ -82,7 +82,7 @@
      * The operation type of this relation. One of the operation values defined
      * in {@link QueryConstants}.
      */
-    private int operation;
+    private final int operation;
 
     /**
      * The value type of this relation. One of {@link #TYPE_DATE}, {@link
@@ -103,8 +103,9 @@
 
     /**
      * {@inheritDoc}
+     * @throws RepositoryException
      */
-    public Object accept(QueryNodeVisitor visitor, Object data) {
+    public Object accept(QueryNodeVisitor visitor, Object data) throws RepositoryException {
         return visitor.visit(this, data);
     }
 

Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/TextsearchQueryNode.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/TextsearchQueryNode.java?rev=677226&r1=677225&r2=677226&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/TextsearchQueryNode.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/TextsearchQueryNode.java Wed Jul 16 03:11:29 2008
@@ -16,10 +16,12 @@
  */
 package org.apache.jackrabbit.spi.commons.query;
 
+import javax.jcr.RepositoryException;
+
+import org.apache.jackrabbit.spi.Name;
+import org.apache.jackrabbit.spi.Path;
 import org.apache.jackrabbit.spi.commons.conversion.MalformedPathException;
 import org.apache.jackrabbit.spi.commons.name.PathBuilder;
-import org.apache.jackrabbit.spi.Path;
-import org.apache.jackrabbit.spi.Name;
 
 /**
  * Implements a query node that defines a textsearch clause.
@@ -62,8 +64,9 @@
 
     /**
      * {@inheritDoc}
+     * @throws RepositoryException
      */
-    public Object accept(QueryNodeVisitor visitor, Object data) {
+    public Object accept(QueryNodeVisitor visitor, Object data) throws RepositoryException {
         return visitor.visit(this, data);
     }
 

Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/TraversingQueryNodeVisitor.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/TraversingQueryNodeVisitor.java?rev=677226&r1=677225&r2=677226&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/TraversingQueryNodeVisitor.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/TraversingQueryNodeVisitor.java Wed Jul 16 03:11:29 2008
@@ -16,21 +16,23 @@
  */
 package org.apache.jackrabbit.spi.commons.query;
 
+import javax.jcr.RepositoryException;
+
 /**
  * <code>TraversingQueryNodeVisitor</code> implements a base class for a
  * traversing query node visitor.
  */
 public class TraversingQueryNodeVisitor extends DefaultQueryNodeVisitor {
 
-    public Object visit(OrQueryNode node, Object data) {
+    public Object visit(OrQueryNode node, Object data) throws RepositoryException {
         return node.acceptOperands(this, data);
     }
 
-    public Object visit(AndQueryNode node, Object data) {
+    public Object visit(AndQueryNode node, Object data) throws RepositoryException {
         return node.acceptOperands(this, data);
     }
 
-    public Object visit(QueryRootNode node, Object data) {
+    public Object visit(QueryRootNode node, Object data) throws RepositoryException {
         PathQueryNode pathNode = node.getLocationNode();
         if (pathNode != null) {
             pathNode.accept(this, data);
@@ -42,19 +44,19 @@
         return data;
     }
 
-    public Object visit(NotQueryNode node, Object data) {
+    public Object visit(NotQueryNode node, Object data) throws RepositoryException {
         return node.acceptOperands(this, data);
     }
 
-    public Object visit(PathQueryNode node, Object data) {
+    public Object visit(PathQueryNode node, Object data) throws RepositoryException {
         return node.acceptOperands(this, data);
     }
 
-    public Object visit(LocationStepQueryNode node, Object data) {
+    public Object visit(LocationStepQueryNode node, Object data) throws RepositoryException {
         return node.acceptOperands(this, data);
     }
 
-    public Object visit(DerefQueryNode node, Object data) {
+    public Object visit(DerefQueryNode node, Object data) throws RepositoryException {
         return node.acceptOperands(this, data);
     }
 }

Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/sql/QueryFormat.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/sql/QueryFormat.java?rev=677226&r1=677225&r2=677226&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/sql/QueryFormat.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/sql/QueryFormat.java Wed Jul 16 03:11:29 2008
@@ -16,6 +16,19 @@
  */
 package org.apache.jackrabbit.spi.commons.query.sql;
 
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Iterator;
+import java.util.List;
+import java.util.TimeZone;
+
+import javax.jcr.NamespaceException;
+import javax.jcr.RepositoryException;
+import javax.jcr.query.InvalidQueryException;
+
+import org.apache.jackrabbit.spi.Name;
+import org.apache.jackrabbit.spi.Path;
+import org.apache.jackrabbit.spi.commons.conversion.NameResolver;
 import org.apache.jackrabbit.spi.commons.name.NameConstants;
 import org.apache.jackrabbit.spi.commons.query.AndQueryNode;
 import org.apache.jackrabbit.spi.commons.query.DerefQueryNode;
@@ -33,18 +46,7 @@
 import org.apache.jackrabbit.spi.commons.query.QueryRootNode;
 import org.apache.jackrabbit.spi.commons.query.RelationQueryNode;
 import org.apache.jackrabbit.spi.commons.query.TextsearchQueryNode;
-import org.apache.jackrabbit.spi.Name;
-import org.apache.jackrabbit.spi.Path;
 import org.apache.jackrabbit.util.ISO8601;
-import org.apache.jackrabbit.spi.commons.conversion.NameResolver;
-
-import javax.jcr.query.InvalidQueryException;
-import javax.jcr.NamespaceException;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Iterator;
-import java.util.List;
-import java.util.TimeZone;
 
 /**
  * Implements the query node tree serialization into a String.
@@ -59,20 +61,20 @@
     /**
      * The String representation of the query node tree
      */
-    private String statement;
+    private final String statement;
 
     /**
      * List of exception objects created while creating the SQL string
      */
-    private List exceptions = new ArrayList();
+    private final List exceptions = new ArrayList();
 
     /**
      * List of node types
      */
-    private List nodeTypes = new ArrayList();
+    private final List nodeTypes = new ArrayList();
 
     private QueryFormat(QueryRootNode root, NameResolver resolver)
-            throws InvalidQueryException {
+            throws RepositoryException {
         this.resolver = resolver;
         statement = root.accept(this, new StringBuffer()).toString();
         if (exceptions.size() > 0) {
@@ -93,7 +95,12 @@
      */
     public static String toString(QueryRootNode root, NameResolver resolver)
             throws InvalidQueryException {
-        return new QueryFormat(root, resolver).toString();
+        try {
+            return new QueryFormat(root, resolver).toString();
+        }
+        catch (RepositoryException e) {
+            throw new InvalidQueryException(e);
+        }
     }
 
     /**
@@ -107,7 +114,7 @@
 
     //-------------< QueryNodeVisitor interface >-------------------------------
 
-    public Object visit(QueryRootNode node, Object data) {
+    public Object visit(QueryRootNode node, Object data) throws RepositoryException {
         StringBuffer sb = (StringBuffer) data;
         try {
             sb.append("SELECT");
@@ -192,7 +199,7 @@
         return sb;
     }
 
-    public Object visit(OrQueryNode node, Object data) {
+    public Object visit(OrQueryNode node, Object data) throws RepositoryException {
         StringBuffer sb = (StringBuffer) data;
         boolean bracket = false;
         if (node.getParent() instanceof LocationStepQueryNode
@@ -216,7 +223,7 @@
         return sb;
     }
 
-    public Object visit(AndQueryNode node, Object data) {
+    public Object visit(AndQueryNode node, Object data) throws RepositoryException {
         StringBuffer sb = (StringBuffer) data;
         boolean bracket = false;
         if (node.getParent() instanceof NotQueryNode) {
@@ -245,7 +252,7 @@
         return sb;
     }
 
-    public Object visit(NotQueryNode node, Object data) {
+    public Object visit(NotQueryNode node, Object data) throws RepositoryException {
         StringBuffer sb = (StringBuffer) data;
         QueryNode[] operands = node.getOperands();
         if (operands.length > 0) {
@@ -295,7 +302,7 @@
         return sb;
     }
 
-    public Object visit(PathQueryNode node, Object data) {
+    public Object visit(PathQueryNode node, Object data) throws RepositoryException {
         StringBuffer sb = (StringBuffer) data;
         try {
             if (containsDescendantOrSelf(node)) {
@@ -395,7 +402,7 @@
         return data;
     }
 
-    public Object visit(RelationQueryNode node, Object data) {
+    public Object visit(RelationQueryNode node, Object data) throws RepositoryException {
         StringBuffer sb = (StringBuffer) data;
         try {
             StringBuffer propName = new StringBuffer();

Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/xpath/QueryFormat.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/xpath/QueryFormat.java?rev=677226&r1=677225&r2=677226&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/xpath/QueryFormat.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/xpath/QueryFormat.java Wed Jul 16 03:11:29 2008
@@ -16,10 +16,17 @@
  */
 package org.apache.jackrabbit.spi.commons.query.xpath;
 
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.List;
+import java.util.TimeZone;
+
+import javax.jcr.NamespaceException;
+import javax.jcr.RepositoryException;
+import javax.jcr.query.InvalidQueryException;
+
 import org.apache.jackrabbit.spi.Name;
 import org.apache.jackrabbit.spi.Path;
-import org.apache.jackrabbit.util.ISO8601;
-import org.apache.jackrabbit.util.ISO9075;
 import org.apache.jackrabbit.spi.commons.conversion.NameResolver;
 import org.apache.jackrabbit.spi.commons.name.NameFactoryImpl;
 import org.apache.jackrabbit.spi.commons.query.AndQueryNode;
@@ -39,13 +46,8 @@
 import org.apache.jackrabbit.spi.commons.query.QueryRootNode;
 import org.apache.jackrabbit.spi.commons.query.RelationQueryNode;
 import org.apache.jackrabbit.spi.commons.query.TextsearchQueryNode;
-
-import javax.jcr.query.InvalidQueryException;
-import javax.jcr.NamespaceException;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.List;
-import java.util.TimeZone;
+import org.apache.jackrabbit.util.ISO8601;
+import org.apache.jackrabbit.util.ISO9075;
 
 /**
  * Implements the query node tree serialization into a String.
@@ -60,15 +62,15 @@
     /**
      * The String representation of the query node tree
      */
-    private String statement;
+    private final String statement;
 
     /**
      * List of exception objects created while creating the XPath string
      */
-    private List exceptions = new ArrayList();
+    private final List exceptions = new ArrayList();
 
     private QueryFormat(QueryRootNode root, NameResolver resolver)
-            throws InvalidQueryException {
+            throws RepositoryException {
         this.resolver = resolver;
         statement = root.accept(this, new StringBuffer()).toString();
         if (exceptions.size() > 0) {
@@ -89,7 +91,12 @@
      */
     public static String toString(QueryRootNode root, NameResolver resolver)
             throws InvalidQueryException {
-        return new QueryFormat(root, resolver).toString();
+        try {
+            return new QueryFormat(root, resolver).toString();
+        }
+        catch (RepositoryException e) {
+            throw new InvalidQueryException(e);
+        }
     }
 
     /**
@@ -103,7 +110,7 @@
 
     //-------------< QueryNodeVisitor interface >-------------------------------
 
-    public Object visit(QueryRootNode node, Object data) {
+    public Object visit(QueryRootNode node, Object data) throws RepositoryException {
         StringBuffer sb = (StringBuffer) data;
         node.getLocationNode().accept(this, data);
         if (node.getOrderNode() != null) {
@@ -134,7 +141,7 @@
         return data;
     }
 
-    public Object visit(OrQueryNode node, Object data) {
+    public Object visit(OrQueryNode node, Object data) throws RepositoryException {
         StringBuffer sb = (StringBuffer) data;
         boolean bracket = false;
         if (node.getParent() instanceof AndQueryNode) {
@@ -156,7 +163,7 @@
         return sb;
     }
 
-    public Object visit(AndQueryNode node, Object data) {
+    public Object visit(AndQueryNode node, Object data) throws RepositoryException {
         StringBuffer sb = (StringBuffer) data;
         String and = "";
         QueryNode[] operands = node.getOperands();
@@ -168,7 +175,7 @@
         return sb;
     }
 
-    public Object visit(NotQueryNode node, Object data) {
+    public Object visit(NotQueryNode node, Object data) throws RepositoryException {
         StringBuffer sb = (StringBuffer) data;
         QueryNode[] operands = node.getOperands();
         if (operands.length > 0) {
@@ -241,7 +248,7 @@
         return sb;
     }
 
-    public Object visit(PathQueryNode node, Object data) {
+    public Object visit(PathQueryNode node, Object data) throws RepositoryException {
         StringBuffer sb = (StringBuffer) data;
         if (node.isAbsolute()) {
             sb.append("/");
@@ -256,7 +263,7 @@
         return sb;
     }
 
-    public Object visit(LocationStepQueryNode node, Object data) {
+    public Object visit(LocationStepQueryNode node, Object data) throws RepositoryException {
         StringBuffer sb = (StringBuffer) data;
         if (node.getIncludeDescendants()) {
             sb.append('/');
@@ -332,7 +339,7 @@
         return sb;
     }
 
-    public Object visit(RelationQueryNode node, Object data) {
+    public Object visit(RelationQueryNode node, Object data) throws RepositoryException {
         StringBuffer sb = (StringBuffer) data;
         try {
 

Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/xpath/SimpleNode.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/xpath/SimpleNode.java?rev=677226&r1=677225&r2=677226&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/xpath/SimpleNode.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/xpath/SimpleNode.java Wed Jul 16 03:11:29 2008
@@ -16,6 +16,7 @@
  */
 package org.apache.jackrabbit.spi.commons.query.xpath;
 
+
 /**
  * Implements a JavaCC Node interface.
  * This Class was initially created by JavaCC and then adapted for our needs.
@@ -149,3 +150,4 @@
 
 }
 
+

Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/xpath/XPathQueryBuilder.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/xpath/XPathQueryBuilder.java?rev=677226&r1=677225&r2=677226&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/xpath/XPathQueryBuilder.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/xpath/XPathQueryBuilder.java Wed Jul 16 03:11:29 2008
@@ -16,14 +16,29 @@
  */
 package org.apache.jackrabbit.spi.commons.query.xpath;
 
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.List;
+import java.util.Map;
+
+import javax.jcr.NamespaceException;
+import javax.jcr.RepositoryException;
+import javax.jcr.query.InvalidQueryException;
+
+import org.apache.commons.collections.map.ReferenceMap;
+import org.apache.jackrabbit.spi.Name;
+import org.apache.jackrabbit.spi.NameFactory;
+import org.apache.jackrabbit.spi.Path;
+import org.apache.jackrabbit.spi.PathFactory;
 import org.apache.jackrabbit.spi.commons.conversion.IllegalNameException;
 import org.apache.jackrabbit.spi.commons.conversion.MalformedPathException;
-import org.apache.jackrabbit.spi.commons.conversion.NameResolver;
 import org.apache.jackrabbit.spi.commons.conversion.NameException;
+import org.apache.jackrabbit.spi.commons.conversion.NameResolver;
+import org.apache.jackrabbit.spi.commons.name.NameConstants;
 import org.apache.jackrabbit.spi.commons.name.NameFactoryImpl;
 import org.apache.jackrabbit.spi.commons.name.PathBuilder;
 import org.apache.jackrabbit.spi.commons.name.PathFactoryImpl;
-import org.apache.jackrabbit.spi.commons.name.NameConstants;
 import org.apache.jackrabbit.spi.commons.query.DefaultQueryNodeVisitor;
 import org.apache.jackrabbit.spi.commons.query.DerefQueryNode;
 import org.apache.jackrabbit.spi.commons.query.LocationStepQueryNode;
@@ -39,22 +54,8 @@
 import org.apache.jackrabbit.spi.commons.query.QueryRootNode;
 import org.apache.jackrabbit.spi.commons.query.RelationQueryNode;
 import org.apache.jackrabbit.spi.commons.query.TextsearchQueryNode;
-import org.apache.jackrabbit.spi.Name;
-import org.apache.jackrabbit.spi.Path;
-import org.apache.jackrabbit.spi.NameFactory;
-import org.apache.jackrabbit.spi.PathFactory;
 import org.apache.jackrabbit.util.ISO8601;
 import org.apache.jackrabbit.util.ISO9075;
-import org.apache.commons.collections.map.ReferenceMap;
-
-import javax.jcr.query.InvalidQueryException;
-import javax.jcr.RepositoryException;
-import javax.jcr.NamespaceException;
-import java.io.StringReader;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.List;
-import java.util.Map;
 
 /**
  * Query builder that translates a XPath statement into a query tree structure.
@@ -707,18 +708,23 @@
         node.childrenAccept(this, rqn);
 
         // check if string transformation is valid
-        rqn.acceptOperands(new DefaultQueryNodeVisitor() {
-            public Object visit(PropertyFunctionQueryNode node, Object data) {
-                String functionName = node.getFunctionName();
-                if ((functionName.equals(PropertyFunctionQueryNode.LOWER_CASE)
-                        || functionName.equals(PropertyFunctionQueryNode.UPPER_CASE))
-                            && rqn.getValueType() != QueryConstants.TYPE_STRING) {
-                    String msg = "Upper and lower case function are only supported with String literals";
-                    exceptions.add(new InvalidQueryException(msg));
+        try {
+            rqn.acceptOperands(new DefaultQueryNodeVisitor() {
+                public Object visit(PropertyFunctionQueryNode node, Object data) {
+                    String functionName = node.getFunctionName();
+                    if ((functionName.equals(PropertyFunctionQueryNode.LOWER_CASE)
+                            || functionName.equals(PropertyFunctionQueryNode.UPPER_CASE))
+                                && rqn.getValueType() != QueryConstants.TYPE_STRING) {
+                        String msg = "Upper and lower case function are only supported with String literals";
+                        exceptions.add(new InvalidQueryException(msg));
+                    }
+                    return data;
                 }
-                return data;
-            }
-        }, null);
+            }, null);
+        }
+        catch (RepositoryException e) {
+            exceptions.add(e);
+        }
 
         queryNode.addOperand(rqn);
     }