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 2012/07/24 17:01:13 UTC
svn commit: r1365106 - in /lucene/dev/branches/lucene2510:
lucene/analysis/common/src/java/org/apache/lucene/analysis/util/
solr/contrib/uima/src/test-files/uima/
solr/core/src/java/org/apache/solr/analysis/
solr/core/src/java/org/apache/solr/schema/
Author: rmuir
Date: Tue Jul 24 15:01:12 2012
New Revision: 1365106
URL: http://svn.apache.org/viewvc?rev=1365106&view=rev
Log:
LUCENE-4044: dont use instances just class names
Modified:
lucene/dev/branches/lucene2510/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/AnalysisSPILoader.java
lucene/dev/branches/lucene2510/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/CharFilterFactory.java
lucene/dev/branches/lucene2510/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/TokenFilterFactory.java
lucene/dev/branches/lucene2510/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/TokenizerFactory.java
lucene/dev/branches/lucene2510/solr/contrib/uima/src/test-files/uima/uima-tokenizers-schema.xml
lucene/dev/branches/lucene2510/solr/core/src/java/org/apache/solr/analysis/AnalysisPluginLoader.java
lucene/dev/branches/lucene2510/solr/core/src/java/org/apache/solr/schema/FieldTypePluginLoader.java
Modified: lucene/dev/branches/lucene2510/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/AnalysisSPILoader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2510/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/AnalysisSPILoader.java?rev=1365106&r1=1365105&r2=1365106&view=diff
==============================================================================
--- lucene/dev/branches/lucene2510/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/AnalysisSPILoader.java (original)
+++ lucene/dev/branches/lucene2510/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/AnalysisSPILoader.java Tue Jul 24 15:01:12 2012
@@ -28,7 +28,7 @@ import java.util.ServiceLoader;
* Helper class for loading named SPIs from classpath (e.g. Tokenizers, TokenStreams).
* @lucene.internal
*/
-public final class AnalysisSPILoader<S extends AbstractAnalysisFactory> {
+final class AnalysisSPILoader<S extends AbstractAnalysisFactory> {
private final Map<String,Class<? extends S>> services;
private final Class<S> clazz;
@@ -93,19 +93,25 @@ public final class AnalysisSPILoader<S e
return ('0' <= c && c <= '9');
}
+ // TODO: do we even need this method?
public S newInstance(String name) {
+ final Class<? extends S> service = lookupClass(name);
+ try {
+ return service.newInstance();
+ } catch (Exception e) {
+ throw new IllegalArgumentException("SPI class of type "+clazz.getName()+" with name '"+name+"' cannot be instantiated. " +
+ "This is likely due to a misconfiguration of the java class '" + service.getName() + "': ", e);
+ }
+ }
+
+ public Class<? extends S> lookupClass(String name) {
final Class<? extends S> service = services.get(name.toLowerCase(Locale.ROOT));
if (service != null) {
- try {
- return service.newInstance();
- } catch (Exception e) {
- throw new IllegalArgumentException("SPI class of type "+clazz.getName()+" with name '"+name+"' cannot be instantiated. " +
- "This is likely due to a misconfiguration of the java class '" + service.getName() + "': ", e);
- }
+ return service;
} else {
throw new IllegalArgumentException("A SPI class of type "+clazz.getName()+" with name '"+name+"' does not exist. "+
- "You need to add the corresponding JAR file supporting this SPI to your classpath."+
- "The current classpath supports the following names: "+availableServices());
+ "You need to add the corresponding JAR file supporting this SPI to your classpath."+
+ "The current classpath supports the following names: "+availableServices());
}
}
Modified: lucene/dev/branches/lucene2510/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/CharFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2510/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/CharFilterFactory.java?rev=1365106&r1=1365105&r2=1365106&view=diff
==============================================================================
--- lucene/dev/branches/lucene2510/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/CharFilterFactory.java (original)
+++ lucene/dev/branches/lucene2510/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/CharFilterFactory.java Tue Jul 24 15:01:12 2012
@@ -36,6 +36,10 @@ public abstract class CharFilterFactory
return loader.newInstance(name);
}
+ public static Class<? extends CharFilterFactory> lookupClass(String name) {
+ return loader.lookupClass(name);
+ }
+
/** returns a list of all available charfilter names */
public static Set<String> availableCharFilters() {
return loader.availableServices();
Modified: lucene/dev/branches/lucene2510/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/TokenFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2510/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/TokenFilterFactory.java?rev=1365106&r1=1365105&r2=1365106&view=diff
==============================================================================
--- lucene/dev/branches/lucene2510/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/TokenFilterFactory.java (original)
+++ lucene/dev/branches/lucene2510/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/TokenFilterFactory.java Tue Jul 24 15:01:12 2012
@@ -36,6 +36,10 @@ public abstract class TokenFilterFactory
return loader.newInstance(name);
}
+ public static Class<? extends TokenFilterFactory> lookupClass(String name) {
+ return loader.lookupClass(name);
+ }
+
/** returns a list of all available tokenfilter names */
public static Set<String> availableTokenFilters() {
return loader.availableServices();
Modified: lucene/dev/branches/lucene2510/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/TokenizerFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2510/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/TokenizerFactory.java?rev=1365106&r1=1365105&r2=1365106&view=diff
==============================================================================
--- lucene/dev/branches/lucene2510/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/TokenizerFactory.java (original)
+++ lucene/dev/branches/lucene2510/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/TokenizerFactory.java Tue Jul 24 15:01:12 2012
@@ -36,6 +36,10 @@ public abstract class TokenizerFactory e
return loader.newInstance(name);
}
+ public static Class<? extends TokenizerFactory> lookupClass(String name) {
+ return loader.lookupClass(name);
+ }
+
/** returns a list of all available tokenizer names */
public static Set<String> availableTokenizers() {
return loader.availableServices();
Modified: lucene/dev/branches/lucene2510/solr/contrib/uima/src/test-files/uima/uima-tokenizers-schema.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2510/solr/contrib/uima/src/test-files/uima/uima-tokenizers-schema.xml?rev=1365106&r1=1365105&r2=1365106&view=diff
==============================================================================
--- lucene/dev/branches/lucene2510/solr/contrib/uima/src/test-files/uima/uima-tokenizers-schema.xml (original)
+++ lucene/dev/branches/lucene2510/solr/contrib/uima/src/test-files/uima/uima-tokenizers-schema.xml Tue Jul 24 15:01:12 2012
@@ -299,14 +299,14 @@
<fieldType name="uima_sentences" class="solr.TextField" positionIncrementGap="100">
<analyzer>
- <tokenizer class="org.apache.solr.uima.analysis.UIMAAnnotationsTokenizerFactory"
+ <tokenizer class="solr.UIMAAnnotationsTokenizerFactory"
descriptorPath="/uima/AggregateSentenceAE.xml" tokenType="org.apache.uima.SentenceAnnotation"/>
</analyzer>
</fieldType>
<fieldType name="uima_nouns" class="solr.TextField" positionIncrementGap="100">
<analyzer>
- <tokenizer class="org.apache.solr.uima.analysis.UIMATypeAwareAnnotationsTokenizerFactory"
+ <tokenizer class="solr.UIMATypeAwareAnnotationsTokenizerFactory"
descriptorPath="/uima/AggregateSentenceAE.xml" tokenType="org.apache.uima.TokenAnnotation"
featurePath="posTag"/>
<filter class="solr.TypeTokenFilterFactory" types="uima/stoptypes.txt" />
Modified: lucene/dev/branches/lucene2510/solr/core/src/java/org/apache/solr/analysis/AnalysisPluginLoader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2510/solr/core/src/java/org/apache/solr/analysis/AnalysisPluginLoader.java?rev=1365106&r1=1365105&r2=1365106&view=diff
==============================================================================
--- lucene/dev/branches/lucene2510/solr/core/src/java/org/apache/solr/analysis/AnalysisPluginLoader.java (original)
+++ lucene/dev/branches/lucene2510/solr/core/src/java/org/apache/solr/analysis/AnalysisPluginLoader.java Tue Jul 24 15:01:12 2012
@@ -37,19 +37,18 @@ public abstract class AnalysisPluginLoad
@Override
protected S create(ResourceLoader loader, String name, String className, Node node) throws Exception {
- S instance = null;
+ Class<? extends S> clazz = null;
Matcher m = legacyPattern.matcher(className);
if (m.matches()) {
try {
- instance = createSPI(m.group(4));
+ clazz = lookupSPI(m.group(4));
} catch (IllegalArgumentException ex) {
// ok
}
}
- if (instance != null) {
- // necessary because SolrResourceLoader manages its own list of 'awaiting ResourceLoaderAware'
- className = instance.getClass().getName();
+ if (clazz != null) {
+ className = clazz.getName();
}
return super.create(loader, name, className, node);
@@ -58,5 +57,5 @@ public abstract class AnalysisPluginLoad
private static final Pattern legacyPattern =
Pattern.compile("((org\\.apache\\.solr\\.analysis\\.)|(solr\\.))([\\p{L}_$][\\p{L}\\p{N}_$]+?)(TokenFilter|Filter|Tokenizer|CharFilter)Factory");
- protected abstract S createSPI(String name);
+ protected abstract Class<? extends S> lookupSPI(String name);
}
Modified: lucene/dev/branches/lucene2510/solr/core/src/java/org/apache/solr/schema/FieldTypePluginLoader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2510/solr/core/src/java/org/apache/solr/schema/FieldTypePluginLoader.java?rev=1365106&r1=1365105&r2=1365106&view=diff
==============================================================================
--- lucene/dev/branches/lucene2510/solr/core/src/java/org/apache/solr/schema/FieldTypePluginLoader.java (original)
+++ lucene/dev/branches/lucene2510/solr/core/src/java/org/apache/solr/schema/FieldTypePluginLoader.java Tue Jul 24 15:01:12 2012
@@ -268,8 +268,8 @@ public final class FieldTypePluginLoader
("[schema.xml] analyzer/charFilter", CharFilterFactory.class, false, false) {
@Override
- protected CharFilterFactory createSPI(String name) {
- return CharFilterFactory.forName(name);
+ protected Class<? extends CharFilterFactory> lookupSPI(String name) {
+ return CharFilterFactory.lookupClass(name);
}
@Override
@@ -306,8 +306,8 @@ public final class FieldTypePluginLoader
("[schema.xml] analyzer/tokenizer", TokenizerFactory.class, false, false) {
@Override
- protected TokenizerFactory createSPI(String name) {
- return TokenizerFactory.forName(name);
+ protected Class<? extends TokenizerFactory> lookupSPI(String name) {
+ return TokenizerFactory.lookupClass(name);
}
@Override
@@ -349,8 +349,8 @@ public final class FieldTypePluginLoader
{
@Override
- protected TokenFilterFactory createSPI(String name) {
- return TokenFilterFactory.forName(name);
+ protected Class<? extends TokenFilterFactory> lookupSPI(String name) {
+ return TokenFilterFactory.lookupClass(name);
}
@Override