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