You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by to...@apache.org on 2019/06/30 04:42:00 UTC

[lucene-solr] branch branch_8x updated: LUCENE-8874: Show SPI names instead of class names in Luke Analysis tab.

This is an automated email from the ASF dual-hosted git repository.

tomoko pushed a commit to branch branch_8x
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git


The following commit(s) were added to refs/heads/branch_8x by this push:
     new 2804d00  LUCENE-8874: Show SPI names instead of class names in Luke Analysis tab.
2804d00 is described below

commit 2804d00137957dc27dce922103c6286bbc7a9eca
Author: Tomoko Uchida <to...@apache.org>
AuthorDate: Sun Jun 30 13:27:24 2019 +0900

    LUCENE-8874: Show SPI names instead of class names in Luke Analysis tab.
---
 lucene/CHANGES.txt                                               | 2 ++
 .../components/dialog/analysis/AnalysisChainDialogFactory.java   | 9 ++++++---
 .../org/apache/lucene/luke/models/analysis/AnalysisImpl.java     | 7 ++++---
 .../org/apache/lucene/luke/models/analysis/AnalysisImplTest.java | 6 +++---
 4 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index 5916656..70d8a91 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -109,6 +109,8 @@ Improvements
 
 * LUCENE-8793: Luke enhanced UI for CustomAnalyzer: show detailed analysis steps. (Jun Ohtani via Tomoko Uchida)
 
+* LUCENE-8874: Show SPI names instead of class names in Luke Analysis tab. (Tomoko Uchida)
+
 * LUCENE-8855: Add Accountable to some Query implementations (ab, Adrien Grand)
 
 * LUCENE-8894: Add APIs to find SPI names for Tokenizer/CharFilter/TokenFilter factory classes. (Tomoko Uchida)
diff --git a/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/components/dialog/analysis/AnalysisChainDialogFactory.java b/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/components/dialog/analysis/AnalysisChainDialogFactory.java
index 31fce6d..002fdca 100644
--- a/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/components/dialog/analysis/AnalysisChainDialogFactory.java
+++ b/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/components/dialog/analysis/AnalysisChainDialogFactory.java
@@ -37,6 +37,9 @@ import java.awt.Window;
 import java.io.IOException;
 
 import org.apache.lucene.analysis.custom.CustomAnalyzer;
+import org.apache.lucene.analysis.util.CharFilterFactory;
+import org.apache.lucene.analysis.util.TokenFilterFactory;
+import org.apache.lucene.analysis.util.TokenizerFactory;
 import org.apache.lucene.luke.app.desktop.Preferences;
 import org.apache.lucene.luke.app.desktop.PreferencesFactory;
 import org.apache.lucene.luke.app.desktop.util.DialogOpener;
@@ -109,7 +112,7 @@ public class AnalysisChainDialogFactory implements DialogOpener.DialogFactory {
     c.weighty = 0.5;
     panel.add(new JLabel(MessageUtils.getLocalizedMessage("analysis.dialog.chain.label.charfilters")), c);
 
-    String[] charFilters = analyzer.getCharFilterFactories().stream().map(f -> f.getClass().getName()).toArray(String[]::new);
+    String[] charFilters = analyzer.getCharFilterFactories().stream().map(f -> CharFilterFactory.findSPIName(f.getClass())).toArray(String[]::new);
     JList<String> charFilterList = new JList<>(charFilters);
     charFilterList.setVisibleRowCount(charFilters.length == 0 ? 1 : Math.min(charFilters.length, 5));
     c.gridx = 1;
@@ -124,7 +127,7 @@ public class AnalysisChainDialogFactory implements DialogOpener.DialogFactory {
     c.weighty = 0.1;
     panel.add(new JLabel(MessageUtils.getLocalizedMessage("analysis.dialog.chain.label.tokenizer")), c);
 
-    String tokenizer = analyzer.getTokenizerFactory().getClass().getName();
+    String tokenizer = TokenizerFactory.findSPIName(analyzer.getTokenizerFactory().getClass());
     JTextField tokenizerTF = new JTextField(tokenizer);
     tokenizerTF.setColumns(30);
     tokenizerTF.setEditable(false);
@@ -142,7 +145,7 @@ public class AnalysisChainDialogFactory implements DialogOpener.DialogFactory {
     c.weighty = 0.5;
     panel.add(new JLabel(MessageUtils.getLocalizedMessage("analysis.dialog.chain.label.tokenfilters")), c);
 
-    String[] tokenFilters = analyzer.getTokenFilterFactories().stream().map(f -> f.getClass().getName()).toArray(String[]::new);
+    String[] tokenFilters = analyzer.getTokenFilterFactories().stream().map(f -> TokenFilterFactory.findSPIName(f.getClass())).toArray(String[]::new);
     JList<String> tokenFilterList = new JList<>(tokenFilters);
     tokenFilterList.setVisibleRowCount(tokenFilters.length == 0 ? 1 : Math.min(tokenFilters.length, 5));
     tokenFilterList.setMinimumSize(new Dimension(300, 25));
diff --git a/lucene/luke/src/java/org/apache/lucene/luke/models/analysis/AnalysisImpl.java b/lucene/luke/src/java/org/apache/lucene/luke/models/analysis/AnalysisImpl.java
index be821a8..dd06470 100644
--- a/lucene/luke/src/java/org/apache/lucene/luke/models/analysis/AnalysisImpl.java
+++ b/lucene/luke/src/java/org/apache/lucene/luke/models/analysis/AnalysisImpl.java
@@ -247,7 +247,7 @@ public final class AnalysisImpl implements Analysis {
           Reader readerForWriteOut = new StringReader(charFilteredSource);
           readerForWriteOut = charFilterFactory.create(readerForWriteOut);
           charFilteredSource = writeCharStream(readerForWriteOut);
-          charfilteredTexts.add(new CharfilteredText(readerForWriteOut.getClass().getName(), charFilteredSource));
+          charfilteredTexts.add(new CharfilteredText(CharFilterFactory.findSPIName(charFilterFactory.getClass()), charFilteredSource));
         }
         reader = cs;
       }
@@ -259,13 +259,14 @@ public final class AnalysisImpl implements Analysis {
       ((Tokenizer)tokenStream).setReader(reader);
       List<Token> tokens = new ArrayList<>();
       List<AttributeSource> attributeSources = analyzeTokenStream(tokenStream, tokens);
-      namedTokens.add(new NamedTokens(tokenStream.getClass().getName(), tokens));
+      namedTokens.add(new NamedTokens(TokenizerFactory.findSPIName(tokenizerFactory.getClass()), tokens));
+
       ListBasedTokenStream listBasedTokenStream = new ListBasedTokenStream(tokenStream, attributeSources);
       for (TokenFilterFactory tokenFilterFactory : tokenFilterFactories) {
         tokenStream = tokenFilterFactory.create(listBasedTokenStream);
         tokens = new ArrayList<>();
         attributeSources = analyzeTokenStream(tokenStream, tokens);
-        namedTokens.add(new NamedTokens(tokenStream.getClass().getName(), tokens));
+        namedTokens.add(new NamedTokens(TokenFilterFactory.findSPIName(tokenFilterFactory.getClass()), tokens));
         try {
           listBasedTokenStream.close();
         } catch (IOException e) {
diff --git a/lucene/luke/src/test/org/apache/lucene/luke/models/analysis/AnalysisImplTest.java b/lucene/luke/src/test/org/apache/lucene/luke/models/analysis/AnalysisImplTest.java
index b0a2c68..c4bce93 100644
--- a/lucene/luke/src/test/org/apache/lucene/luke/models/analysis/AnalysisImplTest.java
+++ b/lucene/luke/src/test/org/apache/lucene/luke/models/analysis/AnalysisImplTest.java
@@ -165,12 +165,12 @@ public class AnalysisImplTest extends LuceneTestCase {
     assertNotNull(result);
     assertNotNull(result.getCharfilteredTexts());
     assertEquals(1,result.getCharfilteredTexts().size());
-    assertEquals("org.apache.lucene.analysis.charfilter.HTMLStripCharFilter", result.getCharfilteredTexts().get(0).getName());
+    assertEquals("htmlStrip", result.getCharfilteredTexts().get(0).getName());
 
     assertNotNull(result.getNamedTokens());
     assertEquals(2, result.getNamedTokens().size());
     //FIXME check each namedTokensList
-    assertEquals("org.apache.lucene.analysis.core.KeywordTokenizer", result.getNamedTokens().get(0).getName());
-    assertEquals("org.apache.lucene.analysis.core.LowerCaseFilter", result.getNamedTokens().get(1).getName());
+    assertEquals("keyword", result.getNamedTokens().get(0).getName());
+    assertEquals("lowercase", result.getNamedTokens().get(1).getName());
   }
 }