in src/org/jetbrains/tfsIntegration/core/tfs/VersionControlServer.java [517:586]
public ExtendedItemsAndPendingChanges getExtendedItemsAndPendingChanges(final String workspaceName,
final String ownerName,
List<ItemSpec> itemsSpecs,
final ItemType itemType,
Object projectOrComponent, String progressTitle)
throws TfsException {
OperationOnCollection<ItemSpec, ExtendedItemsAndPendingChanges> operation =
new OperationOnCollection<ItemSpec, ExtendedItemsAndPendingChanges>() {
@Override
public ExtendedItemsAndPendingChanges execute(Collection<ItemSpec> items,
Credentials credentials,
ProgressIndicator pi)
throws RemoteException, HostNotApplicableException {
final ArrayOfItemSpec arrayOfItemSpec = new ArrayOfItemSpec();
arrayOfItemSpec.setItemSpec(items.toArray(new ItemSpec[0]));
QueryItemsExtended param = new QueryItemsExtended();
param.setWorkspaceName(workspaceName);
param.setWorkspaceOwner(ownerName);
param.setItems(arrayOfItemSpec);
param.setDeletedState(DeletedState.NonDeleted);
param.setItemType(itemType);
ArrayOfExtendedItem[] extendedItemsArray =
myBeans.getRepositoryStub(credentials, pi).queryItemsExtended(param).getQueryItemsExtendedResult().getArrayOfExtendedItem();
TFSVcs.assertTrue(extendedItemsArray != null && extendedItemsArray.length == items.size());
List<ExtendedItem> extendedItems = new ArrayList<>();
//noinspection ConstantConditions
for (ArrayOfExtendedItem extendedItem : extendedItemsArray) {
if (extendedItem.getExtendedItem() != null) {
// no need to chooseExtendedItem() since DeletedState.NonDeleted specified
ContainerUtil.addAll(extendedItems, extendedItem.getExtendedItem());
}
}
QueryPendingSets param2 = new QueryPendingSets();
param2.setLocalWorkspaceName(workspaceName);
param2.setLocalWorkspaceOwner(ownerName);
param2.setQueryWorkspaceName(workspaceName);
param2.setOwnerName(ownerName);
param2.setItemSpecs(arrayOfItemSpec);
param2.setGenerateDownloadUrls(false);
final PendingSet[] pendingSets =
myBeans.getRepositoryStub(credentials, pi).queryPendingSets(param2).getQueryPendingSetsResult().getPendingSet();
final Collection<PendingChange> pendingChanges;
if (pendingSets != null) {
TFSVcs.assertTrue(pendingSets.length == 1);
pendingChanges = Arrays.asList(pendingSets[0].getPendingChanges().getPendingChange());
}
else {
pendingChanges = Collections.emptyList();
}
return new ExtendedItemsAndPendingChanges(pendingChanges, extendedItems);
}
@Override
public ExtendedItemsAndPendingChanges merge(Collection<ExtendedItemsAndPendingChanges> results) {
List<ExtendedItem> mergedItems = new ArrayList<>();
List<PendingChange> mergedPendingChanges = new ArrayList<>();
for (ExtendedItemsAndPendingChanges r : results) {
mergedItems.addAll(r.extendedItems);
mergedPendingChanges.addAll(r.pendingChanges);
}
return new ExtendedItemsAndPendingChanges(mergedPendingChanges, mergedItems);
}
};
return execute(operation, projectOrComponent, itemsSpecs, progressTitle);
}