/** * A {@link TextTerminal} implemented using {@link System#out}, {@link System#in} and {@link Scanner}. * It is not capable to mask input strings, therefore not recommended when reading sensitive data. */ @PropertiesPrefixes({"system"}) public class SystemTextTerminal extends AbstractTextTerminal<SystemTextTerminal> { private final Scanner scanner = new Scanner(System.in); private final PrintStream out = System.out; @Override public String read(boolean masking) { return scanner.nextLine(); } @Override public void rawPrint(String message) { out.print(message); out.flush(); } @Override public void println() { out.println(); out.flush(); } }
@PropertiesPrefixes({"console"}) public class ConsoleTextTerminal extends AbstractTextTerminal<ConsoleTextTerminal> { private final Console console;
@PropertiesPrefixes({"mock"}) public class MockTextTerminal extends AbstractTextTerminal<MockTextTerminal> { public static final int DEFAULT_MAX_READS = 100;
@PropertiesPrefixes({"textio"}) public abstract class AbstractTextTerminal<T extends AbstractTextTerminal<T>> implements TextTerminal<T> { private static final Logger logger = LoggerFactory.getLogger(AbstractTextTerminal.class);
@PropertiesPrefixes({"jline"}) public class JLineTextTerminal extends AbstractTextTerminal<JLineTextTerminal> { private static final Logger logger = LoggerFactory.getLogger(JLineTextTerminal.class);
@PropertiesPrefixes({"web"}) public class WebTextTerminal extends AbstractTextTerminal<WebTextTerminal> implements DataApi { private static final Logger logger = LoggerFactory.getLogger(WebTextTerminal.class);
@PropertiesPrefixes({"swing"}) public class SwingTextTerminal extends AbstractTextTerminal<SwingTextTerminal> { private static final Logger logger = LoggerFactory.getLogger(SwingTextTerminal.class);