# HG changeset patch # User Lukasz Dracz # Date 1435070789 14400 # Node ID 1695efcce99dab38d030f0fd5b7209663e88f638 # Parent e255ee1b2f903eb8fe02eb3f56c1b266a2900c77 Add TreeCompleter to complete logLevels Reviewed-by: aazores, omajid, jkang, jerboaa Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2015-September/016483.html Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2015-May/013657.html PR2646 diff -r e255ee1b2f90 -r 1695efcce99d common/core/src/main/java/com/redhat/thermostat/common/utils/LoggingUtils.java --- a/common/core/src/main/java/com/redhat/thermostat/common/utils/LoggingUtils.java Tue Sep 29 10:20:19 2015 +0200 +++ b/common/core/src/main/java/com/redhat/thermostat/common/utils/LoggingUtils.java Tue Jun 23 10:46:29 2015 -0400 @@ -62,14 +62,42 @@ private static final String JUL_CONFIG_PROP_FILE = "java.util.logging.config.file"; + public enum LogLevel { + /* + * Custom log level, intended for use with Thermostat's internal performance + * analysis framework. Log messages at this level should be formatted using + * {@link com.redhat.thermostat.shared.perflog.PerformanceLogFormatter}. + */ + PERFLOG(new Level("PERFLOG", 50) { + private static final long serialVersionUID = 1L; + }), + ALL(Level.ALL), + CONFIG(Level.CONFIG), + FINE(Level.FINE), + FINER(Level.FINER), + FINEST(Level.FINEST), + INFO(Level.INFO), + OFF(Level.OFF), + SEVERE(Level.SEVERE), + WARNING(Level.WARNING); + + private Level level; + + LogLevel(Level level) { + this.level = level; + } + + public Level getLevel() { + return level; + } + } + /* * Custom log level, intended for use with Thermostat's internal performance * analysis framework. Log messages at this level should be formatted using * {@link com.redhat.thermostat.shared.perflog.PerformanceLogFormatter}. */ - public static final Level PERFLOG = new Level("PERFLOG", 50) { - private static final long serialVersionUID = 1L; - }; + public static final Level PERFLOG = LogLevel.PERFLOG.getLevel(); // package private for testing static final String ROOTNAME = "com.redhat.thermostat"; diff -r e255ee1b2f90 -r 1695efcce99d launcher/src/main/java/com/redhat/thermostat/launcher/internal/ShellCommand.java --- a/launcher/src/main/java/com/redhat/thermostat/launcher/internal/ShellCommand.java Tue Sep 29 10:20:19 2015 +0200 +++ b/launcher/src/main/java/com/redhat/thermostat/launcher/internal/ShellCommand.java Tue Jun 23 10:46:29 2015 -0400 @@ -37,17 +37,14 @@ package com.redhat.thermostat.launcher.internal; import java.io.IOException; -import java.util.ArrayList; import java.util.Arrays; import java.util.Map; -import java.util.Collection; import java.util.logging.Level; import java.util.logging.Logger; import jline.Terminal; import jline.TerminalFactory; import jline.console.ConsoleReader; -import jline.console.completer.FileNameCompleter; import jline.console.history.FileHistory; import jline.console.history.History; import jline.console.history.PersistentHistory; @@ -68,11 +65,6 @@ import com.redhat.thermostat.shared.config.InvalidConfigurationException; import com.redhat.thermostat.shared.locale.Translate; import com.redhat.thermostat.storage.core.DbService; -import jline.console.completer.AggregateCompleter; -import jline.console.completer.ArgumentCompleter; -import jline.console.completer.Completer; -import jline.console.completer.StringsCompleter; -import org.apache.commons.cli.Option; public class ShellCommand extends AbstractCommand { @@ -163,7 +155,7 @@ private void shellMainLoop(CommandContext ctx, History history, Terminal term) throws IOException, CommandException { ConsoleReader reader = new ConsoleReader(ctx.getConsole().getInput(), ctx.getConsole().getOutput(), term); if (reader.getCompleters().isEmpty() && commandInfoSource != null) { - setupTabCompletion(reader); + TabCompletion.setupTabCompletion(reader, commandInfoSource); } if (history != null) { reader.setHistory(history); @@ -242,38 +234,5 @@ this.commandInfoSource = source; } - private void setupTabCompletion(ConsoleReader reader) { - Collection commands = new ArrayList<>(); - Collection options = new ArrayList<>(); - Collection completers = new ArrayList<>(); - for (CommandInfo info : commandInfoSource.getCommandInfos()) { - - if (info.getEnvironments().contains(Environment.SHELL)) { - commands.clear(); - options.clear(); - commands.add(new StringsCompleter(info.getName())); - for (Option option : (Collection