You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ho...@apache.org on 2012/05/25 04:18:34 UTC

svn commit: r1342489 - in /lucene/dev/trunk: lucene/analysis/common/src/java/org/apache/lucene/analysis/util/ solr/ solr/core/src/java/org/apache/solr/analysis/ solr/core/src/java/org/apache/solr/util/plugin/

Author: hossman
Date: Fri May 25 02:18:33 2012
New Revision: 1342489

URL: http://svn.apache.org/viewvc?rev=1342489&view=rev
Log:
SOLR-3446: Better errors when PatternTokenizerFactory is configured with an invalid pattern, and include the 'name' whenever possible in plugin init error messages.

Modified:
    lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/AbstractAnalysisFactory.java
    lucene/dev/trunk/solr/CHANGES.txt
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/analysis/PatternReplaceCharFilterFactory.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/analysis/PatternReplaceFilterFactory.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/analysis/PatternTokenizerFactory.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/util/plugin/AbstractPluginLoader.java

Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/AbstractAnalysisFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/AbstractAnalysisFactory.java?rev=1342489&r1=1342488&r2=1342489&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/AbstractAnalysisFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/AbstractAnalysisFactory.java Fri May 25 02:18:33 2012
@@ -31,6 +31,8 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
+import java.util.regex.Pattern;
+import java.util.regex.PatternSyntaxException;
 
 /**
  * Abstract parent class for analysis factories {@link TokenizerFactory},
@@ -102,6 +104,20 @@ public abstract class AbstractAnalysisFa
     return Boolean.parseBoolean(s);
   }
 
+  protected Pattern getPattern(String name) {
+    try {
+      String pat = args.get(name);
+      if (null == pat) {
+        throw new InitializationException("Configuration Error: missing parameter '" + name + "'");
+      }
+      return Pattern.compile(args.get(name));
+    } catch (PatternSyntaxException e) {
+      throw new InitializationException
+        ("Configuration Error: '" + name + "' can not be parsed in " +
+         this.getClass().getSimpleName(), e);
+    }
+  }
+
   protected CharArraySet getWordSet(ResourceLoader loader,
       String wordFiles, boolean ignoreCase) throws IOException {
     assureMatchVersion();

Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=1342489&r1=1342488&r2=1342489&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Fri May 25 02:18:33 2012
@@ -435,6 +435,10 @@ Bug Fixes
 * SOLR-3454: Exception when using result grouping with main=true and using
   wt=javabin. (Ludovic Boutros, Martijn van Groningen)
 
+* SOLR-3446: Better errors when PatternTokenizerFactory is configured with 
+  an invalid pattern, and include the 'name' whenever possible in plugin init 
+  error messages. (hossman)
+
 Other Changes
 ----------------------
 

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/analysis/PatternReplaceCharFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/analysis/PatternReplaceCharFilterFactory.java?rev=1342489&r1=1342488&r2=1342489&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/analysis/PatternReplaceCharFilterFactory.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/analysis/PatternReplaceCharFilterFactory.java Fri May 25 02:18:33 2012
@@ -50,13 +50,7 @@ public class PatternReplaceCharFilterFac
   @Override
   public void init(Map<String, String> args) {
     super.init( args );
-    try {
-      p = Pattern.compile(args.get("pattern"));
-    } catch (PatternSyntaxException e) {
-      throw new InitializationException
-        ("Configuration Error: 'pattern' can not be parsed in " +
-         this.getClass().getName(), e);
-    }
+    p = getPattern("pattern");
     replacement = args.get( "replacement" );
     if( replacement == null )
       replacement = "";

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/analysis/PatternReplaceFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/analysis/PatternReplaceFilterFactory.java?rev=1342489&r1=1342488&r2=1342489&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/analysis/PatternReplaceFilterFactory.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/analysis/PatternReplaceFilterFactory.java Fri May 25 02:18:33 2012
@@ -46,14 +46,7 @@ public class PatternReplaceFilterFactory
   @Override
   public void init(Map<String, String> args) {
     super.init(args);
-    try {
-      p = Pattern.compile(args.get("pattern"));
-    } catch (PatternSyntaxException e) {
-      throw new InitializationException
-        ("Configuration Error: 'pattern' can not be parsed in " +
-         this.getClass().getName(), e);
-    }
-    
+    p = getPattern("pattern");
     replacement = args.get("replacement");
     
     String r = args.get("replace");

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/analysis/PatternTokenizerFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/analysis/PatternTokenizerFactory.java?rev=1342489&r1=1342488&r2=1342489&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/analysis/PatternTokenizerFactory.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/analysis/PatternTokenizerFactory.java Fri May 25 02:18:33 2012
@@ -79,13 +79,8 @@ public class PatternTokenizerFactory ext
   @Override
   public void init(Map<String,String> args) 
   {
-    this.args = args;
-    String regex = args.get( PATTERN );
-    if( regex == null ) {
-      throw new InitializationException("missing required argument: " + PATTERN);
-    }
-    int flags = 0; // TODO? -- read flags from config CASE_INSENSITIVE, etc
-    pattern = Pattern.compile( regex, flags );
+    super.init(args);
+    pattern = getPattern( PATTERN );
     
     group = -1;  // use 'split'
     String g = args.get( GROUP );

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/util/plugin/AbstractPluginLoader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/util/plugin/AbstractPluginLoader.java?rev=1342489&r1=1342488&r2=1342489&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/util/plugin/AbstractPluginLoader.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/util/plugin/AbstractPluginLoader.java Fri May 25 02:18:33 2012
@@ -133,10 +133,9 @@ public abstract class AbstractPluginLoad
       for (int i=0; i<nodes.getLength(); i++) {
         Node node = nodes.item(i);
   
-        // In a production environment, we can tolerate an error in some request handlers, 
-        // still load the others, and have a working system.
+        String name = null;
         try {
-          String name       = DOMUtil.getAttr(node,"name", requireName?type:null);
+          name              = DOMUtil.getAttr(node,"name", requireName?type:null);
           String className  = DOMUtil.getAttr(node,"class", type);
           String defaultStr = DOMUtil.getAttr(node,"default", null );
             
@@ -168,7 +167,9 @@ public abstract class AbstractPluginLoad
         catch (Exception ex) {
           SolrException e = new SolrException
             (ErrorCode.SERVER_ERROR,
-             "Plugin init failure for " + type + ":" + ex.getMessage(), ex);
+             "Plugin init failure for " + type + 
+             (null != name ? (" \"" + name + "\"") : "") +
+             ": " + ex.getMessage(), ex);
           throw e;
         }
       }