PageRenderTime 52ms CodeModel.GetById 25ms RepoModel.GetById 0ms app.codeStats 1ms

/src/main/java/pacrelease/PacTask.java

https://bitbucket.org/jschumacher/pac-release-plugin
Java | 147 lines | 112 code | 29 blank | 6 comment | 3 complexity | 471df93480489c53cc238c29146f7b0d MD5 | raw file
  1. package pacrelease;
  2. import com.atlassian.bamboo.build.logger.BuildLogger;
  3. import com.atlassian.bamboo.task.TaskContext;
  4. import com.atlassian.bamboo.task.TaskException;
  5. import com.atlassian.bamboo.task.TaskResult;
  6. import com.atlassian.bamboo.task.TaskResultBuilder;
  7. import com.atlassian.bamboo.task.TaskType;
  8. import com.atlassian.plugins.client.service.AbstractRestServiceClient;
  9. import com.atlassian.plugins.client.service.category.CategoryServiceClientImpl;
  10. import com.atlassian.plugins.client.service.plugin.*;
  11. import com.atlassian.plugins.client.service.product.ProductCompatibilityServiceClientImpl;
  12. import com.atlassian.plugins.domain.model.category.Category;
  13. import com.atlassian.plugins.domain.model.product.ProductCompatibility;
  14. import com.atlassian.plugins.domain.wrapper.ListWrapper;
  15. import com.atlassian.plugins.service.plugin.ContributorService;
  16. import org.jetbrains.annotations.NotNull;
  17. import com.atlassian.plugins.domain.model.plugin.*;
  18. import java.util.Arrays;
  19. import java.util.Date;
  20. import java.util.ArrayList;
  21. public class PacTask implements TaskType
  22. {
  23. private PluginServiceClientImpl pluginService;
  24. private PluginVersionServiceClientImpl pluginVersionService;
  25. private ProductCompatibilityServiceClientImpl productCompatibilityService;
  26. private ContributorServiceClientImpl contributorService;
  27. private RequirementServiceClientImpl requirementService;
  28. private ScreenshotServiceClientImpl screenshotService;
  29. private CategoryServiceClientImpl categoryService;
  30. private String username;
  31. private String password;
  32. private String pluginId;
  33. private String version;
  34. private String summary;
  35. private String binaryURL;
  36. @NotNull
  37. @java.lang.Override
  38. public TaskResult execute(@NotNull final TaskContext taskContext) throws TaskException
  39. {
  40. username = taskContext.getConfigurationMap().get("username");
  41. password = taskContext.getConfigurationMap().get("password");
  42. pluginId = taskContext.getConfigurationMap().get("pluginid");
  43. version = taskContext.getConfigurationMap().get("version");
  44. summary = taskContext.getConfigurationMap().get("releasenote");
  45. binaryURL = taskContext.getConfigurationMap().get("binary");
  46. final BuildLogger buildLogger = taskContext.getBuildLogger();
  47. // Init Plugin Service
  48. pluginService = new PluginServiceClientImpl();
  49. initialiseService(pluginService);
  50. // Init Plugin Version Service
  51. pluginVersionService = new PluginVersionServiceClientImpl();
  52. initialiseService(pluginVersionService);
  53. productCompatibilityService = new ProductCompatibilityServiceClientImpl();
  54. initialiseService(productCompatibilityService);
  55. contributorService = new ContributorServiceClientImpl();
  56. initialiseService(contributorService);
  57. requirementService = new RequirementServiceClientImpl();
  58. initialiseService(requirementService);
  59. screenshotService = new ScreenshotServiceClientImpl();
  60. initialiseService(screenshotService);
  61. categoryService = new CategoryServiceClientImpl();
  62. initialiseService(categoryService);
  63. // Retrieve Plugin
  64. String pluginInfo = "latestVersion.plugin,latestVersion.contributors.contributor.user,latestVersion.productCompatibilities.productCompatibility.*,latestVersion.requirements.requirement,latestVersion.screenshots,latestVersion.buildNumber, latestVersion.categories.category";
  65. String[] infoArray = pluginInfo.split(",");
  66. Plugin plugin = pluginService.retrieve(pluginId, new ArrayList(Arrays.asList(infoArray)));
  67. PluginVersion newPluginVersion = createPluginVersion(plugin);
  68. // Add log entry
  69. buildLogger.addBuildLogEntry("------ Plugin Release --------");
  70. buildLogger.addBuildLogEntry("Plugin ID:".concat(plugin.getId()));
  71. buildLogger.addBuildLogEntry("Binary: ".concat(binaryURL));
  72. return TaskResultBuilder.create(taskContext).success().build();
  73. }
  74. private PluginVersion createPluginVersion(Plugin plugin)
  75. {
  76. PluginVersion latestVersion = plugin.getLatestVersion();
  77. // increase Build number by 1
  78. Long newBuildNumber = latestVersion.getBuildNumber() + 1;
  79. ListWrapper<ProductCompatibility> existingCapabilities = latestVersion.getProductCompatibilities();
  80. ListWrapper<Contributor> existingContributors = latestVersion.getContributors();
  81. ListWrapper<Requirement> existingRequirements = latestVersion.getRequirements();
  82. latestVersion.setId(null);
  83. latestVersion.setContributors(new ListWrapper<Contributor>());
  84. latestVersion.setProductCompatibilities(new ListWrapper<ProductCompatibility>());
  85. latestVersion.setRequirements(new ListWrapper<Requirement>());
  86. latestVersion.setBuildNumber(newBuildNumber);
  87. latestVersion.setReleaseSummary(summary);
  88. latestVersion.setVersion(version);
  89. latestVersion.setBinaryUrl(binaryURL);
  90. latestVersion.setReleaseDate(new Date());
  91. String newVersionID = pluginVersionService.create(latestVersion);
  92. PluginVersion pv = new PluginVersion();
  93. pv.setId(newVersionID);
  94. // copy capabilities
  95. for (ProductCompatibility productCompatibility : existingCapabilities) {
  96. productCompatibility.setId(null);
  97. productCompatibility.setPluginVersion(pv);
  98. productCompatibilityService.create(productCompatibility);
  99. }
  100. for (Contributor contributor : existingContributors) {
  101. contributor.setId(null);
  102. contributor.setPluginVersion(pv);
  103. contributorService.create(contributor);
  104. }
  105. for (Requirement requirement : existingRequirements) {
  106. requirement.setId(null);
  107. requirement.setPluginVersion(pv);
  108. requirementService.create(requirement);
  109. }
  110. return latestVersion;
  111. }
  112. private void initialiseService(AbstractRestServiceClient pluginService)
  113. {
  114. pluginService.setBaseUrl("https://plugins.atlassian.com/server");
  115. pluginService.setUsername(username);
  116. pluginService.setPassword(password);
  117. }
  118. }