mirror of https://github.com/apache/lucene.git
LUCENE-3661: make Lucene3x codec really completely readonly
git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene3661@1237070 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
df204bc54b
commit
1e538244af
|
@ -30,6 +30,7 @@ import org.apache.lucene.codecs.PerDocProducer;
|
||||||
import org.apache.lucene.codecs.PostingsFormat;
|
import org.apache.lucene.codecs.PostingsFormat;
|
||||||
import org.apache.lucene.codecs.SegmentInfosFormat;
|
import org.apache.lucene.codecs.SegmentInfosFormat;
|
||||||
import org.apache.lucene.codecs.StoredFieldsFormat;
|
import org.apache.lucene.codecs.StoredFieldsFormat;
|
||||||
|
import org.apache.lucene.codecs.StoredFieldsWriter;
|
||||||
import org.apache.lucene.codecs.TermVectorsFormat;
|
import org.apache.lucene.codecs.TermVectorsFormat;
|
||||||
import org.apache.lucene.codecs.lucene40.Lucene40LiveDocsFormat;
|
import org.apache.lucene.codecs.lucene40.Lucene40LiveDocsFormat;
|
||||||
import org.apache.lucene.codecs.lucene40.Lucene40StoredFieldsFormat;
|
import org.apache.lucene.codecs.lucene40.Lucene40StoredFieldsFormat;
|
||||||
|
@ -37,6 +38,8 @@ import org.apache.lucene.index.PerDocWriteState;
|
||||||
import org.apache.lucene.index.SegmentInfo;
|
import org.apache.lucene.index.SegmentInfo;
|
||||||
import org.apache.lucene.index.SegmentReadState;
|
import org.apache.lucene.index.SegmentReadState;
|
||||||
import org.apache.lucene.store.Directory;
|
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)
|
* Supports the Lucene 3.x index format (readonly)
|
||||||
|
@ -49,7 +52,12 @@ public class Lucene3xCodec extends Codec {
|
||||||
private final PostingsFormat postingsFormat = new Lucene3xPostingsFormat();
|
private final PostingsFormat postingsFormat = new Lucene3xPostingsFormat();
|
||||||
|
|
||||||
// TODO: this should really be a different impl
|
// 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();
|
private final TermVectorsFormat vectorsFormat = new Lucene3xTermVectorsFormat();
|
||||||
|
|
||||||
|
@ -60,7 +68,12 @@ public class Lucene3xCodec extends Codec {
|
||||||
private final NormsFormat normsFormat = new Lucene3xNormsFormat();
|
private final NormsFormat normsFormat = new Lucene3xNormsFormat();
|
||||||
|
|
||||||
// TODO: this should really be a different impl
|
// 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
|
// 3.x doesn't support docvalues
|
||||||
private final DocValuesFormat docValuesFormat = new DocValuesFormat() {
|
private final DocValuesFormat docValuesFormat = new DocValuesFormat() {
|
||||||
|
|
|
@ -18,11 +18,15 @@ package org.apache.lucene.codecs.preflexrw;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import org.apache.lucene.codecs.FieldInfosFormat;
|
import org.apache.lucene.codecs.FieldInfosFormat;
|
||||||
|
import org.apache.lucene.codecs.LiveDocsFormat;
|
||||||
import org.apache.lucene.codecs.NormsFormat;
|
import org.apache.lucene.codecs.NormsFormat;
|
||||||
import org.apache.lucene.codecs.PostingsFormat;
|
import org.apache.lucene.codecs.PostingsFormat;
|
||||||
import org.apache.lucene.codecs.SegmentInfosFormat;
|
import org.apache.lucene.codecs.SegmentInfosFormat;
|
||||||
|
import org.apache.lucene.codecs.StoredFieldsFormat;
|
||||||
import org.apache.lucene.codecs.TermVectorsFormat;
|
import org.apache.lucene.codecs.TermVectorsFormat;
|
||||||
import org.apache.lucene.codecs.lucene3x.Lucene3xCodec;
|
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;
|
import org.apache.lucene.util.LuceneTestCase;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -35,6 +39,10 @@ public class PreFlexRWCodec extends Lucene3xCodec {
|
||||||
private final FieldInfosFormat fieldInfos = new PreFlexRWFieldInfosFormat();
|
private final FieldInfosFormat fieldInfos = new PreFlexRWFieldInfosFormat();
|
||||||
private final TermVectorsFormat termVectors = new PreFlexRWTermVectorsFormat();
|
private final TermVectorsFormat termVectors = new PreFlexRWTermVectorsFormat();
|
||||||
private final SegmentInfosFormat segmentInfos = new PreFlexRWSegmentInfosFormat();
|
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
|
@Override
|
||||||
public PostingsFormat postingsFormat() {
|
public PostingsFormat postingsFormat() {
|
||||||
|
@ -80,4 +88,22 @@ public class PreFlexRWCodec extends Lucene3xCodec {
|
||||||
return super.termVectorsFormat();
|
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();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue