You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-commits@lucene.apache.org by us...@apache.org on 2010/03/15 09:09:34 UTC

svn commit: r923109 - in /lucene/solr/branches/solr/src/java/org/apache/solr: analysis/BaseTokenFilterFactory.java analysis/BaseTokenStreamFactory.java analysis/BaseTokenizerFactory.java analysis/StandardTokenizerFactory.java schema/IndexSchema.java

Author: uschindler
Date: Mon Mar 15 08:09:34 2010
New Revision: 923109

URL: http://svn.apache.org/viewvc?rev=923109&view=rev
Log:
SOLR-1677: Code cleanup (heavy duplication removal) and more checks.

Added:
    lucene/solr/branches/solr/src/java/org/apache/solr/analysis/BaseTokenStreamFactory.java   (with props)
Modified:
    lucene/solr/branches/solr/src/java/org/apache/solr/analysis/BaseTokenFilterFactory.java
    lucene/solr/branches/solr/src/java/org/apache/solr/analysis/BaseTokenizerFactory.java
    lucene/solr/branches/solr/src/java/org/apache/solr/analysis/StandardTokenizerFactory.java
    lucene/solr/branches/solr/src/java/org/apache/solr/schema/IndexSchema.java

Modified: lucene/solr/branches/solr/src/java/org/apache/solr/analysis/BaseTokenFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/solr/branches/solr/src/java/org/apache/solr/analysis/BaseTokenFilterFactory.java?rev=923109&r1=923108&r2=923109&view=diff
==============================================================================
--- lucene/solr/branches/solr/src/java/org/apache/solr/analysis/BaseTokenFilterFactory.java (original)
+++ lucene/solr/branches/solr/src/java/org/apache/solr/analysis/BaseTokenFilterFactory.java Mon Mar 15 08:09:34 2010
@@ -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);
-  }
-
 }

Added: lucene/solr/branches/solr/src/java/org/apache/solr/analysis/BaseTokenStreamFactory.java
URL: http://svn.apache.org/viewvc/lucene/solr/branches/solr/src/java/org/apache/solr/analysis/BaseTokenStreamFactory.java?rev=923109&view=auto
==============================================================================
--- lucene/solr/branches/solr/src/java/org/apache/solr/analysis/BaseTokenStreamFactory.java (added)
+++ lucene/solr/branches/solr/src/java/org/apache/solr/analysis/BaseTokenStreamFactory.java Mon Mar 15 08:09:34 2010
@@ -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);
+  }
+
+}

Propchange: lucene/solr/branches/solr/src/java/org/apache/solr/analysis/BaseTokenStreamFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: lucene/solr/branches/solr/src/java/org/apache/solr/analysis/BaseTokenStreamFactory.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Modified: lucene/solr/branches/solr/src/java/org/apache/solr/analysis/BaseTokenizerFactory.java
URL: http://svn.apache.org/viewvc/lucene/solr/branches/solr/src/java/org/apache/solr/analysis/BaseTokenizerFactory.java?rev=923109&r1=923108&r2=923109&view=diff
==============================================================================
--- lucene/solr/branches/solr/src/java/org/apache/solr/analysis/BaseTokenizerFactory.java (original)
+++ lucene/solr/branches/solr/src/java/org/apache/solr/analysis/BaseTokenizerFactory.java Mon Mar 15 08:09:34 2010
@@ -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;
-  }
 }

Modified: lucene/solr/branches/solr/src/java/org/apache/solr/analysis/StandardTokenizerFactory.java
URL: http://svn.apache.org/viewvc/lucene/solr/branches/solr/src/java/org/apache/solr/analysis/StandardTokenizerFactory.java?rev=923109&r1=923108&r2=923109&view=diff
==============================================================================
--- lucene/solr/branches/solr/src/java/org/apache/solr/analysis/StandardTokenizerFactory.java (original)
+++ lucene/solr/branches/solr/src/java/org/apache/solr/analysis/StandardTokenizerFactory.java Mon Mar 15 08:09:34 2010
@@ -28,6 +28,7 @@ import java.io.Reader;
 
 public class StandardTokenizerFactory extends BaseTokenizerFactory {
   public StandardTokenizer create(Reader input) {
+    assureMatchVersion();
     return new StandardTokenizer(luceneMatchVersion, input);
   }
 }

Modified: lucene/solr/branches/solr/src/java/org/apache/solr/schema/IndexSchema.java
URL: http://svn.apache.org/viewvc/lucene/solr/branches/solr/src/java/org/apache/solr/schema/IndexSchema.java?rev=923109&r1=923108&r2=923109&view=diff
==============================================================================
--- lucene/solr/branches/solr/src/java/org/apache/solr/schema/IndexSchema.java (original)
+++ lucene/solr/branches/solr/src/java/org/apache/solr/schema/IndexSchema.java Mon Mar 15 08:09:34 2010
@@ -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