Hello, I want to generate a JIRA report using Changes Plugin. I've managed to re-produce a situation which is contradictory:
1. I use Maven and POM to generate the JIRA report. 2. I checkout 2.9 source and use a JUnit test class to verify. In case (1), the following Maven configuration is used: <reporting> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-changes-plugin</artifactId> <version>2.9</version> <configuration> <useJql>true</useJql> <onlyCurrentVersion>true</onlyCurrentVersion> <statusIds>Closed,Resolved</statusIds> <webUser>USER</webUser> <webPassword>PASS</webPassword> </configuration> </plugin> </plugins> </reporting> Then using mvn -X changes:jira-report, I get the following: --------------------------- ID: 2 Address: https://MYJIRA.COM/issuetracker/rest/api/2/status Http-Method: GET Content-Type: */* Headers: {Accept=[application/json], Content-Type=[*/*]} -------------------------------------- [DEBUG] Accept: application/json [DEBUG] Content-Type: */* [DEBUG] No Trust Decider for Conduit '{https://MYJIRA.COM/issuetracker}WebClient.http-conduit'. An afirmative Trust Decision is assumed. [DEBUG] Response Code: 200 Conduit: {https://MYJIRA.COM/issuetracker}WebClient.http-conduit [DEBUG] Content length: -1 [DEBUG] Header fields: null: [HTTP/1.1 200 OK] Transfer-Encoding: [chunked] Date: [Mon, 24 Mar 2014 08:23:14 GMT] Keep-Alive: [timeout=15, max=99] Via: [1.1 MYJIRA.COM] Set-Cookie: [atlassian.xsrf.token=AMUY-0X4J-KTOA-WYA4|faf5142cf78de245e3573fc6cd122b41d1a0fe8e|lout; Path=/issuetracker] Connection: [Keep-Alive] Content-Type: [application/json;charset=UTF-8] X-AUSERNAME: [anonymous] X-AREQUESTID: [563x130866x1] Server: [Apache-Coyote/1.1] Cache-Control: [no-cache, no-store, no-transform] [DEBUG] Adding interceptor org.apache.cxf.interceptor.LoggingInInterceptor@5af3a14 to phase receive [DEBUG] Chain org.apache.cxf.phase.PhaseInterceptorChain@574e6595 was created. Current flow: receive [LoggingInInterceptor] [DEBUG] Invoking handleMessage on interceptor org.apache.cxf.interceptor.LoggingInInterceptor@5af3a14 [INFO] Inbound Message ---------------------------- ID: 2 Response-Code: 200 Encoding: UTF-8 Content-Type: application/json;charset=UTF-8 Headers: {Cache-Control=[no-cache, no-store, no-transform], connection=[Keep-Alive], content-type=[application/json;charset=UTF-8], Date=[Mon, 24 Mar 2014 08:23:14 GMT], Keep-Alive=[timeout=15, max=99], Server=[Apache-Coyote/1.1], Set-Cookie=[atlassian.xsrf.token=AMUY-0X4J-KTOA-WYA4|faf5142cf78de245e3573fc6cd122b41d1a0fe8e|lout; Path=/issuetracker], transfer-encoding=[chunked], Via=[1.1 MYJIRA.COM], X-AREQUESTID=[563x130866x1], X-AUSERNAME=[anonymous]} Payload: [] In the above note that HTTPS is used, result Payload is empty and "webUser" is *ignored* (as anonymous) and Authorization Header is missing. Additionally, Maven ends with the following exception which makes sense based on the code: org.apache.maven.plugin.MojoFailureException: Could not find status Closed. at org.apache.maven.plugin.jira.RestJiraDownloader.resolveOneItem(RestJiraDownloader.java:276) at org.apache.maven.plugin.jira.RestJiraDownloader.resolveList(RestJiraDownloader.java:253) at org.apache.maven.plugin.jira.RestJiraDownloader.resolveIds(RestJiraDownloader.java:210) at org.apache.maven.plugin.jira.RestJiraDownloader.doExecute(RestJiraDownloader.java:128) at org.apache.maven.plugin.jira.AdaptiveJiraDownloader.doExecute(AdaptiveJiraDownloader.java:47) at org.apache.maven.plugin.jira.JiraMojo.executeReport(JiraMojo.java:367) at org.apache.maven.reporting.AbstractMavenReport.generate(AbstractMavenReport.java:190) In case (2), the source for the plugin version 2.9 is checked out. A simple unit test is written to simulate the same configuration: RestJiraDownloader d = new RestJiraDownloader(); Log log = new DefaultLog(new ConsoleLogger(Logger.LEVEL_DEBUG, "test")); d.setLog(log); d.project = new MavenProject(); d.project.setIssueManagement(new IssueManagement()); d.project.getIssueManagement().setUrl( "https://MYJIRA.COM/issuetracker/browse/CSP"); d.project.getIssueManagement().setSystem("JIRA"); d.setWebUser("USER"); d.setWebPassword("PASS"); d.setUseJql(true); d.setStatusIds("Resolved,Closed"); Map<String, String> params = JiraHelper .getJiraUrlAndProjectName(d.project.getIssueManagement() .getUrl()); String jiraUrl = params.get("url"); String project = params.get("project"); System.out.println("JIRA: " + jiraUrl + " | project: " + project); Thread.currentThread().setContextClassLoader( WebClient.class.getClassLoader()); WebClient client = d.setupWebClient(jiraUrl); d.doSessionAuth(client); d.resolveIds(client, project); System.out.println(d.resolvedStatusIds); Some small tweaks are made to RestJiraDownloader to make this test runnable. The output of the unit test is: Mar 24, 2014 9:17:53 AM org.apache.cxf.interceptor.LoggingOutInterceptor INFO: Outbound Message --------------------------- ID: 1 Address: https://MYJIRA.COM/issuetracker/rest/api/2/status Http-Method: GET Content-Type: */* Headers: {Accept=[application/json], Content-Type=[*/*], Authorization=[Basic ZmlsdGVyYWRtaW46ZmFzMTIz]} -------------------------------------- Mar 24, 2014 9:17:54 AM org.apache.cxf.interceptor.LoggingInInterceptor INFO: Inbound Message ---------------------------- ID: 1 Response-Code: 200 Encoding: UTF-8 Content-Type: application/json;charset=UTF-8 Headers: {Cache-Control=[no-cache, no-store, no-transform], connection=[Keep-Alive], content-type=[application/json;char set=UTF-8], Date=[Mon, 24 Mar 2014 08:17:54 GMT], Keep-Alive=[timeout=15, max=100], Server=[Apache-Coyote/1.1], Set-Cook ie=[atlassian.xsrf.token=AMUY-0X4J-KTOA-WYA4|7e39037e80032fd269019a7440f2e98242ad1f59|lin; Path=/issuetracker, JSESSIONI D=B33D7C89B30F1A336D114CF9E9E159D3; Path=/issuetracker/; HttpOnly], transfer-encoding=[chunked], Via=[1.1 MYJIRA.COM], X-AREQUESTID=[557x130229x1], X-ASESSIONID=[13jqi4n], X-AUSERNAME=[USER], X-Seraph-LoginReason=[OK]} Payload: [{"self":"...."}] In this case, the Payload actually includes the JSON response for the status ids. The Authorization Header is also visible. An interesting observation is that in case (1), the following line: No Trust Decider for Conduit '{https://MYJIRA.COM/issuetracker}WebClient.http-conduit'. An afirmative Trust Decision is assumed. can it be the root cause? And, if so, how can I fix this? I'd appreciate any help on this. Thanks, Behrooz