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 12:45:30 UTC
svn commit: r908457 - in /lucene/java/branches/flex_1458/src:
java/org/apache/lucene/index/ java/org/apache/lucene/search/
test/org/apache/lucene/search/
Author: uschindler
Date: Wed Feb 10 11:45:29 2010
New Revision: 908457
URL: http://svn.apache.org/viewvc?rev=908457&view=rev
Log:
Refactor EmptyTermsEnum to be a singleton under abstract TermsEnum
Removed:
lucene/java/branches/flex_1458/src/java/org/apache/lucene/search/EmptyTermsEnum.java
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/AutomatonQuery.java
lucene/java/branches/flex_1458/src/java/org/apache/lucene/search/NumericRangeQuery.java
lucene/java/branches/flex_1458/src/java/org/apache/lucene/search/PrefixQuery.java
lucene/java/branches/flex_1458/src/java/org/apache/lucene/search/TermRangeQuery.java
lucene/java/branches/flex_1458/src/test/org/apache/lucene/search/TestAutomatonQuery.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=908457&r1=908456&r2=908457&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 11:45:29 2010
@@ -112,4 +112,40 @@
* method many times, so it's best to cache a single
* instance & reuse it. */
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} */
+ public static final TermsEnum EMPTY = new TermsEnum() {
+ @Override
+ public SeekStatus seek(BytesRef term) { return SeekStatus.END; }
+
+ @Override
+ public SeekStatus seek(long ord) { return SeekStatus.END; }
+
+ @Override
+ public BytesRef term() { return null; }
+
+ @Override
+ public BytesRef.Comparator getComparator() {
+ // return an unused dummy to prevent NPE
+ return BytesRef.getUTF8SortedAsUTF16Comparator();
+ }
+
+ @Override
+ public int docFreq() { return -1; }
+
+ @Override
+ public long ord() { return -1; }
+
+ @Override
+ public DocsEnum docs(Bits bits, DocsEnum reuse) { return null; }
+
+ @Override
+ public DocsAndPositionsEnum docsAndPositions(Bits bits, DocsAndPositionsEnum reuse) {
+ return null;
+ }
+
+ @Override
+ public BytesRef next() { return null; }
+ };
}
Modified: lucene/java/branches/flex_1458/src/java/org/apache/lucene/search/AutomatonQuery.java
URL: http://svn.apache.org/viewvc/lucene/java/branches/flex_1458/src/java/org/apache/lucene/search/AutomatonQuery.java?rev=908457&r1=908456&r2=908457&view=diff
==============================================================================
--- lucene/java/branches/flex_1458/src/java/org/apache/lucene/search/AutomatonQuery.java (original)
+++ lucene/java/branches/flex_1458/src/java/org/apache/lucene/search/AutomatonQuery.java Wed Feb 10 11:45:29 2010
@@ -73,15 +73,14 @@
protected TermsEnum getTermsEnum(IndexReader reader) throws IOException {
// matches nothing
if (BasicOperations.isEmpty(automaton)) {
- // nocommit -- should we just return null? singleton?
- return new EmptyTermsEnum();
+ return TermsEnum.EMPTY;
}
// matches all possible strings
if (BasicOperations.isTotal(automaton)) {
final Terms terms = MultiFields.getTerms(reader, getField());
// nocommit -- should we just return null? singleton?
- return (terms != null) ? terms.iterator() : new EmptyTermsEnum();
+ return (terms != null) ? terms.iterator() : TermsEnum.EMPTY;
}
// matches a fixed string in singleton representation
Modified: lucene/java/branches/flex_1458/src/java/org/apache/lucene/search/NumericRangeQuery.java
URL: http://svn.apache.org/viewvc/lucene/java/branches/flex_1458/src/java/org/apache/lucene/search/NumericRangeQuery.java?rev=908457&r1=908456&r2=908457&view=diff
==============================================================================
--- lucene/java/branches/flex_1458/src/java/org/apache/lucene/search/NumericRangeQuery.java (original)
+++ lucene/java/branches/flex_1458/src/java/org/apache/lucene/search/NumericRangeQuery.java Wed Feb 10 11:45:29 2010
@@ -304,7 +304,7 @@
protected TermsEnum getTermsEnum(final IndexReader reader) throws IOException {
// very strange: java.lang.Number itsself is not Comparable, but all subclasses used here are
return (min != null && max != null && ((Comparable<T>) min).compareTo(max) > 0) ?
- new EmptyTermsEnum() :
+ TermsEnum.EMPTY :
new NumericRangeTermsEnum(reader);
}
Modified: lucene/java/branches/flex_1458/src/java/org/apache/lucene/search/PrefixQuery.java
URL: http://svn.apache.org/viewvc/lucene/java/branches/flex_1458/src/java/org/apache/lucene/search/PrefixQuery.java?rev=908457&r1=908456&r2=908457&view=diff
==============================================================================
--- lucene/java/branches/flex_1458/src/java/org/apache/lucene/search/PrefixQuery.java (original)
+++ lucene/java/branches/flex_1458/src/java/org/apache/lucene/search/PrefixQuery.java Wed Feb 10 11:45:29 2010
@@ -53,7 +53,7 @@
protected TermsEnum getTermsEnum(IndexReader reader) throws IOException {
if (prefix.text().length() == 0) {
final Terms terms = MultiFields.getTerms(reader, getField());
- return (terms != null) ? terms.iterator() : new EmptyTermsEnum();
+ return (terms != null) ? terms.iterator() : TermsEnum.EMPTY;
}
return new PrefixTermsEnum(reader, prefix);
}
Modified: lucene/java/branches/flex_1458/src/java/org/apache/lucene/search/TermRangeQuery.java
URL: http://svn.apache.org/viewvc/lucene/java/branches/flex_1458/src/java/org/apache/lucene/search/TermRangeQuery.java?rev=908457&r1=908456&r2=908457&view=diff
==============================================================================
--- lucene/java/branches/flex_1458/src/java/org/apache/lucene/search/TermRangeQuery.java (original)
+++ lucene/java/branches/flex_1458/src/java/org/apache/lucene/search/TermRangeQuery.java Wed Feb 10 11:45:29 2010
@@ -138,13 +138,13 @@
@Override
protected TermsEnum getTermsEnum(IndexReader reader) throws IOException {
if (collator == null && lowerTerm != null && upperTerm != null && lowerTerm.compareTo(upperTerm) > 0) {
- return new EmptyTermsEnum();
+ return TermsEnum.EMPTY;
}
if ((lowerTerm == null || (collator == null && includeLower && "".equals(lowerTerm))) && upperTerm == null) {
// NOTE: debateably, the caller should never pass in a
// multi reader...
final Terms terms = MultiFields.getTerms(reader, field);
- return (terms != null) ? terms.iterator() : new EmptyTermsEnum();
+ return (terms != null) ? terms.iterator() : TermsEnum.EMPTY;
}
return new TermRangeTermsEnum(reader, field,
lowerTerm, upperTerm, includeLower, includeUpper, collator);
Modified: lucene/java/branches/flex_1458/src/test/org/apache/lucene/search/TestAutomatonQuery.java
URL: http://svn.apache.org/viewvc/lucene/java/branches/flex_1458/src/test/org/apache/lucene/search/TestAutomatonQuery.java?rev=908457&r1=908456&r2=908457&view=diff
==============================================================================
--- lucene/java/branches/flex_1458/src/test/org/apache/lucene/search/TestAutomatonQuery.java (original)
+++ lucene/java/branches/flex_1458/src/test/org/apache/lucene/search/TestAutomatonQuery.java Wed Feb 10 11:45:29 2010
@@ -25,6 +25,7 @@
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.Term;
+import org.apache.lucene.index.TermsEnum;
import org.apache.lucene.store.RAMDirectory;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.util.Version;
@@ -218,7 +219,7 @@
.makeEmpty());
// not yet available: assertTrue(aq.getEnum(searcher.getIndexReader())
// instanceof EmptyTermEnum);
- assertTrue(aq.getTermsEnum(searcher.getIndexReader()) instanceof EmptyTermsEnum);
+ assertSame(TermsEnum.EMPTY, aq.getTermsEnum(searcher.getIndexReader()));
assertEquals(0, automatonQueryNrHits(aq));
}
}