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;
}
}