You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rj...@apache.org on 2015/02/24 01:09:39 UTC

svn commit: r1661822 - in /lucene/dev/trunk/lucene: ./ codecs/src/java/org/apache/lucene/codecs/blockterms/ codecs/src/java/org/apache/lucene/codecs/blocktreeords/ codecs/src/java/org/apache/lucene/codecs/simpletext/ core/src/java/org/apache/lucene/cod...

Author: rjernst
Date: Tue Feb 24 00:09:38 2015
New Revision: 1661822

URL: http://svn.apache.org/r1661822
Log:
LUCENE-6246: simplify flags for PostingsEnum

Modified:
    lucene/dev/trunk/lucene/CHANGES.txt
    lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/blockterms/BlockTermsReader.java
    lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/blocktreeords/OrdsIntersectTermsEnum.java
    lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/blocktreeords/OrdsSegmentTermsEnum.java
    lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextFieldsReader.java
    lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsReader.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/codecs/lucene50/Lucene50PostingsReader.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/FreqProxFields.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/MultiFields.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/PostingsEnum.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestPayloads.java
    lucene/dev/trunk/lucene/misc/src/java/org/apache/lucene/index/SortingLeafReader.java
    lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/codecs/idversion/IDVersionPostingsReader.java
    lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/index/BasePostingsFormatTestCase.java
    lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/TestUtil.java

Modified: lucene/dev/trunk/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/CHANGES.txt?rev=1661822&r1=1661821&r2=1661822&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/CHANGES.txt (original)
+++ lucene/dev/trunk/lucene/CHANGES.txt Tue Feb 24 00:09:38 2015
@@ -119,10 +119,10 @@ API Changes
 * LUCENE-6218, LUCENE-6220: Add Collector.needsScores() and needsScores
   parameter to Query.createWeight(). (Robert Muir, Adrien Grand)
 
-* LUCENE-4524: Merge DocsEnum and DocsAndPositionsEnum into a single
-  PostingsEnum iterator.  TermsEnum.docs() and TermsEnum.docsAndPositions()
-  are replaced by TermsEnum.postings(). (Alan Woodward, Simon Willnauer,
-  Robert Muir)
+* LUCENE-4524, LUCENE-6246, LUCENE-6256: Merge DocsEnum and DocsAndPositionsEnum
+  into a single PostingsEnum iterator.  TermsEnum.docs() and TermsEnum.docsAndPositions()
+  are replaced by TermsEnum.postings(). 
+  (Alan Woodward, Simon Willnauer, Robert Muir, Ryan Ernst)
 
 * LUCENE-6222: Removed TermFilter, use a QueryWrapperFilter(TermQuery)
   instead. This will be as efficient now that queries can opt out from
@@ -143,10 +143,6 @@ API Changes
 * LUCENE-6245: Force Filter subclasses to implement toString API from Query.
   (Ryan Ernst)
 
-* LUCENE-6256: Change PostingsEnum.nextPosition() to consistently return -1 when
-  positions are not available.
-  (Ryan Ernst)
-
 * LUCENE-6268: Replace FieldValueFilter and DocValuesRangeFilter with equivalent
   queries that support approximations. (Adrien Grand)
 

Modified: lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/blockterms/BlockTermsReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/blockterms/BlockTermsReader.java?rev=1661822&r1=1661821&r2=1661822&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/blockterms/BlockTermsReader.java (original)
+++ lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/blockterms/BlockTermsReader.java Tue Feb 24 00:09:38 2015
@@ -653,7 +653,7 @@ public class BlockTermsReader extends Fi
       @Override
       public PostingsEnum postings(Bits liveDocs, PostingsEnum reuse, int flags) throws IOException {
 
-        if (PostingsEnum.requiresPositions(flags)) {
+        if (PostingsEnum.featureRequested(flags, PostingsEnum.POSITIONS)) {
           if (fieldInfo.getIndexOptions().compareTo(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS) < 0) {
             // Positions were not indexed:
             return null;

Modified: lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/blocktreeords/OrdsIntersectTermsEnum.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/blocktreeords/OrdsIntersectTermsEnum.java?rev=1661822&r1=1661821&r2=1661822&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/blocktreeords/OrdsIntersectTermsEnum.java (original)
+++ lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/blocktreeords/OrdsIntersectTermsEnum.java Tue Feb 24 00:09:38 2015
@@ -204,7 +204,7 @@ final class OrdsIntersectTermsEnum exten
   @Override
   public PostingsEnum postings(Bits skipDocs, PostingsEnum reuse, int flags) throws IOException {
 
-    if (PostingsEnum.requiresPositions(flags)) {
+    if (PostingsEnum.featureRequested(flags, PostingsEnum.POSITIONS)) {
       if (fr.fieldInfo.getIndexOptions().compareTo(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS) < 0) {
         // Positions were not indexed:
         return null;

Modified: lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/blocktreeords/OrdsSegmentTermsEnum.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/blocktreeords/OrdsSegmentTermsEnum.java?rev=1661822&r1=1661821&r2=1661822&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/blocktreeords/OrdsSegmentTermsEnum.java (original)
+++ lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/blocktreeords/OrdsSegmentTermsEnum.java Tue Feb 24 00:09:38 2015
@@ -925,7 +925,7 @@ public final class OrdsSegmentTermsEnum
   @Override
   public PostingsEnum postings(Bits skipDocs, PostingsEnum reuse, int flags) throws IOException {
 
-    if (PostingsEnum.requiresPositions(flags)) {
+    if (PostingsEnum.featureRequested(flags, PostingsEnum.POSITIONS)) {
       if (fr.fieldInfo.getIndexOptions().compareTo(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS) < 0) {
         // Positions were not indexed:
         return null;

Modified: lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextFieldsReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextFieldsReader.java?rev=1661822&r1=1661821&r2=1661822&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextFieldsReader.java (original)
+++ lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextFieldsReader.java Tue Feb 24 00:09:38 2015
@@ -209,7 +209,7 @@ class SimpleTextFieldsReader extends Fie
     @Override
     public PostingsEnum postings(Bits liveDocs, PostingsEnum reuse, int flags) throws IOException {
 
-      if (PostingsEnum.requiresPositions(flags)) {
+      if (PostingsEnum.featureRequested(flags, PostingsEnum.POSITIONS)) {
         if (indexOptions.compareTo(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS) < 0) {
           // Positions were not indexed
           return null;

Modified: lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsReader.java?rev=1661822&r1=1661821&r2=1661822&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsReader.java (original)
+++ lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsReader.java Tue Feb 24 00:09:38 2015
@@ -389,7 +389,7 @@ public class SimpleTextTermVectorsReader
     @Override
     public PostingsEnum postings(Bits liveDocs, PostingsEnum reuse, int flags) throws IOException {
 
-      if (PostingsEnum.requiresPositions(flags)) {
+      if (PostingsEnum.featureRequested(flags, PostingsEnum.POSITIONS)) {
         SimpleTVPostings postings = current.getValue();
         if (postings.positions == null && postings.startOffsets == null) {
           return null;
@@ -402,7 +402,7 @@ public class SimpleTextTermVectorsReader
 
       // TODO: reuse
       SimpleTVDocsEnum e = new SimpleTVDocsEnum();
-      e.reset(liveDocs, (flags & PostingsEnum.FREQS) == 0 ? 1 : current.getValue().freq);
+      e.reset(liveDocs, PostingsEnum.featureRequested(flags, PostingsEnum.FREQS) == false ? 1 : current.getValue().freq);
       return e;
     }
 

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/codecs/lucene50/Lucene50PostingsReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/codecs/lucene50/Lucene50PostingsReader.java?rev=1661822&r1=1661821&r2=1661822&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/codecs/lucene50/Lucene50PostingsReader.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/codecs/lucene50/Lucene50PostingsReader.java Tue Feb 24 00:09:38 2015
@@ -214,8 +214,8 @@ public final class Lucene50PostingsReade
     if (!indexHasPositions)
       return null;
 
-    if ((!indexHasOffsets || (flags & PostingsEnum.OFFSETS) == 0) &&
-        (!indexHasPayloads || (flags & PostingsEnum.PAYLOADS) == 0)) {
+    if ((!indexHasOffsets || PostingsEnum.featureRequested(flags, PostingsEnum.OFFSETS) == false) &&
+        (!indexHasPayloads || PostingsEnum.featureRequested(flags, PostingsEnum.PAYLOADS) == false)) {
       BlockPostingsEnum docsAndPositionsEnum;
       if (reuse instanceof BlockPostingsEnum) {
         docsAndPositionsEnum = (BlockPostingsEnum) reuse;
@@ -317,7 +317,7 @@ public final class Lucene50PostingsReade
       }
 
       doc = -1;
-      this.needsFreq = (flags & PostingsEnum.FREQS) != 0;
+      this.needsFreq = PostingsEnum.featureRequested(flags, PostingsEnum.FREQS);
       if (indexHasFreq == false || needsFreq == false) {
         Arrays.fill(freqBuffer, 1);
       }
@@ -981,8 +981,8 @@ public final class Lucene50PostingsReade
         lastPosBlockFP = posTermStartFP + termState.lastPosBlockOffset;
       }
 
-      this.needsOffsets = (flags & PostingsEnum.OFFSETS) != 0;
-      this.needsPayloads = (flags & PostingsEnum.PAYLOADS) != 0;
+      this.needsOffsets = PostingsEnum.featureRequested(flags, PostingsEnum.OFFSETS);
+      this.needsPayloads = PostingsEnum.featureRequested(flags, PostingsEnum.PAYLOADS);
 
       doc = -1;
       accum = 0;

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/FreqProxFields.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/FreqProxFields.java?rev=1661822&r1=1661821&r2=1661822&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/FreqProxFields.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/FreqProxFields.java Tue Feb 24 00:09:38 2015
@@ -244,7 +244,7 @@ class FreqProxFields extends Fields {
           throw new IllegalArgumentException("did not index positions");
         }
 
-        if (!terms.hasOffsets && (flags & PostingsEnum.OFFSETS) == PostingsEnum.OFFSETS) {
+        if (!terms.hasOffsets && PostingsEnum.featureRequested(flags, PostingsEnum.OFFSETS)) {
           // Caller wants offsets but we didn't index them;
           // don't lie:
           throw new IllegalArgumentException("did not index offsets");
@@ -264,7 +264,7 @@ class FreqProxFields extends Fields {
 
       FreqProxDocsEnum docsEnum;
 
-      if (!terms.hasFreq && (flags & PostingsEnum.FREQS) != 0) {
+      if (!terms.hasFreq && PostingsEnum.featureRequested(flags, PostingsEnum.FREQS)) {
         // Caller wants freqs but we didn't index them;
         // don't lie:
         throw new IllegalArgumentException("did not index freq");

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/MultiFields.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/MultiFields.java?rev=1661822&r1=1661821&r2=1661822&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/MultiFields.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/MultiFields.java Tue Feb 24 00:09:38 2015
@@ -151,7 +151,7 @@ public final class MultiFields extends F
    *  term does not exist or positions were not indexed. 
    *  @see #getTermPositionsEnum(IndexReader, Bits, String, BytesRef, int) */
   public static PostingsEnum getTermPositionsEnum(IndexReader r, Bits liveDocs, String field, BytesRef term) throws IOException {
-    return getTermPositionsEnum(r, liveDocs, field, term, PostingsEnum.OFFSETS | PostingsEnum.PAYLOADS);
+    return getTermPositionsEnum(r, liveDocs, field, term, PostingsEnum.ALL);
   }
 
   /** Returns {@link PostingsEnum} for the specified

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/PostingsEnum.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/PostingsEnum.java?rev=1661822&r1=1661821&r2=1661822&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/PostingsEnum.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/PostingsEnum.java Tue Feb 24 00:09:38 2015
@@ -33,37 +33,35 @@ public abstract class PostingsEnum exten
    * Flag to pass to {@link TermsEnum#postings(Bits, PostingsEnum, int)} if you don't
    * require per-document postings in the returned enum.
    */
-  public static final int NONE = 0x0;
+  public static final short NONE = 0;
 
   /** Flag to pass to {@link TermsEnum#postings(Bits, PostingsEnum, int)}
    *  if you require term frequencies in the returned enum. */
-  public static final int FREQS = 0x1;
+  public static final short FREQS = 1 << 3;
 
   /** Flag to pass to {@link TermsEnum#postings(Bits, PostingsEnum, int)}
    * if you require term positions in the returned enum. */
-  public static final int POSITIONS = 0x3;
+  public static final short POSITIONS = FREQS | 1 << 4;
   
   /** Flag to pass to {@link TermsEnum#postings(Bits, PostingsEnum, int)}
    *  if you require offsets in the returned enum. */
-  public static final int OFFSETS = 0x7;
+  public static final short OFFSETS = POSITIONS | 1 << 5;
 
   /** Flag to pass to  {@link TermsEnum#postings(Bits, PostingsEnum, int)}
    *  if you require payloads in the returned enum. */
-  public static final int PAYLOADS = 0xB;
+  public static final short PAYLOADS = POSITIONS | 1 << 6;
 
   /**
    * Flag to pass to {@link TermsEnum#postings(Bits, PostingsEnum, int)}
    * to get positions, payloads and offsets in the returned enum
    */
-  public static final int ALL = POSITIONS | PAYLOADS;
+  public static final short ALL = OFFSETS | PAYLOADS;
 
   /**
-   * Returns true if the passed in flags require positions to be indexed
-   * @param flags the postings flags
-   * @return true if the passed in flags require positions to be indexed
+   * Returns true if the given feature is requested in the flags, false otherwise.
    */
-  public static boolean requiresPositions(int flags) {
-    return ((flags & POSITIONS) >= POSITIONS);
+  public static boolean featureRequested(int flags, short feature) {
+    return (flags & feature) == feature;
   }
 
   private AttributeSource atts = null;

Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestPayloads.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestPayloads.java?rev=1661822&r1=1661821&r2=1661822&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestPayloads.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestPayloads.java Tue Feb 24 00:09:38 2015
@@ -609,7 +609,7 @@ public class TestPayloads extends Lucene
     writer.addDocument(doc);
     DirectoryReader reader = writer.getReader();
     LeafReader sr = SlowCompositeReaderWrapper.wrap(reader);
-    PostingsEnum de = sr.postings(new Term("field", "withPayload"), PostingsEnum.POSITIONS);
+    PostingsEnum de = sr.postings(new Term("field", "withPayload"), PostingsEnum.PAYLOADS);
     de.nextDoc();
     de.nextPosition();
     assertEquals(new BytesRef("test"), de.getPayload());
@@ -643,7 +643,7 @@ public class TestPayloads extends Lucene
     writer.addDocument(doc);
     DirectoryReader reader = writer.getReader();
     SegmentReader sr = getOnlySegmentReader(reader);
-    PostingsEnum de = sr.postings(new Term("field", "withPayload"), PostingsEnum.POSITIONS);
+    PostingsEnum de = sr.postings(new Term("field", "withPayload"), PostingsEnum.PAYLOADS);
     de.nextDoc();
     de.nextPosition();
     assertEquals(new BytesRef("test"), de.getPayload());

Modified: lucene/dev/trunk/lucene/misc/src/java/org/apache/lucene/index/SortingLeafReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/misc/src/java/org/apache/lucene/index/SortingLeafReader.java?rev=1661822&r1=1661821&r2=1661822&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/misc/src/java/org/apache/lucene/index/SortingLeafReader.java (original)
+++ lucene/dev/trunk/lucene/misc/src/java/org/apache/lucene/index/SortingLeafReader.java Tue Feb 24 00:09:38 2015
@@ -132,7 +132,7 @@ public class SortingLeafReader extends F
     @Override
     public PostingsEnum postings(Bits liveDocs, PostingsEnum reuse, final int flags) throws IOException {
 
-      if (PostingsEnum.requiresPositions(flags)) {
+      if (PostingsEnum.featureRequested(flags, PostingsEnum.POSITIONS)) {
         final PostingsEnum inReuse;
         final SortingPostingsEnum wrapReuse;
         if (reuse != null && reuse instanceof SortingPostingsEnum) {
@@ -171,7 +171,7 @@ public class SortingLeafReader extends F
       }
 
       final PostingsEnum inDocs = in.postings(newToOld(liveDocs), inReuse, flags);
-      final boolean withFreqs = indexOptions.compareTo(IndexOptions.DOCS_AND_FREQS) >=0 && (flags & PostingsEnum.FREQS) != 0;
+      final boolean withFreqs = indexOptions.compareTo(IndexOptions.DOCS_AND_FREQS) >=0 && PostingsEnum.featureRequested(flags, PostingsEnum.FREQS);
       return new SortingDocsEnum(docMap.size(), wrapReuse, inDocs, withFreqs, docMap);
     }
 

Modified: lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/codecs/idversion/IDVersionPostingsReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/codecs/idversion/IDVersionPostingsReader.java?rev=1661822&r1=1661821&r2=1661822&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/codecs/idversion/IDVersionPostingsReader.java (original)
+++ lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/codecs/idversion/IDVersionPostingsReader.java Tue Feb 24 00:09:38 2015
@@ -66,7 +66,7 @@ final class IDVersionPostingsReader exte
   public PostingsEnum postings(FieldInfo fieldInfo, BlockTermState termState, Bits liveDocs, PostingsEnum reuse, int flags) throws IOException {
     SingleDocsEnum docsEnum;
 
-    if (PostingsEnum.requiresPositions(flags)) {
+    if (PostingsEnum.featureRequested(flags, PostingsEnum.POSITIONS)) {
       SinglePostingsEnum posEnum;
 
       if (reuse instanceof SinglePostingsEnum) {

Modified: lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/index/BasePostingsFormatTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/index/BasePostingsFormatTestCase.java?rev=1661822&r1=1661821&r2=1661822&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/index/BasePostingsFormatTestCase.java (original)
+++ lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/index/BasePostingsFormatTestCase.java Tue Feb 24 00:09:38 2015
@@ -643,18 +643,18 @@ public abstract class BasePostingsFormat
       if (liveDocs != null) {
         throw new IllegalArgumentException("liveDocs must be null");
       }
-      if (PostingsEnum.requiresPositions(flags)) {
+      if (PostingsEnum.featureRequested(flags, PostingsEnum.POSITIONS)) {
         if (maxAllowed.compareTo(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS) < 0) {
           return null;
         }
-        if ((flags & PostingsEnum.OFFSETS) == PostingsEnum.OFFSETS && maxAllowed.compareTo(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS) < 0) {
+        if (PostingsEnum.featureRequested(flags, PostingsEnum.OFFSETS) && maxAllowed.compareTo(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS) < 0) {
           return null;
         }
-        if ((flags & PostingsEnum.PAYLOADS) == PostingsEnum.PAYLOADS && allowPayloads == false) {
+        if (PostingsEnum.featureRequested(flags, PostingsEnum.PAYLOADS) && allowPayloads == false) {
           return null;
         }
       }
-      if ((flags & PostingsEnum.FREQS) != 0 && maxAllowed.compareTo(IndexOptions.DOCS_AND_FREQS) < 0) {
+      if (PostingsEnum.featureRequested(flags, PostingsEnum.FREQS) && maxAllowed.compareTo(IndexOptions.DOCS_AND_FREQS) < 0) {
         return null;
       }
       return getSeedPostings(current.getKey().utf8ToString(), current.getValue().seed, false, maxAllowed, allowPayloads);

Modified: lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/TestUtil.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/TestUtil.java?rev=1661822&r1=1661821&r2=1661822&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/TestUtil.java (original)
+++ lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/TestUtil.java Tue Feb 24 00:09:38 2015
@@ -1017,7 +1017,7 @@ public final class TestUtil {
           case 0: posFlags = PostingsEnum.POSITIONS; break;
           case 1: posFlags = PostingsEnum.OFFSETS; break;
           case 2: posFlags = PostingsEnum.PAYLOADS; break;
-          default: posFlags = PostingsEnum.OFFSETS | PostingsEnum.PAYLOADS; break;
+          default: posFlags = PostingsEnum.ALL; break;
         }
         PostingsEnum docsAndPositions = termsEnum.postings(liveDocs, null, posFlags);
         if (docsAndPositions != null) {