From 91cd23174ee8b2667289abd3eb77f858a36bb25a Mon Sep 17 00:00:00 2001 From: Dwouglas Mhagnum Date: Thu, 5 Feb 2026 17:16:51 -0300 Subject: [PATCH 1/2] Add the draft option to the Merge Request creation --- .tool-versions | 1 + .../api/models/MergeRequestParams.java | 20 +++++- .../api/models/TestMergeRequestParams.java | 61 +++++++++++++++++++ 3 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 .tool-versions create mode 100644 gitlab4j-models/src/test/java/org/gitlab4j/api/models/TestMergeRequestParams.java diff --git a/.tool-versions b/.tool-versions new file mode 100644 index 000000000..f3e9f95a4 --- /dev/null +++ b/.tool-versions @@ -0,0 +1 @@ +java temurin-11.0.28+6 diff --git a/gitlab4j-models/src/main/java/org/gitlab4j/api/models/MergeRequestParams.java b/gitlab4j-models/src/main/java/org/gitlab4j/api/models/MergeRequestParams.java index 5d9f93864..129effab3 100644 --- a/gitlab4j-models/src/main/java/org/gitlab4j/api/models/MergeRequestParams.java +++ b/gitlab4j-models/src/main/java/org/gitlab4j/api/models/MergeRequestParams.java @@ -29,6 +29,7 @@ public class MergeRequestParams implements Serializable { private Boolean discussionLocked; private Boolean allowCollaboration; private Integer approvalsBeforeMerge; + private Boolean draft; /** * Set the source branch. This is for merge request creation only. @@ -220,6 +221,17 @@ public MergeRequestParams withApprovalsBeforeMerge(Integer approvalsBeforeMerge) return (this); } + /** + * Set the draft flag of the merge request. + * + * @param draft the draft flag to set + * @return the reference to this MergeRequestParams instance + */ + public MergeRequestParams withDraft(Boolean draft) { + this.draft = draft; + return (this); + } + /** * Get the form params specified by this instance. * @@ -229,9 +241,15 @@ public MergeRequestParams withApprovalsBeforeMerge(Integer approvalsBeforeMerge) */ public GitLabForm getForm(boolean isCreate) { + String titleToUse = title; + if (Boolean.TRUE.equals(draft)) { + titleToUse = "Draft: " + (title != null ? title : ""); + // titleToUse = "Draft: " + title; + } + GitLabForm form = new GitLabForm() .withParam("target_branch", targetBranch, isCreate) - .withParam("title", title, isCreate) + .withParam("title", titleToUse, isCreate) .withParam("assignee_id", assigneeId) .withParam("assignee_ids", assigneeIds) .withParam("reviewer_ids", reviewerIds) diff --git a/gitlab4j-models/src/test/java/org/gitlab4j/api/models/TestMergeRequestParams.java b/gitlab4j-models/src/test/java/org/gitlab4j/api/models/TestMergeRequestParams.java new file mode 100644 index 000000000..fb7d6ac50 --- /dev/null +++ b/gitlab4j-models/src/test/java/org/gitlab4j/api/models/TestMergeRequestParams.java @@ -0,0 +1,61 @@ +package org.gitlab4j.api.models; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; + +import org.gitlab4j.models.GitLabForm; +import org.gitlab4j.models.GitLabFormValue; +import org.junit.jupiter.api.Test; + +public class TestMergeRequestParams { + + @Test + public void testDraftPrefix() { + MergeRequestParams params = + new MergeRequestParams().withTitle("My Title").withDraft(true); + + GitLabForm form = params.getForm(true); + Object titleValue = form.getFormValues().get("title").getValue(); + assertEquals("Draft: My Title", titleValue); + } + + @Test + public void testNoDraftPrefix() { + MergeRequestParams params = + new MergeRequestParams().withTitle("My Title").withDraft(false); + + GitLabForm form = params.getForm(true); + Object titleValue = form.getFormValues().get("title").getValue(); + assertEquals("My Title", titleValue); + } + + @Test + public void testNullDraftPrefix() { + MergeRequestParams params = + new MergeRequestParams().withTitle("My Title").withDraft(null); + + GitLabForm form = params.getForm(true); + Object titleValue = form.getFormValues().get("title").getValue(); + assertEquals("My Title", titleValue); + } + + @Test + public void testDraftWithNullTitle() { + MergeRequestParams params = new MergeRequestParams().withTitle(null).withDraft(true); + + GitLabForm form = params.getForm(true); + Object titleValue = form.getFormValues().get("title").getValue(); + assertEquals("Draft: ", titleValue); + } + + @Test + public void testNoDraftWithNullTitle() { + MergeRequestParams params = new MergeRequestParams().withTitle(null).withDraft(false); + + GitLabForm form = params.getForm(true); + GitLabFormValue titleFormValue = form.getFormValues().get("title"); + assertNotNull(titleFormValue); + assertNull(titleFormValue.getValue()); + } +} From 297c0ec7c5a577194b9157288429947afc71bc43 Mon Sep 17 00:00:00 2001 From: Dwouglas Mhagnum Date: Fri, 6 Feb 2026 08:30:22 -0300 Subject: [PATCH 2/2] Remove commented code --- .../main/java/org/gitlab4j/api/models/MergeRequestParams.java | 1 - 1 file changed, 1 deletion(-) diff --git a/gitlab4j-models/src/main/java/org/gitlab4j/api/models/MergeRequestParams.java b/gitlab4j-models/src/main/java/org/gitlab4j/api/models/MergeRequestParams.java index 129effab3..2bc02c1f3 100644 --- a/gitlab4j-models/src/main/java/org/gitlab4j/api/models/MergeRequestParams.java +++ b/gitlab4j-models/src/main/java/org/gitlab4j/api/models/MergeRequestParams.java @@ -244,7 +244,6 @@ public GitLabForm getForm(boolean isCreate) { String titleToUse = title; if (Boolean.TRUE.equals(draft)) { titleToUse = "Draft: " + (title != null ? title : ""); - // titleToUse = "Draft: " + title; } GitLabForm form = new GitLabForm()