public ResultWithFailures checkIn()

in src/org/jetbrains/tfsIntegration/core/tfs/VersionControlServer.java [1170:1249]


  public ResultWithFailures<CheckinResult> checkIn(final String workspaceName,
                                                   final String workspaceOwnerName,
                                                   Collection<String> serverItems,
                                                   final String comment,
                                                   final @NotNull Map<WorkItem, CheckinWorkItemAction> workItemsActions,
                                                   final List<Pair<String, String>> checkinNotes,
                                                   final @Nullable Pair<String/*comment*/, Map<String/*policyName*/, String/*policyMessage*/>> policyOverride,
                                                   Object projectOrComponent, String progressTitle)
    throws TfsException {
    final ArrayOfCheckinNoteFieldValue fieldValues = new ArrayOfCheckinNoteFieldValue();
    for (Pair<String, String> checkinNote : checkinNotes) {
      final CheckinNoteFieldValue fieldValue = new CheckinNoteFieldValue();
      fieldValue.setName(checkinNote.first);
      fieldValue.setVal(checkinNote.second);
      fieldValues.addCheckinNoteFieldValue(fieldValue);
    }

    final CheckinNote checkinNote = new CheckinNote();
    checkinNote.setValues(fieldValues);

    final PolicyOverrideInfo policyOverrideInfo = new PolicyOverrideInfo();
    if (policyOverride != null) {
      policyOverrideInfo.setComment(policyOverride.first);

      ArrayOfPolicyFailureInfo policyFailures = new ArrayOfPolicyFailureInfo();
      for (Map.Entry<String, String> entry : policyOverride.second.entrySet()) {
        PolicyFailureInfo policyFailureInfo = new PolicyFailureInfo();
        policyFailureInfo.setPolicyName(entry.getKey());
        policyFailureInfo.setMessage(entry.getValue());
        policyFailures.addPolicyFailureInfo(policyFailureInfo);
      }
      policyOverrideInfo.setPolicyFailures(policyFailures);
    }

    final Changeset changeset = new Changeset();
    changeset.setCset(0);
    changeset.setDate(TfsUtil.getZeroCalendar());
    changeset.setOwner(workspaceOwnerName);
    changeset.setComment(comment);
    changeset.setCheckinNote(checkinNote);
    changeset.setPolicyOverride(policyOverrideInfo);

    final CheckinNotificationInfo checkinNotificationInfo = new CheckinNotificationInfo();
    checkinNotificationInfo.setWorkItemInfo(toArrayOfCheckinNotificationWorkItemInfo(workItemsActions));
    final CheckinOptions checkinOptions = new CheckinOptions();
    checkinOptions.setCheckinOptions_type0(new CheckinOptions_type0[]{CheckinOptions_type0.ValidateCheckinOwner}); // TODO checkin options

    OperationOnCollection<String, ResultWithFailures<CheckinResult>> operation =
      new OperationOnCollection<String, ResultWithFailures<CheckinResult>>() {
        @Override
        public ResultWithFailures<CheckinResult> execute(Collection<String> items, Credentials credentials, ProgressIndicator pi)
          throws RemoteException, HostNotApplicableException {
          CheckIn param = new CheckIn();
          param.setWorkspaceName(workspaceName);
          param.setOwnerName(workspaceOwnerName);
          param.setServerItems(TfsUtil.toArrayOfString(items));
          param.setInfo(changeset);
          param.setCheckinNotificationInfo(checkinNotificationInfo);
          param.setCheckinOptions(checkinOptions);
          CheckInResponse response = myBeans.getRepositoryStub(credentials, pi).checkIn(param);

          ResultWithFailures<CheckinResult> result = new ResultWithFailures<>();
          if (response.getCheckInResult() != null) {
            result.getResult().add(response.getCheckInResult());
          }

          if (response.getFailures().getFailure() != null) {
            ContainerUtil.addAll(result.getFailures(), response.getFailures().getFailure());
          }
          return result;
        }

        @Override
        public ResultWithFailures<CheckinResult> merge(Collection<ResultWithFailures<CheckinResult>> results) {
          return ResultWithFailures.merge(results);
        }
      };

    return execute(operation, projectOrComponent, serverItems, progressTitle);
  }