BuildSession( UUID sessionId, Channel channel, CmdlineRemoteProto.Message.ControllerMessage.ParametersMessage params, @Nullable CmdlineRemoteProto.Message.ControllerMessage.FSEvent delta) { mySessionId = sessionId; myChannel = channel; // globals Map<String, String> pathVars = new HashMap<String, String>(); final CmdlineRemoteProto.Message.ControllerMessage.GlobalSettings globals = params.getGlobalSettings(); for (CmdlineRemoteProto.Message.KeyValuePair variable : globals.getPathVariableList()) { pathVars.put(variable.getKey(), variable.getValue()); } // session params myProjectPath = FileUtil.toCanonicalPath(params.getProjectId()); String globalOptionsPath = FileUtil.toCanonicalPath(globals.getGlobalOptionsPath()); myBuildType = convertCompileType(params.getBuildType()); List<CmdlineRemoteProto.Message.ControllerMessage.ParametersMessage.TargetTypeBuildScope> scopes = params.getScopeList(); List<String> filePaths = params.getFilePathList(); Map<String, String> builderParams = new HashMap<String, String>(); for (CmdlineRemoteProto.Message.KeyValuePair pair : params.getBuilderParameterList()) { builderParams.put(pair.getKey(), pair.getValue()); } myInitialFSDelta = delta; JpsModelLoaderImpl loader = new JpsModelLoaderImpl(myProjectPath, globalOptionsPath, pathVars, null); myBuildRunner = new BuildRunner(loader, scopes, filePaths, builderParams); }