mirror of https://github.com/apache/lucene.git
SOLR-1677: Code cleanup (heavy duplication removal) and more checks.
git-svn-id: https://svn.apache.org/repos/asf/lucene/solr/branches/solr@923109 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
ae8d108b7d
commit
9ad4aae24d
|
@ -17,71 +17,14 @@
|
|||
|
||||
package org.apache.solr.analysis;
|
||||
|
||||
import org.apache.solr.core.Config;
|
||||
import org.apache.solr.schema.IndexSchema;
|
||||
|
||||
import java.util.Map;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.apache.lucene.util.Version;
|
||||
|
||||
|
||||
/**
|
||||
* Simple abstract implementation that handles init arg processing.
|
||||
*
|
||||
* @version $Id$
|
||||
*/
|
||||
public abstract class BaseTokenFilterFactory implements TokenFilterFactory {
|
||||
public abstract class BaseTokenFilterFactory extends BaseTokenStreamFactory implements TokenFilterFactory {
|
||||
public static final Logger log = LoggerFactory.getLogger(BaseTokenFilterFactory.class);
|
||||
|
||||
/** The init args */
|
||||
protected Map<String,String> args;
|
||||
|
||||
/** the luceneVersion arg */
|
||||
protected Version luceneMatchVersion = null;
|
||||
|
||||
public void init(Map<String,String> args) {
|
||||
this.args=args;
|
||||
String matchVersion = args.get(IndexSchema.LUCENE_MATCH_VERSION_PARAM);
|
||||
if (matchVersion != null) {
|
||||
luceneMatchVersion = Config.parseLuceneVersionString(matchVersion);
|
||||
}
|
||||
}
|
||||
|
||||
public Map<String,String> getArgs() {
|
||||
return args;
|
||||
}
|
||||
|
||||
// TODO: move these somewhere that tokenizers and others
|
||||
// can also use them...
|
||||
protected int getInt(String name) {
|
||||
return getInt(name,-1,false);
|
||||
}
|
||||
|
||||
protected int getInt(String name, int defaultVal) {
|
||||
return getInt(name,defaultVal,true);
|
||||
}
|
||||
|
||||
protected int getInt(String name, int defaultVal, boolean useDefault) {
|
||||
String s = args.get(name);
|
||||
if (s==null) {
|
||||
if (useDefault) return defaultVal;
|
||||
throw new RuntimeException("Configuration Error: missing parameter '" + name + "'");
|
||||
}
|
||||
return Integer.parseInt(s);
|
||||
}
|
||||
|
||||
protected boolean getBoolean(String name, boolean defaultVal) {
|
||||
return getBoolean(name,defaultVal,true);
|
||||
}
|
||||
|
||||
protected boolean getBoolean(String name, boolean defaultVal, boolean useDefault) {
|
||||
String s = args.get(name);
|
||||
if (s==null) {
|
||||
if (useDefault) return defaultVal;
|
||||
throw new RuntimeException("Configuration Error: missing parameter '" + name + "'");
|
||||
}
|
||||
return Boolean.parseBoolean(s);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,97 @@
|
|||
/**
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.apache.solr.analysis;
|
||||
|
||||
import org.apache.solr.core.Config;
|
||||
import org.apache.solr.common.SolrException;
|
||||
import org.apache.solr.schema.IndexSchema;
|
||||
|
||||
import java.util.Map;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.apache.lucene.util.Version;
|
||||
|
||||
|
||||
/**
|
||||
* Simple abstract implementation that handles init arg processing, is not really
|
||||
* a factory as it implements no interface, but removes code duplication
|
||||
* in its subclasses.
|
||||
*
|
||||
* @version $Id$
|
||||
*/
|
||||
abstract class BaseTokenStreamFactory {
|
||||
/** The init args */
|
||||
protected Map<String,String> args;
|
||||
|
||||
/** the luceneVersion arg */
|
||||
protected Version luceneMatchVersion = null;
|
||||
|
||||
public void init(Map<String,String> args) {
|
||||
this.args=args;
|
||||
String matchVersion = args.get(IndexSchema.LUCENE_MATCH_VERSION_PARAM);
|
||||
if (matchVersion != null) {
|
||||
luceneMatchVersion = Config.parseLuceneVersionString(matchVersion);
|
||||
}
|
||||
}
|
||||
|
||||
public Map<String,String> getArgs() {
|
||||
return args;
|
||||
}
|
||||
|
||||
/** this method can be called in the {@link #create} method,
|
||||
* to inform user, that for this factory a {@link #luceneMatchVersion} is required */
|
||||
protected final void assureMatchVersion() {
|
||||
if (luceneMatchVersion == null) {
|
||||
throw new RuntimeException("Configuration Error: Factory '" + this.getClass().getName() +
|
||||
"' needs a 'luceneMatchVersion' parameter");
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: move these somewhere that tokenizers and others
|
||||
// can also use them...
|
||||
protected int getInt(String name) {
|
||||
return getInt(name,-1,false);
|
||||
}
|
||||
|
||||
protected int getInt(String name, int defaultVal) {
|
||||
return getInt(name,defaultVal,true);
|
||||
}
|
||||
|
||||
protected int getInt(String name, int defaultVal, boolean useDefault) {
|
||||
String s = args.get(name);
|
||||
if (s==null) {
|
||||
if (useDefault) return defaultVal;
|
||||
throw new RuntimeException("Configuration Error: missing parameter '" + name + "'");
|
||||
}
|
||||
return Integer.parseInt(s);
|
||||
}
|
||||
|
||||
protected boolean getBoolean(String name, boolean defaultVal) {
|
||||
return getBoolean(name,defaultVal,true);
|
||||
}
|
||||
|
||||
protected boolean getBoolean(String name, boolean defaultVal, boolean useDefault) {
|
||||
String s = args.get(name);
|
||||
if (s==null) {
|
||||
if (useDefault) return defaultVal;
|
||||
throw new RuntimeException("Configuration Error: missing parameter '" + name + "'");
|
||||
}
|
||||
return Boolean.parseBoolean(s);
|
||||
}
|
||||
|
||||
}
|
|
@ -17,38 +17,14 @@
|
|||
|
||||
package org.apache.solr.analysis;
|
||||
|
||||
import org.apache.solr.core.Config;
|
||||
import org.apache.solr.schema.IndexSchema;
|
||||
|
||||
import java.util.Map;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.apache.lucene.util.Version;
|
||||
|
||||
|
||||
/**
|
||||
* Simple abstract implementation that handles init arg processing.
|
||||
*
|
||||
* @version $Id$
|
||||
*/
|
||||
public abstract class BaseTokenizerFactory implements TokenizerFactory {
|
||||
public abstract class BaseTokenizerFactory extends BaseTokenStreamFactory implements TokenizerFactory {
|
||||
public static final Logger log = LoggerFactory.getLogger(BaseTokenizerFactory.class);
|
||||
|
||||
/** The init args */
|
||||
protected Map<String,String> args;
|
||||
|
||||
/** the luceneVersion arg */
|
||||
protected Version luceneMatchVersion = null;
|
||||
|
||||
public void init(Map<String,String> args) {
|
||||
this.args=args;
|
||||
String matchVersion = args.get(IndexSchema.LUCENE_MATCH_VERSION_PARAM);
|
||||
if (matchVersion != null) {
|
||||
luceneMatchVersion = Config.parseLuceneVersionString(matchVersion);
|
||||
}
|
||||
}
|
||||
|
||||
public Map<String,String> getArgs() {
|
||||
return args;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,6 +28,7 @@ import java.io.Reader;
|
|||
|
||||
public class StandardTokenizerFactory extends BaseTokenizerFactory {
|
||||
public StandardTokenizer create(Reader input) {
|
||||
assureMatchVersion();
|
||||
return new StandardTokenizer(luceneMatchVersion, input);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -830,6 +830,11 @@ public final class IndexSchema {
|
|||
final String matchVersionStr = DOMUtil.getAttr(attrs, LUCENE_MATCH_VERSION_PARAM);
|
||||
final Version luceneMatchVersion = (matchVersionStr == null) ?
|
||||
solrConfig.luceneMatchVersion : Config.parseLuceneVersionString(matchVersionStr);
|
||||
if (luceneMatchVersion == null) {
|
||||
throw new SolrException( SolrException.ErrorCode.SERVER_ERROR,
|
||||
"Configuration Error: Analyzer '" + clazz.getName() +
|
||||
"' needs a 'luceneMatchVersion' parameter");
|
||||
}
|
||||
return cnstr.newInstance(luceneMatchVersion);
|
||||
} catch (NoSuchMethodException nsme) {
|
||||
// otherwise use default ctor
|
||||
|
|
Loading…
Reference in New Issue