/** * Loops over all {@link FileAnalyzer}s and returns an array of all supported file extensions. * @return */ public static synchronized String[] getSupportedFileExtensions() { if(supportedFileExtensions==null) { final Set<String> exts = new HashSet<String>(); final ServiceLoader<FileAnalyzer> loader = ServiceLoader.load(FileAnalyzer.class); for(FileAnalyzer l: loader) { final String[] ana_exts = l.getSupportedFileExtensions(); for(String ana_ext: ana_exts) { if(exts.contains(ana_ext)) log.warn("File extension [" + ana_ext + "] supported multiple times"); else exts.add(ana_ext); } } supportedFileExtensions = new String[exts.size()]; new ArrayList<String>(exts).toArray(supportedFileExtensions); } return supportedFileExtensions; }