Результат 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 возвращают пустое определение политики.

Кто-нибудь сталкивался с этой проблемой?


person Subodh    schedule 15.12.2017    source источник
comment
Как настроить политику регистрации? Предоставьте подробные шаги здесь.   -  person starian chen-MSFT    schedule 18.12.2017
comment
Я настраиваю политику в eclipse (везде Team Explorer), и код в IntelliJ IDEA работает нормально.   -  person starian chen-MSFT    schedule 18.12.2017
comment
Мой диспетчер конфигураций настроил политики регистрации с помощью Visual Studio. Мы применяем настраиваемые политики пути. Я не уверен, хранит ли Visual Studio политики Visual Studio и политики Team Explorer Everywhere отдельно. Но когда я отлаживаю плагин intelliJ, я нажимаю точки отладки, которые создают впечатление, что подключения работают. Но в плагине я пытаюсь получить все политики, как указано в коде выше. Я получаю пустую коллекцию. Строка 15 в моем примере выше должна вернуть мне collection. Но в моем случае этого не происходит.   -  person Subodh    schedule 29.01.2018
comment
Они отдельно. Что вы имеете в виду, что подключения работают? Как это работает?   -  person starian chen-MSFT    schedule 30.01.2018
comment
Когда я говорю, что подключения работают, это означает, что IntelliJ правильно ищет код определения политики и вызывает соответствующий метод. Внутри этого метода я создаю соединение TFS и пытаюсь получить определение политики, чтобы подтвердить, применяется ли оно в папке, где пользователь выполняет регистрацию. Поскольку определение политики возвращает пустое значение, я не могу определить, определена ли политика или нет, или если да тогда какой. Как вы упомянули, что они разделены. Что ты имеешь в виду?   -  person Subodh    schedule 02.02.2018
comment
Добавление политики проверки через Visual Studio не повлияет на политику в intellij или eclipse (везде работает Team Explorer).   -  person starian chen-MSFT    schedule 02.02.2018
comment
Я также заметил, что когда я редактирую файл из веб-интерфейса TFS, он не заботится о политике включения, применяемой к этому пути. Но когда я делаю то же самое с помощью Visual Studio, он работает и через ошибку, если он не удовлетворен. У вас есть пример, если я могу сделать это с помощью вызова SOAP? Не будем двигаться дальше с TFS Java SDK, а также с REST API. Было бы здорово, если бы вы указали мне пример, который работает с использованием вызовов SOAP.   -  person Subodh    schedule 09.02.2018