/src/main/java/pacrelease/PacTask.java
Java | 147 lines | 112 code | 29 blank | 6 comment | 3 complexity | 471df93480489c53cc238c29146f7b0d MD5 | raw file
- package pacrelease;
- import com.atlassian.bamboo.build.logger.BuildLogger;
- import com.atlassian.bamboo.task.TaskContext;
- import com.atlassian.bamboo.task.TaskException;
- import com.atlassian.bamboo.task.TaskResult;
- import com.atlassian.bamboo.task.TaskResultBuilder;
- import com.atlassian.bamboo.task.TaskType;
- import com.atlassian.plugins.client.service.AbstractRestServiceClient;
- import com.atlassian.plugins.client.service.category.CategoryServiceClientImpl;
- import com.atlassian.plugins.client.service.plugin.*;
- import com.atlassian.plugins.client.service.product.ProductCompatibilityServiceClientImpl;
- import com.atlassian.plugins.domain.model.category.Category;
- import com.atlassian.plugins.domain.model.product.ProductCompatibility;
- import com.atlassian.plugins.domain.wrapper.ListWrapper;
- import com.atlassian.plugins.service.plugin.ContributorService;
- import org.jetbrains.annotations.NotNull;
- import com.atlassian.plugins.domain.model.plugin.*;
- import java.util.Arrays;
- import java.util.Date;
- import java.util.ArrayList;
- public class PacTask implements TaskType
- {
- private PluginServiceClientImpl pluginService;
- private PluginVersionServiceClientImpl pluginVersionService;
- private ProductCompatibilityServiceClientImpl productCompatibilityService;
- private ContributorServiceClientImpl contributorService;
- private RequirementServiceClientImpl requirementService;
- private ScreenshotServiceClientImpl screenshotService;
- private CategoryServiceClientImpl categoryService;
- private String username;
- private String password;
- private String pluginId;
- private String version;
- private String summary;
- private String binaryURL;
- @NotNull
- @java.lang.Override
- public TaskResult execute(@NotNull final TaskContext taskContext) throws TaskException
- {
- username = taskContext.getConfigurationMap().get("username");
- password = taskContext.getConfigurationMap().get("password");
- pluginId = taskContext.getConfigurationMap().get("pluginid");
- version = taskContext.getConfigurationMap().get("version");
- summary = taskContext.getConfigurationMap().get("releasenote");
- binaryURL = taskContext.getConfigurationMap().get("binary");
- final BuildLogger buildLogger = taskContext.getBuildLogger();
- // Init Plugin Service
- pluginService = new PluginServiceClientImpl();
- initialiseService(pluginService);
- // Init Plugin Version Service
- pluginVersionService = new PluginVersionServiceClientImpl();
- initialiseService(pluginVersionService);
- productCompatibilityService = new ProductCompatibilityServiceClientImpl();
- initialiseService(productCompatibilityService);
- contributorService = new ContributorServiceClientImpl();
- initialiseService(contributorService);
- requirementService = new RequirementServiceClientImpl();
- initialiseService(requirementService);
- screenshotService = new ScreenshotServiceClientImpl();
- initialiseService(screenshotService);
- categoryService = new CategoryServiceClientImpl();
- initialiseService(categoryService);
- // Retrieve Plugin
- String pluginInfo = "latestVersion.plugin,latestVersion.contributors.contributor.user,latestVersion.productCompatibilities.productCompatibility.*,latestVersion.requirements.requirement,latestVersion.screenshots,latestVersion.buildNumber, latestVersion.categories.category";
- String[] infoArray = pluginInfo.split(",");
- Plugin plugin = pluginService.retrieve(pluginId, new ArrayList(Arrays.asList(infoArray)));
- PluginVersion newPluginVersion = createPluginVersion(plugin);
- // Add log entry
- buildLogger.addBuildLogEntry("------ Plugin Release --------");
- buildLogger.addBuildLogEntry("Plugin ID:".concat(plugin.getId()));
- buildLogger.addBuildLogEntry("Binary: ".concat(binaryURL));
- return TaskResultBuilder.create(taskContext).success().build();
- }
- private PluginVersion createPluginVersion(Plugin plugin)
- {
- PluginVersion latestVersion = plugin.getLatestVersion();
- // increase Build number by 1
- Long newBuildNumber = latestVersion.getBuildNumber() + 1;
- ListWrapper<ProductCompatibility> existingCapabilities = latestVersion.getProductCompatibilities();
- ListWrapper<Contributor> existingContributors = latestVersion.getContributors();
- ListWrapper<Requirement> existingRequirements = latestVersion.getRequirements();
- latestVersion.setId(null);
- latestVersion.setContributors(new ListWrapper<Contributor>());
- latestVersion.setProductCompatibilities(new ListWrapper<ProductCompatibility>());
- latestVersion.setRequirements(new ListWrapper<Requirement>());
- latestVersion.setBuildNumber(newBuildNumber);
- latestVersion.setReleaseSummary(summary);
- latestVersion.setVersion(version);
- latestVersion.setBinaryUrl(binaryURL);
- latestVersion.setReleaseDate(new Date());
- String newVersionID = pluginVersionService.create(latestVersion);
- PluginVersion pv = new PluginVersion();
- pv.setId(newVersionID);
- // copy capabilities
- for (ProductCompatibility productCompatibility : existingCapabilities) {
- productCompatibility.setId(null);
- productCompatibility.setPluginVersion(pv);
- productCompatibilityService.create(productCompatibility);
- }
- for (Contributor contributor : existingContributors) {
- contributor.setId(null);
- contributor.setPluginVersion(pv);
- contributorService.create(contributor);
- }
- for (Requirement requirement : existingRequirements) {
- requirement.setId(null);
- requirement.setPluginVersion(pv);
- requirementService.create(requirement);
- }
- return latestVersion;
- }
- private void initialiseService(AbstractRestServiceClient pluginService)
- {
- pluginService.setBaseUrl("https://plugins.atlassian.com/server");
- pluginService.setUsername(username);
- pluginService.setPassword(password);
- }
- }