PageRenderTime 28ms CodeModel.GetById 1ms RepoModel.GetById 1ms app.codeStats 0ms

/src/main/java/com/atlassian/jira/plugins/bitbucket/webwork/BitbucketTabPanel.java

https://bitbucket.org/atlassian/jira-bitbucket-connector/
Java | 66 lines | 56 code | 10 blank | 0 comment | 2 complexity | c2b5382beedf826a14d9c3cdfa751134 MD5 | raw file
  1. package com.atlassian.jira.plugins.bitbucket.webwork;
  2. import com.atlassian.crowd.embedded.api.User;
  3. import com.atlassian.jira.issue.Issue;
  4. import com.atlassian.jira.issue.tabpanels.GenericMessageAction;
  5. import com.atlassian.jira.plugin.issuetabpanel.AbstractIssueTabPanel;
  6. import com.atlassian.jira.plugin.issuetabpanel.IssueAction;
  7. import com.atlassian.jira.plugins.bitbucket.api.Changeset;
  8. import com.atlassian.jira.plugins.bitbucket.api.SourceControlRepository;
  9. import com.atlassian.jira.plugins.bitbucket.spi.RepositoryManager;
  10. import com.atlassian.jira.security.PermissionManager;
  11. import com.atlassian.jira.security.Permissions;
  12. import org.slf4j.Logger;
  13. import org.slf4j.LoggerFactory;
  14. import org.springframework.beans.factory.annotation.Qualifier;
  15. import java.util.ArrayList;
  16. import java.util.List;
  17. public class BitbucketTabPanel extends AbstractIssueTabPanel
  18. {
  19. private static final GenericMessageAction DEFAULT_MESSAGE = new GenericMessageAction("");
  20. private final PermissionManager permissionManager;
  21. private final Logger logger = LoggerFactory.getLogger(BitbucketTabPanel.class);
  22. private final RepositoryManager globalRepositoryManager;
  23. public BitbucketTabPanel(PermissionManager permissionManager, @Qualifier("globalRepositoryManager") RepositoryManager globalRepositoryManager)
  24. {
  25. this.permissionManager = permissionManager;
  26. this.globalRepositoryManager = globalRepositoryManager;
  27. }
  28. @Override
  29. public List<IssueAction> getActions(Issue issue, User user)
  30. {
  31. String issueId = issue.getKey();
  32. List<IssueAction> bitbucketActions = new ArrayList<IssueAction>();
  33. try
  34. {
  35. for (Changeset changeset : globalRepositoryManager.getChangesets(issueId))
  36. {
  37. logger.debug("found changeset [ {} ] on issue [ {} ]", changeset.getNode(), issueId);
  38. SourceControlRepository repository = globalRepositoryManager.getRepository(changeset.getRepositoryId());
  39. String changesetAsHtml = globalRepositoryManager.getHtmlForChangeset(repository, changeset);
  40. bitbucketActions.add(new CommitsIssueAction(changesetAsHtml, changeset.getTimestamp()));
  41. }
  42. } catch (com.atlassian.jira.plugins.bitbucket.api.SourceControlException e)
  43. {
  44. logger.debug("Could not retrieve changeset for [ " + issueId + " ]: " + e, e);
  45. }
  46. if (bitbucketActions.isEmpty())
  47. bitbucketActions.add(DEFAULT_MESSAGE);
  48. return bitbucketActions;
  49. }
  50. @Override
  51. public boolean showPanel(Issue issue, User user)
  52. {
  53. return permissionManager.hasPermission(Permissions.VIEW_VERSION_CONTROL, issue, user) &&
  54. !globalRepositoryManager.getRepositories(issue.getProjectObject().getKey()).isEmpty();
  55. }
  56. }