@Override public void run() { BufferedReader in = null; PrintWriter out = null; try { in = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8")); OutputStream outputStream = socket.getOutputStream(); out = new PrintWriter(outputStream); String line = in.readLine(); CommandRequest request = CommandRequest.parse(line); out.print("HTTP/1.1 200 OK\r\n\r\n"); out.flush(); if (StringUtils.isEmpty(request.getCommand())) { out.println("Command is blank"); out.flush(); return; } CommandProcessor commandProcessor = getCommandProcessor(request.getCommand()); if (commandProcessor != null) { commandProcessor.execute(outputStream, request); } else { out.println("Can not find the command:[" + request.getCommand() + "]"); } out.flush(); } catch (Throwable t) { LOGGER.error("EventRunnable error", t); try { if (out != null) { out.println("CommandCenter error, message is " + t.getMessage()); out.flush(); } } catch (Exception e) { LOGGER.error("EventRunnable error", t); } } finally { try { if (out != null) { out.close(); } if (in != null) { in.close(); } socket.close(); } catch (Exception e) { LOGGER.error("EventRunnable close resource error", e); } } }
public void execute() { boolean continueExecution = true; while (continueExecution) { this.console.prompt("contacts> "); String commandLine = this.console.readLine(); if (commandLine.trim().isEmpty()) { continue; } try { CommandContext context = createCommandContext(commandLine); CommandProcessor processor = ShellUtil.createProcessor(context.commandName()); processor.setConsole(this.console); processor.setRepository(this.repository); processor.setContentManager(this.manager); if (processor.canExecute(context)) { continueExecution = processor.execute(context); } } catch (ParseException e) { this.console.error("ERROR: Could not process command (%s)%n", e.getMessage()); } } }