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/01/28 16:13:36 UTC

svn commit: r1237070 - in /lucene/dev/branches/lucene3661/lucene/src: java/org/apache/lucene/codecs/lucene3x/Lucene3xCodec.java test-framework/java/org/apache/lucene/codecs/preflexrw/PreFlexRWCodec.java

Author: rmuir
Date: Sat Jan 28 15:13:36 2012
New Revision: 1237070

URL: http://svn.apache.org/viewvc?rev=1237070&view=rev
Log:
LUCENE-3661: make Lucene3x codec really completely readonly

Modified:
    lucene/dev/branches/lucene3661/lucene/src/java/org/apache/lucene/codecs/lucene3x/Lucene3xCodec.java
    lucene/dev/branches/lucene3661/lucene/src/test-framework/java/org/apache/lucene/codecs/preflexrw/PreFlexRWCodec.java

Modified: lucene/dev/branches/lucene3661/lucene/src/java/org/apache/lucene/codecs/lucene3x/Lucene3xCodec.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3661/lucene/src/java/org/apache/lucene/codecs/lucene3x/Lucene3xCodec.java?rev=1237070&r1=1237069&r2=1237070&view=diff
==============================================================================
--- lucene/dev/branches/lucene3661/lucene/src/java/org/apache/lucene/codecs/lucene3x/Lucene3xCodec.java (original)
+++ lucene/dev/branches/lucene3661/lucene/src/java/org/apache/lucene/codecs/lucene3x/Lucene3xCodec.java Sat Jan 28 15:13:36 2012
@@ -30,6 +30,7 @@ import org.apache.lucene.codecs.PerDocPr
 import org.apache.lucene.codecs.PostingsFormat;
 import org.apache.lucene.codecs.SegmentInfosFormat;
 import org.apache.lucene.codecs.StoredFieldsFormat;
+import org.apache.lucene.codecs.StoredFieldsWriter;
 import org.apache.lucene.codecs.TermVectorsFormat;
 import org.apache.lucene.codecs.lucene40.Lucene40LiveDocsFormat;
 import org.apache.lucene.codecs.lucene40.Lucene40StoredFieldsFormat;
@@ -37,6 +38,8 @@ import org.apache.lucene.index.PerDocWri
 import org.apache.lucene.index.SegmentInfo;
 import org.apache.lucene.index.SegmentReadState;
 import org.apache.lucene.store.Directory;
+import org.apache.lucene.store.IOContext;
+import org.apache.lucene.util.MutableBits;
 
 /**
  * Supports the Lucene 3.x index format (readonly)
@@ -49,7 +52,12 @@ public class Lucene3xCodec extends Codec
   private final PostingsFormat postingsFormat = new Lucene3xPostingsFormat();
   
   // TODO: this should really be a different impl
-  private final StoredFieldsFormat fieldsFormat = new Lucene40StoredFieldsFormat();
+  private final StoredFieldsFormat fieldsFormat = new Lucene40StoredFieldsFormat() {
+    @Override
+    public StoredFieldsWriter fieldsWriter(Directory directory, String segment, IOContext context) throws IOException {
+      throw new UnsupportedOperationException("this codec can only be used for reading");
+    }
+  };
   
   private final TermVectorsFormat vectorsFormat = new Lucene3xTermVectorsFormat();
   
@@ -60,7 +68,12 @@ public class Lucene3xCodec extends Codec
   private final NormsFormat normsFormat = new Lucene3xNormsFormat();
   
   // TODO: this should really be a different impl
-  private final LiveDocsFormat liveDocsFormat = new Lucene40LiveDocsFormat();
+  private final LiveDocsFormat liveDocsFormat = new Lucene40LiveDocsFormat() {
+    @Override
+    public void writeLiveDocs(MutableBits bits, Directory dir, SegmentInfo info, IOContext context) throws IOException {
+      throw new UnsupportedOperationException("this codec can only be used for reading");
+    }
+  };
   
   // 3.x doesn't support docvalues
   private final DocValuesFormat docValuesFormat = new DocValuesFormat() {

Modified: lucene/dev/branches/lucene3661/lucene/src/test-framework/java/org/apache/lucene/codecs/preflexrw/PreFlexRWCodec.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3661/lucene/src/test-framework/java/org/apache/lucene/codecs/preflexrw/PreFlexRWCodec.java?rev=1237070&r1=1237069&r2=1237070&view=diff
==============================================================================
--- lucene/dev/branches/lucene3661/lucene/src/test-framework/java/org/apache/lucene/codecs/preflexrw/PreFlexRWCodec.java (original)
+++ lucene/dev/branches/lucene3661/lucene/src/test-framework/java/org/apache/lucene/codecs/preflexrw/PreFlexRWCodec.java Sat Jan 28 15:13:36 2012
@@ -18,11 +18,15 @@ package org.apache.lucene.codecs.preflex
  */
 
 import org.apache.lucene.codecs.FieldInfosFormat;
+import org.apache.lucene.codecs.LiveDocsFormat;
 import org.apache.lucene.codecs.NormsFormat;
 import org.apache.lucene.codecs.PostingsFormat;
 import org.apache.lucene.codecs.SegmentInfosFormat;
+import org.apache.lucene.codecs.StoredFieldsFormat;
 import org.apache.lucene.codecs.TermVectorsFormat;
 import org.apache.lucene.codecs.lucene3x.Lucene3xCodec;
+import org.apache.lucene.codecs.lucene40.Lucene40LiveDocsFormat;
+import org.apache.lucene.codecs.lucene40.Lucene40StoredFieldsFormat;
 import org.apache.lucene.util.LuceneTestCase;
 
 /**
@@ -35,6 +39,10 @@ public class PreFlexRWCodec extends Luce
   private final FieldInfosFormat fieldInfos = new PreFlexRWFieldInfosFormat();
   private final TermVectorsFormat termVectors = new PreFlexRWTermVectorsFormat();
   private final SegmentInfosFormat segmentInfos = new PreFlexRWSegmentInfosFormat();
+  // TODO: this should really be a different impl
+  private final LiveDocsFormat liveDocs = new Lucene40LiveDocsFormat();
+  // TODO: this should really be a different impl
+  private final StoredFieldsFormat storedFields = new Lucene40StoredFieldsFormat();
   
   @Override
   public PostingsFormat postingsFormat() {
@@ -80,4 +88,22 @@ public class PreFlexRWCodec extends Luce
       return super.termVectorsFormat();
     }
   }
+
+  @Override
+  public LiveDocsFormat liveDocsFormat() {
+    if (LuceneTestCase.PREFLEX_IMPERSONATION_IS_ACTIVE) {
+      return liveDocs;
+    } else {
+      return super.liveDocsFormat();
+    }
+  }
+
+  @Override
+  public StoredFieldsFormat storedFieldsFormat() {
+    if (LuceneTestCase.PREFLEX_IMPERSONATION_IS_ACTIVE) {
+      return storedFields;
+    } else {
+      return super.storedFieldsFormat();
+    }
+  }
 }