Added Reflections library to LoggerSuggester

This commit is contained in:
Collin Smith
2020-08-28 00:16:26 -07:00
parent 8f2037a874
commit c12ea88b6e
2 changed files with 32 additions and 2 deletions

View File

@ -2,6 +2,14 @@ package com.riiablo.suggester;
import java.util.Set;
import java.util.SortedMap;
import org.apache.commons.collections4.Trie;
import org.apache.commons.collections4.trie.PatriciaTrie;
import org.apache.commons.lang3.ClassUtils;
import org.reflections.Reflections;
import org.reflections.scanners.SubTypesScanner;
import org.reflections.util.ClasspathHelper;
import org.reflections.util.ConfigurationBuilder;
import org.reflections.util.FilterBuilder;
import com.riiablo.console.Console;
import com.riiablo.console.ConsoleUtils;
@ -10,11 +18,29 @@ import com.riiablo.util.StringUtils;
public enum LoggerSuggester implements Console.SuggestionProvider {
INSTANCE;
// TODO: generate pre scanned metadata
// https://github.com/ronmamo/reflections/blob/gh-pages/UseCases.md#collect-pre-scanned-metadata
private static final Trie<String, String> riiabloClasspath;
static {
riiabloClasspath = new PatriciaTrie<>();
final String RIIABLO_PACKAGE = "com.riiablo";
ConfigurationBuilder reflectionsConfig = new ConfigurationBuilder()
.setUrls(ClasspathHelper.forPackage(RIIABLO_PACKAGE))
.setScanners(
new SubTypesScanner(false))
.filterInputsBy(new FilterBuilder().includePackage(RIIABLO_PACKAGE));
Reflections reflections = new Reflections(reflectionsConfig);
for (String str : reflections.getAllTypes()) {
str = org.apache.commons.lang3.StringUtils
.substringBefore(str, ClassUtils.INNER_CLASS_SEPARATOR);
riiabloClasspath.put(str, org.apache.commons.lang3.StringUtils.EMPTY);
}
}
@Override
public int suggest(Console console, CharSequence buffer, String[] args, int targetArg) {
if (true) return 0;
String arg = targetArg == args.length ? "" : args[targetArg];
SortedMap<String, ?> keys = null;//Riiablo.logs.prefixMap(arg);
SortedMap<String, ?> keys = riiabloClasspath.prefixMap(arg);
switch (keys.size()) {
case 0:
return 0;