Skip to content

Commit da5179d

Browse files
authored
Merge pull request #2028 from vladak/analyzerguru_static
catch exceptions in static initializer of AnalyzerGuru
2 parents e766735 + 590bde2 commit da5179d

File tree

2 files changed

+72
-58
lines changed

2 files changed

+72
-58
lines changed

src/org/opensolaris/opengrok/analysis/AnalyzerGuru.java

Lines changed: 63 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -220,67 +220,72 @@ public class AnalyzerGuru {
220220
* though precise Matchers are run before imprecise ones.
221221
*/
222222
static {
223-
FileAnalyzerFactory[] analyzers = {
224-
DEFAULT_ANALYZER_FACTORY,
225-
new IgnorantAnalyzerFactory(),
226-
new BZip2AnalyzerFactory(),
227-
new XMLAnalyzerFactory(),
228-
MandocAnalyzerFactory.DEFAULT_INSTANCE,
229-
TroffAnalyzerFactory.DEFAULT_INSTANCE,
230-
new ELFAnalyzerFactory(),
231-
JavaClassAnalyzerFactory.DEFAULT_INSTANCE,
232-
new ImageAnalyzerFactory(),
233-
JarAnalyzerFactory.DEFAULT_INSTANCE,
234-
ZipAnalyzerFactory.DEFAULT_INSTANCE,
235-
new TarAnalyzerFactory(),
236-
new CAnalyzerFactory(),
237-
new CSharpAnalyzerFactory(),
238-
new VBAnalyzerFactory(),
239-
new CxxAnalyzerFactory(),
240-
new ErlangAnalyzerFactory(),
241-
new ShAnalyzerFactory(),
242-
new PowershellAnalyzerFactory(),
243-
PlainAnalyzerFactory.DEFAULT_INSTANCE,
244-
new UuencodeAnalyzerFactory(),
245-
new GZIPAnalyzerFactory(),
246-
new JavaAnalyzerFactory(),
247-
new JavaScriptAnalyzerFactory(),
248-
new KotlinAnalyzerFactory(),
249-
new SwiftAnalyzerFactory(),
250-
new JsonAnalyzerFactory(),
251-
new PythonAnalyzerFactory(),
252-
new RustAnalyzerFactory(),
253-
new PerlAnalyzerFactory(),
254-
new PhpAnalyzerFactory(),
255-
new LispAnalyzerFactory(),
256-
new TclAnalyzerFactory(),
257-
new ScalaAnalyzerFactory(),
258-
new ClojureAnalyzerFactory(),
259-
new SQLAnalyzerFactory(),
260-
new PLSQLAnalyzerFactory(),
261-
new FortranAnalyzerFactory(),
262-
new HaskellAnalyzerFactory(),
263-
new GolangAnalyzerFactory(),
264-
new LuaAnalyzerFactory(),
265-
new PascalAnalyzerFactory(),
266-
new AdaAnalyzerFactory(),
267-
new RubyAnalyzerFactory(),
268-
new EiffelAnalyzerFactory()
269-
};
270-
271-
for (FileAnalyzerFactory analyzer : analyzers) {
272-
registerAnalyzer(analyzer);
273-
}
274-
275-
for (FileAnalyzerFactory analyzer : analyzers) {
276-
if (analyzer.getName() != null && !analyzer.getName().isEmpty()) {
277-
fileTypeDescriptions.put(analyzer.getAnalyzer().getFileTypeName(), analyzer.getName());
223+
try {
224+
FileAnalyzerFactory[] analyzers = {
225+
DEFAULT_ANALYZER_FACTORY,
226+
new IgnorantAnalyzerFactory(),
227+
new BZip2AnalyzerFactory(),
228+
new XMLAnalyzerFactory(),
229+
MandocAnalyzerFactory.DEFAULT_INSTANCE,
230+
TroffAnalyzerFactory.DEFAULT_INSTANCE,
231+
new ELFAnalyzerFactory(),
232+
JavaClassAnalyzerFactory.DEFAULT_INSTANCE,
233+
new ImageAnalyzerFactory(),
234+
JarAnalyzerFactory.DEFAULT_INSTANCE,
235+
ZipAnalyzerFactory.DEFAULT_INSTANCE,
236+
new TarAnalyzerFactory(),
237+
new CAnalyzerFactory(),
238+
new CSharpAnalyzerFactory(),
239+
new VBAnalyzerFactory(),
240+
new CxxAnalyzerFactory(),
241+
new ErlangAnalyzerFactory(),
242+
new ShAnalyzerFactory(),
243+
new PowershellAnalyzerFactory(),
244+
PlainAnalyzerFactory.DEFAULT_INSTANCE,
245+
new UuencodeAnalyzerFactory(),
246+
new GZIPAnalyzerFactory(),
247+
new JavaAnalyzerFactory(),
248+
new JavaScriptAnalyzerFactory(),
249+
new KotlinAnalyzerFactory(),
250+
new SwiftAnalyzerFactory(),
251+
new JsonAnalyzerFactory(),
252+
new PythonAnalyzerFactory(),
253+
new RustAnalyzerFactory(),
254+
new PerlAnalyzerFactory(),
255+
new PhpAnalyzerFactory(),
256+
new LispAnalyzerFactory(),
257+
new TclAnalyzerFactory(),
258+
new ScalaAnalyzerFactory(),
259+
new ClojureAnalyzerFactory(),
260+
new SQLAnalyzerFactory(),
261+
new PLSQLAnalyzerFactory(),
262+
new FortranAnalyzerFactory(),
263+
new HaskellAnalyzerFactory(),
264+
new GolangAnalyzerFactory(),
265+
new LuaAnalyzerFactory(),
266+
new PascalAnalyzerFactory(),
267+
new AdaAnalyzerFactory(),
268+
new RubyAnalyzerFactory(),
269+
new EiffelAnalyzerFactory()
270+
};
271+
272+
for (FileAnalyzerFactory analyzer : analyzers) {
273+
registerAnalyzer(analyzer);
278274
}
279-
}
280275

281-
string_ft_stored_nanalyzed_norms.setOmitNorms(false);
282-
string_ft_nstored_nanalyzed_norms.setOmitNorms(false);
276+
for (FileAnalyzerFactory analyzer : analyzers) {
277+
if (analyzer.getName() != null && !analyzer.getName().isEmpty()) {
278+
fileTypeDescriptions.put(analyzer.getAnalyzer().getFileTypeName(), analyzer.getName());
279+
}
280+
}
283281

282+
string_ft_stored_nanalyzed_norms.setOmitNorms(false);
283+
string_ft_nstored_nanalyzed_norms.setOmitNorms(false);
284+
} catch (Throwable t) {
285+
LOGGER.log(Level.SEVERE,
286+
"exception hit when constructing AnalyzerGuru static", t);
287+
throw t;
288+
}
284289
}
285290

286291
public static Map<String, FileAnalyzerFactory> getExtensionsMap() {

test/org/opensolaris/opengrok/analysis/AnalyzerGuruTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,13 @@
3030
import java.io.File;
3131
import java.io.IOException;
3232
import java.io.InputStream;
33+
import java.util.Map;
34+
import java.util.TreeMap;
3335
import java.util.jar.JarEntry;
3436
import java.util.jar.JarOutputStream;
3537
import java.util.zip.ZipEntry;
3638
import java.util.zip.ZipOutputStream;
39+
import org.junit.Assert;
3740
import org.junit.Test;
3841
import org.opensolaris.opengrok.analysis.archive.ZipAnalyzer;
3942
import org.opensolaris.opengrok.analysis.c.CxxAnalyzerFactory;
@@ -53,6 +56,12 @@
5356
* Tests for the functionality provided by the AnalyzerGuru class.
5457
*/
5558
public class AnalyzerGuruTest {
59+
@Test
60+
public void testGetFileTypeDescriptions() {
61+
Map<String,String> map = AnalyzerGuru.getfileTypeDescriptions();
62+
Assert.assertTrue(map.size() > 0);
63+
}
64+
5665
/**
5766
* Test that we get the correct analyzer if the file name exactly matches a
5867
* known extension.

0 commit comments

Comments
 (0)