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;
}