public void checkLocatorFullyProcessed()

in rest-api/src/jetbrains/buildServer/server/rest/data/Locator.java [506:573]


  public void checkLocatorFullyProcessed() {
    processHelpRequest();
    String reportKindString = TeamCityProperties.getProperty("rest.report.unused.locator", "error");
    if (!TeamCityProperties.getBooleanOrTrue("rest.report.locator.errors")) {
      reportKindString = "off";
    }
    if (reportKindString.equals("off")) {
      return;
    }
    if (reportKindString.contains("reportKnownButNotReportedDimensions")) {
      reportKnownButNotReportedDimensions();
    }
    final Set<String> unusedDimensions = getUnusedDimensions();
    if (unusedDimensions.isEmpty()) {
      return;
    }
    Set<String> ignoredDimensions = mySupportedDimensions == null ? Collections.emptySet() :
                                    CollectionsUtil.intersect(unusedDimensions, CollectionsUtil.join(Arrays.asList(mySupportedDimensions), myHiddenSupportedDimensions));
    Set<String> unknownDimensions = CollectionsUtil.minus(unusedDimensions, ignoredDimensions);
    StringBuilder message = new StringBuilder();
    if (unknownDimensions.isEmpty() && unusedDimensions.size() == myDimensions.size()) {
      //nothing is used
      message.append("Unsupported locator: no dimensions are used, try another combination of the dimensions.");
    } else if (unusedDimensions.size() > 1) {
      message.append("Locator dimensions ");
      if (!ignoredDimensions.isEmpty()) {
        message.append(ignoredDimensions).append(" ").append(ignoredDimensions.size() == 1 ? "is" : "are").append(" ignored");
      }
      if (!unknownDimensions.isEmpty()) {
        if (!ignoredDimensions.isEmpty()) {
          message.append(" and ");
        }
        message.append(unknownDimensions).append(" ").append(unknownDimensions.size() == 1 ? "is" : "are").append(" unknown");
      }
      message.append(".");
    } else if (unusedDimensions.size() == 1) {
      if (!unusedDimensions.contains(LOCATOR_SINGLE_VALUE_UNUSED_NAME)) {
        if (mySupportedDimensions != null) {
          message.append("Locator dimension ").append(unusedDimensions).append(" is ");
          if (!ignoredDimensions.isEmpty()) {
            message.append("known but was ignored during processing. Try omitting the dimension.");
          } else {
            message.append("unknown.");
          }
        } else {
          message.append("Locator dimension ").append(unusedDimensions).append(" is ignored or unknown.");
        }
      } else {
        message.append("Single value locator '").append(mySingleValue).append("' was ignored.");
      }
    }
    if (mySupportedDimensions != null && mySupportedDimensions.length > 0) {
      if (message.length() > 0) {
        message.append(" ");
      }
      message.append(getLocatorDescription(reportKindString.contains("includeHidden")));
    }
    if (reportKindString.contains("log")) {
      if (reportKindString.contains("log-warn")) {
        LOG.warn(message.toString());
      } else {
        LOG.debug(message.toString());
      }
    }
    if (reportKindString.contains("error")) {
      throw new LocatorProcessException(this, message.toString());
    }
  }