2013-08-22 32 views
0

我试着读讨论从用户故事通过拉力REST API讨论在用户故事

RallyRestApi restApi = new RallyRestApi(new URI(rallyURL), userName, userPassword); 
    restApi.setApplicationName("QueryExample"); 

    try 
    { 

     QueryRequest storyRequest = new QueryRequest("HierarchicalRequirement"); 
     storyRequest.setFetch(new Fetch("Name", "Owner", "UserName", "EmailAddress", "Discussion")); 
     storyRequest.setLimit(1000); 
     storyRequest.setScopedDown(false); 
     storyRequest.setScopedUp(false); 
     storyRequest.setWorkspace(workspaceRef); 
     storyRequest.setProject(projectRef); 
     storyRequest.setQueryFilter(new QueryFilter("FormattedID", "=", "US4")); 

     QueryResponse storyQueryResponse = restApi.query(storyRequest); 
     JsonObject storyJsonObject = storyQueryResponse.getResults().get(0).getAsJsonObject(); 

     System.out.println("Name: " + storyJsonObject.get("Name")); 
     JsonObject userObject = storyJsonObject.get("Owner").getAsJsonObject().getAsJsonObject(); 
     System.out.println(userObject.get("UserName")); 
     System.out.println(userObject.get("EmailAddress")); 
     System.out.println(userObject.get("Discussion")); 

    } 
    finally 
    { 
     //Release resources 
     restApi.close(); 
    } 

讨论为NULL。

如何通过REST API读取和编写用户故事讨论?

WBR,斯拉瓦

回答

0

只要你的故事,你可以遍历它在ConversationPost,这是讨论集合的元素文本属性如下:

int numberOfPosts = storyJsonObject.get("Discussion").getAsJsonArray().size(); 
      System.out.println(numberOfPosts); 
      if(numberOfPosts>0){ 
       for (int i=0;i<numberOfPosts;i++){ 
        System.out.println(storyJsonObject.get("Discussion").getAsJsonArray().get(i).getAsJsonObject().get("Text")); 
       } 
      } 

而且,这些场需要取:

storyRequest.setFetch(new Fetch("Name","Discussion","ConversationPost","Text")); 

这里是整个代码:

import com.google.gson.JsonObject; 
import com.rallydev.rest.RallyRestApi; 
import com.rallydev.rest.request.QueryRequest; 
import com.rallydev.rest.response.QueryResponse; 
import com.rallydev.rest.util.Fetch; 
import com.rallydev.rest.util.QueryFilter; 
import java.io.IOException; 
import java.net.URI; 
import java.net.URISyntaxException; 

public class aRESTstories { 

    public static void main(String[] args) throws URISyntaxException, IOException { 


      String host = "https://rally1.rallydev.com"; 
      String username = "[email protected]"; 
      String password = "1984"; 
     String workspaceRef = "/workspace/1111"; 
      String projectRef = "/project/2222";    

      String applicationName = "RESTExample: find story, print discussions"; 
      String wsapiVersion = "1.43"; 

     RallyRestApi restApi = new RallyRestApi(
       new URI(host), 
       username, 
       password); 
     restApi.setApplicationName(applicationName); 
     restApi.setWsapiVersion(wsapiVersion); 
     System.out.println(restApi.getWsapiVersion()); 

     try{ 
      QueryRequest storyRequest = new QueryRequest("HierarchicalRequirement"); 
      storyRequest.setFetch(new Fetch("Name","Owner","UserName","PlanEstimate","Discussion","ConversationPost","Text")); 
      storyRequest.setLimit(1000); 
      storyRequest.setScopedDown(false); 
      storyRequest.setScopedUp(false); 
      storyRequest.setWorkspace(workspaceRef); 
      storyRequest.setProject(projectRef); 
      storyRequest.setQueryFilter(new QueryFilter("FormattedID", "=", "US359")); 

      QueryResponse storyQueryResponse = restApi.query(storyRequest); 
      JsonObject storyJsonObject = storyQueryResponse.getResults().get(0).getAsJsonObject(); 
      String storyRef = storyJsonObject.get("_ref").toString(); 
      System.out.println("Name: " + storyJsonObject.get("Name")); 

      int numberOfPosts = storyJsonObject.get("Discussion").getAsJsonArray().size(); 
      System.out.println(numberOfPosts); 
      if(numberOfPosts>0){ 
       for (int i=0;i<numberOfPosts;i++){ 
        System.out.println(storyJsonObject.get("Discussion").getAsJsonArray().get(i).getAsJsonObject().get("Text")); 
       } 
      } 

     }catch(Exception e){ 
      System.out.println("Exception occurred...."); 
      e.printStackTrace(); 
     } 
     finally{ 
      restApi.close(); 
     } 
    } 
} 
+0

感谢您的帮助。但我有一个错误..我编辑你的答案 –

+0

@VyacheslavYanyuk不编辑帖子来报告他们的问题 - 添加问题作为评论,以便它可以在答案中解决! – codeling

+0

我没有看到编辑,并验证它正在工作。为了使它适合你,你需要纠正什么? – nickm