RallyApi в Java - Попытка вернуть иерархию проекта для функции - PullRequest
0 голосов
/ 06 ноября 2018

Учитывая, что в эту функцию передан набор результатов Feature, я пытаюсь пройти вверх по иерархии проекта до подписки. Я не могу получить нулевой указатель на projResponse = ... Даже не уверен в подходе к этому.

private static void getProjHierarchyForFeature(RallyRestApi restApi, QueryResponse featureSet,
        Time2Market time2market, Integer featureInSet) {

    String tempHierarchy = "";

    JsonArray tempFeatures = featureSet.getResults();
    //time2market.setProjectName(projectName);

    try {
        JsonObject obj1 = tempFeatures.get(featureInSet).getAsJsonObject();
        JsonObject proj = obj1.get("Project").getAsJsonObject();
        String url = proj.get("_ref").getAsString();
        QueryRequest projQuery = new QueryRequest(url);
        projQuery.setFetch(new Fetch("_ref", "_refObjectUUID", "_refObjectName"));
        QueryResponse projResponse = restApi.query(projQuery);

        if (projResponse.wasSuccessful()) {
            JsonArray tempProj = projResponse.getResults();

            // Here we have the project object, now process Parents...

            Boolean moreParents = true;

            while (moreParents) {
                QueryRequest parentQuery = new QueryRequest(url);
                //projQuery.setFetch(new Fetch("_ref", "_refObjectUUID", "_refObjectName"));
                QueryResponse parentResponse = restApi.query(parentQuery);

                if (parentResponse.wasSuccessful()) {
                    System.out.println ("proj Response... " + parentResponse.toString());

                    JsonArray projParent = parentResponse.getResults();
                    tempHierarchy.concat(projParent.get(0).getAsString());
                    JsonArray tempParent = parentResponse.getResults();
                    proj = tempParent.getAsJsonObject();
                } else {
                    moreParents = false;
                }
            }
        } else {
            System.err.println("The following errors occurred: ");
            for (String err : projResponse.getErrors()) {
                System.err.println("\t" + err);
            }
            throw new java.lang.Error("Rally API Call Error Occurred");
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

}

1 Ответ

0 голосов
/ 07 ноября 2018

Вы, вероятно, хотите использовать GetRequest вместо QueryRequest, поскольку вы просто читаете один объект. Кроме того, включите Родителя в вашу выборку. Затем у вас должны быть данные, чтобы можно было определить, есть ли родитель, и продолжить цикл или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...