You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by al...@apache.org on 2012/08/09 09:43:52 UTC

svn commit: r1371065 - in /jackrabbit/trunk/jackrabbit-core/src: main/java/org/apache/jackrabbit/core/query/lucene/ test/java/org/apache/jackrabbit/core/query/

Author: alexparvulescu
Date: Thu Aug  9 07:43:52 2012
New Revision: 1371065

URL: http://svn.apache.org/viewvc?rev=1371065&view=rev
Log:
JCR-3407 CaseTermQuery #rewrite behavior changes

Added:
    jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/query/DescendantSelfAxisTest.java   (with props)
Modified:
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/CaseTermQuery.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/WildcardQuery.java
    jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/query/TestAll.java

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/CaseTermQuery.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/CaseTermQuery.java?rev=1371065&r1=1371064&r2=1371065&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/CaseTermQuery.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/CaseTermQuery.java Thu Aug  9 07:43:52 2012
@@ -47,6 +47,7 @@ abstract class CaseTermQuery extends Mul
     CaseTermQuery(Term term, int transform) {
         this.term = term;
         this.transform = transform;
+        setRewriteMethod(CONSTANT_SCORE_FILTER_REWRITE);
     }
 
     /**

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/WildcardQuery.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/WildcardQuery.java?rev=1371065&r1=1371064&r2=1371065&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/WildcardQuery.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/WildcardQuery.java Thu Aug  9 07:43:52 2012
@@ -16,6 +16,7 @@
  */
 package org.apache.jackrabbit.core.query.lucene;
 
+import org.apache.jackrabbit.core.query.lucene.WildcardTermEnum.TermValueFactory;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.Term;
 import org.apache.lucene.index.TermEnum;
@@ -65,7 +66,7 @@ public class WildcardQuery extends Query
     /**
      * Creates a term value for a given string.
      */
-    private final WildcardTermEnum.TermValueFactory tvf;
+    private final TermValueFactory tvf;
 
     /**
      * The wildcard pattern.
@@ -144,23 +145,9 @@ public class WildcardQuery extends Query
      */
     @Override
     public Query rewrite(IndexReader reader) throws IOException {
-        Query stdWildcardQuery = new MultiTermQuery() {
-            protected FilteredTermEnum getEnum(IndexReader reader) throws IOException {
-                return new WildcardTermEnum(reader, field, tvf, pattern, transform);
-            }
-
-            /** Prints a user-readable version of this query. */
-            @Override
-            public String toString(String field) {
-                StringBuffer buffer = new StringBuffer();
-                buffer.append(field);
-                buffer.append(':');
-                buffer.append(ToStringUtils.boost(getBoost()));
-                return buffer.toString();
-            }
-        };
         try {
-            multiTermQuery = stdWildcardQuery.rewrite(reader);
+            multiTermQuery = new StdWildcardQuery(field, tvf, pattern,
+                    transform).rewrite(reader);
             return multiTermQuery;
         } catch (BooleanQuery.TooManyClauses e) {
             // MultiTermQuery not possible
@@ -198,6 +185,39 @@ public class WildcardQuery extends Query
         }
     }
 
+    private static class StdWildcardQuery extends MultiTermQuery {
+
+        private final String field;
+        private final TermValueFactory tvf;
+        private final String pattern;
+        private final int transform;
+
+        public StdWildcardQuery(String field, TermValueFactory tvf,
+                String pattern, int transform) {
+            this.field = field;
+            this.tvf = tvf;
+            this.pattern = pattern;
+            this.transform = transform;
+            setRewriteMethod(CONSTANT_SCORE_FILTER_REWRITE);
+        }
+
+        @Override
+        protected FilteredTermEnum getEnum(IndexReader reader)
+                throws IOException {
+            return new WildcardTermEnum(reader, field, tvf, pattern, transform);
+        }
+
+        /** Prints a user-readable version of this query. */
+        @Override
+        public String toString(String field) {
+            StringBuffer buffer = new StringBuffer();
+            buffer.append(field);
+            buffer.append(':');
+            buffer.append(ToStringUtils.boost(getBoost()));
+            return buffer.toString();
+        }
+    }
+
     /**
      * The <code>Weight</code> implementation for this <code>WildcardQuery</code>.
      */

Added: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/query/DescendantSelfAxisTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/query/DescendantSelfAxisTest.java?rev=1371065&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/query/DescendantSelfAxisTest.java (added)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/query/DescendantSelfAxisTest.java Thu Aug  9 07:43:52 2012
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jackrabbit.core.query;
+
+import javax.jcr.Node;
+import javax.jcr.RepositoryException;
+
+public class DescendantSelfAxisTest extends AbstractQueryTest {
+
+    /**
+     * JCR-3407 CaseTermQuery #rewrite behavior changes
+     */
+    public void testCaseTermQueryNPE() throws RepositoryException {
+        String xpathNPE = "//element(*,nt:unstructured)[fn:lower-case(@jcr:language)='en']//element(*,nt:unstructured)[@jcr:message]/(@jcr:key|@jcr:message)";
+        executeXPathQuery(xpathNPE, new Node[] {});
+    }
+}

Propchange: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/query/DescendantSelfAxisTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/query/DescendantSelfAxisTest.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision Rev URL

Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/query/TestAll.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/query/TestAll.java?rev=1371065&r1=1371064&r2=1371065&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/query/TestAll.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/query/TestAll.java Thu Aug  9 07:43:52 2012
@@ -72,6 +72,7 @@ public class TestAll extends TestCase {
         suite.addTestSuite(LimitedAccessQueryTest.class);
         suite.addTestSuite(SQL2OffsetLimitTest.class);
         suite.addTestSuite(SQL2OrderByTest.class);
+        suite.addTestSuite(DescendantSelfAxisTest.class);
 
         return suite;
     }