void (BuildMessage buildMessage) { final CmdlineRemoteProto.Message.BuilderMessage response; if (buildMessage instanceof FileGeneratedEvent) { final Collection<Pair<String, String>> paths = ((FileGeneratedEvent)buildMessage).getPaths(); response = !paths.isEmpty() ? CmdlineProtoUtil.createFileGeneratedEvent(paths) : null; } else if (buildMessage instanceof DoneSomethingNotification) { doneSomething.set(true); response = null; } else if (buildMessage instanceof CompilerMessage) { doneSomething.set(true); final CompilerMessage compilerMessage = (CompilerMessage)buildMessage; final String compilerName = compilerMessage.getCompilerName(); final String text = !StringUtil.isEmptyOrSpaces(compilerName)? compilerName + ": " + compilerMessage.getMessageText() : compilerMessage.getMessageText(); final BuildMessage.Kind kind = compilerMessage.getKind(); if (kind == BuildMessage.Kind.ERROR) { hasErrors.set(true); } response = CmdlineProtoUtil.createCompileMessage( kind, text, compilerMessage.getSourcePath(), compilerMessage.getProblemBeginOffset(), compilerMessage.getProblemEndOffset(), compilerMessage.getProblemLocationOffset(), compilerMessage.getLine(), compilerMessage.getColumn(), -1.0f, compilerMessage.getModuleNames()); } else if (buildMessage instanceof CustomBuilderMessage) { CustomBuilderMessage builderMessage = (CustomBuilderMessage)buildMessage; response = CmdlineProtoUtil.createCustomBuilderMessage(builderMessage.getBuilderId(), builderMessage.getMessageType(), builderMessage.getMessageText()); } else if (buildMessage instanceof BuilderStatisticsMessage) { final BuilderStatisticsMessage message = (BuilderStatisticsMessage)buildMessage; final boolean worthReporting = message.getNumberOfProcessedSources() != 0 || message.getElapsedTimeMs() > 50; if (worthReporting) { LOG.info(message.getMessageText()); } //noinspection HardCodedStringLiteral response = worthReporting && REPORT_BUILD_STATISTICS ? CmdlineProtoUtil.createCompileMessage(BuildMessage.Kind.JPS_INFO, message.getMessageText(), null, -1, -1, -1, -1, -1, -1.0f, Collections.emptyList()) : null; } else if (!(buildMessage instanceof BuildingTargetProgressMessage)) { float done = -1.0f; if (buildMessage instanceof ProgressMessage) { done = ((ProgressMessage)buildMessage).getDone(); } //noinspection HardCodedStringLiteral response = CmdlineProtoUtil.createCompileProgressMessageResponse(buildMessage.getMessageText(), done); } else { response = null; } if (response != null) { myChannel.writeAndFlush(CmdlineProtoUtil.toMessage(mySessionId, response)); } }