atlas-create-jira-plugin
Define value for groupId: : ru.matveev.alexey.sw.tutorial Define value for artifactId: : sw-tutorial Define value for version: 1.0.0-SNAPSHOT: : Define value for package: ru.matveev.alexey.sw.tutorial: : Confirm properties configuration: groupId: ru.matveev.alexey.sw.tutorial artifactId: sw-tutorial version: 1.0.0-SNAPSHOT package: ru.matveev.alexey.sw.tutorial Y: : Y
<jira.version>7.9.0</jira.version>
<applications> <application> <applicationKey>jira-software</applicationKey> <version>${jira.software.application.version}</version> </application> </applications>
<jira.software.application.version>7.9.0</jira.software.application.version>
<jvmArgs>-Xms512M -Xmx1g</jvmArgs>
atlas-create-jira-plugin-module
Enter New Classname MyRestResource: : Choose a number (1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/19/20/21/22/23/24/25/26/27/28/29/30/31/32/33/34): 14 Enter Package Name ru.matveev.alexey.sw.tutorial.rest: : Enter REST Path /myrestresource: : Enter Version 1.0: : Show Advanced Setup? (Y/y/N/n) N: : N Add Another Plugin Module? (Y/y/N/n) N: : N
atlas-run
jira-greenhopper-plugin-7.9.0-DAILY20180326142825.jar
<dependency> <groupId>com.atlassian.jira.plugins</groupId> <artifactId>jira-greenhopper-plugin</artifactId> <version>7.9.0-DAILY20180326142825</version> <scope>provided</scope> </dependency>
http://localhost:2990/jira/plugins/servlet/upm#osgi
Service 1477 com.atlassian.greenhopper.service.issue.RapidViewIssueService Service 1476 com.atlassian.greenhopper.service.issuelink.EpicService
package ru.matveev.alexey.sw.tutorial.rest; import com.atlassian.greenhopper.model.Epic; import com.atlassian.greenhopper.service.Page; import com.atlassian.greenhopper.service.PageRequests; import com.atlassian.greenhopper.service.ServiceOutcome; import com.atlassian.greenhopper.service.issue.RapidViewIssue; import com.atlassian.greenhopper.service.issue.RapidViewIssueService; import com.atlassian.greenhopper.service.issuelink.EpicService; import com.atlassian.jira.issue.Issue; import com.atlassian.jira.issue.IssueManager; import com.atlassian.jira.jql.builder.JqlQueryBuilder; import com.atlassian.jira.security.JiraAuthenticationContext; import com.atlassian.jira.user.ApplicationUser; import com.atlassian.plugin.spring.scanner.annotation.imports.ComponentImport; import com.atlassian.plugins.rest.common.security.AnonymousAllowed; import com.atlassian.query.Query; import javax.inject.Inject; import javax.ws.rs.*; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.stream.Collectors; @Path("/message") public class MyRestResource { private final EpicService epicService; private final IssueManager issueManager; private final JiraAuthenticationContext jiraAuthenticationContext; private final RapidViewIssueService rapidViewIssueService; @Inject public MyRestResource(@ComponentImport EpicService epicService, @ComponentImport IssueManager issueManager, @ComponentImport JiraAuthenticationContext jiraAuthenticationContext, @ComponentImport RapidViewIssueService rapidViewIssueService) { this.epicService = epicService; this.issueManager = issueManager; this.jiraAuthenticationContext = jiraAuthenticationContext; this.rapidViewIssueService = rapidViewIssueService; } @Path("/hello") @GET @AnonymousAllowed @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) public Response getMessage() { return Response.ok(new MyRestResourceModel("Hello World")).build(); } @Path("/epictasks") @GET @AnonymousAllowed @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) public Response getEpicTasks(@QueryParam("epic key") String epicKey) { ApplicationUser user = jiraAuthenticationContext.getLoggedInUser(); ServiceOutcome<Epic> epic = epicService.getEpic(user, epicKey); Query query = JqlQueryBuilder.newBuilder().where().buildQuery(); ServiceOutcome<Page<RapidViewIssue>> issues = rapidViewIssueService.getIssuesForEpic(user, epic.getValue(), PageRequests.request(0L, 100), query); List<String> issueList = issues.getValue().getValues().stream().map(el -> el.getIssue().getSummary()).collect(Collectors.toList()); return Response.ok(new MyRestResourceModel(issueList.toString())).build(); } @Path("/epictasks") @POST @AnonymousAllowed @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) public Response addTaskToEpic(@QueryParam("epic key") String epicKey, @QueryParam("issue key") String issueKey) { ApplicationUser user = jiraAuthenticationContext.getLoggedInUser(); ServiceOutcome<Epic> epic = epicService.getEpic(user, epicKey); Set<Issue> issueSet = new HashSet<>(); issueSet.add(issueManager.getIssueByCurrentKey(issueKey)); epicService.addIssuesToEpic(user, epic.getValue(), issueSet); return Response.ok(new MyRestResourceModel(issueKey + " added to " + epicKey)).build(); } }
Source: https://habr.com/ru/post/354048/
All Articles