JIRA Macro Issues does not render properly for logins containing white spaces
問題
When displaying JIRA Issues in a Confluence page, they will not render properly if the user login contains white spaces:
atlassian-confluence.log
に次のメッセージが表示される。
2014-05-12 11:41:58,239 ERROR [Jira macros executor:thread-4] [confluence.extra.jira.JiraIssuesMacro] throwMacroExecutionException Macro execution exception:
-- referer: http://confluence:8090/ | url: /display/TES/Testing+Home | userName: admin | action: viewpage | page: 4030466
java.lang.IllegalArgumentException: Illegal character in query at index 208: http://jira:8080/sr/jira.issueviews:searchrequest-xml/temp/SearchRequest.xml?jqlQuery=key+in+%28TEST-3%29&returnMax=true&field=summary&field=type&field=resolution&field=status&field=link&xoauth_requestor_id=d luvison
at java.net.URI.create(URI.java:859)
at com.atlassian.sal.core.net.HttpClientProtocolConfig.changeHostConfigurationProtocol(HttpClientProtocolConfig.java:43)
at com.atlassian.sal.core.net.HttpClientProtocolConfig.configureProtocol(HttpClientProtocolConfig.java:20)
at com.atlassian.sal.core.net.HttpClientRequest.configureProtocol(HttpClientRequest.java:532)
at com.atlassian.sal.core.net.HttpClientRequest.setUrl(HttpClientRequest.java:135)
at com.atlassian.sal.core.net.HttpClientRequest.setUrl(HttpClientRequest.java:71)
at com.atlassian.plugins.rest.module.jersey.JerseyRequest.setUrl(JerseyRequest.java:57)
at com.atlassian.plugins.rest.module.jersey.JerseyRequest.setUrl(JerseyRequest.java:21)
at com.atlassian.applinks.core.auth.ApplicationLinkRequestAdaptor.setUrl(ApplicationLinkRequestAdaptor.java:134)
at com.atlassian.applinks.core.auth.ApplicationLinkRequestAdaptor.setUrl(ApplicationLinkRequestAdaptor.java:20)
at com.atlassian.applinks.core.auth.oauth.twolo.impersonation.TwoLeggedOAuthWithImpersonationRequest.signRequest(TwoLeggedOAuthWithImpersonationRequest.java:43)
at com.atlassian.applinks.core.auth.oauth.OAuthRequest.execute(OAuthRequest.java:42)
at com.atlassian.confluence.extra.jira.DefaultJiraIssuesManager.retrieveXML(DefaultJiraIssuesManager.java:92)
at com.atlassian.confluence.extra.jira.CacheJiraIssuesManager.retrieveXML(CacheJiraIssuesManager.java:41)
at com.atlassian.confluence.extra.jira.DefaultJiraIssuesManager.retrieveXMLAsChannel(DefaultJiraIssuesManager.java:174)
at com.atlassian.confluence.extra.jira.JiraIssuesMacro.populateContextMapForStaticSingleIssue(JiraIssuesMacro.java:753)
at com.atlassian.confluence.extra.jira.JiraIssuesMacro.createContextMapFromParams(JiraIssuesMacro.java:595)
at com.atlassian.confluence.extra.jira.JiraIssuesMacro.execute(JiraIssuesMacro.java:1492)
at com.atlassian.confluence.extra.jira.executor.StreamableMacroFutureTask.call(StreamableMacroFutureTask.java:36)
at com.atlassian.confluence.extra.jira.executor.StreamableMacroFutureTask.call(StreamableMacroFutureTask.java:15)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.URISyntaxException: Illegal character in query at index 208: http://jira:8080/sr/jira.issueviews:searchrequest-xml/temp/SearchRequest.xml?jqlQuery=key+in+%28TEST-3%29&returnMax=true&field=summary&field=type&field=resolution&field=status&field=link&xoauth_requestor_id=d luvison
at java.net.URI$Parser.fail(URI.java:2829)
at java.net.URI$Parser.checkChars(URI.java:3002)
at java.net.URI$Parser.parseHierarchical(URI.java:3092)
at java.net.URI$Parser.parse(URI.java:3034)
at java.net.URI.<init>(URI.java:595)
at java.net.URI.create(URI.java:857)
... 23 more
The above symptom will not affect users that do not have white spaces in their username.
原因
This is a bug with the Application links plugin being unable to handle the white spaces during the information change process. This is currently being tracked in - APL-1195Getting issue details... STATUS .
Confluence and JIRA does not allow a login containing white spaces, unless you pull those from an external directory (AD/LDAP). If you have a user from AD/LDAP that contains white spaces, you will see this bug when trying to render JIRA issues in a page.
回避策
Change the username to remove the white spaces in AD/LDAP and synchronize within Confluence. If that is not feasible, make sure to vote for the bug mentioned above and add your thoughts to it.