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/29 13:43:38 UTC
svn commit: r1237266 - in /lucene/dev/branches/lucene3661/lucene/src:
java/org/apache/lucene/codecs/Codec.java
java/org/apache/lucene/codecs/lucene3x/Lucene3xCodec.java
test-framework/java/org/apache/lucene/codecs/preflexrw/PreFlexRWCodec.java
Author: rmuir
Date: Sun Jan 29 12:43:37 2012
New Revision: 1237266
URL: http://svn.apache.org/viewvc?rev=1237266&view=rev
Log:
LUCENE-3728: PreFlex codec privately handles old CFS-without-CFE in files()
Modified:
lucene/dev/branches/lucene3661/lucene/src/java/org/apache/lucene/codecs/Codec.java
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/Codec.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3661/lucene/src/java/org/apache/lucene/codecs/Codec.java?rev=1237266&r1=1237265&r2=1237266&view=diff
==============================================================================
--- lucene/dev/branches/lucene3661/lucene/src/java/org/apache/lucene/codecs/Codec.java (original)
+++ lucene/dev/branches/lucene3661/lucene/src/java/org/apache/lucene/codecs/Codec.java Sun Jan 29 12:43:37 2012
@@ -23,8 +23,6 @@ import java.util.Set;
import org.apache.lucene.index.IndexFileNames;
import org.apache.lucene.index.SegmentInfo;
import org.apache.lucene.util.NamedSPILoader;
-import org.apache.lucene.util.StringHelper;
-import org.apache.lucene.store.CompoundFileDirectory;
import org.apache.lucene.store.Directory;
/**
@@ -52,11 +50,7 @@ public abstract class Codec implements N
public void files(Directory dir, SegmentInfo info, Set<String> files) throws IOException {
if (info.getUseCompoundFile()) {
files.add(IndexFileNames.segmentFileName(info.name, "", IndexFileNames.COMPOUND_FILE_EXTENSION));
- // nocommit: get this out of here: 3.x codec should override this
- String version = info.getVersion();
- if (version != null && StringHelper.getVersionComparator().compare("4.0", version) <= 0) {
- files.add(IndexFileNames.segmentFileName(info.name, "", IndexFileNames.COMPOUND_FILE_ENTRIES_EXTENSION));
- }
+ files.add(IndexFileNames.segmentFileName(info.name, "", IndexFileNames.COMPOUND_FILE_ENTRIES_EXTENSION));
} else {
postingsFormat().files(dir, info, "", files);
storedFieldsFormat().files(dir, info, files);
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=1237266&r1=1237265&r2=1237266&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 Sun Jan 29 12:43:37 2012
@@ -34,12 +34,14 @@ import org.apache.lucene.codecs.StoredFi
import org.apache.lucene.codecs.TermVectorsFormat;
import org.apache.lucene.codecs.lucene40.Lucene40LiveDocsFormat;
import org.apache.lucene.codecs.lucene40.Lucene40StoredFieldsFormat;
+import org.apache.lucene.index.IndexFileNames;
import org.apache.lucene.index.PerDocWriteState;
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;
+import org.apache.lucene.util.StringHelper;
/**
* Supports the Lucene 3.x index format (readonly)
@@ -130,4 +132,16 @@ public class Lucene3xCodec extends Codec
public LiveDocsFormat liveDocsFormat() {
return liveDocsFormat;
}
+
+ // overrides the default implementation in codec.java to handle CFS without CFE, and shared docstores
+ @Override
+ public void files(Directory dir, SegmentInfo info, Set<String> files) throws IOException {
+ // TODO: shared doc stores
+ if (info.getUseCompoundFile()) {
+ files.add(IndexFileNames.segmentFileName(info.name, "", IndexFileNames.COMPOUND_FILE_EXTENSION));
+ // NOTE: we don't add the CFE extension: because 3.x format doesn't use it.
+ } else {
+ super.files(dir, info, files);
+ }
+ }
}
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=1237266&r1=1237265&r2=1237266&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 Sun Jan 29 12:43:37 2012
@@ -17,6 +17,9 @@ package org.apache.lucene.codecs.preflex
* limitations under the License.
*/
+import java.io.IOException;
+import java.util.Set;
+
import org.apache.lucene.codecs.FieldInfosFormat;
import org.apache.lucene.codecs.LiveDocsFormat;
import org.apache.lucene.codecs.NormsFormat;
@@ -27,7 +30,11 @@ import org.apache.lucene.codecs.TermVect
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.index.IndexFileNames;
+import org.apache.lucene.index.SegmentInfo;
+import org.apache.lucene.store.Directory;
import org.apache.lucene.util.LuceneTestCase;
+import org.apache.lucene.util.StringHelper;
/**
* Writes 3.x-like indexes (not perfect emulation yet) for testing only!
@@ -106,4 +113,20 @@ public class PreFlexRWCodec extends Luce
return super.storedFieldsFormat();
}
}
+
+ @Override
+ public void files(Directory dir, SegmentInfo info, Set<String> files) throws IOException {
+ if (info.getUseCompoundFile() && LuceneTestCase.PREFLEX_IMPERSONATION_IS_ACTIVE) {
+ // because we don't fully emulate 3.x codec, PreFlexRW actually writes 4.x format CFS files.
+ // so we must check segment version here to see if its a "real" 3.x segment or a "fake"
+ // one that we wrote with a 4.x-format CFS+CFE
+ files.add(IndexFileNames.segmentFileName(info.name, "", IndexFileNames.COMPOUND_FILE_EXTENSION));
+ String version = info.getVersion();
+ if (version != null && StringHelper.getVersionComparator().compare("4.0", version) <= 0) {
+ files.add(IndexFileNames.segmentFileName(info.name, "", IndexFileNames.COMPOUND_FILE_ENTRIES_EXTENSION));
+ }
+ } else {
+ super.files(dir, info, files);
+ }
+ }
}