public ConsoleSessionImpl()

in shell/core/src/main/java/org/apache/karaf/shell/impl/console/ConsoleSessionImpl.java [107:234]


    public ConsoleSessionImpl(SessionFactory factory,
                              CommandProcessor processor,
                              ThreadIO threadIO,
                              InputStream in,
                              PrintStream out,
                              PrintStream err,
                              Terminal term,
                              String encoding,
                              Runnable closeCallback) {
        // Arguments
        this.factory = factory;
        this.threadIO = threadIO;
        this.in = in;
        this.out = out;
        this.err = err;
        this.closeCallback = closeCallback;

        // Terminal
        if (term instanceof org.jline.terminal.Terminal) {
            terminal = term;
            jlineTerminal = (org.jline.terminal.Terminal) term;
        } else if (term != null) {
            terminal = term;
//            jlineTerminal = new KarafTerminal(term);
            // TODO:JLINE
            throw new UnsupportedOperationException();
        } else {
            try {
                jlineTerminal = new DumbTerminal(in, out);
                terminal = new JLineTerminal(jlineTerminal);
            } catch (IOException e) {
                throw new RuntimeException("Unable to create terminal", e);
            }
        }

        if (jlineTerminal.getSize().getColumns() == 0) {
            jlineTerminal.setSize(new Size(80, 24));
        }

        brandingProps = Branding.loadBrandingProperties(terminal.getClass().getName().endsWith("SshTerminal"));

        // Create session
        if (in == null || out == null || err == null) {
            session = processor.createSession(((org.jline.terminal.Terminal) terminal).input(),
                    ((org.jline.terminal.Terminal) terminal).output(),
                    ((org.jline.terminal.Terminal) terminal).output());
        } else {
            session = processor.createSession(in, out, err);
        }

        // Completers
        Completer builtinCompleter = createBuiltinCompleter();
        CommandsCompleter commandsCompleter = new CommandsCompleter(factory, this);
        Completer completer = (rdr, line, candidates) -> {
            builtinCompleter.complete(rdr, line, candidates);
            commandsCompleter.complete(rdr, line, candidates);
            merge(candidates);
        };

        // Masking
        maskingCallback = new AggregateMaskingCallback();

        // Console reader
        reader = LineReaderBuilder.builder()
                .terminal(jlineTerminal)
                .appName("karaf")
                .variables(((CommandSessionImpl) session).getVariables())
                .highlighter(new org.apache.felix.gogo.jline.Highlighter(session))
                .parser(new KarafParser(this))
                .completer(completer)
                .build();

        // History
        final Path file = getHistoryFile();
        reader.setVariable(LineReader.HISTORY_FILE, file);
        String maxSizeStr = System.getProperty(SHELL_HISTORY_MAXSIZE);
        if (maxSizeStr != null) {
            reader.setVariable(LineReader.HISTORY_SIZE, Integer.parseInt(maxSizeStr));
        }
        String maxFileSizeStr = System.getProperty(SHELL_HISTORY_FILE_MAXSIZE);
        if (maxFileSizeStr != null) {
            reader.setVariable(LineReader.HISTORY_FILE_SIZE, Integer.parseInt(maxFileSizeStr));
        }
        history = new HistoryWrapper(reader.getHistory());

        // Registry
        registry = new RegistryImpl(factory.getRegistry(), this);
        registry.register(factory);
        registry.register(this);
        registry.register(registry);
        registry.register(terminal);
        registry.register(history);

        registry.register(commandsCompleter);
        registry.register(new CommandNamesCompleter());
        registry.register(new FileCompleter());
        registry.register(new UriCompleter());
        registry.register(new FileOrUriCompleter());

        // Session
        Properties sysProps = System.getProperties();
        for (Object key : sysProps.keySet()) {
            session.put(key.toString(), sysProps.get(key));
        }
        session.put(".session", this);
        session.put(".processor", processor);
        session.put(".commandSession", session);
        session.put(".jline.reader", reader);
        session.put(".jline.terminal", reader.getTerminal());
        session.put(".jline.history", reader.getHistory());
        session.put(Session.SCOPE, "shell:bundle:*");
        session.put(Session.SUBSHELL, "");
        session.put(Session.COMPLETION_MODE, loadCompletionMode());
        session.put(Session.DISABLE_EOF_EXIT, loadDisableEofExit());
        session.put("USER", ShellUtil.getCurrentUserName());
        session.put("TERM", terminal.getType());
        session.put("APPLICATION", System.getProperty("karaf.name", "root"));
        session.put("#LINES", (Function) (session, arguments) -> Integer.toString(terminal.getHeight()));
        session.put("#COLUMNS", (Function) (session, arguments) -> Integer.toString(terminal.getWidth()));
        session.put("pid", getPid());
        session.put(Shell.VAR_COMPLETIONS, new HashMap<>());
        session.put(Shell.VAR_READER, reader);
        session.put(Shell.VAR_TERMINAL, reader.getTerminal());
        session.put(CommandSession.OPTION_NO_GLOB, Boolean.TRUE);
        session.currentDir(Paths.get(System.getProperty("user.dir")).toAbsolutePath().normalize());


    }