You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@lucene.apache.org by us...@apache.org on 2010/02/10 13:50:47 UTC

svn commit: r908475 - in /lucene/java/branches/flex_1458/src/java/org/apache/lucene: index/TermsEnum.java search/MultiTermQuery.java

Author: uschindler
Date: Wed Feb 10 12:50:47 2010
New Revision: 908475

URL: http://svn.apache.org/viewvc?rev=908475&view=rev
Log:
add some javadocs wording about the possibility to modify the EmptyEnum's attributes

Modified:
    lucene/java/branches/flex_1458/src/java/org/apache/lucene/index/TermsEnum.java
    lucene/java/branches/flex_1458/src/java/org/apache/lucene/search/MultiTermQuery.java

Modified: lucene/java/branches/flex_1458/src/java/org/apache/lucene/index/TermsEnum.java
URL: http://svn.apache.org/viewvc/lucene/java/branches/flex_1458/src/java/org/apache/lucene/index/TermsEnum.java?rev=908475&r1=908474&r2=908475&view=diff
==============================================================================
--- lucene/java/branches/flex_1458/src/java/org/apache/lucene/index/TermsEnum.java (original)
+++ lucene/java/branches/flex_1458/src/java/org/apache/lucene/index/TermsEnum.java Wed Feb 10 12:50:47 2010
@@ -114,7 +114,12 @@
   public abstract BytesRef.Comparator getComparator() throws IOException;
 
   /** An empty TermsEnum for quickly returning an empty instance e.g.
-   * in {@link org.apache.lucene.search.MultiTermQuery} */
+   * in {@link org.apache.lucene.search.MultiTermQuery}
+   * <p><em>Please note:</em> This enum should be unmodifiable,
+   * but it is currently possible to add Attributes to it.
+   * This should not be a problem, as the enum is always empty and
+   * the existence of unused Attributes does not matter.
+   */
   public static final TermsEnum EMPTY = new TermsEnum() {    
     @Override
     public SeekStatus seek(BytesRef term) { return SeekStatus.END; }
@@ -147,5 +152,10 @@
       
     @Override
     public BytesRef next() { return null; }
+    
+    @Override // make it synchronized here, to prevent double lazy init
+    public synchronized AttributeSource attributes() {
+      return super.attributes();
+    }
   };
 }

Modified: lucene/java/branches/flex_1458/src/java/org/apache/lucene/search/MultiTermQuery.java
URL: http://svn.apache.org/viewvc/lucene/java/branches/flex_1458/src/java/org/apache/lucene/search/MultiTermQuery.java?rev=908475&r1=908474&r2=908475&view=diff
==============================================================================
--- lucene/java/branches/flex_1458/src/java/org/apache/lucene/search/MultiTermQuery.java (original)
+++ lucene/java/branches/flex_1458/src/java/org/apache/lucene/search/MultiTermQuery.java Wed Feb 10 12:50:47 2010
@@ -176,10 +176,12 @@
     protected final int collectTerms(IndexReader reader, MultiTermQuery query, TermCollector collector) throws IOException {
       final TermsEnum termsEnum = query.getTermsEnum(reader);
       if (termsEnum != null) {
-        final BoostAttribute boostAtt =
-          termsEnum.attributes().addAttribute(BoostAttribute.class);
         if (query.field == null)
           throw new NullPointerException("If you implement getTermsEnum(), you must specify a non-null field in the constructor of MultiTermQuery.");
+        if (termsEnum == TermsEnum.EMPTY)
+          return 0;
+        final BoostAttribute boostAtt =
+          termsEnum.attributes().addAttribute(BoostAttribute.class);
         collector.boostAtt = boostAtt;
         int count = 0;
         BytesRef term;