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 2011/10/29 21:00:49 UTC
svn commit: r1194973 - in /lucene/dev/branches/lucene2621/solr/core/src:
test-files/solr/conf/solrconfig_codec.xml
test/org/apache/solr/core/MockCodecProviderFactory.java
Author: rmuir
Date: Sat Oct 29 19:00:49 2011
New Revision: 1194973
URL: http://svn.apache.org/viewvc?rev=1194973&view=rev
Log:
LUCENE-3490: fix test
Modified:
lucene/dev/branches/lucene2621/solr/core/src/test-files/solr/conf/solrconfig_codec.xml
lucene/dev/branches/lucene2621/solr/core/src/test/org/apache/solr/core/MockCodecProviderFactory.java
Modified: lucene/dev/branches/lucene2621/solr/core/src/test-files/solr/conf/solrconfig_codec.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/solr/core/src/test-files/solr/conf/solrconfig_codec.xml?rev=1194973&r1=1194972&r2=1194973&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/solr/core/src/test-files/solr/conf/solrconfig_codec.xml (original)
+++ lucene/dev/branches/lucene2621/solr/core/src/test-files/solr/conf/solrconfig_codec.xml Sat Oct 29 19:00:49 2011
@@ -21,10 +21,10 @@
<mainIndex>
<codecProviderFactory class="org.apache.solr.core.MockCodecProviderFactory">
- <str name="defaultCodec">Pulsing</str>
- <lst name="codecs">
- <str name="codec">org.apache.lucene.index.codecs.simpletext.SimpleTextCodec</str>
- <str name="codec">org.apache.lucene.index.codecs.preflex.PreFlexCodec</str>
+ <str name="defaultPostingsFormat">Pulsing</str>
+ <lst name="postingsFormats">
+ <str name="format">org.apache.lucene.index.codecs.simpletext.SimpleTextPostingsFormat</str>
+ <str name="format">org.apache.lucene.index.codecs.memory.MemoryPostingsFormat</str>
</lst>
</codecProviderFactory>
</mainIndex>
Modified: lucene/dev/branches/lucene2621/solr/core/src/test/org/apache/solr/core/MockCodecProviderFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/solr/core/src/test/org/apache/solr/core/MockCodecProviderFactory.java?rev=1194973&r1=1194972&r2=1194973&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/solr/core/src/test/org/apache/solr/core/MockCodecProviderFactory.java (original)
+++ lucene/dev/branches/lucene2621/solr/core/src/test/org/apache/solr/core/MockCodecProviderFactory.java Sat Oct 29 19:00:49 2011
@@ -17,47 +17,80 @@ package org.apache.solr.core;
* limitations under the License.
*/
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.lucene.index.codecs.Codec;
+import org.apache.lucene.index.codecs.CoreCodecProvider;
import org.apache.lucene.index.codecs.PostingsFormat;
import org.apache.lucene.index.codecs.CodecProvider;
+import org.apache.lucene.index.codecs.lucene40.Lucene40Codec;
import org.apache.lucene.index.codecs.lucene40.Lucene40PostingsFormat;
import org.apache.lucene.index.codecs.pulsing.PulsingPostingsFormat;
import org.apache.solr.common.util.NamedList;
+import org.apache.solr.schema.IndexSchema;
+import org.apache.solr.schema.SchemaField;
/**
* CodecProviderFactory for testing, it inits a CP with Standard and Pulsing,
* and also adds any codecs specified by classname in solrconfig.
*/
public class MockCodecProviderFactory extends CodecProviderFactory {
- private String defaultCodec;
- private NamedList codecs;
+ private String defaultFormat;
+ private NamedList formats;
@Override
public void init(NamedList args) {
super.init(args);
- defaultCodec = (String) args.get("defaultCodec");
- codecs = (NamedList) args.get("codecs");
+ defaultFormat = (String) args.get("defaultPostingsFormat");
+ formats = (NamedList) args.get("postingsFormats");
}
@Override
- public CodecProvider create() {
- CodecProvider cp = new CodecProvider();
- cp.register(new Lucene40PostingsFormat());
- cp.register(new PulsingPostingsFormat());
- if (codecs != null) {
- for (Object codec : codecs.getAll("name")) {
- if (!cp.isCodecRegistered((String)codec)) {
+ public CodecProvider create(final IndexSchema schema) {
+ final Map<String,PostingsFormat> map = new HashMap<String,PostingsFormat>();
+ // add standard and pulsing
+ PostingsFormat p = new Lucene40PostingsFormat();
+ map.put(p.name, p);
+ p = new PulsingPostingsFormat();
+ map.put(p.name, p);
+
+ if (formats != null) {
+ for (Object format : formats.getAll("name")) {
try {
- Class<? extends PostingsFormat> clazz = Class.forName((String)codec).asSubclass(PostingsFormat.class);
- cp.register(clazz.newInstance());
+ Class<? extends PostingsFormat> clazz = Class.forName((String)format).asSubclass(PostingsFormat.class);
+ PostingsFormat fmt = clazz.newInstance();
+ map.put(fmt.name, fmt);
} catch (Exception e) {
throw new RuntimeException(e);
}
- }
}
}
- if (defaultCodec != null) {
- cp.setDefaultFieldCodec(defaultCodec);
- }
- return cp;
+
+ final String defaultFormat = this.defaultFormat;
+ return new CoreCodecProvider() {
+ @Override
+ public Codec getDefaultCodec() {
+ return new Lucene40Codec() {
+ @Override
+ public String getPostingsFormatForField(String field) {
+ final SchemaField fieldOrNull = schema.getFieldOrNull(field);
+ if (fieldOrNull == null) {
+ throw new IllegalArgumentException("no such field " + field);
+ }
+ String postingsFormatName = fieldOrNull.getType().getPostingsFormat();
+ if (postingsFormatName != null) {
+ return postingsFormatName;
+ }
+ return defaultFormat;
+ }
+
+ @Override
+ public PostingsFormat getPostingsFormat(String formatName) {
+ return map.get(formatName);
+ }
+ };
+ }
+ };
}
}