Skip to content

Commit 6fe39a4

Browse files
authored
Add support for Epics notes (#1205)
1 parent bed8df5 commit 6fe39a4

File tree

1 file changed

+216
-0
lines changed

1 file changed

+216
-0
lines changed

Diff for: gitlab4j-api/src/main/java/org/gitlab4j/api/NotesApi.java

+216
Original file line numberDiff line numberDiff line change
@@ -534,4 +534,220 @@ public void deleteMergeRequestNote(Object projectIdOrPath, Long mergeRequestIid,
534534
"notes",
535535
noteId);
536536
}
537+
538+
/**
539+
* Get a list of the epics's notes.
540+
*
541+
* <pre><code>GitLab Endpoint: GET /groups/:id/epics/:epic_id/notes</code></pre>
542+
*
543+
* @param groupIdOrPath the group in the form of an Long(ID), String(path), or Group instance
544+
* @param epicId the epic ID (not the IID!) to get the notes for
545+
* @return a list of the epics's notes
546+
* @throws GitLabApiException if any exception occurs
547+
*/
548+
public List<Note> getEpicNotes(Object groupIdOrPath, Long epicId) throws GitLabApiException {
549+
return (getEpicNotes(groupIdOrPath, epicId, getDefaultPerPage()).all());
550+
}
551+
552+
/**
553+
* Get a list of the epic's notes using the specified page and per page settings.
554+
*
555+
* <pre><code>GitLab Endpoint: GET /groups/:id/epics/:epic_id/notes</code></pre>
556+
*
557+
* @param groupIdOrPath the group in the form of an Long(ID), String(path), or Group instance
558+
* @param epicId the epic ID (not the IID!) to get the notes for
559+
* @param page the page to get
560+
* @param perPage the number of notes per page
561+
* @return the list of notes in the specified range
562+
* @throws GitLabApiException if any exception occurs
563+
*/
564+
public List<Note> getEpicNotes(Object groupIdOrPath, Long epicId, int page, int perPage) throws GitLabApiException {
565+
Response response = get(
566+
Response.Status.OK,
567+
getPageQueryParams(page, perPage),
568+
"groups",
569+
getGroupIdOrPath(groupIdOrPath),
570+
"epics",
571+
epicId,
572+
"notes");
573+
return (response.readEntity(new GenericType<List<Note>>() {}));
574+
}
575+
576+
/**
577+
* Get a Pager of epics's notes.
578+
*
579+
* <pre><code>GitLab Endpoint: GET /groups/:id/epics/:epic_id/notes</code></pre>
580+
*
581+
* @param groupIdOrPath the group in the form of an Long(ID), String(path), or Group instance
582+
* @param epicId the epic ID (not the IID!) to get the notes for
583+
* @param itemsPerPage the number of notes per page
584+
* @return the list of notes in the specified range
585+
* @throws GitLabApiException if any exception occurs
586+
*/
587+
public Pager<Note> getEpicNotes(Object groupIdOrPath, Long epicId, int itemsPerPage) throws GitLabApiException {
588+
return (new Pager<Note>(
589+
this,
590+
Note.class,
591+
itemsPerPage,
592+
null,
593+
"groups",
594+
getGroupIdOrPath(groupIdOrPath),
595+
"epics",
596+
epicId,
597+
"notes"));
598+
}
599+
600+
/**
601+
* Get a Stream of the epics's notes.
602+
*
603+
* <pre><code>GitLab Endpoint: GET /groups/:id/epics/:epic_id/notes</code></pre>
604+
*
605+
* @param groupIdOrPath the group in the form of an Long(ID), String(path), or Group instance
606+
* @param epicId the epic ID (not the IID!) to get the notes for
607+
* @return a Stream of the epics's notes
608+
* @throws GitLabApiException if any exception occurs
609+
*/
610+
public Stream<Note> getEpicNotesStream(Object groupIdOrPath, Long epicId) throws GitLabApiException {
611+
return (getEpicNotes(groupIdOrPath, epicId, getDefaultPerPage()).stream());
612+
}
613+
614+
/**
615+
* Get the specified epics's note.
616+
*
617+
* <pre><code>GitLab Endpoint: GET /groups/:id/epics/:epic_id/notes/:note_id</code></pre>
618+
*
619+
* @param groupIdOrPath the group in the form of an Long(ID), String(path), or Group instance
620+
* @param epicId the epic ID (not the IID!) to get the notes for
621+
* @param noteId the ID of the Note to get
622+
* @return a Note instance for the specified IDs
623+
* @throws GitLabApiException if any exception occurs
624+
*/
625+
public Note getEpicNote(Object groupIdOrPath, Long epicId, Long noteId) throws GitLabApiException {
626+
Response response = get(
627+
Response.Status.OK,
628+
getDefaultPerPageParam(),
629+
"groups",
630+
getGroupIdOrPath(groupIdOrPath),
631+
"epics",
632+
epicId,
633+
"notes",
634+
noteId);
635+
return (response.readEntity(Note.class));
636+
}
637+
638+
/**
639+
* Create a epics's note.
640+
*
641+
* <pre><code>GitLab Endpoint: POST /groups/:id/epics/:epic_id/notes/:note_id</code></pre>
642+
*
643+
* @param groupIdOrPath the group in the form of an Long(ID), String(path), or Group instance @param groupIdOrPath the group ID to create the epics for
644+
* @param epicId the epic ID (not the IID!) to create the notes for
645+
* @param body the content of note
646+
* @return the created Note instance
647+
* @throws GitLabApiException if any exception occurs
648+
*/
649+
public Note createEpicNote(Object groupIdOrPath, Long epicId, String body) throws GitLabApiException {
650+
return (createEpicNote(groupIdOrPath, epicId, body, null, null));
651+
}
652+
653+
/**
654+
* Create a epics's note.
655+
*
656+
* <pre><code>GitLab Endpoint: POST /groups/:id/epics/:epic_id/notes/:note_id</code></pre>
657+
*
658+
* @param groupIdOrPath the group in the form of an Long(ID), String(path), or Group instance
659+
* @param epicId the epic ID (not the IID!) to create the notes for
660+
* @param body the content of note
661+
* @param createdAt the created time of note
662+
* @return the created Note instance
663+
* @throws GitLabApiException if any exception occurs
664+
*/
665+
public Note createEpicNote(Object groupIdOrPath, Long epicId, String body, Date createdAt)
666+
throws GitLabApiException {
667+
return (createEpicNote(groupIdOrPath, epicId, body, null, null));
668+
}
669+
670+
/**
671+
* Create a epics's note.
672+
*
673+
* <pre><code>GitLab Endpoint: POST /groups/:id/epics/:epic_id/notes/:note_id</code></pre>
674+
*
675+
* @param groupIdOrPath the group in the form of an Long(ID), String(path), or Group instance
676+
* @param epicId the epic ID (not the IID!) to create the notes for
677+
* @param body the content of note
678+
* @param createdAt the created time of note
679+
* @param internal whether the note shall be marked 'internal'
680+
* @return the created Note instance
681+
* @throws GitLabApiException if any exception occurs
682+
*/
683+
public Note createEpicNote(Object groupIdOrPath, Long epicId, String body, Date createdAt, Boolean internal)
684+
throws GitLabApiException {
685+
686+
GitLabApiForm formData = new GitLabApiForm()
687+
.withParam("body", body, true)
688+
.withParam("created_at", createdAt)
689+
.withParam("internal", internal);
690+
;
691+
Response response = post(
692+
Response.Status.CREATED, formData, "groups", getGroupIdOrPath(groupIdOrPath), "epics", epicId, "notes");
693+
return (response.readEntity(Note.class));
694+
}
695+
696+
/**
697+
* Update the specified epics's note.
698+
*
699+
* <pre><code>GitLab Endpoint: PUT /groups/:id/epics/:epic_id/notes/:note_id</code></pre>
700+
*
701+
* @param groupIdOrPath the group in the form of an Long(ID), String(path), or Group instance
702+
* @param epicId the epic ID (not the IID!) to update the notes for
703+
* @param noteId the ID of the node to update
704+
* @param body the update content for the Note
705+
* @return the modified Note instance
706+
* @throws GitLabApiException if any exception occurs
707+
*/
708+
public Note updateEpicNote(Object groupIdOrPath, Long epicId, Long noteId, String body) throws GitLabApiException {
709+
710+
GitLabApiForm formData = new GitLabApiForm().withParam("body", body, true);
711+
Response response = put(
712+
Response.Status.OK,
713+
formData.asMap(),
714+
"groups",
715+
getGroupIdOrPath(groupIdOrPath),
716+
"epics",
717+
epicId,
718+
"notes",
719+
noteId);
720+
return (response.readEntity(Note.class));
721+
}
722+
723+
/**
724+
* Delete the specified epics's note.
725+
*
726+
* <pre><code>GitLab Endpoint: DELETE /groups/:id/epics/:epic_id/notes/:note_id</code></pre>
727+
*
728+
* @param groupIdOrPath the group in the form of an Long(ID), String(path), or Group instance
729+
* @param epicId the epic ID (not the IID!) to delete the notes for
730+
* @param noteId the ID of the node to delete
731+
* @throws GitLabApiException if any exception occurs
732+
*/
733+
public void deleteEpicNote(Object groupIdOrPath, Long epicId, Long noteId) throws GitLabApiException {
734+
735+
if (epicId == null) {
736+
throw new RuntimeException("epicId cannot be null");
737+
}
738+
739+
if (noteId == null) {
740+
throw new RuntimeException("noteId cannot be null");
741+
}
742+
743+
delete(
744+
Response.Status.NO_CONTENT,
745+
getDefaultPerPageParam(),
746+
"groups",
747+
getGroupIdOrPath(groupIdOrPath),
748+
"epics",
749+
epicId,
750+
"notes",
751+
noteId);
752+
}
537753
}

0 commit comments

Comments
 (0)