Skip to content

Commit 9cd38b9

Browse files
idodeclareVladimir Kotal
authored andcommitted
Fix #2030 : all new from createComponents()
1 parent 5050c4d commit 9cd38b9

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+124
-115
lines changed

opengrok-indexer/src/main/java/org/opengrok/indexer/analysis/AbstractAnalyzer.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,16 @@
2020
/*
2121
* Copyright (c) 2005, 2019, Oracle and/or its affiliates. All rights reserved.
2222
* Use is subject to license terms.
23-
* Portions Copyright (c) 2017-2019, Chris Fraire <[email protected]>.
23+
* Portions Copyright (c) 2017-2020, Chris Fraire <[email protected]>.
2424
*/
2525
package org.opengrok.indexer.analysis;
2626

2727
import java.io.IOException;
2828
import java.io.Reader;
2929
import java.io.StringReader;
3030
import java.io.Writer;
31+
import java.util.function.Supplier;
32+
3133
import org.apache.lucene.analysis.Analyzer;
3234
import org.apache.lucene.analysis.TokenStream;
3335
import org.apache.lucene.document.Document;
@@ -40,8 +42,7 @@ public abstract class AbstractAnalyzer extends Analyzer {
4042

4143
public static final Reader DUMMY_READER = new StringReader("");
4244
protected AnalyzerFactory factory;
43-
// you analyzer HAS to override this to get proper symbols in results
44-
protected JFlexTokenizer symbolTokenizer;
45+
protected Supplier<JFlexTokenizer> symbolTokenizerFactory;
4546
protected Project project;
4647
protected Ctags ctags;
4748
protected boolean scopesEnabled;

opengrok-indexer/src/main/java/org/opengrok/indexer/analysis/FileAnalyzer.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,14 @@
2020
/*
2121
* Copyright (c) 2005, 2019, Oracle and/or its affiliates. All rights reserved.
2222
* Use is subject to license terms.
23-
* Portions Copyright (c) 2017-2019, Chris Fraire <[email protected]>.
23+
* Portions Copyright (c) 2017-2020, Chris Fraire <[email protected]>.
2424
*/
2525
package org.opengrok.indexer.analysis;
2626

2727
import java.io.IOException;
2828
import java.io.Writer;
2929
import java.util.Locale;
30+
import java.util.function.Supplier;
3031
import java.util.logging.Level;
3132
import java.util.logging.Logger;
3233
import org.apache.lucene.analysis.Analyzer;
@@ -44,7 +45,7 @@
4445
*
4546
* An Analyzer for a filetype provides
4647
* <ol>
47-
* <li>the file extentions and magic numbers it analyzes</li>
48+
* <li>the file extensions and magic numbers it analyzes</li>
4849
* <li>a lucene document listing the fields it can support</li>
4950
* <li>TokenStreams for each of the field it said requires tokenizing in 2</li>
5051
* <li>cross reference in HTML format</li>
@@ -100,27 +101,27 @@ public FileAnalyzer(AnalyzerFactory factory) {
100101
throw new IllegalArgumentException("`factory' is null");
101102
}
102103
this.factory = factory;
103-
this.symbolTokenizer = createPlainSymbolTokenizer();
104+
this.symbolTokenizerFactory = this::createPlainSymbolTokenizer;
104105
}
105106

106107
/**
107108
* Creates a new instance of {@link FileAnalyzer}.
108109
*
109110
* @param factory defined instance for the analyzer
110-
* @param symbolTokenizer a defined instance relevant for the file
111+
* @param symbolTokenizerFactory a defined instance relevant for the file
111112
*/
112113
protected FileAnalyzer(AnalyzerFactory factory,
113-
JFlexTokenizer symbolTokenizer) {
114+
Supplier<JFlexTokenizer> symbolTokenizerFactory) {
114115

115116
super(Analyzer.PER_FIELD_REUSE_STRATEGY);
116117
if (factory == null) {
117118
throw new IllegalArgumentException("`factory' is null");
118119
}
119-
if (symbolTokenizer == null) {
120-
throw new IllegalArgumentException("`symbolTokenizer' is null");
120+
if (symbolTokenizerFactory == null) {
121+
throw new IllegalArgumentException("symbolTokenizerFactory is null");
121122
}
122123
this.factory = factory;
123-
this.symbolTokenizer = symbolTokenizer;
124+
this.symbolTokenizerFactory = symbolTokenizerFactory;
124125
}
125126

126127
/**
@@ -185,7 +186,7 @@ protected TokenStreamComponents createComponents(String fieldName) {
185186
return new HistoryAnalyzer().createComponents(fieldName);
186187
//below is set by PlainAnalyzer to workaround #1376 symbols search works like full text search
187188
case QueryBuilder.REFS: {
188-
return new TokenStreamComponents(symbolTokenizer);
189+
return new TokenStreamComponents(symbolTokenizerFactory.get());
189190
}
190191
case QueryBuilder.DEFS:
191192
return new TokenStreamComponents(createPlainSymbolTokenizer());

opengrok-indexer/src/main/java/org/opengrok/indexer/analysis/TextAnalyzer.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,16 @@
1919

2020
/*
2121
* Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
22-
* Portions Copyright (c) 2017-2018, Chris Fraire <[email protected]>.
22+
* Portions Copyright (c) 2017-2018, 2020, Chris Fraire <[email protected]>.
2323
*/
2424
package org.opengrok.indexer.analysis;
2525

2626
import java.io.IOException;
2727
import java.io.InputStream;
2828
import java.io.Reader;
2929
import java.nio.charset.StandardCharsets;
30+
import java.util.function.Supplier;
31+
3032
import org.opengrok.indexer.util.IOUtils;
3133

3234
public abstract class TextAnalyzer extends FileAnalyzer {
@@ -42,11 +44,11 @@ protected TextAnalyzer(AnalyzerFactory factory) {
4244
/**
4345
* Creates a new instance of {@link TextAnalyzer}.
4446
* @param factory defined instance for the analyzer
45-
* @param symbolTokenizer defined instance for the analyzer
47+
* @param symbolTokenizerFactory defined instance for the analyzer
4648
*/
4749
protected TextAnalyzer(AnalyzerFactory factory,
48-
JFlexTokenizer symbolTokenizer) {
49-
super(factory, symbolTokenizer);
50+
Supplier<JFlexTokenizer> symbolTokenizerFactory) {
51+
super(factory, symbolTokenizerFactory);
5052
}
5153

5254
/**

opengrok-indexer/src/main/java/org/opengrok/indexer/analysis/ada/AdaAnalyzer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
/*
2121
* Copyright (c) 2010, 2018, Oracle and/or its affiliates. All rights reserved.
22-
* Portions Copyright (c) 2017-2019, Chris Fraire <[email protected]>.
22+
* Portions Copyright (c) 2017-2020, Chris Fraire <[email protected]>.
2323
*/
2424
package org.opengrok.indexer.analysis.ada;
2525

@@ -43,7 +43,7 @@ public class AdaAnalyzer extends AbstractSourceCodeAnalyzer {
4343
* @param factory defined instance for the analyzer
4444
*/
4545
protected AdaAnalyzer(AnalyzerFactory factory) {
46-
super(factory, new JFlexTokenizer(new AdaSymbolTokenizer(
46+
super(factory, () -> new JFlexTokenizer(new AdaSymbolTokenizer(
4747
AbstractAnalyzer.DUMMY_READER)));
4848
}
4949

opengrok-indexer/src/main/java/org/opengrok/indexer/analysis/asm/AsmAnalyzer.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
*/
1919

2020
/*
21-
* Copyright (c) 2017-2019, Chris Fraire <[email protected]>.
21+
* Copyright (c) 2017-2020, Chris Fraire <[email protected]>.
2222
*/
2323

2424
package org.opengrok.indexer.analysis.asm;
@@ -41,7 +41,8 @@ public class AsmAnalyzer extends AbstractSourceCodeAnalyzer {
4141
* @param factory instance
4242
*/
4343
protected AsmAnalyzer(AnalyzerFactory factory) {
44-
super(factory, new JFlexTokenizer(new AsmSymbolTokenizer(AbstractAnalyzer.DUMMY_READER)));
44+
super(factory, () -> new JFlexTokenizer(new AsmSymbolTokenizer(
45+
AbstractAnalyzer.DUMMY_READER)));
4546
}
4647

4748
/**

opengrok-indexer/src/main/java/org/opengrok/indexer/analysis/c/CAnalyzer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
/*
2121
* Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
22-
* Portions Copyright (c) 2017-2019, Chris Fraire <[email protected]>.
22+
* Portions Copyright (c) 2017-2020, Chris Fraire <[email protected]>.
2323
*/
2424
package org.opengrok.indexer.analysis.c;
2525

@@ -44,7 +44,7 @@ public class CAnalyzer extends AbstractSourceCodeAnalyzer {
4444
* @param factory defined instance for the analyzer
4545
*/
4646
protected CAnalyzer(AnalyzerFactory factory) {
47-
super(factory, new JFlexTokenizer(new CSymbolTokenizer(
47+
super(factory, () -> new JFlexTokenizer(new CSymbolTokenizer(
4848
AbstractAnalyzer.DUMMY_READER)));
4949
}
5050

opengrok-indexer/src/main/java/org/opengrok/indexer/analysis/c/CxxAnalyzer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
/*
2121
* Copyright (c) 2008, 2018, Oracle and/or its affiliates. All rights reserved.
22-
* Portions Copyright (c) 2017-2019, Chris Fraire <[email protected]>.
22+
* Portions Copyright (c) 2017-2020, Chris Fraire <[email protected]>.
2323
*/
2424
package org.opengrok.indexer.analysis.c;
2525

@@ -42,7 +42,7 @@ public class CxxAnalyzer extends AbstractSourceCodeAnalyzer {
4242
* @param factory defined instance for the analyzer
4343
*/
4444
protected CxxAnalyzer(AnalyzerFactory factory) {
45-
super(factory, new JFlexTokenizer(new CxxSymbolTokenizer(
45+
super(factory, () -> new JFlexTokenizer(new CxxSymbolTokenizer(
4646
AbstractAnalyzer.DUMMY_READER)));
4747
}
4848

opengrok-indexer/src/main/java/org/opengrok/indexer/analysis/clojure/ClojureAnalyzer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
/*
2121
* Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
22-
* Portions Copyright (c) 2017-2019, Chris Fraire <[email protected]>.
22+
* Portions Copyright (c) 2017-2020, Chris Fraire <[email protected]>.
2323
*/
2424
package org.opengrok.indexer.analysis.clojure;
2525

@@ -33,7 +33,7 @@
3333
public class ClojureAnalyzer extends AbstractSourceCodeAnalyzer {
3434

3535
protected ClojureAnalyzer(AnalyzerFactory factory) {
36-
super(factory, new JFlexTokenizer(new ClojureSymbolTokenizer(
36+
super(factory, () -> new JFlexTokenizer(new ClojureSymbolTokenizer(
3737
AbstractAnalyzer.DUMMY_READER)));
3838
}
3939

opengrok-indexer/src/main/java/org/opengrok/indexer/analysis/csharp/CSharpAnalyzer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
/*
2121
* Copyright (c) 2008, 2018, Oracle and/or its affiliates. All rights reserved.
22-
* Portions Copyright (c) 2017-2019, Chris Fraire <[email protected]>.
22+
* Portions Copyright (c) 2017-2020, Chris Fraire <[email protected]>.
2323
*/
2424
package org.opengrok.indexer.analysis.csharp;
2525

@@ -37,7 +37,7 @@
3737
public class CSharpAnalyzer extends AbstractSourceCodeAnalyzer {
3838

3939
protected CSharpAnalyzer(AnalyzerFactory factory) {
40-
super(factory, new JFlexTokenizer(new CSharpSymbolTokenizer(
40+
super(factory, () -> new JFlexTokenizer(new CSharpSymbolTokenizer(
4141
AbstractAnalyzer.DUMMY_READER)));
4242
}
4343

opengrok-indexer/src/main/java/org/opengrok/indexer/analysis/document/MandocAnalyzer.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
/*
2121
* Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
22-
* Portions Copyright (c) 2017-2019, Chris Fraire <[email protected]>.
22+
* Portions Copyright (c) 2017-2020, Chris Fraire <[email protected]>.
2323
*/
2424
package org.opengrok.indexer.analysis.document;
2525

@@ -47,7 +47,7 @@ public class MandocAnalyzer extends TextAnalyzer {
4747
* @param factory defined instance for the analyzer
4848
*/
4949
protected MandocAnalyzer(AnalyzerFactory factory) {
50-
super(factory, new JFlexTokenizer(new TroffFullTokenizer(
50+
super(factory, () -> new JFlexTokenizer(new TroffFullTokenizer(
5151
AbstractAnalyzer.DUMMY_READER)));
5252
}
5353

@@ -77,9 +77,9 @@ public void analyze(Document doc, StreamSource src, Writer xrefOut)
7777

7878
// this is to explicitly use appropriate analyzers tokenstream to
7979
// workaround #1376 symbols search works like full text search
80-
this.symbolTokenizer.setReader(getReader(src.getStream()));
81-
OGKTextField full = new OGKTextField(QueryBuilder.FULL,
82-
symbolTokenizer);
80+
JFlexTokenizer symbolTokenizer = symbolTokenizerFactory.get();
81+
symbolTokenizer.setReader(getReader(src.getStream()));
82+
OGKTextField full = new OGKTextField(QueryBuilder.FULL, symbolTokenizer);
8383
doc.add(full);
8484

8585
if (xrefOut != null) {

0 commit comments

Comments
 (0)