2016-07-07 10 views
2

ラリー環境でいくつかのものを自動化しようとしています。数日前のちょうど前に、いくつかのチェンジセットについての情報のためにRallyと有効な残りの交換をしようとすると修正できないようなこの問題があります。これはTomcatを使用して実行され、私たちが持っている別のサーバーから単にリッスンします。ここでラリーチェンジセット要求がnullを返す

は、コードといくつかのログの一部です:

これが実行されると、これらのロガーは以下を返します。ここでは

INFO - Result: <200 

OK,[email protected]c,{Date=[Thu, 07 Jul 2016 22:08:41 GMT], Content-Type=[application/json; charset=utf-8], Transfer-Encoding=[chunked], Connection=[keep-alive], Set-Cookie=[__cfduid=dc0b3ebf63634c86250efdedf10fd4ead1467929321; expires=Fri, 07-Jul-17 22:08:41 GMT; path=/; domain=.rallydev.com; HttpOnly, JSESSIONID=qs-app-111wgnt86c424tz1hwu48m187shg.qs-app-11;Path=/;Secure;HttpOnly, ZSESSIONID=CONFIDENTIAL;Path=/;Domain=rally1.rallydev.com;Secure;HttpOnly, SUBBUCKETID=0;Path=/;Domain=rally1.rallydev.com;Secure;HttpOnly, SERVERID=CONFIDENTIAL; path=/], Strict-Transport-Security=[max-age=31536000 ; includeSubDomains], X-XSS-Protection=[1; mode=block], RallyRequestID=[qs-app-111wgnt86c424tz1hwu48m187shg.qs-app-1128098501], Expires=[Thu, 01 Jan 1970 00:00:00 GMT], ETag=[W/"028b6add6cf4389520d5bdb5163a9a21c"], Vary=[Accept-Encoding], P3P=[CP="NON DSP COR CURa PSAa PSDa OUR NOR BUS PUR COM NAV STA"], Cache-Control=[private,max-age=0,must-revalidate], Server=[cloudflare-nginx], CF-RAY=[2bee9dd3697809b2-ORD]}> 
    2016-07-07 17:08:41,361 RestCallHelper      
    INFO - Result body:[email protected]c 

は、要求とどのように私はそれを持っているための構造であり、 set up ... Springは、これらの値のすべてを自動集計する必要があります。

QueryResultWrapper 
--> QueryResult 
    --> Results[] 
     --> Changes 
      -->_ref 

これは、それはそれは私がブラウザにコピーし、過去、GET要求を行ったと言う実行すると、次のように有効なJSONが含まれています

{"QueryResult": {"_rallyAPIMajor": "2", "_rallyAPIMinor": "0", "Errors": [], "Warnings": [], "TotalResultCount": 1, "StartIndex": 1, "PageSize": 20, "Results": [{"_rallyAPIMajor": "2", "_rallyAPIMinor": "0", "_ref": "STUFF IS IN HERE", "_refObjectUUID": "9b96f131-f7a3-4615-b699-f793677836ba", "_objectVersion": "2", "_refObjectName": "Automate-web:057c595a52d0b39233bc4796d69cb09fb329d007", "CreationDate": "2016-07-07T18:45:31.240Z", "_CreatedAt": "today at 1:45 pm", "ObjectID": 58917491560, "ObjectUUID": "9b96f131-f7a3-4615-b699-f793677836ba", "VersionId": "2", "Subscription": {STUFF IS IN HERE}, "Workspace": {STUFF IS IN HERE }, "Artifacts": {STUFF IS IN HERE}, "Author": {STUFF IS IN HERE}, "Branch": null, "Builds": {STUFF IS IN HERE}, "Changes": {STUFF IS IN HERE}, "CommitTimestamp": "2016-07-07T18:44:16.000Z", "Message": "DE3333. Check for an agent on the agent lookup.", "Name": "CONFIDENTIAL", "Revision": "057c595a52d0b39233bc4796d69cb09fb329d007", "SCMRepository": {STUFF IS IN HERE}, "Uri": "STUFF IS IN HERE", "_type": "Changeset"}]}} 

は今、なぜQueryResultリターンはありませんnull

答えて

1

ジャクソンのSpring統合は、QueryResultWrapperがどのように見え、その変数を何かに割り当てることができなかったように見えます。これはジャクソンを使わないようにした次の変更です。

public <T> T callRestfulAPIForRallyObjectMapper(String url, HttpMethod method, T obj) throws JsonParseException, JsonMappingException, IOException { 
    HttpHeaders headers = new HttpHeaders(); 
    headers.add("Authorization", RallyAuthKey); 
    headers.add("Content-Type", "application/json"); 
    headers.add("Accepts", "application/json"); 
    return callRestfulAPIObjectMapper(url, headers, method, obj); 
}  
private <T> T callRestfulAPIObjectMapper(String url, HttpHeaders headers, HttpMethod method, T obj) throws JsonParseException, JsonMappingException, IOException { 

RestTemplate restTemplate = new RestTemplate(); 

     SimpleClientHttpRequestFactory simpleFactory = new SimpleClientHttpRequestFactory(); 

     //Set timeout on connection to 20 seconds 
     simpleFactory.setConnectTimeout(20*1000); 

     restTemplate.setRequestFactory(new BufferingClientHttpRequestFactory(simpleFactory)); 
     ResponseEntity<String> result = restTemplate.exchange(url, method, new HttpEntity<String>(headers), new ParameterizedTypeReference<String>(){}); 

     ObjectMapper mapper = new ObjectMapper(); 
     @SuppressWarnings("unchecked") 
     T wrapper = (T) mapper.readValue(result.getBody(), obj.getClass()); 

     return wrapper; 
    } 

これは、メソッドを呼び出すコードで行った変更です。

QueryResultWrapper changeSetsRequest = caller.callRestfulAPIForRallyObjectMapper(
          changesetRef.substring(1, changesetRef.length() - 1), httpmethod, 
          new QueryResultWrapper()); 
        QueryResult qr = changeSetsRequest.getQueryResult(); 
関連する問題