mirror of
https://github.com/collinsmith/riiablo.git
synced 2025-07-31 15:09:21 +07:00
Added Reflections library to LoggerSuggester
This commit is contained in:
@ -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;
|
||||
|
Reference in New Issue
Block a user