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 2010/10/07 16:47:18 UTC

svn commit: r1005470 - /jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/

Author: mreutegg
Date: Thu Oct  7 14:47:17 2010
New Revision: 1005470

URL: http://svn.apache.org/viewvc?rev=1005470&view=rev
Log:
JCR-2769: Avoid String.intern() for UUID terms

Added:
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/TermFactory.java   (with props)
Modified:
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/AbstractExcerpt.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/CachingIndexReader.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/CachingMultiIndexReader.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/ChildAxisQuery.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/DerefQuery.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/MultiIndex.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/PredicateDerefQuery.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryHitsQuery.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/ScoreNode.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/SimilarityQuery.java

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/AbstractExcerpt.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/AbstractExcerpt.java?rev=1005470&r1=1005469&r2=1005470&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/AbstractExcerpt.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/AbstractExcerpt.java Thu Oct  7 14:47:17 2010
@@ -82,7 +82,7 @@ public abstract class AbstractExcerpt im
         IndexReader reader = index.getIndexReader();
         try {
             checkRewritten(reader);
-            Term idTerm = new Term(FieldNames.UUID, id.toString());
+            Term idTerm = TermFactory.createUUIDTerm(id.toString());
             TermDocs tDocs = reader.termDocs(idTerm);
             int docNumber;
             Document doc;

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/CachingIndexReader.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/CachingIndexReader.java?rev=1005470&r1=1005469&r2=1005470&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/CachingIndexReader.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/CachingIndexReader.java Thu Oct  7 14:47:17 2010
@@ -192,7 +192,7 @@ class CachingIndexReader extends FilterI
                     parent = DocId.create(parentUUIDs);
                 } else {
                     if (!existing) {
-                        Term id = new Term(FieldNames.UUID, parentUUIDs[0]);
+                        Term id = TermFactory.createUUIDTerm(parentUUIDs[0]);
                         TermDocs docs = termDocs(id);
                         try {
                             while (docs.next()) {
@@ -431,7 +431,7 @@ class CachingIndexReader extends FilterI
 
             // initialize in multiple passes with
             // a fixed number of nodes at a time
-            final Term[] startUUID = new Term[]{new Term(FieldNames.UUID, "")};
+            final Term[] startUUID = new Term[]{TermFactory.createUUIDTerm("")};
 
             for (;;) {
                 final Map<Object, NodeInfo> docs = new HashMap<Object, NodeInfo>();
@@ -439,7 +439,7 @@ class CachingIndexReader extends FilterI
 
                 if (startUUID[0].text().length() != 0) {
                     // force reading the next uuid after startUUID
-                    startUUID[0] = new Term(FieldNames.UUID, startUUID[0].text() + "_");
+                    startUUID[0] = TermFactory.createUUIDTerm(startUUID[0].text() + "_");
                 }
                 // read UUIDs
                 collectTermDocs(reader, startUUID[0], new TermDocsCollector() {
@@ -489,7 +489,7 @@ class CachingIndexReader extends FilterI
                 });
 
                 // scan UUIDs again to get document numbers for parents
-                collectTermDocs(reader, new Term(FieldNames.UUID, ""), new TermDocsCollector() {
+                collectTermDocs(reader, TermFactory.createUUIDTerm(""), new TermDocsCollector() {
                     public boolean collect(Term term, TermDocs tDocs) throws IOException {
                         NodeId id = new NodeId(term.text());
                         while (tDocs.next()) {

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/CachingMultiIndexReader.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/CachingMultiIndexReader.java?rev=1005470&r1=1005469&r2=1005470&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/CachingMultiIndexReader.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/CachingMultiIndexReader.java Thu Oct  7 14:47:17 2010
@@ -182,7 +182,7 @@ public final class CachingMultiIndexRead
      * {@inheritDoc}
      */
     public ForeignSegmentDocId createDocId(NodeId id) throws IOException {
-        Term term = new Term(FieldNames.UUID, id.toString());
+        Term term = TermFactory.createUUIDTerm(id.toString());
         int doc;
         long tick;
         for (ReadOnlyIndexReader subReader : subReaders) {

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/ChildAxisQuery.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/ChildAxisQuery.java?rev=1005470&r1=1005469&r2=1005470&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/ChildAxisQuery.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/ChildAxisQuery.java Thu Oct  7 14:47:17 2010
@@ -639,7 +639,7 @@ class ChildAxisQuery extends Query imple
                     }
                     for (ChildNodeEntry entry : entries) {
                         NodeId childId = entry.getId();
-                        Term uuidTerm = new Term(FieldNames.UUID, childId.toString());
+                        Term uuidTerm = TermFactory.createUUIDTerm(childId.toString());
                         TermDocs docs = reader.termDocs(uuidTerm);
                         try {
                             if (docs.next()) {

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/DerefQuery.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/DerefQuery.java?rev=1005470&r1=1005469&r2=1005470&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/DerefQuery.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/DerefQuery.java Thu Oct  7 14:47:17 2010
@@ -346,7 +346,7 @@ class DerefQuery extends Query {
                 // bitset.
                 hits.clear();
                 for (String uuid : uuids) {
-                    TermDocs node = reader.termDocs(new Term(FieldNames.UUID, uuid));
+                    TermDocs node = reader.termDocs(TermFactory.createUUIDTerm(uuid));
                     try {
                         while (node.next()) {
                             hits.set(node.doc());

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/MultiIndex.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/MultiIndex.java?rev=1005470&r1=1005469&r2=1005470&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/MultiIndex.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/MultiIndex.java Thu Oct  7 14:47:17 2010
@@ -504,7 +504,7 @@ public class MultiIndex {
         }
         int num;
         try {
-            Term idTerm = new Term(FieldNames.UUID, id.toString());
+            Term idTerm = TermFactory.createUUIDTerm(id.toString());
             executeAndLog(new Start(Action.INTERNAL_TRANSACTION));
             num = volatileIndex.removeDocument(idTerm);
             if (num > 0) {
@@ -1979,7 +1979,7 @@ public class MultiIndex {
                 Util.disposeDocument(doc);
                 index.notifyIfIndexingQueueIsEmpty();
             }
-            Term idTerm = new Term(FieldNames.UUID, uuidString);
+            Term idTerm = TermFactory.createUUIDTerm(uuidString);
             // if the document cannot be deleted from the volatile index
             // delete it from one of the persistent indexes.
             int num = index.volatileIndex.removeDocument(idTerm);

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/PredicateDerefQuery.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/PredicateDerefQuery.java?rev=1005470&r1=1005469&r2=1005470&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/PredicateDerefQuery.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/PredicateDerefQuery.java Thu Oct  7 14:47:17 2010
@@ -339,7 +339,7 @@ public class PredicateDerefQuery extends
                         if (values[v].startsWith(prefix)) {
                             String uuid = values[v].substring(prefix.length());
                             
-                            TermDocs node = reader.termDocs(new Term(FieldNames.UUID, uuid));
+                            TermDocs node = reader.termDocs(TermFactory.createUUIDTerm(uuid));
                             try {
                                 while (node.next()) {
                                     if (subQueryHits.get(node.doc())) {

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryHitsQuery.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryHitsQuery.java?rev=1005470&r1=1005469&r2=1005470&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryHitsQuery.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryHitsQuery.java Thu Oct  7 14:47:17 2010
@@ -194,7 +194,7 @@ public class QueryHitsQuery extends Quer
             try {
                 while ((node = hits.nextScoreNode()) != null) {
                     String uuid = node.getNodeId().toString();
-                    Term id = new Term(FieldNames.UUID, uuid);
+                    Term id = TermFactory.createUUIDTerm(uuid);
                     TermDocs tDocs = reader.termDocs(id);
                     try {
                         if (tDocs.next()) {

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/ScoreNode.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/ScoreNode.java?rev=1005470&r1=1005469&r2=1005470&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/ScoreNode.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/ScoreNode.java Thu Oct  7 14:47:17 2010
@@ -102,7 +102,7 @@ public final class ScoreNode {
      */
     public int getDoc(IndexReader reader) throws IOException {
         if (doc == -1) {
-            TermDocs docs = reader.termDocs(new Term(FieldNames.UUID, id.toString()));
+            TermDocs docs = reader.termDocs(TermFactory.createUUIDTerm(id.toString()));
             try {
                 if (docs.next()) {
                     return docs.doc();

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/SimilarityQuery.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/SimilarityQuery.java?rev=1005470&r1=1005469&r2=1005470&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/SimilarityQuery.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/SimilarityQuery.java Thu Oct  7 14:47:17 2010
@@ -55,7 +55,7 @@ public class SimilarityQuery extends Que
         more.setFieldNames(new String[]{FieldNames.FULLTEXT});
         more.setMinWordLen(4);
         Query similarityQuery = null;
-        TermDocs td = reader.termDocs(new Term(FieldNames.UUID, uuid));
+        TermDocs td = reader.termDocs(TermFactory.createUUIDTerm(uuid));
         try {
             if (td.next()) {
                 similarityQuery = more.like(td.doc());

Added: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/TermFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/TermFactory.java?rev=1005470&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/TermFactory.java (added)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/TermFactory.java Thu Oct  7 14:47:17 2010
@@ -0,0 +1,42 @@
+/*
+ * 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.lucene;
+
+import org.apache.lucene.index.Term;
+
+/**
+ * <code>TermFactory</code> is a factory for <code>Term</code> instances with
+ * frequently used field names.
+ */
+public final class TermFactory {
+
+    /**
+     * Template for UUID terms.
+     */
+    private static final Term UUID_TERM_TEMPLATE = new Term(FieldNames.UUID);
+
+    /**
+     * Creates a Term with the given <code>id</code> value and with a field
+     * name {@link FieldNames#UUID}.
+     *
+     * @param id the id.
+     * @return the UUIDTerm.
+     */
+    public static Term createUUIDTerm(String id) {
+        return UUID_TERM_TEMPLATE.createTerm(id);
+    }
+}

Propchange: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/TermFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native