You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2012/05/16 08:28:33 UTC

svn commit: r1339025 [2/2] - in /lucene/dev/branches/lucene4055: lucene/core/src/java/org/apache/lucene/codecs/ lucene/core/src/java/org/apache/lucene/codecs/lucene3x/ lucene/core/src/java/org/apache/lucene/codecs/lucene40/ lucene/core/src/java/org/apa...

Modified: lucene/dev/branches/lucene4055/lucene/core/src/java/org/apache/lucene/index/ReadOnlyFieldInfos.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4055/lucene/core/src/java/org/apache/lucene/index/ReadOnlyFieldInfos.java?rev=1339025&r1=1339024&r2=1339025&view=diff
==============================================================================
--- lucene/dev/branches/lucene4055/lucene/core/src/java/org/apache/lucene/index/ReadOnlyFieldInfos.java (original)
+++ lucene/dev/branches/lucene4055/lucene/core/src/java/org/apache/lucene/index/ReadOnlyFieldInfos.java Wed May 16 06:28:31 2012
@@ -1,10 +1,14 @@
 package org.apache.lucene.index;
 
+import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.SortedMap;
 import java.util.TreeMap;
 
+import org.apache.lucene.index.FieldInfo.IndexOptions;
+
 /**
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -33,12 +37,12 @@ public final class ReadOnlyFieldInfos ex
   
   private final SortedMap<Integer,FieldInfo> byNumber = new TreeMap<Integer,FieldInfo>();
   private final HashMap<String,FieldInfo> byName = new HashMap<String,FieldInfo>();
+  private final Collection<FieldInfo> values; // for an unmodifiable iterator
   
-  public ReadOnlyFieldInfos(FieldInfo[] infos, boolean hasFreq, boolean hasProx, boolean hasVectors) {
-    this.hasFreq = hasFreq;
-    this.hasProx = hasProx;
-    this.hasVectors = hasVectors;
-    
+  public ReadOnlyFieldInfos(FieldInfo[] infos) {
+    boolean hasVectors = false;
+    boolean hasProx = false;
+    boolean hasFreq = false;
     boolean hasNorms = false;
     boolean hasDocValues = false;
     
@@ -48,41 +52,55 @@ public final class ReadOnlyFieldInfos ex
       assert !byName.containsKey(info.name);
       byName.put(info.name, info);
       
+      hasVectors |= info.hasVectors();
+      hasProx |= info.isIndexed() && info.getIndexOptions().compareTo(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS) >= 0;
+      hasFreq |= info.isIndexed() && info.getIndexOptions() != IndexOptions.DOCS_ONLY;
       hasNorms |= info.hasNorms();
       hasDocValues |= info.hasDocValues();
     }
     
+    this.hasVectors = hasVectors;
+    this.hasProx = hasProx;
+    this.hasFreq = hasFreq;
     this.hasNorms = hasNorms;
     this.hasDocValues = hasDocValues;
+    this.values = Collections.unmodifiableCollection(byNumber.values());
   }
   
+  @Override
   public boolean hasFreq() {
     return hasFreq;
   }
   
+  @Override
   public boolean hasProx() {
     return hasProx;
   }
   
+  @Override
   public boolean hasVectors() {
     return hasVectors;
   }
   
+  @Override
   public boolean hasNorms() {
     return hasNorms;
   }
   
+  @Override
   public boolean hasDocValues() {
     return hasDocValues;
   }
   
+  @Override
   public int size() {
     assert byNumber.size() == byName.size();
     return byNumber.size();
   }
   
+  @Override
   public Iterator<FieldInfo> iterator() {
-    return byNumber.values().iterator();
+    return values.iterator();
   }
 
   @Override
@@ -103,7 +121,7 @@ public final class ReadOnlyFieldInfos ex
     for (FieldInfo info : this) {
       infos[upto++] = info.clone();
     }
-    return new ReadOnlyFieldInfos(infos, hasFreq, hasProx, hasVectors);
+    return new ReadOnlyFieldInfos(infos);
   }
 
 }

Modified: lucene/dev/branches/lucene4055/lucene/core/src/java/org/apache/lucene/index/SegmentMerger.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4055/lucene/core/src/java/org/apache/lucene/index/SegmentMerger.java?rev=1339025&r1=1339024&r2=1339025&view=diff
==============================================================================
--- lucene/dev/branches/lucene4055/lucene/core/src/java/org/apache/lucene/index/SegmentMerger.java (original)
+++ lucene/dev/branches/lucene4055/lucene/core/src/java/org/apache/lucene/index/SegmentMerger.java Wed May 16 06:28:31 2012
@@ -205,7 +205,8 @@ final class SegmentMerger {
       final AtomicReader reader = readerAndLiveDocs.reader;
       FieldInfos readerFieldInfos = reader.getFieldInfos();
       for (FieldInfo fi : readerFieldInfos) {
-        FieldInfo merged = mergeState.fieldInfos.add(fi);
+        // nocommit: ugly
+        FieldInfo merged = ((MutableFieldInfos)mergeState.fieldInfos).add(fi);
         // update the type promotion mapping for this reader
         if (fi.hasDocValues()) {
           TypePromoter previous = docValuesTypes.get(merged);

Modified: lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestCodecs.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestCodecs.java?rev=1339025&r1=1339024&r2=1339025&view=diff
==============================================================================
--- lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestCodecs.java (original)
+++ lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestCodecs.java Wed May 16 06:28:31 2012
@@ -90,11 +90,9 @@ public class TestCodecs extends LuceneTe
     public FieldData(final String name, final MutableFieldInfos fieldInfos, final TermData[] terms, final boolean omitTF, final boolean storePayloads) {
       this.omitTF = omitTF;
       this.storePayloads = storePayloads;
-      fieldInfos.addOrUpdate(name, true);
-      fieldInfo = fieldInfos.fieldInfo(name);
       // TODO: change this test to use all three
-      fieldInfo.indexOptions = omitTF ? IndexOptions.DOCS_ONLY : IndexOptions.DOCS_AND_FREQS_AND_POSITIONS;
-      fieldInfo.storePayloads = storePayloads;
+      fieldInfos.addOrUpdate(name, true, false, false, storePayloads, omitTF ? IndexOptions.DOCS_ONLY : IndexOptions.DOCS_AND_FREQS_AND_POSITIONS, null, null);
+      fieldInfo = fieldInfos.fieldInfo(name);
       this.terms = terms;
       for(int i=0;i<terms.length;i++)
         terms[i].field = this;

Modified: lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestConsistentFieldNumbers.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestConsistentFieldNumbers.java?rev=1339025&r1=1339024&r2=1339025&view=diff
==============================================================================
--- lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestConsistentFieldNumbers.java (original)
+++ lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestConsistentFieldNumbers.java Wed May 16 06:28:31 2012
@@ -294,8 +294,8 @@ public class TestConsistentFieldNumbers 
 
       for (FieldInfo fi : fis) {
         Field expected = getField(Integer.parseInt(fi.name));
-        assertEquals(expected.fieldType().indexed(), fi.isIndexed);
-        assertEquals(expected.fieldType().storeTermVectors(), fi.storeTermVector);
+        assertEquals(expected.fieldType().indexed(), fi.isIndexed());
+        assertEquals(expected.fieldType().storeTermVectors(), fi.hasVectors());
       }
     }
 

Modified: lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReader.java?rev=1339025&r1=1339024&r2=1339025&view=diff
==============================================================================
--- lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReader.java (original)
+++ lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReader.java Wed May 16 06:28:31 2012
@@ -258,12 +258,12 @@ public class TestDirectoryReader extends
       for(FieldInfo fieldInfo : fieldInfos) {
         final String name = fieldInfo.name;
         allFieldNames.add(name);
-        if (fieldInfo.isIndexed) {
+        if (fieldInfo.isIndexed()) {
           indexedFieldNames.add(name);
         } else {
           notIndexedFieldNames.add(name);
         }
-        if (fieldInfo.storeTermVector) {
+        if (fieldInfo.hasVectors()) {
           tvFieldNames.add(name);
         }
       }

Modified: lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestDocumentWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestDocumentWriter.java?rev=1339025&r1=1339024&r2=1339025&view=diff
==============================================================================
--- lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestDocumentWriter.java (original)
+++ lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestDocumentWriter.java Wed May 16 06:28:31 2012
@@ -96,8 +96,8 @@ public class TestDocumentWriter extends 
     // test that the norms are not present in the segment if
     // omitNorms is true
     for (FieldInfo fi : reader.getFieldInfos()) {
-      if (fi.isIndexed) {
-        assertTrue(fi.omitNorms == (reader.normValues(fi.name) == null));
+      if (fi.isIndexed()) {
+        assertTrue(fi.omitsNorms() == (reader.normValues(fi.name) == null));
       }
     }
     reader.close();
@@ -331,10 +331,10 @@ public class TestDocumentWriter extends 
     FieldInfos fi = reader.getFieldInfos();
     // f1
     assertFalse("f1 should have no norms", fi.fieldInfo("f1").hasNorms());
-    assertEquals("omitTermFreqAndPositions field bit should not be set for f1", IndexOptions.DOCS_AND_FREQS_AND_POSITIONS, fi.fieldInfo("f1").indexOptions);
+    assertEquals("omitTermFreqAndPositions field bit should not be set for f1", IndexOptions.DOCS_AND_FREQS_AND_POSITIONS, fi.fieldInfo("f1").getIndexOptions());
     // f2
     assertTrue("f2 should have norms", fi.fieldInfo("f2").hasNorms());
-    assertEquals("omitTermFreqAndPositions field bit should be set for f2", IndexOptions.DOCS_ONLY, fi.fieldInfo("f2").indexOptions);
+    assertEquals("omitTermFreqAndPositions field bit should be set for f2", IndexOptions.DOCS_ONLY, fi.fieldInfo("f2").getIndexOptions());
     reader.close();
   }
 }

Modified: lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestFieldInfos.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestFieldInfos.java?rev=1339025&r1=1339024&r2=1339025&view=diff
==============================================================================
--- lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestFieldInfos.java (original)
+++ lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestFieldInfos.java Wed May 16 06:28:31 2012
@@ -47,7 +47,9 @@ public class TestFieldInfos extends Luce
   //Positive test of FieldInfos
     assertTrue(testDoc != null);
     MutableFieldInfos fieldInfos = new MutableFieldInfos(new MutableFieldInfos.FieldNumberBiMap());
-    _TestUtil.add(testDoc, fieldInfos);
+    for (IndexableField field : testDoc) {
+      fieldInfos.addOrUpdate(field.name(), field.fieldType());
+    }
     //Since the complement is stored as well in the fields map
     assertTrue(fieldInfos.size() == DocHelper.all.size()); //this is all b/c we are using the no-arg constructor
     
@@ -76,22 +78,22 @@ public class TestFieldInfos extends Luce
     assertTrue(fieldInfos.size() == readIn.size());
     FieldInfo info = readIn.fieldInfo("textField1");
     assertTrue(info != null);
-    assertTrue(info.storeTermVector == false);
-    assertTrue(info.omitNorms == false);
+    assertTrue(info.hasVectors() == false);
+    assertTrue(info.omitsNorms() == false);
 
     info = readIn.fieldInfo("textField2");
     assertTrue(info != null);
-    assertTrue(info.omitNorms == false);
+    assertTrue(info.omitsNorms() == false);
 
     info = readIn.fieldInfo("textField3");
     assertTrue(info != null);
-    assertTrue(info.storeTermVector == false);
-    assertTrue(info.omitNorms == true);
+    assertTrue(info.hasVectors() == false);
+    assertTrue(info.omitsNorms() == true);
 
     info = readIn.fieldInfo("omitNorms");
     assertTrue(info != null);
-    assertTrue(info.storeTermVector == false);
-    assertTrue(info.omitNorms == true);
+    assertTrue(info.hasVectors() == false);
+    assertTrue(info.omitsNorms() == true);
 
     dir.close();
   }

Modified: lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestFieldsReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestFieldsReader.java?rev=1339025&r1=1339024&r2=1339025&view=diff
==============================================================================
--- lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestFieldsReader.java (original)
+++ lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestFieldsReader.java Wed May 16 06:28:31 2012
@@ -55,7 +55,9 @@ public class TestFieldsReader extends Lu
   public static void beforeClass() throws Exception {
     fieldInfos = new MutableFieldInfos(new MutableFieldInfos.FieldNumberBiMap());
     DocHelper.setupDoc(testDoc);
-    _TestUtil.add(testDoc, fieldInfos);
+    for (IndexableField field : testDoc) {
+      fieldInfos.addOrUpdate(field.name(), field.fieldType());
+    }
     dir = newDirectory();
     IndexWriterConfig conf = newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random())).setMergePolicy(newLogMergePolicy());
     ((LogMergePolicy) conf.getMergePolicy()).setUseCompoundFile(false);

Modified: lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestNorms.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestNorms.java?rev=1339025&r1=1339024&r2=1339025&view=diff
==============================================================================
--- lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestNorms.java (original)
+++ lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestNorms.java Wed May 16 06:28:31 2012
@@ -129,8 +129,8 @@ public class TestNorms extends LuceneTes
     AtomicReader reader = SlowCompositeReaderWrapper.wrap(IndexReader.open(otherDir));
     FieldInfos fieldInfos = reader.getFieldInfos();
     FieldInfo fieldInfo = fieldInfos.fieldInfo(byteTestField);
-    assertFalse(fieldInfo.omitNorms);
-    assertTrue(fieldInfo.isIndexed);
+    assertFalse(fieldInfo.omitsNorms());
+    assertTrue(fieldInfo.isIndexed());
     if (secondWriteNorm) {
       assertTrue(fieldInfo.hasNorms());
     } else {
@@ -146,13 +146,13 @@ public class TestNorms extends LuceneTes
       DocValues normValues = mergedReader.normValues(byteTestField);
       assertNull(normValues);
       FieldInfo fi = mergedReader.getFieldInfos().fieldInfo(byteTestField);
-      assertFalse(fi.omitNorms);
-      assertTrue(fi.isIndexed);
+      assertFalse(fi.omitsNorms());
+      assertTrue(fi.isIndexed());
       assertFalse(fi.hasNorms());
     } else {
       FieldInfo fi = mergedReader.getFieldInfos().fieldInfo(byteTestField);
-      assertFalse(fi.omitNorms);
-      assertTrue(fi.isIndexed);
+      assertFalse(fi.omitsNorms());
+      assertTrue(fi.isIndexed());
       assertTrue(fi.hasNorms());
       
       DocValues normValues = mergedReader.normValues(byteTestField);

Modified: lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestOmitNorms.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestOmitNorms.java?rev=1339025&r1=1339024&r2=1339025&view=diff
==============================================================================
--- lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestOmitNorms.java (original)
+++ lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestOmitNorms.java Wed May 16 06:28:31 2012
@@ -68,8 +68,8 @@ public class TestOmitNorms extends Lucen
 
     SegmentReader reader = getOnlySegmentReader(IndexReader.open(ram));
     FieldInfos fi = reader.getFieldInfos();
-    assertTrue("OmitNorms field bit should be set.", fi.fieldInfo("f1").omitNorms);
-    assertTrue("OmitNorms field bit should be set.", fi.fieldInfo("f2").omitNorms);
+    assertTrue("OmitNorms field bit should be set.", fi.fieldInfo("f1").omitsNorms());
+    assertTrue("OmitNorms field bit should be set.", fi.fieldInfo("f2").omitsNorms());
         
     reader.close();
     ram.close();
@@ -122,8 +122,8 @@ public class TestOmitNorms extends Lucen
 
     SegmentReader reader = getOnlySegmentReader(IndexReader.open(ram));
     FieldInfos fi = reader.getFieldInfos();
-    assertTrue("OmitNorms field bit should be set.", fi.fieldInfo("f1").omitNorms);
-    assertTrue("OmitNorms field bit should be set.", fi.fieldInfo("f2").omitNorms);
+    assertTrue("OmitNorms field bit should be set.", fi.fieldInfo("f1").omitsNorms());
+    assertTrue("OmitNorms field bit should be set.", fi.fieldInfo("f2").omitsNorms());
         
     reader.close();
     ram.close();
@@ -170,8 +170,8 @@ public class TestOmitNorms extends Lucen
 
     SegmentReader reader = getOnlySegmentReader(IndexReader.open(ram));
     FieldInfos fi = reader.getFieldInfos();
-    assertTrue("OmitNorms field bit should not be set.", !fi.fieldInfo("f1").omitNorms);
-    assertTrue("OmitNorms field bit should be set.", fi.fieldInfo("f2").omitNorms);
+    assertTrue("OmitNorms field bit should not be set.", !fi.fieldInfo("f1").omitsNorms());
+    assertTrue("OmitNorms field bit should be set.", fi.fieldInfo("f2").omitsNorms());
         
     reader.close();
     ram.close();

Modified: lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestOmitPositions.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestOmitPositions.java?rev=1339025&r1=1339024&r2=1339025&view=diff
==============================================================================
--- lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestOmitPositions.java (original)
+++ lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestOmitPositions.java Wed May 16 06:28:31 2012
@@ -156,23 +156,23 @@ public class TestOmitPositions extends L
     SegmentReader reader = getOnlySegmentReader(IndexReader.open(ram));
     FieldInfos fi = reader.getFieldInfos();
     // docs + docs = docs
-    assertEquals(IndexOptions.DOCS_ONLY, fi.fieldInfo("f1").indexOptions);
+    assertEquals(IndexOptions.DOCS_ONLY, fi.fieldInfo("f1").getIndexOptions());
     // docs + docs/freqs = docs
-    assertEquals(IndexOptions.DOCS_ONLY, fi.fieldInfo("f2").indexOptions);
+    assertEquals(IndexOptions.DOCS_ONLY, fi.fieldInfo("f2").getIndexOptions());
     // docs + docs/freqs/pos = docs
-    assertEquals(IndexOptions.DOCS_ONLY, fi.fieldInfo("f3").indexOptions);
+    assertEquals(IndexOptions.DOCS_ONLY, fi.fieldInfo("f3").getIndexOptions());
     // docs/freqs + docs = docs
-    assertEquals(IndexOptions.DOCS_ONLY, fi.fieldInfo("f4").indexOptions);
+    assertEquals(IndexOptions.DOCS_ONLY, fi.fieldInfo("f4").getIndexOptions());
     // docs/freqs + docs/freqs = docs/freqs
-    assertEquals(IndexOptions.DOCS_AND_FREQS, fi.fieldInfo("f5").indexOptions);
+    assertEquals(IndexOptions.DOCS_AND_FREQS, fi.fieldInfo("f5").getIndexOptions());
     // docs/freqs + docs/freqs/pos = docs/freqs
-    assertEquals(IndexOptions.DOCS_AND_FREQS, fi.fieldInfo("f6").indexOptions);
+    assertEquals(IndexOptions.DOCS_AND_FREQS, fi.fieldInfo("f6").getIndexOptions());
     // docs/freqs/pos + docs = docs
-    assertEquals(IndexOptions.DOCS_ONLY, fi.fieldInfo("f7").indexOptions);
+    assertEquals(IndexOptions.DOCS_ONLY, fi.fieldInfo("f7").getIndexOptions());
     // docs/freqs/pos + docs/freqs = docs/freqs
-    assertEquals(IndexOptions.DOCS_AND_FREQS, fi.fieldInfo("f8").indexOptions);
+    assertEquals(IndexOptions.DOCS_AND_FREQS, fi.fieldInfo("f8").getIndexOptions());
     // docs/freqs/pos + docs/freqs/pos = docs/freqs/pos
-    assertEquals(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS, fi.fieldInfo("f9").indexOptions);
+    assertEquals(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS, fi.fieldInfo("f9").getIndexOptions());
     
     reader.close();
     ram.close();

Modified: lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestOmitTf.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestOmitTf.java?rev=1339025&r1=1339024&r2=1339025&view=diff
==============================================================================
--- lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestOmitTf.java (original)
+++ lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestOmitTf.java Wed May 16 06:28:31 2012
@@ -95,8 +95,8 @@ public class TestOmitTf extends LuceneTe
 
     SegmentReader reader = getOnlySegmentReader(IndexReader.open(ram));
     FieldInfos fi = reader.getFieldInfos();
-    assertEquals("OmitTermFreqAndPositions field bit should be set.", IndexOptions.DOCS_ONLY, fi.fieldInfo("f1").indexOptions);
-    assertEquals("OmitTermFreqAndPositions field bit should be set.", IndexOptions.DOCS_ONLY, fi.fieldInfo("f2").indexOptions);
+    assertEquals("OmitTermFreqAndPositions field bit should be set.", IndexOptions.DOCS_ONLY, fi.fieldInfo("f1").getIndexOptions());
+    assertEquals("OmitTermFreqAndPositions field bit should be set.", IndexOptions.DOCS_ONLY, fi.fieldInfo("f2").getIndexOptions());
         
     reader.close();
     ram.close();
@@ -147,8 +147,8 @@ public class TestOmitTf extends LuceneTe
 
     SegmentReader reader = getOnlySegmentReader(IndexReader.open(ram));
     FieldInfos fi = reader.getFieldInfos();
-    assertEquals("OmitTermFreqAndPositions field bit should be set.", IndexOptions.DOCS_ONLY, fi.fieldInfo("f1").indexOptions);
-    assertEquals("OmitTermFreqAndPositions field bit should be set.", IndexOptions.DOCS_ONLY, fi.fieldInfo("f2").indexOptions);
+    assertEquals("OmitTermFreqAndPositions field bit should be set.", IndexOptions.DOCS_ONLY, fi.fieldInfo("f1").getIndexOptions());
+    assertEquals("OmitTermFreqAndPositions field bit should be set.", IndexOptions.DOCS_ONLY, fi.fieldInfo("f2").getIndexOptions());
         
     reader.close();
     ram.close();
@@ -190,8 +190,8 @@ public class TestOmitTf extends LuceneTe
 
     SegmentReader reader = getOnlySegmentReader(IndexReader.open(ram));
     FieldInfos fi = reader.getFieldInfos();
-    assertEquals("OmitTermFreqAndPositions field bit should not be set.", IndexOptions.DOCS_AND_FREQS_AND_POSITIONS, fi.fieldInfo("f1").indexOptions);
-    assertEquals("OmitTermFreqAndPositions field bit should be set.", IndexOptions.DOCS_ONLY, fi.fieldInfo("f2").indexOptions);
+    assertEquals("OmitTermFreqAndPositions field bit should not be set.", IndexOptions.DOCS_AND_FREQS_AND_POSITIONS, fi.fieldInfo("f1").getIndexOptions());
+    assertEquals("OmitTermFreqAndPositions field bit should be set.", IndexOptions.DOCS_ONLY, fi.fieldInfo("f2").getIndexOptions());
         
     reader.close();
     ram.close();

Modified: lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestPayloads.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestPayloads.java?rev=1339025&r1=1339024&r2=1339025&view=diff
==============================================================================
--- lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestPayloads.java (original)
+++ lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestPayloads.java Wed May 16 06:28:31 2012
@@ -113,9 +113,9 @@ public class TestPayloads extends Lucene
 
       SegmentReader reader = getOnlySegmentReader(IndexReader.open(ram));
         FieldInfos fi = reader.getFieldInfos();
-        assertFalse("Payload field bit should not be set.", fi.fieldInfo("f1").storePayloads);
-        assertTrue("Payload field bit should be set.", fi.fieldInfo("f2").storePayloads);
-        assertFalse("Payload field bit should not be set.", fi.fieldInfo("f3").storePayloads);
+        assertFalse("Payload field bit should not be set.", fi.fieldInfo("f1").hasPayloads());
+        assertTrue("Payload field bit should be set.", fi.fieldInfo("f2").hasPayloads());
+        assertFalse("Payload field bit should not be set.", fi.fieldInfo("f3").hasPayloads());
         reader.close();
         
         // now we add another document which has payloads for field f3 and verify if the SegmentMerger
@@ -140,9 +140,9 @@ public class TestPayloads extends Lucene
 
       reader = getOnlySegmentReader(IndexReader.open(ram));
         fi = reader.getFieldInfos();
-        assertFalse("Payload field bit should not be set.", fi.fieldInfo("f1").storePayloads);
-        assertTrue("Payload field bit should be set.", fi.fieldInfo("f2").storePayloads);
-        assertTrue("Payload field bit should be set.", fi.fieldInfo("f3").storePayloads);
+        assertFalse("Payload field bit should not be set.", fi.fieldInfo("f1").hasPayloads());
+        assertTrue("Payload field bit should be set.", fi.fieldInfo("f2").hasPayloads());
+        assertTrue("Payload field bit should be set.", fi.fieldInfo("f3").hasPayloads());
         reader.close();
         ram.close();
     }

Modified: lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestSegmentMerger.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestSegmentMerger.java?rev=1339025&r1=1339024&r2=1339025&view=diff
==============================================================================
--- lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestSegmentMerger.java (original)
+++ lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestSegmentMerger.java Wed May 16 06:28:31 2012
@@ -108,7 +108,7 @@ public class TestSegmentMerger extends L
 
     int tvCount = 0;
     for(FieldInfo fieldInfo : mergedReader.getFieldInfos()) {
-      if (fieldInfo.storeTermVector) {
+      if (fieldInfo.hasVectors()) {
         tvCount++;
       }
     }

Modified: lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestSegmentReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestSegmentReader.java?rev=1339025&r1=1339024&r2=1339025&view=diff
==============================================================================
--- lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestSegmentReader.java (original)
+++ lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestSegmentReader.java Wed May 16 06:28:31 2012
@@ -84,14 +84,14 @@ public class TestSegmentReader extends L
     for(FieldInfo fieldInfo : reader.getFieldInfos()) {
       final String name = fieldInfo.name;
       allFieldNames.add(name);
-      if (fieldInfo.isIndexed) {
+      if (fieldInfo.isIndexed()) {
         indexedFieldNames.add(name);
       } else {
         notIndexedFieldNames.add(name);
       }
-      if (fieldInfo.storeTermVector) {
+      if (fieldInfo.hasVectors()) {
         tvFieldNames.add(name);
-      } else if (fieldInfo.isIndexed) {
+      } else if (fieldInfo.isIndexed()) {
         noTVFieldNames.add(name);
       }
     }

Modified: lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestTermVectorsReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestTermVectorsReader.java?rev=1339025&r1=1339024&r2=1339025&view=diff
==============================================================================
--- lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestTermVectorsReader.java (original)
+++ lucene/dev/branches/lucene4055/lucene/core/src/test/org/apache/lucene/index/TestTermVectorsReader.java Wed May 16 06:28:31 2012
@@ -48,8 +48,7 @@ public class TestTermVectorsReader exten
   private int[][] positions = new int[testTerms.length][];
   private Directory dir;
   private SegmentInfo seg;
-  // nocommit: make a fieldInfos.empty for stuff like this?
-  private FieldInfos fieldInfos = new MutableFieldInfos(new MutableFieldInfos.FieldNumberBiMap());
+  private FieldInfos fieldInfos = new ReadOnlyFieldInfos(new FieldInfo[0]);
   private static int TERM_FREQ = 3;
 
   private class TestToken implements Comparable<TestToken> {

Modified: lucene/dev/branches/lucene4055/lucene/highlighter/src/java/org/apache/lucene/search/vectorhighlight/BaseFragmentsBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4055/lucene/highlighter/src/java/org/apache/lucene/search/vectorhighlight/BaseFragmentsBuilder.java?rev=1339025&r1=1339024&r2=1339025&view=diff
==============================================================================
--- lucene/dev/branches/lucene4055/lucene/highlighter/src/java/org/apache/lucene/search/vectorhighlight/BaseFragmentsBuilder.java (original)
+++ lucene/dev/branches/lucene4055/lucene/highlighter/src/java/org/apache/lucene/search/vectorhighlight/BaseFragmentsBuilder.java Wed May 16 06:28:31 2012
@@ -127,7 +127,7 @@ public abstract class BaseFragmentsBuild
         @Override
         public void stringField(FieldInfo fieldInfo, String value) throws IOException {
           FieldType ft = new FieldType(TextField.TYPE_STORED);
-          ft.setStoreTermVectors(fieldInfo.storeTermVector);
+          ft.setStoreTermVectors(fieldInfo.hasVectors());
           fields.add(new Field(fieldInfo.name, value, ft));
         }
 

Modified: lucene/dev/branches/lucene4055/lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4055/lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java?rev=1339025&r1=1339024&r2=1339025&view=diff
==============================================================================
--- lucene/dev/branches/lucene4055/lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java (original)
+++ lucene/dev/branches/lucene4055/lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java Wed May 16 06:28:31 2012
@@ -25,6 +25,8 @@ import java.util.Comparator;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
+import java.util.SortedMap;
+import java.util.TreeMap;
 
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.TokenStream;
@@ -35,7 +37,7 @@ import org.apache.lucene.analysis.tokena
 import org.apache.lucene.document.Document;
 import org.apache.lucene.index.AtomicReader;
 import org.apache.lucene.index.AtomicReaderContext;
-import org.apache.lucene.index.MutableFieldInfos;
+import org.apache.lucene.index.FieldInfo;
 import org.apache.lucene.index.Norm;
 import org.apache.lucene.index.DocValues;
 import org.apache.lucene.index.DocsAndPositionsEnum;
@@ -49,6 +51,7 @@ import org.apache.lucene.index.StoredFie
 import org.apache.lucene.index.TermState;
 import org.apache.lucene.index.Terms;
 import org.apache.lucene.index.TermsEnum;
+import org.apache.lucene.index.FieldInfo.IndexOptions;
 import org.apache.lucene.index.memory.MemoryIndexNormDocValues.SingleValueSource;
 import org.apache.lucene.search.Collector;
 import org.apache.lucene.search.IndexSearcher;
@@ -200,7 +203,7 @@ public class MemoryIndex {
 
   private static final boolean DEBUG = false;
 
-  private final MutableFieldInfos fieldInfos;
+  private final MemoryFieldInfos fieldInfos;
   
   /**
    * Sorts term entries into ascending order; also works for
@@ -236,8 +239,7 @@ public class MemoryIndex {
    */
   protected MemoryIndex(boolean storeOffsets) {
     this.stride = storeOffsets ? 3 : 1;
-    // nocommit: this can probably have a much simpler implementation
-    fieldInfos = new MutableFieldInfos();
+    fieldInfos = new MemoryFieldInfos();
   }
   
   /**
@@ -354,7 +356,7 @@ public class MemoryIndex {
       int numOverlapTokens = 0;
       int pos = -1;
 
-      fieldInfos.addOrUpdate(fieldName, true);
+      fieldInfos.addOrUpdate(fieldName);
       
       TermToBytesRefAttribute termAtt = stream.getAttribute(TermToBytesRefAttribute.class);
       PositionIncrementAttribute posIncrAttribute = stream.addAttribute(PositionIncrementAttribute.class);
@@ -557,6 +559,45 @@ public class MemoryIndex {
   ///////////////////////////////////////////////////////////////////////////////
   // Nested classes:
   ///////////////////////////////////////////////////////////////////////////////
+  private static final class MemoryFieldInfos extends FieldInfos {
+    private final SortedMap<Integer,FieldInfo> byNumber = new TreeMap<Integer,FieldInfo>();
+    private final HashMap<String,FieldInfo> byName = new HashMap<String,FieldInfo>();
+    
+    @Override
+    public FieldInfos clone() {
+      return this; // I think this is ok here.
+    }
+
+    @Override
+    public FieldInfo fieldInfo(String fieldName) {
+      return byName.get(fieldName);
+    }
+
+    @Override
+    public FieldInfo fieldInfo(int fieldNumber) {
+      return byNumber.get(fieldNumber);
+    }
+
+    @Override
+    public Iterator<FieldInfo> iterator() {
+      return byNumber.values().iterator();
+    }
+
+    @Override
+    public int size() {
+      return byNumber.size();
+    }
+    
+    public void addOrUpdate(String name) {
+      if (!byName.containsKey(name)) {
+        int number = byNumber.isEmpty() ? 0 : byNumber.lastKey() + 1;
+        FieldInfo info = new FieldInfo(name, true, number, false, false, false, IndexOptions.DOCS_AND_FREQS_AND_POSITIONS, null, null);
+        byNumber.put(number, info);
+        byName.put(name, info);
+      }
+    }
+  }
+  
   /**
    * Index data structure for a field; Contains the tokenized term texts and
    * their positions.

Modified: lucene/dev/branches/lucene4055/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/PreFlexRWFieldInfosReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4055/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/PreFlexRWFieldInfosReader.java?rev=1339025&r1=1339024&r2=1339025&view=diff
==============================================================================
--- lucene/dev/branches/lucene4055/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/PreFlexRWFieldInfosReader.java (original)
+++ lucene/dev/branches/lucene4055/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/PreFlexRWFieldInfosReader.java Wed May 16 06:28:31 2012
@@ -44,10 +44,6 @@ class PreFlexRWFieldInfosReader extends 
   public FieldInfos read(Directory directory, String segmentName, IOContext iocontext) throws IOException {
     final String fileName = IndexFileNames.segmentFileName(segmentName, "", PreFlexRWFieldInfosWriter.FIELD_INFOS_EXTENSION);
     IndexInput input = directory.openInput(fileName, iocontext);
-
-    boolean hasVectors = false;
-    boolean hasFreq = false;
-    boolean hasProx = false;
     
     try {
       final int format = input.readVInt();
@@ -89,9 +85,6 @@ class PreFlexRWFieldInfosReader extends 
         if (indexOptions != IndexOptions.DOCS_AND_FREQS_AND_POSITIONS) {
           storePayloads = false;
         }
-        hasVectors |= storeTermVector;
-        hasProx |= isIndexed && indexOptions == IndexOptions.DOCS_AND_FREQS_AND_POSITIONS;
-        hasFreq |= isIndexed && indexOptions != IndexOptions.DOCS_ONLY;
         
         Type normType = isIndexed && !omitNorms ? Type.FIXED_INTS_8 : null;
         if (format == PreFlexRWFieldInfosWriter.FORMAT_PREFLEX_RW && normType != null) {
@@ -106,7 +99,7 @@ class PreFlexRWFieldInfosReader extends 
       if (input.getFilePointer() != input.length()) {
         throw new CorruptIndexException("did not read all bytes from file \"" + fileName + "\": read " + input.getFilePointer() + " vs size " + input.length() + " (resource: " + input + ")");
       }
-      return new ReadOnlyFieldInfos(infos, hasFreq, hasProx, hasVectors);
+      return new ReadOnlyFieldInfos(infos);
     } finally {
       input.close();
     }

Modified: lucene/dev/branches/lucene4055/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/PreFlexRWFieldInfosWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4055/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/PreFlexRWFieldInfosWriter.java?rev=1339025&r1=1339024&r2=1339025&view=diff
==============================================================================
--- lucene/dev/branches/lucene4055/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/PreFlexRWFieldInfosWriter.java (original)
+++ lucene/dev/branches/lucene4055/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/PreFlexRWFieldInfosWriter.java Wed May 16 06:28:31 2012
@@ -62,15 +62,15 @@ class PreFlexRWFieldInfosWriter extends 
       output.writeVInt(FORMAT_PREFLEX_RW);
       output.writeVInt(infos.size());
       for (FieldInfo fi : infos) {
-        assert fi.indexOptions == IndexOptions.DOCS_AND_FREQS_AND_POSITIONS || !fi.storePayloads;
+        assert fi.getIndexOptions() == IndexOptions.DOCS_AND_FREQS_AND_POSITIONS || !fi.hasPayloads();
         byte bits = 0x0;
-        if (fi.isIndexed) bits |= IS_INDEXED;
-        if (fi.storeTermVector) bits |= STORE_TERMVECTOR;
-        if (fi.omitNorms) bits |= OMIT_NORMS;
-        if (fi.storePayloads) bits |= STORE_PAYLOADS;
-        if (fi.indexOptions == IndexOptions.DOCS_ONLY) {
+        if (fi.isIndexed()) bits |= IS_INDEXED;
+        if (fi.hasVectors()) bits |= STORE_TERMVECTOR;
+        if (fi.omitsNorms()) bits |= OMIT_NORMS;
+        if (fi.hasPayloads()) bits |= STORE_PAYLOADS;
+        if (fi.getIndexOptions() == IndexOptions.DOCS_ONLY) {
           bits |= OMIT_TERM_FREQ_AND_POSITIONS;
-        } else if (fi.indexOptions == IndexOptions.DOCS_AND_FREQS) {
+        } else if (fi.getIndexOptions() == IndexOptions.DOCS_AND_FREQS) {
           bits |= OMIT_POSITIONS;
         }
         output.writeString(fi.name);
@@ -81,7 +81,7 @@ class PreFlexRWFieldInfosWriter extends 
          */
         output.writeInt(fi.number);
         output.writeByte(bits);
-        if (fi.isIndexed && !fi.omitNorms) {
+        if (fi.isIndexed() && !fi.omitsNorms()) {
           // to allow null norm types we need to indicate if norms are written 
           // only in RW case
           output.writeByte((byte) (fi.getNormType() == null ? 0 : 1));

Modified: lucene/dev/branches/lucene4055/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/PreFlexRWFieldsWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4055/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/PreFlexRWFieldsWriter.java?rev=1339025&r1=1339024&r2=1339025&view=diff
==============================================================================
--- lucene/dev/branches/lucene4055/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/PreFlexRWFieldsWriter.java (original)
+++ lucene/dev/branches/lucene4055/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/PreFlexRWFieldsWriter.java Wed May 16 06:28:31 2012
@@ -85,7 +85,7 @@ class PreFlexRWFieldsWriter extends Fiel
   @Override
   public TermsConsumer addField(FieldInfo field) throws IOException {
     assert field.number != -1;
-    if (field.indexOptions.compareTo(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS) >= 0) {
+    if (field.getIndexOptions().compareTo(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS) >= 0) {
       throw new UnsupportedOperationException("this codec cannot index offsets");
     }
     //System.out.println("w field=" + field.name + " storePayload=" + field.storePayloads + " number=" + field.number);
@@ -107,8 +107,8 @@ class PreFlexRWFieldsWriter extends Fiel
 
     public PreFlexTermsWriter(FieldInfo fieldInfo) {
       this.fieldInfo = fieldInfo;
-      omitTF = fieldInfo.indexOptions == IndexOptions.DOCS_ONLY;
-      storePayloads = fieldInfo.storePayloads;
+      omitTF = fieldInfo.getIndexOptions() == IndexOptions.DOCS_ONLY;
+      storePayloads = fieldInfo.hasPayloads();
     }
 
     private class PostingsWriter extends PostingsConsumer {

Modified: lucene/dev/branches/lucene4055/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/PreFlexRWNormsConsumer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4055/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/PreFlexRWNormsConsumer.java?rev=1339025&r1=1339024&r2=1339025&view=diff
==============================================================================
--- lucene/dev/branches/lucene4055/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/PreFlexRWNormsConsumer.java (original)
+++ lucene/dev/branches/lucene4055/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/PreFlexRWNormsConsumer.java Wed May 16 06:28:31 2012
@@ -209,7 +209,7 @@ class PreFlexRWNormsConsumer extends Per
     }
     
     public void startField(FieldInfo info) throws IOException {
-      assert info.omitNorms == false;
+      assert info.omitsNorms() == false;
       normCount++;
     }
     

Modified: lucene/dev/branches/lucene4055/lucene/test-framework/src/java/org/apache/lucene/codecs/ramonly/RAMOnlyPostingsFormat.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4055/lucene/test-framework/src/java/org/apache/lucene/codecs/ramonly/RAMOnlyPostingsFormat.java?rev=1339025&r1=1339024&r2=1339025&view=diff
==============================================================================
--- lucene/dev/branches/lucene4055/lucene/test-framework/src/java/org/apache/lucene/codecs/ramonly/RAMOnlyPostingsFormat.java (original)
+++ lucene/dev/branches/lucene4055/lucene/test-framework/src/java/org/apache/lucene/codecs/ramonly/RAMOnlyPostingsFormat.java Wed May 16 06:28:31 2012
@@ -197,7 +197,7 @@ public class RAMOnlyPostingsFormat exten
 
     @Override
     public TermsConsumer addField(FieldInfo field) {
-      if (field.indexOptions.compareTo(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS) >= 0) {
+      if (field.getIndexOptions().compareTo(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS) >= 0) {
         throw new UnsupportedOperationException("this codec cannot index offsets");
       }
       RAMField ramField = new RAMField(field.name);

Modified: lucene/dev/branches/lucene4055/lucene/test-framework/src/java/org/apache/lucene/index/FieldFilterAtomicReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4055/lucene/test-framework/src/java/org/apache/lucene/index/FieldFilterAtomicReader.java?rev=1339025&r1=1339024&r2=1339025&view=diff
==============================================================================
--- lucene/dev/branches/lucene4055/lucene/test-framework/src/java/org/apache/lucene/index/FieldFilterAtomicReader.java (original)
+++ lucene/dev/branches/lucene4055/lucene/test-framework/src/java/org/apache/lucene/index/FieldFilterAtomicReader.java Wed May 16 06:28:31 2012
@@ -18,6 +18,7 @@ package org.apache.lucene.index;
  */
 
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.Set;
 
 import org.apache.lucene.index.FilterAtomicReader;
@@ -26,19 +27,19 @@ public final class FieldFilterAtomicRead
   
   private final Set<String> fields;
   private final boolean negate;
-  // nocommit: make read only
-  private final MutableFieldInfos fieldInfos;
+  private final FieldInfos fieldInfos;
 
   public FieldFilterAtomicReader(AtomicReader in, Set<String> fields, boolean negate) {
     super(in);
     this.fields = fields;
     this.negate = negate;
-    this.fieldInfos = new MutableFieldInfos();
+    ArrayList<FieldInfo> filteredInfos = new ArrayList<FieldInfo>();
     for (FieldInfo fi : in.getFieldInfos()) {
       if (hasField(fi.name)) {
-        fieldInfos.add(fi);
+        filteredInfos.add(fi);
       }
     }
+    fieldInfos = new ReadOnlyFieldInfos(filteredInfos.toArray(new FieldInfo[filteredInfos.size()]));
   }
   
   boolean hasField(String field) {

Modified: lucene/dev/branches/lucene4055/lucene/test-framework/src/java/org/apache/lucene/util/_TestUtil.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4055/lucene/test-framework/src/java/org/apache/lucene/util/_TestUtil.java?rev=1339025&r1=1339024&r2=1339025&view=diff
==============================================================================
--- lucene/dev/branches/lucene4055/lucene/test-framework/src/java/org/apache/lucene/util/_TestUtil.java (original)
+++ lucene/dev/branches/lucene4055/lucene/test-framework/src/java/org/apache/lucene/util/_TestUtil.java Wed May 16 06:28:31 2012
@@ -62,7 +62,6 @@ import org.apache.lucene.index.LogMergeP
 import org.apache.lucene.index.MergePolicy;
 import org.apache.lucene.index.MergeScheduler;
 import org.apache.lucene.index.MultiFields;
-import org.apache.lucene.index.MutableFieldInfos;
 import org.apache.lucene.index.Terms;
 import org.apache.lucene.index.TermsEnum;
 import org.apache.lucene.index.TieredMergePolicy;
@@ -679,14 +678,6 @@ public class _TestUtil {
     }
   }
   
-  /** Adds field info for a Document. */
-  // nocommit: what uses this?
-  public static void add(Document doc, MutableFieldInfos fieldInfos) {
-    for (IndexableField field : doc) {
-      fieldInfos.addOrUpdate(field.name(), field.fieldType());
-    }
-  }
-  
   /** 
    * insecure, fast version of File.createTempFile
    * uses Random instead of SecureRandom.

Modified: lucene/dev/branches/lucene4055/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4055/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java?rev=1339025&r1=1339024&r2=1339025&view=diff
==============================================================================
--- lucene/dev/branches/lucene4055/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java (original)
+++ lucene/dev/branches/lucene4055/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java Wed May 16 06:28:31 2012
@@ -452,11 +452,10 @@ public class SolrIndexSearcher extends I
     @Override
     public void stringField(FieldInfo fieldInfo, String value) throws IOException {
       final FieldType ft = new FieldType(TextField.TYPE_STORED);
-      ft.setStoreTermVectors(fieldInfo.storeTermVector);
-      ft.setStoreTermVectors(fieldInfo.storeTermVector);
-      ft.setIndexed(fieldInfo.isIndexed);
-      ft.setOmitNorms(fieldInfo.omitNorms);
-      ft.setIndexOptions(fieldInfo.indexOptions);
+      ft.setStoreTermVectors(fieldInfo.hasVectors());
+      ft.setIndexed(fieldInfo.isIndexed());
+      ft.setOmitNorms(fieldInfo.omitsNorms());
+      ft.setIndexOptions(fieldInfo.getIndexOptions());
       doc.add(new Field(fieldInfo.name, value, ft));
     }
 
@@ -464,7 +463,7 @@ public class SolrIndexSearcher extends I
     public void intField(FieldInfo fieldInfo, int value) {
       FieldType ft = new FieldType(IntField.TYPE);
       ft.setStored(true);
-      ft.setIndexed(fieldInfo.isIndexed);
+      ft.setIndexed(fieldInfo.isIndexed());
       doc.add(new IntField(fieldInfo.name, value, ft));
     }
 
@@ -472,7 +471,7 @@ public class SolrIndexSearcher extends I
     public void longField(FieldInfo fieldInfo, long value) {
       FieldType ft = new FieldType(LongField.TYPE);
       ft.setStored(true);
-      ft.setIndexed(fieldInfo.isIndexed);
+      ft.setIndexed(fieldInfo.isIndexed());
       doc.add(new LongField(fieldInfo.name, value, ft));
     }
 
@@ -480,7 +479,7 @@ public class SolrIndexSearcher extends I
     public void floatField(FieldInfo fieldInfo, float value) {
       FieldType ft = new FieldType(FloatField.TYPE);
       ft.setStored(true);
-      ft.setIndexed(fieldInfo.isIndexed);
+      ft.setIndexed(fieldInfo.isIndexed());
       doc.add(new FloatField(fieldInfo.name, value, ft));
     }
 
@@ -488,7 +487,7 @@ public class SolrIndexSearcher extends I
     public void doubleField(FieldInfo fieldInfo, double value) {
       FieldType ft = new FieldType(DoubleField.TYPE);
       ft.setStored(true);
-      ft.setIndexed(fieldInfo.isIndexed);
+      ft.setIndexed(fieldInfo.isIndexed());
       doc.add(new DoubleField(fieldInfo.name, value, ft));
     }
   }

Modified: lucene/dev/branches/lucene4055/solr/core/src/test/org/apache/solr/search/TestDocSet.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4055/solr/core/src/test/org/apache/solr/search/TestDocSet.java?rev=1339025&r1=1339024&r2=1339025&view=diff
==============================================================================
--- lucene/dev/branches/lucene4055/solr/core/src/test/org/apache/solr/search/TestDocSet.java (original)
+++ lucene/dev/branches/lucene4055/solr/core/src/test/org/apache/solr/search/TestDocSet.java Wed May 16 06:28:31 2012
@@ -367,8 +367,7 @@ public class TestDocSet extends LuceneTe
 
       @Override
       public FieldInfos getFieldInfos() {
-        // nocommit
-        return new ReadOnlyFieldInfos(new FieldInfo[0], false, false, false);
+        return new ReadOnlyFieldInfos(new FieldInfo[0]);
       }
 
       @Override