public void evaluatePolicies()

in src/org/jetbrains/tfsIntegration/checkin/CheckinParameters.java [285:348]


  public void evaluatePolicies(ProgressIndicator pi) {
    for (final Map.Entry<ServerInfo, ServerData> entry : myData.entrySet()) {
      PolicyContext context = createPolicyContext(entry.getKey());

      List<PolicyFailure> allFailures = new ArrayList<>();
      for (Map.Entry<String, TeamProjectData> teamProjectDataEntry : entry.getValue().myPolicies.entrySet()) {
        for (PolicyDescriptor descriptor : teamProjectDataEntry.getValue().myPolicies) {
          PolicyBase policy;
          try {
            policy = CheckinPoliciesManager.find(descriptor.getType());
          }
          catch (DuplicatePolicyIdException e) {
            final String tooltip = MessageFormat
              .format("Several checkin policies with the same id found: ''{0}''.\nPlease review your extensions.", e.getDuplicateId());
            allFailures.add(new PolicyFailure(CheckinPoliciesManager.DUMMY_POLICY, "Duplicate checkin policy id", tooltip));
            break;
          }

          if (policy == null) {
            if (teamProjectDataEntry.getValue().myCompatibility.nonInstalled) {
              allFailures.add(new NotInstalledPolicyFailure(descriptor.getType(), !(descriptor instanceof StatefulPolicyDescriptor)));
            }
            continue;
          }

          pi.setText(MessageFormat.format("Evaluating checkin policy: {0}", policy.getPolicyType().getName()));
          pi.setText2("");
          if (descriptor instanceof StatefulPolicyDescriptor) {
            try {
              policy.loadState((Element)((StatefulPolicyDescriptor)descriptor).getConfiguration().clone());
            }
            catch (ProcessCanceledException e) {
              throw e;
            }
            catch (RuntimeException e) {
              TFSVcs.LOG.warn(e);
              String message =
                MessageFormat.format("Cannot load configuration of checkin policy ''{0}''", policy.getPolicyType().getName());
              String tooltip = MessageFormat.format("The following error occured while loading: {0}", e.getMessage());
              allFailures.add(new PolicyFailure(CheckinPoliciesManager.DUMMY_POLICY, message, tooltip));
              continue;
            }
          }

          try {
            final PolicyFailure[] failures = policy.evaluate(context, pi);
            ContainerUtil.addAll(allFailures, failures);
          }
          catch (ProcessCanceledException e) {
            throw e;
          }
          catch (RuntimeException e) {
            TFSVcs.LOG.warn(e);
            String message = MessageFormat.format("Cannot evaluate checkin policy ''{0}''", policy.getPolicyType().getName());
            String tooltip = MessageFormat.format("The following error occured while evaluating: {0}", e.getMessage());
            allFailures.add(new PolicyFailure(CheckinPoliciesManager.DUMMY_POLICY, message, tooltip));
          }
          pi.checkCanceled();
        }
      }
      entry.getValue().myPolicyFailures = allFailures;
    }
    myPoliciesEvaluated = true;
  }