public String create()

in dotTrace-agent/src/main/java/jetbrains/buildServer/dotTrace/agent/ProjectGenerator.java [69:138]


  public String create(@NotNull final Context ctx) {
    final Document doc = myDocumentManager.createDocument();
    final Element rootElement = doc.createElement(ROOT_ELEMENT);

    final Element hostParametersElement = doc.createElement(HOST_PARAMETERS_ELEMENT);
    hostParametersElement.setAttribute(TYPE_ATTR, TYPE_LOCAL_HOST_PARAMETERS);
    rootElement.appendChild(hostParametersElement);

    final Element argumentElement = doc.createElement(ARGUMENT_ELEMENT);
    argumentElement.setAttribute(TYPE_ATTR, TYPE_STANDALONE_ARGUMENT);
    argumentElement.appendChild(createSimpleElement(doc, ARGUMENTS_ELEMENT, myCommandLineArgumentsService.createCommandLineString(ctx.getBaseSetup().getArgs())));
    argumentElement.appendChild(createSimpleElement(doc, FILE_NAME_ELEMENT, ctx.getBaseSetup().getToolPath()));

    final String profileChildProcessesStr = myParametersService.tryGetRunnerParameter(Constants.PROFILE_CHILD_PROCESSES_VAR);
    final boolean profileChildProcesses = StringUtil.isEmptyOrSpaces(profileChildProcessesStr) || Boolean.parseBoolean(profileChildProcessesStr);

    argumentElement.appendChild(createSimpleElement(doc, PROFILE_CHILD_PROCESSES_ELEMENT, profileChildProcesses ? TRUE_VAL : FALSE_VAL));
    argumentElement.appendChild(createSimpleElement(doc, WORKING_DIRECTORY_ELEMENT, myFileService.getCheckoutDirectory().getPath()));
    rootElement.appendChild(argumentElement);

    final Element argumentScopeElement = doc.createElement(SCOPE_ELEMENT);
    final Element processFiltersElement = doc.createElement(PROCESS_FILTERS_ELEMENT);
    final String processFiltersStr = myParametersService.tryGetRunnerParameter(Constants.PROCESS_FILTERS_VAR);
    if(!StringUtil.isEmptyOrSpaces(processFiltersStr)) {
      final List<ProcessFilter> filters = myProcessFiltersParser.parse(processFiltersStr);
      if(filters.size() > 0) {
        processFiltersElement.appendChild(createSimpleElement(doc, ITEM_ELEMENT, ""));
        for (ProcessFilter filter : filters) {
          final Element itemElement = doc.createElement(ITEM_ELEMENT);
          itemElement.appendChild(createSimpleElement(doc, PROCESS_NAME_FILTER_ELEMENT, filter.getMask()));
          itemElement.appendChild(createSimpleElement(doc, TYPE_ELEMENT, DENY_PROCESS_FILTER_VAL));
          processFiltersElement.appendChild(itemElement);
        }
      }
    }

    argumentScopeElement.appendChild(processFiltersElement);
    argumentElement.appendChild(argumentScopeElement);

    final Element infoElement = doc.createElement(INFO_ELEMENT);
    infoElement.setAttribute(TYPE_ATTR, TYPE_PERFORMANCE_INFO);
    final String measureTypeStr = myParametersService.tryGetRunnerParameter(Constants.MEASURE_TYPE_VAR);
    MeasureType curMeasureType = MeasureType.SAMPLING;
    for(MeasureType measureType: MeasureType.values()) {
      if(measureType.getValue().equalsIgnoreCase(measureTypeStr)) {
        curMeasureType = measureType;
        break;
      }
    }

    if(!StringUtil.isEmptyOrSpaces(curMeasureType.getId())) {
      infoElement.appendChild(createSimpleElement(doc, MEASURE_TYPE_ELEMENT, curMeasureType.getId()));
    }

    infoElement.appendChild(createSimpleElement(doc, METER_KIND_ELEMENT, METER_KIND_RDTSC));

    final Element injectInfoElement = doc.createElement(INJECT_INFO_ELEMENT);
    final Element symbolSearchElement = doc.createElement(SYMBOL_SEARCH_ELEMENT);
    symbolSearchElement.appendChild(createSimpleElement(doc, SEARCH_PATHS_ELEMENT, ""));
    injectInfoElement.appendChild(symbolSearchElement);
    final Element injectInfoScopeElement = doc.createElement(SCOPE_ELEMENT);
    injectInfoScopeElement.appendChild(createSimpleElement(doc, PATTERN_FILTERS_ELEMENT, ""));
    injectInfoScopeElement.appendChild(createSimpleElement(doc, DENY_ATTRIBUTE_FILTERS_ELEMENT, ""));
    injectInfoElement.appendChild(injectInfoScopeElement);
    infoElement.appendChild(injectInfoElement);
    rootElement.appendChild(infoElement);

    doc.appendChild(rootElement);
    return myDocumentManager.convertDocumentToString(doc, outDocumentProperties);
  }