Результат PolicyDefinition возвращает пустую коллекцию с использованием Java SDK TFS 2015 "tp.getCheckinPolicies()" или "vcc.getCheckinPoliciesForServerPaths()"
Кто-нибудь пытался получить PolicyDefinition
используя Java SDK TFS 2015?
Я использовал следующий код для извлечения PolicyDefinition под плагином intelliJ. Код выполняется нормально, но я получаю пустую коллекцию PolicyDefinition. Я работаю над политикой CustomPath и знаю, что к конкретному командному проекту применяется политика customPath.
Прежде чем разрешить пользователю повторную регистрацию, я хочу проверить, применяется ли эта политика или нет.
Образец кода:
Project myProject = policyContext.getProject(); // PolicyContext is received from intelliJ and I got Project
// object opened in intelliJ
Workstation workstation = Workstation.getInstance(); // Workspace Info, it depeneds how many workspaces created
// to map TFS solution
Collection<WorkspaceInfo> workspaceInfos = workstation
.findWorkspacesCached(TfsFileUtil.getFilePath(myProject.getBaseDir()), false); // This will return the
// workspace info based
// on project path.
WorkspaceInfo workspaceInfo = workspaceInfos.iterator().next();
Collection<String> serverFolderPaths = workspaceInfo
.findServerPathsByLocalPath(VcsUtil.getFilePath(myProject.getBasePath()), false, myProject); // This
// will
// return$/TeamProjectCollection/TeamProject/ProjectFolder
ServerInfo serverInfo = workspaceInfo.getServer();
TfsSdkManager tfsSdkManager = TfsSdkManager.getInstance(); // intelliJ provide TfsSdkManager to get cached
// information about TFS, like credential
Credentials credentials = tfsSdkManager.getCredentials(serverInfo);
URI uri = new URI(serverInfo.getPresentableUri());
TFSTeamProjectCollection tpc = new TFSTeamProjectCollection(uri, credentials);
tpc.ensureAuthenticated();
VersionControlClient vcc;
vcc = forcePluginClassLoader(() -> tpc.getVersionControlClient()); // intelliJ has SOX issue if call is not
// wrapped using forcePluginClassLoader()
// method;
String teamProjectServerPath = "$/TeamProjectCollection"; // Tried to pass "$/TeamProjectCollection/TeamProject"
// as well but same result, getting emppty
//line: 15 // collection of PlicyDefinition
PolicyDefinition[] results = vcc.getCheckinPoliciesForServerPaths(new String[] { teamProjectServerPath });
String serverProjectPath = serverFolderPaths.iterator().next();
// Another way to get policy
Item item = vcc.getItem("$/TeamProjectCollection");
TeamProject tp = new TeamProject(item, vcc);
String projectName = tp.getName();
//line: 20
PolicyDefinition[] ps = tp.getCheckinPolicies();
for (PolicyDefinition pd : ps) {
int pi = pd.getPriority();
}
Строки 15 и 20 возвращают пустое определение Политики.
Кто-нибудь сталкивался с этой проблемой?