From 8b440784012db6899b88188dc66bf58a647fd43a Mon Sep 17 00:00:00 2001 From: Greg Messner Date: Sat, 7 Jul 2018 16:45:15 -0700 Subject: [PATCH 1/2] Added support for the Award Emoji API (#214). --- README.md | 7 + .../java/org/gitlab4j/api/AwardEmojiApi.java | 312 ++++++++++++++++++ src/main/java/org/gitlab4j/api/GitLabApi.java | 20 ++ .../org/gitlab4j/api/models/AwardEmoji.java | 103 ++++++ .../org/gitlab4j/api/TestGitLabApiBeans.java | 12 + .../org/gitlab4j/api/award-emoji.json | 16 + 6 files changed, 470 insertions(+) create mode 100644 src/main/java/org/gitlab4j/api/AwardEmojiApi.java create mode 100644 src/main/java/org/gitlab4j/api/models/AwardEmoji.java create mode 100644 src/test/resources/org/gitlab4j/api/award-emoji.json diff --git a/README.md b/README.md index a99d62c4e..4b691e6b7 100644 --- a/README.md +++ b/README.md @@ -135,6 +135,7 @@ The API has been broken up into sub APIs classes to make it easier to learn and ### Available Sub APIs ------------------ +  [AwardEmojiApi](#awardemojiapi)
  [CommitsApi](#commitsapi)
  [DeployKeysApi](#deploykeysapi)
  [EpicsApi](#epicsapi)
@@ -165,6 +166,12 @@ The API has been broken up into sub APIs classes to make it easier to learn and ### Sub API Examples ---------------- +#### AwardEmojiApi +```java +// Get a list of AwardEmoji belonging to the specified issue (group ID = 1, issues IID = 1) +List awardEmojis = gitLabApi.getAwardEmojiApi().getIssuAwardEmojis(1, 1); +``` + #### CommitsApi ```java // Get a list of commits associated with the specified branch that fall within the specified time window diff --git a/src/main/java/org/gitlab4j/api/AwardEmojiApi.java b/src/main/java/org/gitlab4j/api/AwardEmojiApi.java new file mode 100644 index 000000000..b5565f84b --- /dev/null +++ b/src/main/java/org/gitlab4j/api/AwardEmojiApi.java @@ -0,0 +1,312 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2017 Greg Messner + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package org.gitlab4j.api; + +import java.util.List; + +import javax.ws.rs.core.GenericType; +import javax.ws.rs.core.Response; + +import org.gitlab4j.api.models.AwardEmoji; + +/** + * This class implements the client side API for the GitLab Award Emoji API calls. + * + * @see GitLab Award Emoji API Documentaion + * @since v4.8.31 + */ +public class AwardEmojiApi extends AbstractApi { + + public AwardEmojiApi(GitLabApi gitLabApi) { + super(gitLabApi); + } + + /** + * Get a list of award emoji for the specified issue. + * + *
GitLab Endpoint: GET /projects/:id/issues/:issue_iid/award_emoji
+ * + * @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path + * @param issueIid the issue IID to get the award emojis for + * @return a list of AwardEmoji for the specified issue + * @throws GitLabApiException if any exception occurs + */ + public List getIssueAwardEmojis(Object projectIdOrPath, Integer issueIid) throws GitLabApiException { + Response response = get(Response.Status.OK, getPageQueryParams(1, getDefaultPerPage()), + "projects", getProjectIdOrPath(projectIdOrPath), "issues", issueIid, "award_emoji"); + return response.readEntity(new GenericType>() {}); + } + + /** + * Get a list of award emoji for the specified merge request. + * + *
GitLab Endpoint: GET /projects/:id/merge_requests/:merge_request_iid/award_emoji
+ * + * @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path + * @param mergeRequestIid the merge request IID to get the award emojis for + * @return a list of AwardEmoji for the specified merge request + * @throws GitLabApiException if any exception occurs + */ + public List getMergeRequestAwardEmojis(Object projectIdOrPath, Integer mergeRequestIid) throws GitLabApiException { + Response response = get(Response.Status.OK, getPageQueryParams(1, getDefaultPerPage()), + "projects", getProjectIdOrPath(projectIdOrPath), "merge_requests", mergeRequestIid, "award_emoji"); + return response.readEntity(new GenericType>() {}); + } + + /** + * Get a list of award emoji for the specified snippet. + * + *
GitLab Endpoint: GET /projects/:id/snippets/:snippet_id/award_emoji
+ * + * @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path + * @param snippetId the snippet ID to get the award emojis for + * @return a list of AwardEmoji for the specified snippet + * @throws GitLabApiException if any exception occurs + */ + public List getSnippetAwardEmojis(Object projectIdOrPath, Integer snippetId) throws GitLabApiException { + Response response = get(Response.Status.OK, getPageQueryParams(1, getDefaultPerPage()), + "projects", getProjectIdOrPath(projectIdOrPath), "snippets", snippetId, "award_emoji"); + return response.readEntity(new GenericType>() {}); + } + + /** + * Get a list of award emoji for the specified note. + * + *
GitLab Endpoint: GET /projects/:id/issues/:issue_iid/notes/:note_id/award_emoji
+ * + * @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path + * @param issueIid the issue IID of the issue that owns the note + * @param noteId the note ID to get the award emojis for + * @return a list of AwardEmoji for the specified note + * @throws GitLabApiException if any exception occurs + */ + public List getNoteAwardEmojis(Object projectIdOrPath, Integer issueIid, Integer noteId) throws GitLabApiException { + Response response = get(Response.Status.OK, getPageQueryParams(1, getDefaultPerPage()), + "projects", getProjectIdOrPath(projectIdOrPath), "issues", issueIid, "notes", noteId, "award_emoji"); + return response.readEntity(new GenericType>() {}); + } + + /** + * Get the specified award emoji for the specified issue. + * + *
GitLab Endpoint: GET /projects/:id/issues/:issue_iid/award_emoji/:award_id
+ * + * @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path + * @param issueIid the issue IID to get the award emoji for + * @param awardId the ID of the award emoji to get + * @return an AwardEmoji instance for the specified award emoji + * @throws GitLabApiException if any exception occurs + */ + public AwardEmoji getIssueAwardEmoji(Object projectIdOrPath, Integer issueIid, Integer awardId) throws GitLabApiException { + Response response = get(Response.Status.OK, getPageQueryParams(1, getDefaultPerPage()), + "projects", getProjectIdOrPath(projectIdOrPath), "issues", issueIid, "award_emoji", awardId); + return (response.readEntity(AwardEmoji.class)); + } + + /** + * Get the specified award emoji for the specified merge request. + * + *
GitLab Endpoint: GET /projects/:id/merge_requests/:merge_request_iid/award_emoji/:award_id
+ * + * @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path + * @param mergeRequestIid the merge request IID to get the award emoji for + * @param awardId the ID of the award emoji to get + * @return an AwardEmoji instance for the specified award emoji + * @throws GitLabApiException if any exception occurs + */ + public AwardEmoji getMergeRequestAwardEmoji(Object projectIdOrPath, Integer mergeRequestIid, Integer awardId) throws GitLabApiException { + Response response = get(Response.Status.OK, getPageQueryParams(1, getDefaultPerPage()), + "projects", getProjectIdOrPath(projectIdOrPath), "merge_requests", mergeRequestIid, "award_emoji", awardId); + return (response.readEntity(AwardEmoji.class)); + } + + /** + * Get the specified award emoji for the specified snippet. + * + *
GitLab Endpoint: GET /projects/:id/snippets/:snippet_id/award_emoji/:award_id
+ * + * @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path + * @param snippetId the snippet ID to get the award emoji for + * @param awardId the ID of the award emoji to get + * @return an AwardEmoji instance for the specified award emoji + * @throws GitLabApiException if any exception occurs + */ + public AwardEmoji getSnippetAwardEmoji(Object projectIdOrPath, Integer snippetId, Integer awardId) throws GitLabApiException { + Response response = get(Response.Status.OK, getPageQueryParams(1, getDefaultPerPage()), + "projects", getProjectIdOrPath(projectIdOrPath), "snippets", snippetId, "award_emoji", awardId); + return (response.readEntity(AwardEmoji.class)); + } + + /** + * Get the specified award emoji for the specified note. + * + *
GitLab Endpoint: GET /projects/:id/issues/:issue_iid/notes/:note_id/award_emoji/:award_id
+ * + * @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path + * @param issueIid the issue IID of the issue that owns the note + * @param noteId the note ID to get the award emoji from + * @param awardId the ID of the award emoji to get + * @return an AwardEmoji instance for the specified award emoji + * @throws GitLabApiException if any exception occurs + */ + public AwardEmoji getNoteAwardEmoji(Object projectIdOrPath, Integer issueIid, Integer noteId, Integer awardId) throws GitLabApiException { + Response response = get(Response.Status.OK, getPageQueryParams(1, getDefaultPerPage()), + "projects", getProjectIdOrPath(projectIdOrPath), "issues", issueIid, "notes", noteId, "award_emoji", awardId); + return (response.readEntity(AwardEmoji.class)); + } + + /** + * Add an award emoji for the specified issue. + * + *
GitLab Endpoint: POST /projects/:id/issues/:issue_iid/award_emoji
+ * + * @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path + * @param issueIid the issue IID to add the award emoji to + * @param name the name of the award emoji to add + * @return an AwardEmoji instance for the added award emoji + * @throws GitLabApiException if any exception occurs + */ + public AwardEmoji addIssueAwardEmoji(Object projectIdOrPath, Integer issueIid, String name) throws GitLabApiException { + GitLabApiForm form = new GitLabApiForm().withParam("name", name, true); + Response response = post(Response.Status.CREATED, form.asMap(), + "projects", getProjectIdOrPath(projectIdOrPath), "issues", issueIid, "award_emoji"); + return (response.readEntity(AwardEmoji.class)); + } + + /** + * Add an award emoji to the specified merge request. + * + *
GitLab Endpoint: POST /projects/:id/merge_requests/:merge_request_iid/award_emoji
+ * + * @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path + * @param mergeRequestIid the merge request IID to add the award emoji to + * @param name the name of the award emoji to add + * @return an AwardEmoji instance for the added award emoji + * @throws GitLabApiException if any exception occurs + */ + public AwardEmoji addMergeRequestAwardEmoji(Object projectIdOrPath, Integer mergeRequestIid, String name) throws GitLabApiException { + GitLabApiForm form = new GitLabApiForm().withParam("name", name, true); + Response response = post(Response.Status.CREATED, form.asMap(), + "projects", getProjectIdOrPath(projectIdOrPath), "merge_requests", mergeRequestIid, "award_emoji"); + return (response.readEntity(AwardEmoji.class)); + } + + /** + * Add an award emoji to the specified snippet. + * + *
GitLab Endpoint: POST /projects/:id/snippets/:snippet_id/award_emoji
+ * + * @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path + * @param snippetId the snippet ID to add the award emoji to + * @param name the name of the award emoji to add + * @return an AwardEmoji instance for the added award emoji + * @throws GitLabApiException if any exception occurs + */ + public AwardEmoji addSnippetAwardEmoji(Object projectIdOrPath, Integer snippetId, String name) throws GitLabApiException { + GitLabApiForm form = new GitLabApiForm().withParam("name", name, true); + Response response = post(Response.Status.CREATED, form.asMap(), + "projects", getProjectIdOrPath(projectIdOrPath), "snippets", snippetId, "award_emoji"); + return (response.readEntity(AwardEmoji.class)); + } + + /** + * Add an award emoji for the specified note. + * + *
GitLab Endpoint: POST /projects/:id/issues/:issue_iid/notes/:noteId/award_emoji
+ * + * @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path + * @param issueIid the issue IID of the issue that owns the note + * @param noteId the note ID to add the award emoji to + * @param name the name of the award emoji to add + * @return an AwardEmoji instance for the added award emoji + * @throws GitLabApiException if any exception occurs + */ + public AwardEmoji addNoteAwardEmoji(Object projectIdOrPath, Integer issueIid, Integer noteId, String name) throws GitLabApiException { + GitLabApiForm form = new GitLabApiForm().withParam("name", name, true); + Response response = post(Response.Status.CREATED, form.asMap(), + "projects", getProjectIdOrPath(projectIdOrPath), "issues", issueIid, "notes", noteId, "award_emoji"); + return (response.readEntity(AwardEmoji.class)); + } + + /** + * Delete an award emoji from the specified issue. + * + *
GitLab Endpoint: DELETE /projects/:id/issues/:issue_iid/award_emoji/:award_id
+ * + * @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path + * @param issueIid the issue IID to delete the award emoji from + * @param awardId the ID of the award emoji to delete + * @throws GitLabApiException if any exception occurs + */ + public void deleteIssueAwardEmoji(Object projectIdOrPath, Integer issueIid, Integer awardId) throws GitLabApiException { + delete(Response.Status.NO_CONTENT, null, + "projects", getProjectIdOrPath(projectIdOrPath), "issues", issueIid, "award_emoji", awardId); + } + + /** + * Delete an award emoji from the specified merge request. + * + *
GitLab Endpoint: DELETE /projects/:id/merge_requests/:merge_request_iid/award_emoji/:award_id
+ * + * @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path + * @param mergeRequestIid the merge request IID to delete the award emoji from + * @param awardId the ID of the award emoji to delete + * @throws GitLabApiException if any exception occurs + */ + public void deleteMergeRequestAwardEmoji(Object projectIdOrPath, Integer mergeRequestIid, Integer awardId) throws GitLabApiException { + delete(Response.Status.NO_CONTENT, null, + "projects", getProjectIdOrPath(projectIdOrPath), "merge_requests", mergeRequestIid, "award_emoji", awardId); + } + + /** + * Delete an award emoji from the specified snippet. + * + *
GitLab Endpoint: DELETE /projects/:id/snippets/:snippet_id/award_emoji/:award_id
+ * + * @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path + * @param snippetId the snippet ID to delete the award emoji from + * @param awardId the ID of the award emoji to delete + * @throws GitLabApiException if any exception occurs + */ + public void deleteSnippetAwardEmoji(Object projectIdOrPath, Integer snippetId, Integer awardId) throws GitLabApiException { + delete(Response.Status.NO_CONTENT, null, + "projects", getProjectIdOrPath(projectIdOrPath), "snippets", snippetId, "award_emoji", awardId); + } + + /** + * Delete an award emoji from the specified note. + * + *
GitLab Endpoint: DELETE /projects/:id/issues/:issue_iid/notes/:note_id/award_emoji/:award_id
+ * + * @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path + * @param issueIid the issue IID that owns the note + * @param noteId the note ID of the note to delete the award emoji from + * @param awardId the ID of the award emoji to delete + * @throws GitLabApiException if any exception occurs + */ + public void deleteNoteAwardEmoji(Object projectIdOrPath, Integer issueIid, Integer noteId, Integer awardId) throws GitLabApiException { + delete(Response.Status.NO_CONTENT, null, + "projects", getProjectIdOrPath(projectIdOrPath), "issues", issueIid, "notes", noteId, "award_emoji", awardId); + } +} diff --git a/src/main/java/org/gitlab4j/api/GitLabApi.java b/src/main/java/org/gitlab4j/api/GitLabApi.java index c142a13f2..953c4ca87 100644 --- a/src/main/java/org/gitlab4j/api/GitLabApi.java +++ b/src/main/java/org/gitlab4j/api/GitLabApi.java @@ -48,6 +48,7 @@ public String getApiNamespace() { private int defaultPerPage = DEFAULT_PER_PAGE; private Session session; + private AwardEmojiApi awardEmojiApi; private CommitsApi commitsApi; private DeployKeysApi deployKeysApi; private EpicsApi epicsApi; @@ -809,6 +810,25 @@ class VersionApi extends AbstractApi { return (response.readEntity(Version.class)); } + /** + * Gets the AwardEmojiApi instance owned by this GitLabApi instance. The AwardEmojiApi is used + * to perform all award emoji related API calls. + * + * @return the AwardEmojiApi instance owned by this GitLabApi instance + */ + public AwardEmojiApi getAwardEmojiApi() { + + if (awardEmojiApi == null) { + synchronized (this) { + if (awardEmojiApi == null) { + awardEmojiApi = new AwardEmojiApi(this); + } + } + } + + return (awardEmojiApi); + } + /** * Gets the CommitsApi instance owned by this GitLabApi instance. The CommitsApi is used * to perform all commit related API calls. diff --git a/src/main/java/org/gitlab4j/api/models/AwardEmoji.java b/src/main/java/org/gitlab4j/api/models/AwardEmoji.java new file mode 100644 index 000000000..b1c4a391d --- /dev/null +++ b/src/main/java/org/gitlab4j/api/models/AwardEmoji.java @@ -0,0 +1,103 @@ + +package org.gitlab4j.api.models; + +import java.util.Date; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlRootElement; + +import org.gitlab4j.api.utils.JacksonJsonEnumHelper; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; + +@XmlRootElement +@XmlAccessorType(XmlAccessType.FIELD) +public class AwardEmoji { + + public enum AwardableType { + ISSUE, MERGE_REQUEST, NOTE, SNIPPET; + + private static JacksonJsonEnumHelper enumHelper = new JacksonJsonEnumHelper<>(AwardableType.class, true); + + @JsonCreator + public static AwardableType forValue(String value) { + return enumHelper.forValue(value); + } + + @JsonValue + public String toValue() { + return (enumHelper.toString(this)); + } + + @Override + public String toString() { + return (enumHelper.toString(this)); + } + } + + private Integer id; + private String name; + private User user; + private Date createdAt; + private Date updatedAt; + private Integer awardableId; + private AwardableType awardableType; + + public Integer getId() { + return this.id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public User getUser() { + return user; + } + + public void setUser(User user) { + this.user = user; + } + + public Date getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(Date createdAt) { + this.createdAt = createdAt; + } + + public Date getUpdatedAt() { + return updatedAt; + } + + public void setUpdatedAt(Date updatedAt) { + this.updatedAt = updatedAt; + } + + public Integer getAwardableId() { + return awardableId; + } + + public void setAwardableId(Integer awardableId) { + this.awardableId = awardableId; + } + + public AwardableType getAwardableType() { + return awardableType; + } + + public void setAwardableType(AwardableType awardableType) { + this.awardableType = awardableType; + } +} diff --git a/src/test/java/org/gitlab4j/api/TestGitLabApiBeans.java b/src/test/java/org/gitlab4j/api/TestGitLabApiBeans.java index a5fd29936..a2bd1713a 100644 --- a/src/test/java/org/gitlab4j/api/TestGitLabApiBeans.java +++ b/src/test/java/org/gitlab4j/api/TestGitLabApiBeans.java @@ -31,6 +31,7 @@ import java.util.Map; import org.gitlab4j.api.models.ArtifactsFile; +import org.gitlab4j.api.models.AwardEmoji; import org.gitlab4j.api.models.Branch; import org.gitlab4j.api.models.Comment; import org.gitlab4j.api.models.Commit; @@ -102,6 +103,17 @@ public static void setup() { jacksonJson.getObjectMapper().configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true); } + @Test + public void testAwardEmoji() { + + try { + AwardEmoji awardEmoji = makeFakeApiCall(AwardEmoji.class, "award-emoji"); + assertTrue(compareJson(awardEmoji, "award-emoji")); + } catch (Exception e) { + e.printStackTrace(); + } + } + @Test public void testBranch() { diff --git a/src/test/resources/org/gitlab4j/api/award-emoji.json b/src/test/resources/org/gitlab4j/api/award-emoji.json new file mode 100644 index 000000000..e2bca86c4 --- /dev/null +++ b/src/test/resources/org/gitlab4j/api/award-emoji.json @@ -0,0 +1,16 @@ +{ + "id": 1, + "name": "microphone", + "user": { + "name": "User 4", + "username": "user4", + "id": 26, + "state": "active", + "avatar_url": "http://www.gravatar.com/avatar/7e65550957227bd38fe2d7fbc6fd2f7b?s=80&d=identicon", + "web_url": "http://gitlab.example.com/user4" + }, + "created_at": "2016-06-15T10:09:34.177Z", + "updated_at": "2016-06-15T10:09:34.177Z", + "awardable_id": 80, + "awardable_type": "Issue" +} From dcf447c2608aa60b41efcab31dbc349ad675c982 Mon Sep 17 00:00:00 2001 From: Greg Messner Date: Sat, 7 Jul 2018 16:48:17 -0700 Subject: [PATCH 2/2] Removed license header. --- .../java/org/gitlab4j/api/AwardEmojiApi.java | 23 ------------------- 1 file changed, 23 deletions(-) diff --git a/src/main/java/org/gitlab4j/api/AwardEmojiApi.java b/src/main/java/org/gitlab4j/api/AwardEmojiApi.java index b5565f84b..a38b1d7c2 100644 --- a/src/main/java/org/gitlab4j/api/AwardEmojiApi.java +++ b/src/main/java/org/gitlab4j/api/AwardEmojiApi.java @@ -1,26 +1,3 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2017 Greg Messner - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - package org.gitlab4j.api; import java.util.List;