Index: src/java/org/apache/lucene/search/AutomatonQuery.java
===================================================================
--- src/java/org/apache/lucene/search/AutomatonQuery.java (revision 908372)
+++ src/java/org/apache/lucene/search/AutomatonQuery.java (working copy)
@@ -72,13 +72,13 @@
protected TermsEnum getTermsEnum(IndexReader reader) throws IOException {
// matches nothing
if (BasicOperations.isEmpty(automaton)) {
- return new EmptyTermsEnum();
+ return EmptyTermsEnum.INSTANCE;
}
// matches all possible strings
if (BasicOperations.isTotal(automaton)) {
final Terms terms = reader.fields().terms(getField());
- return (terms != null) ? terms.iterator() : new EmptyTermsEnum();
+ return (terms != null) ? terms.iterator() : EmptyTermsEnum.INSTANCE;
}
// matches a fixed string in singleton representation
Index: src/java/org/apache/lucene/search/EmptyTermsEnum.java
===================================================================
--- src/java/org/apache/lucene/search/EmptyTermsEnum.java (revision 908372)
+++ src/java/org/apache/lucene/search/EmptyTermsEnum.java (working copy)
@@ -28,11 +28,14 @@
* {@link MultiTermQuery#rewriteMethod}.
*/
public final class EmptyTermsEnum extends FilteredTermsEnum {
+
+ /** Use this singleton instance */
+ public static final EmptyTermsEnum INSTANCE = new EmptyTermsEnum();
/**
* Creates a new EmptyTermsEnum.
*/
- public EmptyTermsEnum() {
+ private EmptyTermsEnum() {
super((TermsEnum) null);
}
Index: src/java/org/apache/lucene/search/NumericRangeQuery.java
===================================================================
--- src/java/org/apache/lucene/search/NumericRangeQuery.java (revision 908372)
+++ src/java/org/apache/lucene/search/NumericRangeQuery.java (working copy)
@@ -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) min).compareTo(max) > 0) ?
- new EmptyTermsEnum() :
+ EmptyTermsEnum.INSTANCE :
new NumericRangeTermsEnum(reader);
}
Index: src/java/org/apache/lucene/search/PrefixQuery.java
===================================================================
--- src/java/org/apache/lucene/search/PrefixQuery.java (revision 908372)
+++ src/java/org/apache/lucene/search/PrefixQuery.java (working copy)
@@ -52,7 +52,7 @@
protected TermsEnum getTermsEnum(IndexReader reader) throws IOException {
if (prefix.text().length() == 0) {
final Terms terms = reader.fields().terms(getField());
- return (terms != null) ? terms.iterator() : new EmptyTermsEnum();
+ return (terms != null) ? terms.iterator() : EmptyTermsEnum.INSTANCE;
}
return new PrefixTermsEnum(reader, prefix);
}
Index: src/java/org/apache/lucene/search/TermRangeQuery.java
===================================================================
--- src/java/org/apache/lucene/search/TermRangeQuery.java (revision 908372)
+++ src/java/org/apache/lucene/search/TermRangeQuery.java (working copy)
@@ -137,11 +137,11 @@
@Override
protected TermsEnum getTermsEnum(IndexReader reader) throws IOException {
if (collator == null && lowerTerm != null && upperTerm != null && lowerTerm.compareTo(upperTerm) > 0) {
- return new EmptyTermsEnum();
+ return EmptyTermsEnum.INSTANCE;
}
if ((lowerTerm == null || (collator == null && includeLower && "".equals(lowerTerm))) && upperTerm == null) {
final Terms terms = reader.fields().terms(field);
- return (terms != null) ? terms.iterator() : new EmptyTermsEnum();
+ return (terms != null) ? terms.iterator() : EmptyTermsEnum.INSTANCE;
}
return new TermRangeTermsEnum(reader, field,
lowerTerm, upperTerm, includeLower, includeUpper, collator);
Index: src/test/org/apache/lucene/search/TestAutomatonQuery.java
===================================================================
--- src/test/org/apache/lucene/search/TestAutomatonQuery.java (revision 908372)
+++ src/test/org/apache/lucene/search/TestAutomatonQuery.java (working copy)
@@ -218,7 +218,7 @@
.makeEmpty());
// not yet available: assertTrue(aq.getEnum(searcher.getIndexReader())
// instanceof EmptyTermEnum);
- assertTrue(aq.getTermsEnum(searcher.getIndexReader()) instanceof EmptyTermsEnum);
+ assertSame(EmptyTermsEnum.INSTANCE, aq.getTermsEnum(searcher.getIndexReader()));
assertEquals(0, automatonQueryNrHits(aq));
}
}