diff --git a/server/src/main/java/com/objectcomputing/checkins/notifications/email/MailJetNotificationController.java b/server/src/main/java/com/objectcomputing/checkins/notifications/email/MailJetNotificationController.java index 4149041131..346fef7bae 100644 --- a/server/src/main/java/com/objectcomputing/checkins/notifications/email/MailJetNotificationController.java +++ b/server/src/main/java/com/objectcomputing/checkins/notifications/email/MailJetNotificationController.java @@ -1,6 +1,6 @@ package com.objectcomputing.checkins.notifications.email; - +import com.objectcomputing.checkins.services.memberprofile.MemberProfile; import com.objectcomputing.checkins.services.memberprofile.currentuser.CurrentUserServices; import io.micronaut.http.HttpResponse; import io.micronaut.http.annotation.Controller; @@ -10,10 +10,9 @@ import io.micronaut.security.annotation.Secured; import io.micronaut.security.rules.SecurityRule; import jakarta.inject.Named; -import reactor.core.publisher.Mono; @Controller("/services/email-notifications") -@ExecuteOn(TaskExecutors.IO) +@ExecuteOn(TaskExecutors.BLOCKING) @Secured(SecurityRule.IS_AUTHENTICATED) public class MailJetNotificationController { @@ -27,18 +26,14 @@ public MailJetNotificationController(CurrentUserServices currentUserServices, } @Post - public Mono> sendEmailReceivesStatus(String subject, String content, String... recipients) { - return Mono.fromCallable(currentUserServices::getCurrentUser) - .map(currentUser -> { - String fromName = currentUser.getFirstName() + " " + currentUser.getLastName(); - return emailSender.sendEmailReceivesStatus(fromName, currentUser.getWorkEmail(), subject, content, recipients); - }) - .map(success -> { - if(success){ - return HttpResponse.ok(); - } else { - return HttpResponse.serverError(); - } - }); + public HttpResponse sendEmailReceivesStatus(String subject, String content, String... recipients) { + MemberProfile currentUser = currentUserServices.getCurrentUser(); + String fromName = currentUser.getFirstName() + " " + currentUser.getLastName(); + boolean success = emailSender.sendEmailReceivesStatus(fromName, currentUser.getWorkEmail(), subject, content, recipients); + if(success){ + return HttpResponse.ok(); + } else { + return HttpResponse.serverError(); + } } } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/checkins/CheckInController.java b/server/src/main/java/com/objectcomputing/checkins/services/checkins/CheckInController.java index 2d8594d562..246b8193c2 100755 --- a/server/src/main/java/com/objectcomputing/checkins/services/checkins/CheckInController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/checkins/CheckInController.java @@ -1,12 +1,15 @@ package com.objectcomputing.checkins.services.checkins; -import com.objectcomputing.checkins.exceptions.NotFoundException; import com.objectcomputing.checkins.services.permissions.Permission; import com.objectcomputing.checkins.services.permissions.RequiredPermission; import io.micronaut.core.annotation.Nullable; import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpResponse; -import io.micronaut.http.annotation.*; +import io.micronaut.http.annotation.Body; +import io.micronaut.http.annotation.Controller; +import io.micronaut.http.annotation.Get; +import io.micronaut.http.annotation.Post; +import io.micronaut.http.annotation.Put; import io.micronaut.scheduling.TaskExecutors; import io.micronaut.scheduling.annotation.ExecuteOn; import io.micronaut.security.annotation.Secured; @@ -14,7 +17,6 @@ import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; -import reactor.core.publisher.Mono; import java.net.URI; import java.util.Set; @@ -41,9 +43,8 @@ public CheckInController(CheckInServices checkInServices) { */ @Get("/{?teamMemberId,pdlId,completed}") @RequiredPermission(Permission.CAN_VIEW_CHECKINS) - public Mono>> findCheckIns(@Nullable UUID teamMemberId, @Nullable UUID pdlId, @Nullable Boolean completed) { - return Mono.fromCallable(() -> checkInServices.findByFields(teamMemberId, pdlId, completed)) - .map(HttpResponse::ok); + public Set findCheckIns(@Nullable UUID teamMemberId, @Nullable UUID pdlId, @Nullable Boolean completed) { + return checkInServices.findByFields(teamMemberId, pdlId, completed); } /** @@ -52,13 +53,12 @@ public Mono>> findCheckIns(@Nullable UUID teamMemberId * @param checkIn, {@link CheckInCreateDTO} * @return {@link HttpResponse} */ - @Post @RequiredPermission(Permission.CAN_CREATE_CHECKINS) - public Mono> createCheckIn(@Body @Valid CheckInCreateDTO checkIn, HttpRequest request) { - return Mono.fromCallable(() -> checkInServices.save(new CheckIn(checkIn.getTeamMemberId(), checkIn.getPdlId(), checkIn.getCheckInDate(), checkIn.isCompleted()))) - .map(createdCheckIn -> HttpResponse.created(createdCheckIn) - .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), createdCheckIn.getId()))))); + public HttpResponse createCheckIn(@Body @Valid CheckInCreateDTO checkIn, HttpRequest request) { + CheckIn createdCheckIn = checkInServices.save(new CheckIn(checkIn.getTeamMemberId(), checkIn.getPdlId(), checkIn.getCheckInDate(), checkIn.isCompleted())); + return HttpResponse.created(createdCheckIn) + .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), createdCheckIn.getId())))); } /** @@ -69,23 +69,19 @@ public Mono> createCheckIn(@Body @Valid CheckInCreateDTO c */ @Put @RequiredPermission(Permission.CAN_UPDATE_CHECKINS) - public Mono> update(@Body @Valid @NotNull CheckIn checkIn, HttpRequest request) { - return Mono.fromCallable(() -> checkInServices.update(checkIn)) - .map(updatedCheckIn -> HttpResponse.ok(updatedCheckIn) - .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), updatedCheckIn.getId()))))); - + public HttpResponse update(@Body @Valid @NotNull CheckIn checkIn, HttpRequest request) { + CheckIn updatedCheckIn = checkInServices.update(checkIn); + return HttpResponse.ok(updatedCheckIn) + .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), updatedCheckIn.getId())))); } /** - * @param id - * @return + * @param id {@link UUID} the id of the check-in to read + * @return {@link CheckIn} the check-in */ @Get("/{id}") @RequiredPermission(Permission.CAN_VIEW_CHECKINS) - public Mono> readCheckIn(@NotNull UUID id) { - return Mono.fromCallable(() -> checkInServices.read(id)) - .switchIfEmpty(Mono.error(new NotFoundException("No checkin for UUID"))) - .map(HttpResponse::ok); - + public CheckIn readCheckIn(@NotNull UUID id) { + return checkInServices.read(id); } } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/demographics/DemographicsController.java b/server/src/main/java/com/objectcomputing/checkins/services/demographics/DemographicsController.java index 27aa49e8f2..07f6bac05d 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/demographics/DemographicsController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/demographics/DemographicsController.java @@ -3,7 +3,14 @@ import io.micronaut.core.annotation.Nullable; import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpResponse; -import io.micronaut.http.annotation.*; +import io.micronaut.http.HttpStatus; +import io.micronaut.http.annotation.Body; +import io.micronaut.http.annotation.Controller; +import io.micronaut.http.annotation.Delete; +import io.micronaut.http.annotation.Get; +import io.micronaut.http.annotation.Post; +import io.micronaut.http.annotation.Put; +import io.micronaut.http.annotation.Status; import io.micronaut.scheduling.TaskExecutors; import io.micronaut.scheduling.annotation.ExecuteOn; import io.micronaut.security.annotation.Secured; @@ -11,12 +18,10 @@ import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; -import reactor.core.publisher.Mono; import java.net.URI; import java.util.List; import java.util.UUID; -import java.util.stream.Collectors; @Controller("/services/demographics") @ExecuteOn(TaskExecutors.BLOCKING) @@ -37,38 +42,38 @@ public DemographicsController(DemographicsServices demographicsServices) { * @return {@link DemographicsResponseDTO} Returned demographic */ @Get("/{id}") - public Mono> getById(UUID id) { - return Mono.fromCallable(() -> demographicsServices.getById(id)) - .map(demographic -> HttpResponse.ok(fromEntity(demographic)) - .headers(headers -> headers.location(location(demographic.getId())))); + public HttpResponse getById(UUID id) { + Demographics demographic = demographicsServices.getById(id); + return demographic == null ? null : HttpResponse.ok(fromEntity(demographic)) + .headers(headers -> headers.location(location(demographic.getId()))); } /** * Find demographics by memberId, gender, degreeLevel, industryTenure, personOfColor, veteran, militaryTenure, militaryBranch or find all. * - * @param memberId {@link UUID} Find demographics with the given memberId - * @param gender {@link String} Find demographics with the given gender - * @param degreeLevel {@link String} Find demographics with given degree level + * @param memberId {@link UUID} Find demographics with the given memberId + * @param gender {@link String} Find demographics with the given gender + * @param degreeLevel {@link String} Find demographics with given degree level * @param industryTenure {@link Integer} Find demographics with given industry tenure - * @param personOfColor {@link Boolean} Find demographics who are persons of color - * @param veteran {@link Boolean} Find demographics for are veterans + * @param personOfColor {@link Boolean} Find demographics who are persons of color + * @param veteran {@link Boolean} Find demographics for are veterans * @param militaryTenure {@link Integer} Find demographics with given military tenure * @param militaryBranch {@link String} Find demographics with given military branch * @return {@link List } List of demographics that match the input parameters */ @Get("/{?memberId,gender,degreeLevel,industryTenure,personOfColor,veteran,militaryTenure,militaryBranch}") - public Mono>> findByValue(@Nullable UUID memberId, - @Nullable String gender, - @Nullable String degreeLevel, - @Nullable Integer industryTenure, - @Nullable Boolean personOfColor, - @Nullable Boolean veteran, - @Nullable Integer militaryTenure, - @Nullable String militaryBranch) { - return Mono.fromCallable(() -> demographicsServices.findByValues(memberId, gender, degreeLevel, industryTenure, - personOfColor, veteran, militaryTenure, militaryBranch)) - .map(demographicsEntities -> demographicsEntities.stream().map(this::fromEntity).collect(Collectors.toList())) - .map(HttpResponse::ok); + public List findByValue(@Nullable UUID memberId, + @Nullable String gender, + @Nullable String degreeLevel, + @Nullable Integer industryTenure, + @Nullable Boolean personOfColor, + @Nullable Boolean veteran, + @Nullable Integer militaryTenure, + @Nullable String militaryBranch) { + return demographicsServices.findByValues(memberId, gender, degreeLevel, industryTenure, personOfColor, veteran, militaryTenure, militaryBranch) + .stream() + .map(this::fromEntity) + .toList(); } /** @@ -78,15 +83,12 @@ public Mono>> findByValue(@Nullable U * @return {@link DemographicsResponseDTO} The created demographics */ @Post - public Mono> save(@Body @Valid DemographicsCreateDTO demographics, - HttpRequest request) { - - return Mono.fromCallable(() -> demographicsServices.saveDemographics(fromDTO(demographics))) - .map(savedDemographics -> { - DemographicsResponseDTO savedDemographicsResponse = fromEntity(savedDemographics); - return HttpResponse.created(savedDemographicsResponse) - .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), savedDemographicsResponse.getId())))); - }); + public HttpResponse save(@Body @Valid DemographicsCreateDTO demographics, + HttpRequest request) { + + Demographics savedDemographic = demographicsServices.saveDemographics(fromDTO(demographics)); + return HttpResponse.created(fromEntity(savedDemographic)) + .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), savedDemographic.getId())))); } /** @@ -96,27 +98,23 @@ public Mono> save(@Body @Valid Demographic * @return {@link DemographicsResponseDTO} The updated demographics */ @Put - public Mono> update(@Body @Valid DemographicsUpdateDTO demographics, - HttpRequest request) { - - return Mono.fromCallable(() -> demographicsServices.updateDemographics(fromDTO(demographics))) - .map(savedDemographics -> { - DemographicsResponseDTO updatedDemographics = fromEntity(savedDemographics); - return HttpResponse.ok(updatedDemographics) - .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), updatedDemographics.getId())))); - }); + public HttpResponse update(@Body @Valid DemographicsUpdateDTO demographics, + HttpRequest request) { + + Demographics savedDemographics = demographicsServices.updateDemographics(fromDTO(demographics)); + return HttpResponse.ok(fromEntity(savedDemographics)) + .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), savedDemographics.getId())))); } /** * Delete demographics. * * @param id {@link UUID} Demographics unique id - * @return */ @Delete("/{id}") - public Mono> delete(@NotNull UUID id) { - return Mono.fromRunnable(() -> demographicsServices.deleteDemographics(id)) - .thenReturn(HttpResponse.ok()); + @Status(value = HttpStatus.OK) + public void delete(@NotNull UUID id) { + demographicsServices.deleteDemographics(id); } protected URI location(UUID id) { @@ -148,5 +146,4 @@ private DemographicsResponseDTO fromEntity(Demographics entity) { dto.setVeteran(entity.getVeteran()); return dto; } - } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/email/EmailController.java b/server/src/main/java/com/objectcomputing/checkins/services/email/EmailController.java index 656c21918f..dfbf9bb6e7 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/email/EmailController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/email/EmailController.java @@ -1,13 +1,13 @@ package com.objectcomputing.checkins.services.email; -import io.micronaut.http.HttpResponse; +import io.micronaut.http.HttpStatus; import io.micronaut.http.annotation.Controller; import io.micronaut.http.annotation.Post; +import io.micronaut.http.annotation.Status; import io.micronaut.scheduling.TaskExecutors; import io.micronaut.scheduling.annotation.ExecuteOn; import io.micronaut.security.annotation.Secured; import io.micronaut.security.rules.SecurityRule; -import reactor.core.publisher.Mono; import java.util.List; @@ -23,9 +23,8 @@ public EmailController(EmailServices emailServices) { } @Post - public Mono>> sendEmail(String subject, String content, boolean html, String... recipients) { - return Mono.fromCallable(() -> emailServices.sendAndSaveEmail(subject, content, html, recipients)) - .map(HttpResponse::created); + @Status(HttpStatus.CREATED) + public List sendEmail(String subject, String content, boolean html, String... recipients) { + return emailServices.sendAndSaveEmail(subject, content, html, recipients); } - } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/employee_hours/EmployeeHoursController.java b/server/src/main/java/com/objectcomputing/checkins/services/employee_hours/EmployeeHoursController.java index ac6039bf1e..f54c72988b 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/employee_hours/EmployeeHoursController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/employee_hours/EmployeeHoursController.java @@ -2,7 +2,6 @@ import com.objectcomputing.checkins.exceptions.NotFoundException; import io.micronaut.core.annotation.Nullable; -import io.micronaut.http.HttpResponse; import io.micronaut.http.MediaType; import io.micronaut.http.annotation.Controller; import io.micronaut.http.annotation.Get; @@ -14,7 +13,6 @@ import io.micronaut.security.rules.SecurityRule; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.constraints.NotNull; -import reactor.core.publisher.Mono; import java.util.Set; import java.util.UUID; @@ -36,9 +34,8 @@ public EmployeeHoursController(EmployeeHoursServices employeeHoursServices) { * @return */ @Get("/{?employeeId}") - public Mono>> findEmployeeHours(@Nullable String employeeId) { - return Mono.fromCallable(() -> employeeHoursServices.findByFields(employeeId)) - .map(HttpResponse::ok); + public Set findEmployeeHours(@Nullable String employeeId) { + return employeeHoursServices.findByFields(employeeId); } @@ -47,15 +44,12 @@ public Mono>> findEmployeeHours(@Nullable String * @return */ @Get("/{id}") - public Mono> readEmployeeHours(@NotNull UUID id) { - return Mono.fromCallable(() -> { - EmployeeHours result = employeeHoursServices.read(id); - if (result == null) { - throw new NotFoundException("No employee hours for employee id"); - } - return result; - }).map(HttpResponse::ok); - + public EmployeeHours readEmployeeHours(@NotNull UUID id) { + EmployeeHours result = employeeHoursServices.read(id); + if (result == null) { + throw new NotFoundException("No employee hours for employee id"); + } + return result; } /** @@ -64,9 +58,7 @@ public Mono> readEmployeeHours(@NotNull UUID id) { * @{@link HttpResponse} */ @Post(uri="/upload" , consumes = MediaType.MULTIPART_FORM_DATA) - public Mono> upload(CompletedFileUpload file){ - return Mono.fromCallable(() -> employeeHoursServices.save(file)) - .map(HttpResponse::ok); + public EmployeeHoursResponseDTO upload(CompletedFileUpload file){ + return employeeHoursServices.save(file); } - } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/feedback/suggestions/FeedbackSuggestionsController.java b/server/src/main/java/com/objectcomputing/checkins/services/feedback/suggestions/FeedbackSuggestionsController.java index 2c81669e58..815f0b8964 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/feedback/suggestions/FeedbackSuggestionsController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/feedback/suggestions/FeedbackSuggestionsController.java @@ -1,6 +1,5 @@ package com.objectcomputing.checkins.services.feedback.suggestions; -import io.micronaut.http.HttpResponse; import io.micronaut.http.annotation.Controller; import io.micronaut.http.annotation.Get; import io.micronaut.scheduling.TaskExecutors; @@ -8,7 +7,6 @@ import io.micronaut.security.annotation.Secured; import io.micronaut.security.rules.SecurityRule; import io.swagger.v3.oas.annotations.tags.Tag; -import reactor.core.publisher.Mono; import java.util.List; import java.util.UUID; @@ -26,8 +24,7 @@ public FeedbackSuggestionsController(FeedbackSuggestionsService suggestionsServi } @Get("/{id}") - public Mono>> getSuggestionsByProfileId(UUID id) { - return Mono.fromCallable(() -> suggestionsService.getSuggestionsByProfileId(id)) - .map(HttpResponse::ok); + public List getSuggestionsByProfileId(UUID id) { + return suggestionsService.getSuggestionsByProfileId(id); } } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/feedback_answer/FeedbackAnswerController.java b/server/src/main/java/com/objectcomputing/checkins/services/feedback_answer/FeedbackAnswerController.java index de8dcb0b69..6a198fe840 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/feedback_answer/FeedbackAnswerController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/feedback_answer/FeedbackAnswerController.java @@ -4,19 +4,21 @@ import com.objectcomputing.checkins.services.permissions.RequiredPermission; import io.micronaut.core.annotation.Nullable; import io.micronaut.http.HttpResponse; -import io.micronaut.http.annotation.*; +import io.micronaut.http.annotation.Body; +import io.micronaut.http.annotation.Controller; +import io.micronaut.http.annotation.Get; +import io.micronaut.http.annotation.Post; +import io.micronaut.http.annotation.Put; import io.micronaut.scheduling.TaskExecutors; import io.micronaut.scheduling.annotation.ExecuteOn; import io.micronaut.security.annotation.Secured; import io.micronaut.security.rules.SecurityRule; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; -import reactor.core.publisher.Mono; import java.net.URI; import java.util.List; import java.util.UUID; -import java.util.stream.Collectors; @Controller("/services/feedback/answers") @ExecuteOn(TaskExecutors.BLOCKING) @@ -36,10 +38,10 @@ public FeedbackAnswerController(FeedbackAnswerServices feedbackAnswerServices) { * @return {@link FeedbackAnswerResponseDTO} */ @Post - public Mono> save(@Body @Valid @NotNull FeedbackAnswerCreateDTO requestBody) { - return Mono.fromCallable(() -> feedbackAnswerServices.save(fromDTO(requestBody))) - .map(savedAnswer -> HttpResponse.created(fromEntity(savedAnswer)) - .headers(headers -> headers.location(URI.create("/feedback_answer/" + savedAnswer.getId())))); + public HttpResponse save(@Body @Valid @NotNull FeedbackAnswerCreateDTO requestBody) { + FeedbackAnswer savedAnswer = feedbackAnswerServices.save(fromDTO(requestBody)); + return HttpResponse.created(fromEntity(savedAnswer)) + .headers(headers -> headers.location(URI.create("/feedback_answer/" + savedAnswer.getId()))); } /** @@ -49,10 +51,10 @@ public Mono> save(@Body @Valid @NotNull * @return {@link FeedbackAnswerResponseDTO} */ @Put - public Mono> update(@Body @Valid @NotNull FeedbackAnswerUpdateDTO requestBody) { - return Mono.fromCallable(() -> feedbackAnswerServices.update(fromDTO(requestBody))) - .map(savedAnswer -> HttpResponse.ok(fromEntity(savedAnswer)) - .headers(headers -> headers.location(URI.create("/feedback_answer/" + savedAnswer.getId())))); + public HttpResponse update(@Body @Valid @NotNull FeedbackAnswerUpdateDTO requestBody) { + FeedbackAnswer savedAnswer = feedbackAnswerServices.update(fromDTO(requestBody)); + return HttpResponse.ok(fromEntity(savedAnswer)) + .headers(headers -> headers.location(URI.create("/feedback_answer/" + savedAnswer.getId()))); } /** @@ -61,12 +63,12 @@ public Mono> update(@Body @Valid @NotNul * @param id {@link UUID} ID of the feedback answer * @return {@link FeedbackAnswerResponseDTO} */ - @RequiredPermission(Permission.CAN_VIEW_FEEDBACK_ANSWER) @Get("/{id}") - public Mono> getById(UUID id) { - return Mono.fromCallable(() -> feedbackAnswerServices.getById(id)) - .map(savedAnswer -> HttpResponse.ok(fromEntity(savedAnswer)) - .headers(headers -> headers.location(URI.create("/feedback_answer/" + savedAnswer.getId())))); + @RequiredPermission(Permission.CAN_VIEW_FEEDBACK_ANSWER) + public HttpResponse getById(UUID id) { + FeedbackAnswer savedAnswer = feedbackAnswerServices.getById(id); + return HttpResponse.ok(fromEntity(savedAnswer)) + .headers(headers -> headers.location(URI.create("/feedback_answer/" + savedAnswer.getId()))); } /** @@ -74,15 +76,16 @@ public Mono> getById(UUID id) { * Any values that are null are not applied to the intersection * * @param questionId The attached {@link UUID} of the related question - * @param requestId The attached {@link UUID} of the request that corresponds with the answer + * @param requestId The attached {@link UUID} of the request that corresponds with the answer * @return {@link FeedbackAnswerResponseDTO} */ - @RequiredPermission(Permission.CAN_VIEW_FEEDBACK_ANSWER) @Get("/{?questionId,requestId}") - public Mono>> findByValues(@Nullable UUID questionId, @Nullable UUID requestId) { - return Mono.fromCallable(() -> feedbackAnswerServices.findByValues(questionId, requestId)) - .map(entities -> entities.stream().map(this::fromEntity).collect(Collectors.toList())) - .map(HttpResponse::ok); + @RequiredPermission(Permission.CAN_VIEW_FEEDBACK_ANSWER) + public List findByValues(@Nullable UUID questionId, @Nullable UUID requestId) { + return feedbackAnswerServices.findByValues(questionId, requestId) + .stream() + .map(this::fromEntity) + .toList(); } private FeedbackAnswer fromDTO(FeedbackAnswerCreateDTO dto) { diff --git a/server/src/main/java/com/objectcomputing/checkins/services/feedback_answer/question_and_answer/QuestionAndAnswerController.java b/server/src/main/java/com/objectcomputing/checkins/services/feedback_answer/question_and_answer/QuestionAndAnswerController.java index f997883af5..2806dc1131 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/feedback_answer/question_and_answer/QuestionAndAnswerController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/feedback_answer/question_and_answer/QuestionAndAnswerController.java @@ -1,14 +1,12 @@ package com.objectcomputing.checkins.services.feedback_answer.question_and_answer; import io.micronaut.core.annotation.Nullable; -import io.micronaut.http.HttpResponse; import io.micronaut.http.annotation.Controller; import io.micronaut.http.annotation.Get; import io.micronaut.scheduling.TaskExecutors; import io.micronaut.scheduling.annotation.ExecuteOn; import io.micronaut.security.annotation.Secured; import io.micronaut.security.rules.SecurityRule; -import reactor.core.publisher.Mono; import java.util.List; import java.util.UUID; @@ -25,14 +23,12 @@ public QuestionAndAnswerController(QuestionAndAnswerServices questionAndAnswerSe } @Get("/{?requestId,questionId}") - public Mono> getQuestionAndAnswer(@Nullable UUID requestId, @Nullable UUID questionId) { - return Mono.fromCallable(() -> questionAndAnswerServices.getQuestionAndAnswer(requestId, questionId)) - .map(HttpResponse::ok); + public QuestionAndAnswerServices.Tuple getQuestionAndAnswer(@Nullable UUID requestId, @Nullable UUID questionId) { + return questionAndAnswerServices.getQuestionAndAnswer(requestId, questionId); } @Get("/{requestId}") - public Mono>> getAllQuestionsAndAnswers(@Nullable UUID requestId) { - return Mono.fromCallable(() -> questionAndAnswerServices.getAllQuestionsAndAnswers(requestId)) - .map(HttpResponse::ok); + public List getAllQuestionsAndAnswers(@Nullable UUID requestId) { + return questionAndAnswerServices.getAllQuestionsAndAnswers(requestId); } } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/feedback_request/FeedbackRequestController.java b/server/src/main/java/com/objectcomputing/checkins/services/feedback_request/FeedbackRequestController.java index b1e1c7caa0..b691ca873c 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/feedback_request/FeedbackRequestController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/feedback_request/FeedbackRequestController.java @@ -5,7 +5,14 @@ import io.micronaut.core.annotation.Nullable; import io.micronaut.core.convert.format.Format; import io.micronaut.http.HttpResponse; -import io.micronaut.http.annotation.*; +import io.micronaut.http.HttpStatus; +import io.micronaut.http.annotation.Body; +import io.micronaut.http.annotation.Controller; +import io.micronaut.http.annotation.Delete; +import io.micronaut.http.annotation.Get; +import io.micronaut.http.annotation.Post; +import io.micronaut.http.annotation.Put; +import io.micronaut.http.annotation.Status; import io.micronaut.scheduling.TaskExecutors; import io.micronaut.scheduling.annotation.ExecuteOn; import io.micronaut.security.annotation.Secured; @@ -16,13 +23,11 @@ import jakarta.validation.constraints.NotNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import reactor.core.publisher.Mono; import java.net.URI; import java.time.LocalDate; import java.util.List; import java.util.UUID; -import java.util.stream.Collectors; @Validated @Controller("/services/feedback/requests") @@ -47,10 +52,10 @@ public FeedbackRequestController(FeedbackRequestServices feedbackReqServices) { */ @RequiredPermission(Permission.CAN_CREATE_FEEDBACK_REQUEST) @Post - public Mono> save(@Body @Valid @NotNull FeedbackRequestCreateDTO requestBody) { - return Mono.fromCallable(() -> feedbackReqServices.save(fromDTO(requestBody))) - .map(savedFeedbackRequest -> HttpResponse.created(fromEntity(savedFeedbackRequest)) - .headers(headers -> headers.location(URI.create("/feedback_request/" + savedFeedbackRequest.getId())))); + public HttpResponse save(@Body @Valid @NotNull FeedbackRequestCreateDTO requestBody) { + FeedbackRequest savedFeedbackRequest = feedbackReqServices.save(fromDTO(requestBody)); + return HttpResponse.created(fromEntity(savedFeedbackRequest)) + .headers(headers -> headers.location(URI.create("/feedback_request/" + savedFeedbackRequest.getId()))); } /** @@ -60,10 +65,10 @@ public Mono> save(@Body @Valid @NotNull * @return {@link FeedbackRequestResponseDTO} */ @Put - public Mono> update(@Body @Valid @NotNull FeedbackRequestUpdateDTO requestBody) { - return Mono.fromCallable(() -> feedbackReqServices.update(requestBody)) - .map(savedFeedback -> HttpResponse.ok(fromEntity(savedFeedback)) - .headers(headers -> headers.location(URI.create("/feedback_request/" + savedFeedback.getId())))); + public HttpResponse update(@Body @Valid @NotNull FeedbackRequestUpdateDTO requestBody) { + FeedbackRequest savedFeedback = feedbackReqServices.update(requestBody); + return HttpResponse.ok(fromEntity(savedFeedback)) + .headers(headers -> headers.location(URI.create("/feedback_request/" + savedFeedback.getId()))); } /** @@ -72,43 +77,44 @@ public Mono> update(@Body @Valid @NotNu * @param id {@link UUID} of the feedback request to be deleted * @return {@link HttpResponse} */ - @RequiredPermission(Permission.CAN_DELETE_FEEDBACK_REQUEST) @Delete("/{id}") - public Mono> delete(@NotNull UUID id) { - return Mono.fromRunnable(() -> feedbackReqServices.delete(id)) - .thenReturn(HttpResponse.ok()); + @RequiredPermission(Permission.CAN_DELETE_FEEDBACK_REQUEST) + @Status(HttpStatus.OK) + public void delete(@NotNull UUID id) { + feedbackReqServices.delete(id); } /** - * Get feedback requst by ID + * Get feedback request by ID * * @param id {@link UUID} ID of the request * @return {@link FeedbackRequestResponseDTO} */ - @RequiredPermission(Permission.CAN_VIEW_FEEDBACK_REQUEST) @Get("/{id}") - public Mono> getById(UUID id) { - return Mono.fromCallable(() -> feedbackReqServices.getById(id)) - .map(savedFeedbackRequest -> HttpResponse.ok(fromEntity(savedFeedbackRequest)) - .headers(headers -> headers.location(URI.create("/feedback_request" + savedFeedbackRequest.getId())))); + @RequiredPermission(Permission.CAN_VIEW_FEEDBACK_REQUEST) + public HttpResponse getById(UUID id) { + FeedbackRequest savedFeedbackRequest = feedbackReqServices.getById(id); + return savedFeedbackRequest == null ? HttpResponse.notFound() : HttpResponse.ok(fromEntity(savedFeedbackRequest)) + .headers(headers -> headers.location(URI.create("/feedback_request" + savedFeedbackRequest.getId()))); } /** * Search for all feedback requests that match the intersection of the provided values * Any values that are null are not applied to the intersection * - * @param creatorId The {@link UUID} of the creator of the request + * @param creatorId The {@link UUID} of the creator of the request * @param requesteeId The {@link UUID} of the requestee * @param recipientId The {@link UUID} of the recipient - * @param oldestDate The date that filters out any requests that were made before that date + * @param oldestDate The date that filters out any requests that were made before that date * @return list of {@link FeedbackRequestResponseDTO} */ @RequiredPermission(Permission.CAN_VIEW_FEEDBACK_REQUEST) @Get("/{?creatorId,requesteeId,recipientId,oldestDate,reviewPeriodId,templateId,requesteeIds}") - public Mono>> findByValues(@Nullable UUID creatorId, @Nullable UUID requesteeId, @Nullable UUID recipientId, @Nullable @Format("yyyy-MM-dd") LocalDate oldestDate, @Nullable UUID reviewPeriodId, @Nullable UUID templateId, @Nullable List requesteeIds) { - return Mono.fromCallable(() -> feedbackReqServices.findByValues(creatorId, requesteeId, recipientId, oldestDate, reviewPeriodId, templateId, requesteeIds)) - .map(entities -> entities.stream().map(this::fromEntity).collect(Collectors.toList())) - .map(HttpResponse::ok); + public List findByValues(@Nullable UUID creatorId, @Nullable UUID requesteeId, @Nullable UUID recipientId, @Nullable @Format("yyyy-MM-dd") LocalDate oldestDate, @Nullable UUID reviewPeriodId, @Nullable UUID templateId, @Nullable List requesteeIds) { + return feedbackReqServices.findByValues(creatorId, requesteeId, recipientId, oldestDate, reviewPeriodId, templateId, requesteeIds) + .stream() + .map(this::fromEntity) + .toList(); } private FeedbackRequestResponseDTO fromEntity(FeedbackRequest feedbackRequest) { @@ -139,5 +145,4 @@ private FeedbackRequest fromDTO(FeedbackRequestCreateDTO dto) { dto.getSubmitDate(), dto.getReviewPeriodId()); } - } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/feedback_template/FeedbackTemplateController.java b/server/src/main/java/com/objectcomputing/checkins/services/feedback_template/FeedbackTemplateController.java index ba17cd6669..2fe664ac02 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/feedback_template/FeedbackTemplateController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/feedback_template/FeedbackTemplateController.java @@ -2,7 +2,14 @@ import io.micronaut.core.annotation.Nullable; import io.micronaut.http.HttpResponse; -import io.micronaut.http.annotation.*; +import io.micronaut.http.HttpStatus; +import io.micronaut.http.annotation.Body; +import io.micronaut.http.annotation.Controller; +import io.micronaut.http.annotation.Delete; +import io.micronaut.http.annotation.Get; +import io.micronaut.http.annotation.Post; +import io.micronaut.http.annotation.Put; +import io.micronaut.http.annotation.Status; import io.micronaut.scheduling.TaskExecutors; import io.micronaut.scheduling.annotation.ExecuteOn; import io.micronaut.security.annotation.Secured; @@ -10,12 +17,10 @@ import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; -import reactor.core.publisher.Mono; import java.net.URI; import java.util.List; import java.util.UUID; -import java.util.stream.Collectors; @Controller("/services/feedback/templates") @ExecuteOn(TaskExecutors.BLOCKING) @@ -35,10 +40,10 @@ public FeedbackTemplateController(FeedbackTemplateServices feedbackTemplateServi * @return {@link FeedbackTemplateResponseDTO} */ @Post - public Mono> save(@Body @Valid @NotNull FeedbackTemplateCreateDTO requestBody) { - return Mono.fromCallable(() -> feedbackTemplateServices.save(fromDTO(requestBody))) - .map(savedTemplate -> HttpResponse.created(fromEntity(savedTemplate)) - .headers(headers -> headers.location(URI.create("/feedback_templates/" + savedTemplate.getId())))); + public HttpResponse save(@Body @Valid @NotNull FeedbackTemplateCreateDTO requestBody) { + FeedbackTemplate savedTemplate = feedbackTemplateServices.save(fromDTO(requestBody)); + return HttpResponse.created(fromEntity(savedTemplate)) + .headers(headers -> headers.location(URI.create("/feedback_templates/" + savedTemplate.getId()))); } /** @@ -48,33 +53,33 @@ public Mono> save(@Body @Valid @NotNul * @return {@link FeedbackTemplateResponseDTO} */ @Put - public Mono> update(@Body @Valid @NotNull FeedbackTemplateUpdateDTO requestBody) { - return Mono.fromCallable(() -> feedbackTemplateServices.update(fromDTO(requestBody))) - .map(savedTemplate -> HttpResponse.ok(fromEntity(savedTemplate)) - .headers(headers -> headers.location(URI.create("/feedback_template/" + savedTemplate.getId())))); + public HttpResponse update(@Body @Valid @NotNull FeedbackTemplateUpdateDTO requestBody) { + FeedbackTemplate savedTemplate = feedbackTemplateServices.update(fromDTO(requestBody)); + return HttpResponse.ok(fromEntity(savedTemplate)) + .headers(headers -> headers.location(URI.create("/feedback_template/" + savedTemplate.getId()))); } /** * Delete a feedback template * * @param id {@link UUID} ID of the feedback template being deleted - * @return {@link FeedbackTemplateResponseDTO} */ @Delete("/{id}") - public Mono> delete(@NotNull UUID id) { - return Mono.fromRunnable(() -> feedbackTemplateServices.delete(id)) - .thenReturn(HttpResponse.ok()); + @Status(HttpStatus.OK) + public void delete(@NotNull UUID id) { + feedbackTemplateServices.delete(id); } /** * Delete all ad-hoc feedback templates that are created by a specific member + * * @param creatorId The {@link UUID} of the creator of the ad-hoc template(s) * @return {@link FeedbackTemplateResponseDTO} */ @Delete("/creator/{creatorId}") - public Mono> deleteByCreatorId(@Nullable UUID creatorId) { - return Mono.fromCallable(() -> feedbackTemplateServices.setAdHocInactiveByCreator(creatorId)) - .map(success -> (HttpResponse) HttpResponse.ok()); + @Status(HttpStatus.OK) + public void deleteByCreatorId(@Nullable UUID creatorId) { + feedbackTemplateServices.setAdHocInactiveByCreator(creatorId); } /** @@ -84,27 +89,29 @@ public Mono> deleteByCreatorId(@Nullable UUID creatorI * @return {@link FeedbackTemplateResponseDTO} */ @Get("/{id}") - public Mono> getById(UUID id) { - return Mono.fromCallable(() -> feedbackTemplateServices.getById(id)) - .map(template -> HttpResponse.ok(fromEntity(template))); + public FeedbackTemplateResponseDTO getById(UUID id) { + FeedbackTemplate byId = feedbackTemplateServices.getById(id); + return byId == null ? null : fromEntity(byId); } /** * Get feedback templates by title or by the creator id, filter by active status * - * @param title {@link String} Title of feedback template + * @param title {@link String} Title of feedback template * @param creatorId {@link UUID} UUID of creator * @return {@link List} List of feedback templates that match the input parameters */ @Get("/{?creatorId,title}") - public Mono>> findByValues(@Nullable UUID creatorId, @Nullable String title) { - return Mono.fromCallable(() -> feedbackTemplateServices.findByFields(creatorId, title)) - .map(entities -> entities.stream().map(this::fromEntity).collect(Collectors.toList())) - .map(HttpResponse::ok); + public List findByValues(@Nullable UUID creatorId, @Nullable String title) { + return feedbackTemplateServices.findByFields(creatorId, title) + .stream() + .map(this::fromEntity) + .toList(); } /** * Converts a {@link FeedbackTemplateCreateDTO} into a {@link FeedbackTemplate} + * * @param dto {@link FeedbackTemplateCreateDTO} * @return {@link FeedbackTemplate} */ @@ -114,6 +121,7 @@ private FeedbackTemplate fromDTO(FeedbackTemplateCreateDTO dto) { /** * Converts a {@link FeedbackTemplateUpdateDTO} into a {@link FeedbackTemplate} + * * @param dto {@link FeedbackTemplateUpdateDTO} * @return {@link FeedbackTemplate} */ @@ -123,6 +131,7 @@ private FeedbackTemplate fromDTO(FeedbackTemplateUpdateDTO dto) { /** * Converts a {@link FeedbackTemplate} into a {@link FeedbackTemplateResponseDTO} + * * @param feedbackTemplate {@link FeedbackTemplate} * @return {@link FeedbackTemplateResponseDTO} */ @@ -138,5 +147,4 @@ private FeedbackTemplateResponseDTO fromEntity(FeedbackTemplate feedbackTemplate dto.setIsAdHoc(feedbackTemplate.getIsAdHoc()); return dto; } - } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/feedback_template/template_question/TemplateQuestionController.java b/server/src/main/java/com/objectcomputing/checkins/services/feedback_template/template_question/TemplateQuestionController.java index 3746322b1b..872fadc23b 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/feedback_template/template_question/TemplateQuestionController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/feedback_template/template_question/TemplateQuestionController.java @@ -2,7 +2,14 @@ import io.micronaut.core.annotation.Nullable; import io.micronaut.http.HttpResponse; -import io.micronaut.http.annotation.*; +import io.micronaut.http.HttpStatus; +import io.micronaut.http.annotation.Body; +import io.micronaut.http.annotation.Controller; +import io.micronaut.http.annotation.Delete; +import io.micronaut.http.annotation.Get; +import io.micronaut.http.annotation.Post; +import io.micronaut.http.annotation.Put; +import io.micronaut.http.annotation.Status; import io.micronaut.scheduling.TaskExecutors; import io.micronaut.scheduling.annotation.ExecuteOn; import io.micronaut.security.annotation.Secured; @@ -11,12 +18,10 @@ import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; -import reactor.core.publisher.Mono; import java.net.URI; import java.util.List; import java.util.UUID; -import java.util.stream.Collectors; @Controller("/services/feedback/template_questions") @ExecuteOn(TaskExecutors.BLOCKING) @@ -38,10 +43,10 @@ public TemplateQuestionController(TemplateQuestionServices templateQuestionServi * @return {@link TemplateQuestionResponseDTO} */ @Post - public Mono> save(@Body @Valid @NotNull TemplateQuestionCreateDTO requestBody) { - return Mono.fromCallable(() -> templateQuestionServices.save(fromDTO(requestBody))) - .map(savedFeedbackQuestion -> HttpResponse.created(fromEntity(savedFeedbackQuestion)) - .headers(headers -> headers.location(URI.create("/template_questions/" + savedFeedbackQuestion.getId())))); + public HttpResponse save(@Body @Valid @NotNull TemplateQuestionCreateDTO requestBody) { + TemplateQuestion savedFeedbackQuestion = templateQuestionServices.save(fromDTO(requestBody)); + return HttpResponse.created(fromEntity(savedFeedbackQuestion)) + .headers(headers -> headers.location(URI.create("/template_questions/" + savedFeedbackQuestion.getId()))); } /** @@ -51,10 +56,10 @@ public Mono> save(@Body @Valid @NotNul * @return {@link TemplateQuestionResponseDTO} */ @Put - public Mono> update(@Body @Valid @NotNull TemplateQuestionUpdateDTO requestBody) { - return Mono.fromCallable(() -> templateQuestionServices.update(fromDTO(requestBody))) - .map(savedFeedbackTemplateQ -> HttpResponse.ok(fromEntity(savedFeedbackTemplateQ)) - .headers(headers -> headers.location(URI.create("/template_questions/" + savedFeedbackTemplateQ.getId())))); + public HttpResponse update(@Body @Valid @NotNull TemplateQuestionUpdateDTO requestBody) { + TemplateQuestion savedFeedbackTemplateQ = templateQuestionServices.update(fromDTO(requestBody)); + return HttpResponse.ok(fromEntity(savedFeedbackTemplateQ)) + .headers(headers -> headers.location(URI.create("/template_questions/" + savedFeedbackTemplateQ.getId()))); } /** @@ -64,9 +69,9 @@ public Mono> update(@Body @Valid @NotN * @return {Boolean} */ @Delete("/{id}") - public Mono> deleteTemplateQuestion(@NotNull UUID id) { - return Mono.fromRunnable(() -> templateQuestionServices.delete(id)) - .thenReturn(HttpResponse.ok()); + @Status(HttpStatus.OK) + public void deleteTemplateQuestion(@NotNull UUID id) { + templateQuestionServices.delete(id); } /** @@ -76,10 +81,10 @@ public Mono> deleteTemplateQuestion(@NotNull UUID id) { * @return {@link TemplateQuestionResponseDTO} */ @Get("/{id}") - public Mono> getById(UUID id) { - return Mono.fromCallable(() -> templateQuestionServices.getById(id)) - .map(feedbackQuestion -> HttpResponse.ok(fromEntity(feedbackQuestion)) - .headers(headers -> headers.location(URI.create("/template_questions/" + feedbackQuestion.getId())))); + public HttpResponse getById(UUID id) { + TemplateQuestion feedbackQuestion = templateQuestionServices.getById(id); + return feedbackQuestion == null ? HttpResponse.notFound() : HttpResponse.ok(fromEntity(feedbackQuestion)) + .headers(headers -> headers.location(URI.create("/template_questions/" + feedbackQuestion.getId()))); } /** @@ -89,14 +94,15 @@ public Mono> getById(UUID id) { * @return list of {@link TemplateQuestionResponseDTO} */ @Get("/{?templateId}") - public Mono>> findByValues(@Nullable UUID templateId) { - return Mono.fromCallable(() -> templateQuestionServices.findByFields(templateId)) - .map(entities -> entities.stream().map(this::fromEntity).collect(Collectors.toList())) - .map(HttpResponse::ok); + public List findByValues(@Nullable UUID templateId) { + return templateQuestionServices.findByFields(templateId) + .stream() + .map(this::fromEntity).toList(); } /** * Converts a {@link TemplateQuestionCreateDTO} into a {@link TemplateQuestion} + * * @param dto {@link TemplateQuestionCreateDTO} * @return {@link TemplateQuestion} */ @@ -106,6 +112,7 @@ private TemplateQuestion fromDTO(TemplateQuestionCreateDTO dto) { /** * Converts a {@link TemplateQuestionUpdateDTO} into a {@link TemplateQuestion} + * * @param dto {@link TemplateQuestionUpdateDTO} * @return {@link TemplateQuestion} */ @@ -115,6 +122,7 @@ private TemplateQuestion fromDTO(TemplateQuestionUpdateDTO dto) { /** * Converts a {@link TemplateQuestion} into a {@link TemplateQuestionResponseDTO} + * * @param templateQuestion {@link TemplateQuestion} * @return {@link TemplateQuestionResponseDTO} */ diff --git a/server/src/main/java/com/objectcomputing/checkins/services/file/FileController.java b/server/src/main/java/com/objectcomputing/checkins/services/file/FileController.java index 2797201e6e..54f42a46ee 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/file/FileController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/file/FileController.java @@ -3,9 +3,14 @@ import io.micronaut.core.annotation.Nullable; import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpResponse; +import io.micronaut.http.HttpStatus; import io.micronaut.http.MediaType; +import io.micronaut.http.annotation.Controller; +import io.micronaut.http.annotation.Delete; import io.micronaut.http.annotation.Error; -import io.micronaut.http.annotation.*; +import io.micronaut.http.annotation.Get; +import io.micronaut.http.annotation.Post; +import io.micronaut.http.annotation.Status; import io.micronaut.http.hateoas.JsonError; import io.micronaut.http.hateoas.Link; import io.micronaut.http.multipart.CompletedFileUpload; @@ -16,7 +21,6 @@ import io.micronaut.validation.Validated; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.constraints.NotNull; -import reactor.core.publisher.Mono; import java.io.File; import java.util.Set; @@ -51,9 +55,8 @@ public HttpResponse handleBadArgs(HttpRequest request, FileRetrievalExcept * @return {@link HttpResponse>} Returns a set of FileInfoDTO associated with CheckInId or all files */ @Get("{?id}") - public Mono>> findDocuments(@Nullable UUID id) { - return Mono.fromCallable(() -> fileServices.findFiles(id)) - .map(HttpResponse::ok); + public Set findDocuments(@Nullable UUID id) { + return fileServices.findFiles(id); } /** @@ -63,9 +66,8 @@ public Mono>> findDocuments(@Nullable UUID id) { * @return {@link HttpResponse} Returns file */ @Get("/{uploadDocId}/download") - public Mono> downloadDocument(@NotNull String uploadDocId) { - return Mono.fromCallable(() -> fileServices.downloadFiles(uploadDocId)) - .map(HttpResponse::ok); + public File downloadDocument(@NotNull String uploadDocId) { + return fileServices.downloadFiles(uploadDocId); } /** @@ -75,9 +77,9 @@ public Mono> downloadDocument(@NotNull String uploadDocId) { * @return {@link HttpResponse} Returns metadata of document uploaded to Google Drive */ @Post(uri = "/{checkInId}", consumes = MediaType.MULTIPART_FORM_DATA) - public Mono> upload(@NotNull UUID checkInId, CompletedFileUpload file) { - return Mono.fromCallable(() -> fileServices.uploadFile(checkInId, file)) - .map(HttpResponse::created); + @Status(HttpStatus.CREATED) + public FileInfoDTO upload(@NotNull UUID checkInId, CompletedFileUpload file) { + return fileServices.uploadFile(checkInId, file); } /** @@ -87,8 +89,7 @@ public Mono> upload(@NotNull UUID checkInId, Completed * @return HttpResponse */ @Delete("/{uploadDocId}") - public Mono> delete(@NotNull String uploadDocId) { - return Mono.fromCallable(() -> fileServices.deleteFile(uploadDocId)) - .map(successFlag -> HttpResponse.ok()); + public boolean delete(@NotNull String uploadDocId) { + return fileServices.deleteFile(uploadDocId); } } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/guild/GuildController.java b/server/src/main/java/com/objectcomputing/checkins/services/guild/GuildController.java index 4cb0aa61fb..ec0d0666d4 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/guild/GuildController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/guild/GuildController.java @@ -1,12 +1,17 @@ package com.objectcomputing.checkins.services.guild; -import com.objectcomputing.checkins.services.guild.member.GuildMemberResponseDTO; -import com.objectcomputing.checkins.services.memberprofile.MemberProfile; import com.objectcomputing.checkins.services.memberprofile.MemberProfileServices; import io.micronaut.core.annotation.Nullable; import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpResponse; -import io.micronaut.http.annotation.*; +import io.micronaut.http.HttpStatus; +import io.micronaut.http.annotation.Body; +import io.micronaut.http.annotation.Controller; +import io.micronaut.http.annotation.Delete; +import io.micronaut.http.annotation.Get; +import io.micronaut.http.annotation.Post; +import io.micronaut.http.annotation.Put; +import io.micronaut.http.annotation.Status; import io.micronaut.scheduling.TaskExecutors; import io.micronaut.scheduling.annotation.ExecuteOn; import io.micronaut.security.annotation.Secured; @@ -14,10 +19,8 @@ import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; -import reactor.core.publisher.Mono; import java.net.URI; -import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.UUID; @@ -43,10 +46,10 @@ public GuildController(GuildServices guildService, MemberProfileServices profile * @return {@link HttpResponse} */ @Post - public Mono> createAGuild(@Body @Valid GuildCreateDTO guild, HttpRequest request) { - return Mono.fromCallable(() -> guildService.save(guild)) - .map(createdGuild -> HttpResponse.created(createdGuild) - .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), createdGuild.getId()))))); + public HttpResponse createAGuild(@Body @Valid GuildCreateDTO guild, HttpRequest request) { + GuildResponseDTO createdGuild = guildService.save(guild); + return HttpResponse.created(createdGuild) + .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), createdGuild.getId())))); } /** @@ -55,11 +58,9 @@ public Mono> createAGuild(@Body @Valid GuildCreat * @param id of guild * @return {@link GuildResponseDTO guild matching id} */ - @Get("/{id}") - public Mono> readGuild(@NotNull UUID id) { - return Mono.fromCallable(() -> guildService.read(id)) - .map(HttpResponse::ok); + public GuildResponseDTO readGuild(@NotNull UUID id) { + return guildService.read(id); } /** @@ -70,11 +71,9 @@ public Mono> readGuild(@NotNull UUID id) { * @return {@link List < GuildResponseDTO > list of guilds}, return all guilds when no parameters filled in else * return all guilds that match the filled in params */ - @Get("/{?name,memberid}") - public Mono>> findGuilds(@Nullable String name, @Nullable UUID memberId) { - return Mono.fromCallable(() -> guildService.findByFields(name, memberId)) - .map(HttpResponse::ok); + public Set findGuilds(@Nullable String name, @Nullable UUID memberId) { + return guildService.findByFields(name, memberId); } /** @@ -84,10 +83,10 @@ public Mono>> findGuilds(@Nullable String nam * @return {@link HttpResponse} */ @Put - public Mono> update(@Body @Valid GuildUpdateDTO guild, HttpRequest request) { - return Mono.fromCallable(() -> guildService.update(guild)) - .map(updated -> HttpResponse.ok(updated) - .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getUri(), guild.getId()))))); + public HttpResponse update(@Body @Valid GuildUpdateDTO guild, HttpRequest request) { + GuildResponseDTO updated = guildService.update(guild); + return HttpResponse.ok(updated) + .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getUri(), guild.getId())))); } @@ -95,12 +94,10 @@ public Mono> update(@Body @Valid GuildUpdateDTO g * Delete Guild * * @param id, id of {@link GuildUpdateDTO} to delete - * @return http ok response */ @Delete("/{id}") - public Mono> deleteGuild(@NotNull UUID id) { - return Mono.fromCallable(() -> guildService.delete(id)) - .map(success -> HttpResponse.ok()); + @Status(HttpStatus.OK) + public void deleteGuild(@NotNull UUID id) { + guildService.delete(id); } - } \ No newline at end of file diff --git a/server/src/main/java/com/objectcomputing/checkins/services/member_skill/MemberSkillController.java b/server/src/main/java/com/objectcomputing/checkins/services/member_skill/MemberSkillController.java index 9c81174fe9..fbd76f7558 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/member_skill/MemberSkillController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/member_skill/MemberSkillController.java @@ -4,7 +4,14 @@ import io.micronaut.core.annotation.Nullable; import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpResponse; -import io.micronaut.http.annotation.*; +import io.micronaut.http.HttpStatus; +import io.micronaut.http.annotation.Body; +import io.micronaut.http.annotation.Controller; +import io.micronaut.http.annotation.Delete; +import io.micronaut.http.annotation.Get; +import io.micronaut.http.annotation.Post; +import io.micronaut.http.annotation.Put; +import io.micronaut.http.annotation.Status; import io.micronaut.scheduling.TaskExecutors; import io.micronaut.scheduling.annotation.ExecuteOn; import io.micronaut.security.annotation.Secured; @@ -12,7 +19,6 @@ import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; -import reactor.core.publisher.Mono; import java.net.URI; import java.util.Set; @@ -37,12 +43,12 @@ public MemberSkillController(MemberSkillServices memberSkillServices) { * @return {@link HttpResponse< MemberSkill >} */ @Post - public Mono> createAMemberSkill(@Body @Valid @NotNull MemberSkillCreateDTO memberSkill, HttpRequest request) { - return Mono.fromCallable(() -> memberSkillsService.save(new MemberSkill(memberSkill.getMemberid(), - memberSkill.getSkillid(), memberSkill.getSkilllevel(), memberSkill.getLastuseddate()))) - .map(createdMemberSkill -> HttpResponse.created(createdMemberSkill) - .headers(headers -> headers.location( - URI.create(String.format("%s/%s", request.getPath(), createdMemberSkill.getId()))))); + public HttpResponse createAMemberSkill(@Body @Valid @NotNull MemberSkillCreateDTO memberSkill, HttpRequest request) { + MemberSkill createdMemberSkill = memberSkillsService.save( + new MemberSkill(memberSkill.getMemberid(), memberSkill.getSkillid(), memberSkill.getSkilllevel(), memberSkill.getLastuseddate()) + ); + return HttpResponse.created(createdMemberSkill) + .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), createdMemberSkill.getId())))); } /** @@ -51,9 +57,9 @@ public Mono> createAMemberSkill(@Body @Valid @NotNull * @param id, id of {@link MemberSkill} to delete */ @Delete("/{id}") - public Mono> deleteMemberSkill(@NotNull UUID id) { - return Mono.fromRunnable(() -> memberSkillsService.delete(id)) - .thenReturn(HttpResponse.ok()); + @Status(HttpStatus.OK) + public void deleteMemberSkill(@NotNull UUID id) { + memberSkillsService.delete(id); } /** @@ -63,14 +69,12 @@ public Mono> deleteMemberSkill(@NotNull UUID id) { * @return {@link MemberSkill} */ @Get("/{id}") - public Mono> readMemberSkill(@NotNull UUID id) { - return Mono.fromCallable(() -> { - MemberSkill result = memberSkillsService.read(id); - if (result == null) { - throw new NotFoundException("No member skill for UUID"); - } - return result; - }).map(HttpResponse::ok); + public MemberSkill readMemberSkill(@NotNull UUID id) { + MemberSkill result = memberSkillsService.read(id); + if (result == null) { + throw new NotFoundException("No member skill for UUID"); + } + return result; } /** @@ -81,12 +85,10 @@ public Mono> readMemberSkill(@NotNull UUID id) { * @return set of Member Skills */ @Get("/{?memberid,skillid}") - public Mono>> findMemberSkills(@Nullable UUID memberid, @Nullable UUID skillid) { - return Mono.fromCallable(() -> memberSkillsService.findByFields(memberid, skillid)) - .map(HttpResponse::ok); + public Set findMemberSkills(@Nullable UUID memberid, @Nullable UUID skillid) { + return memberSkillsService.findByFields(memberid, skillid); } - /** * Update a MemberSkill * @@ -94,9 +96,9 @@ public Mono>> findMemberSkills(@Nullable UUID memb * @return {@link MemberSkill} */ @Put - public Mono> update(@Body @Valid MemberSkill memberSkill, HttpRequest request) { - return Mono.fromCallable(() -> memberSkillsService.update(memberSkill)) - .map(updatedMemberSkill -> HttpResponse.ok(updatedMemberSkill) - .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), updatedMemberSkill.getId()))))); + public HttpResponse update(@Body @Valid MemberSkill memberSkill, HttpRequest request) { + MemberSkill updatedMemberSkill = memberSkillsService.update(memberSkill); + return HttpResponse.ok(updatedMemberSkill) + .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), updatedMemberSkill.getId())))); } } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/member_skill/skillsreport/SkillsReportController.java b/server/src/main/java/com/objectcomputing/checkins/services/member_skill/skillsreport/SkillsReportController.java index 8fa63b1621..6a5d4ac668 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/member_skill/skillsreport/SkillsReportController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/member_skill/skillsreport/SkillsReportController.java @@ -4,7 +4,9 @@ import com.objectcomputing.checkins.services.permissions.RequiredPermission; import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpResponse; -import io.micronaut.http.annotation.*; +import io.micronaut.http.annotation.Body; +import io.micronaut.http.annotation.Controller; +import io.micronaut.http.annotation.Post; import io.micronaut.scheduling.TaskExecutors; import io.micronaut.scheduling.annotation.ExecuteOn; import io.micronaut.security.annotation.Secured; @@ -12,7 +14,6 @@ import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; -import reactor.core.publisher.Mono; import java.net.URI; @@ -35,10 +36,10 @@ public SkillsReportController(SkillsReportServices skillsReportServices) { */ @Post @RequiredPermission(Permission.CAN_VIEW_SKILLS_REPORT) - public Mono> reportSkills(@Body @Valid @NotNull SkillsReportRequestDTO requestBody, - HttpRequest request) { - return Mono.fromCallable(() -> skillsReportServices.report(requestBody)) - .map(responseBody -> HttpResponse.created(responseBody) - .headers(headers -> headers.location(URI.create(String.format("%s", request.getPath()))))); + public HttpResponse reportSkills(@Body @Valid @NotNull SkillsReportRequestDTO requestBody, + HttpRequest request) { + SkillsReportResponseDTO responseBody = skillsReportServices.report(requestBody); + return HttpResponse.created(responseBody) + .headers(headers -> headers.location(URI.create(String.format("%s", request.getPath())))); } } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/memberprofile/MemberProfileController.java b/server/src/main/java/com/objectcomputing/checkins/services/memberprofile/MemberProfileController.java index 08fdc581d7..b7e8e23167 100755 --- a/server/src/main/java/com/objectcomputing/checkins/services/memberprofile/MemberProfileController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/memberprofile/MemberProfileController.java @@ -4,7 +4,15 @@ import com.objectcomputing.checkins.services.permissions.RequiredPermission; import io.micronaut.core.annotation.Nullable; import io.micronaut.http.HttpResponse; -import io.micronaut.http.annotation.*; +import io.micronaut.http.HttpStatus; +import io.micronaut.http.annotation.Body; +import io.micronaut.http.annotation.Controller; +import io.micronaut.http.annotation.Delete; +import io.micronaut.http.annotation.Get; +import io.micronaut.http.annotation.Post; +import io.micronaut.http.annotation.Put; +import io.micronaut.http.annotation.QueryValue; +import io.micronaut.http.annotation.Status; import io.micronaut.scheduling.TaskExecutors; import io.micronaut.scheduling.annotation.ExecuteOn; import io.micronaut.security.annotation.Secured; @@ -14,15 +22,13 @@ import jakarta.validation.constraints.NotNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import reactor.core.publisher.Mono; import java.net.URI; import java.util.List; import java.util.UUID; -import java.util.stream.Collectors; @Controller("/services/member-profiles") -@ExecuteOn(TaskExecutors.IO) +@ExecuteOn(TaskExecutors.BLOCKING) @Secured(SecurityRule.IS_AUTHENTICATED) @Tag(name = "member profiles") public class MemberProfileController { @@ -41,10 +47,10 @@ public MemberProfileController(MemberProfileServices memberProfileServices) { * @return {@link MemberProfileResponseDTO} Returned member profile */ @Get("/{id}") - public Mono> getById(UUID id) { - return Mono.fromCallable(() -> memberProfileServices.getById(id)) - .map(memberProfile -> HttpResponse.ok(fromEntity(memberProfile)) - .headers(headers -> headers.location(location(memberProfile.getId())))); + public HttpResponse getById(UUID id) { + MemberProfile memberProfile = memberProfileServices.getById(id); + return HttpResponse.ok(fromEntity(memberProfile)) + .headers(headers -> headers.location(location(memberProfile.getId()))); } /** @@ -54,35 +60,36 @@ public Mono> getById(UUID id) { * @return {@link List} List of the profiles for the supervisors of the requested member */ @Get("/{id}/supervisors") - public Mono>> getSupervisorsForId(UUID id) { - return Mono.fromCallable(() -> memberProfileServices.getSupervisorsForId(id)) - .map(entities -> entities.stream() - .map(this::fromEntity).collect(Collectors.toList())) - .map(HttpResponse::ok); + public List getSupervisorsForId(UUID id) { + return memberProfileServices.getSupervisorsForId(id) + .stream() + .map(this::fromEntity) + .toList(); } /** * Find member profile by first name, last name, title, leader's ID, email, supervisor's ID or find all. * - * @param firstName {@link String} Find members with the given first name - * @param lastName {@link String} Find member with the given last name - * @param title {@link String} Find member - * @param pdlId {@link UUID} ID of the leader - * @param workEmail {@link String} Requested work email + * @param firstName {@link String} Find members with the given first name + * @param lastName {@link String} Find member with the given last name + * @param title {@link String} Find member + * @param pdlId {@link UUID} ID of the leader + * @param workEmail {@link String} Requested work email * @param supervisorId {@link UUID} ID of the supervisor * @return {@link List} List of members that match the input parameters */ @Get("/{?firstName,lastName,title,pdlId,workEmail,supervisorId,terminated}") - public Mono>> findByValue(@Nullable String firstName, - @Nullable String lastName, - @Nullable String title, - @Nullable UUID pdlId, - @Nullable String workEmail, - @Nullable UUID supervisorId, - @QueryValue(value = "terminated" , defaultValue = "false") Boolean terminated) { - return Mono.fromCallable(() -> memberProfileServices.findByValues(firstName, lastName, title, pdlId, workEmail, supervisorId, terminated)) - .map(entities -> entities.stream().map(this::fromEntity).collect(Collectors.toList())) - .map(HttpResponse::ok); + public List findByValue(@Nullable String firstName, + @Nullable String lastName, + @Nullable String title, + @Nullable UUID pdlId, + @Nullable String workEmail, + @Nullable UUID supervisorId, + @QueryValue(value = "terminated", defaultValue = "false") Boolean terminated) { + return memberProfileServices.findByValues(firstName, lastName, title, pdlId, workEmail, supervisorId, terminated) + .stream() + .map(this::fromEntity) + .toList(); } /** @@ -93,11 +100,10 @@ public Mono>> findByValue(@Nullable */ @Post @RequiredPermission(Permission.CAN_CREATE_ORGANIZATION_MEMBERS) - public Mono> save(@Body @Valid MemberProfileCreateDTO memberProfile) { - - return Mono.fromCallable(() -> memberProfileServices.saveProfile(fromDTO(memberProfile))) - .map(savedProfile -> HttpResponse.created(fromEntity(savedProfile)) - .headers(headers -> headers.location(location(savedProfile.getId())))); + public HttpResponse save(@Body @Valid MemberProfileCreateDTO memberProfile) { + MemberProfile savedProfile = memberProfileServices.saveProfile(fromDTO(memberProfile)); + return HttpResponse.created(fromEntity(savedProfile)) + .headers(headers -> headers.location(location(savedProfile.getId()))); } /** @@ -107,27 +113,22 @@ public Mono> save(@Body @Valid MemberProf * @return {@link MemberProfileResponseDTO} The updated member profile */ @Put - public Mono> update(@Body @Valid MemberProfileUpdateDTO memberProfile) { - - return Mono.fromCallable(() -> memberProfileServices.saveProfile(fromDTO(memberProfile))) - .map(savedProfile -> { - MemberProfileResponseDTO updatedMemberProfile = fromEntity(savedProfile); - return HttpResponse.ok(updatedMemberProfile) - .headers(headers -> headers.location(location(updatedMemberProfile.getId()))); - }); + public HttpResponse update(@Body @Valid MemberProfileUpdateDTO memberProfile) { + MemberProfile savedProfile = memberProfileServices.saveProfile(fromDTO(memberProfile)); + return HttpResponse.ok(fromEntity(savedProfile)) + .headers(headers -> headers.location(location(savedProfile.getId()))); } /** * Delete a member profile * * @param id {@link UUID} Member unique id - * @return */ @Delete("/{id}") @RequiredPermission(Permission.CAN_DELETE_ORGANIZATION_MEMBERS) - public Mono> delete(@NotNull UUID id) { - return Mono.fromCallable(() -> memberProfileServices.deleteProfile(id)) - .map(successFlag -> HttpResponse.ok()); + @Status(HttpStatus.OK) + public void delete(@NotNull UUID id) { + memberProfileServices.deleteProfile(id); } protected URI location(UUID id) { @@ -160,7 +161,7 @@ private MemberProfile fromDTO(MemberProfileUpdateDTO dto) { return new MemberProfile(dto.getId(), dto.getFirstName(), dto.getMiddleName(), dto.getLastName(), dto.getSuffix(), dto.getTitle(), dto.getPdlId(), dto.getLocation(), dto.getWorkEmail(), dto.getEmployeeId(), dto.getStartDate(), dto.getBioText(), dto.getSupervisorid(), - dto.getTerminationDate(),dto.getBirthDay(), dto.getVoluntary(), dto.getExcluded(), dto.getLastSeen()); + dto.getTerminationDate(), dto.getBirthDay(), dto.getVoluntary(), dto.getExcluded(), dto.getLastSeen()); } private MemberProfile fromDTO(MemberProfileCreateDTO dto) { diff --git a/server/src/main/java/com/objectcomputing/checkins/services/memberprofile/anniversaryreport/AnniversaryReportController.java b/server/src/main/java/com/objectcomputing/checkins/services/memberprofile/anniversaryreport/AnniversaryReportController.java index edf297ab74..3c3b05c4e7 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/memberprofile/anniversaryreport/AnniversaryReportController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/memberprofile/anniversaryreport/AnniversaryReportController.java @@ -3,7 +3,6 @@ import com.objectcomputing.checkins.services.permissions.Permission; import com.objectcomputing.checkins.services.permissions.RequiredPermission; import io.micronaut.core.annotation.Nullable; -import io.micronaut.http.HttpResponse; import io.micronaut.http.annotation.Controller; import io.micronaut.http.annotation.Get; import io.micronaut.scheduling.TaskExecutors; @@ -11,10 +10,8 @@ import io.micronaut.security.annotation.Secured; import io.micronaut.security.rules.SecurityRule; import io.swagger.v3.oas.annotations.tags.Tag; -import reactor.core.publisher.Mono; import java.util.List; -import java.util.Set; @Controller("/services/reports/anniversaries") @ExecuteOn(TaskExecutors.BLOCKING) @@ -31,14 +28,12 @@ public AnniversaryReportController(AnniversaryServices anniversaryServices) { /** * Find anniversary or anniversaries given a month, or if blank get all anniversaries. * - * @param month, month of the anniversary - * @return {@link Set < AnniversaryReportResponseDTO > list of anniversaries} + * @param month month of the anniversary + * @return list of anniversaries */ - @Get("/{?month}") @RequiredPermission(Permission.CAN_VIEW_ANNIVERSARY_REPORT) - public Mono>> findByValue(@Nullable String[] month) { - return Mono.fromCallable(() -> anniversaryServices.findByValue(month)) - .map(HttpResponse::ok); + public List findByValue(@Nullable String[] month) { + return anniversaryServices.findByValue(month); } } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/memberprofile/birthday/BirthDayController.java b/server/src/main/java/com/objectcomputing/checkins/services/memberprofile/birthday/BirthDayController.java index 2d2d4cea71..f3f7646be8 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/memberprofile/birthday/BirthDayController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/memberprofile/birthday/BirthDayController.java @@ -3,7 +3,6 @@ import com.objectcomputing.checkins.services.permissions.Permission; import com.objectcomputing.checkins.services.permissions.RequiredPermission; import io.micronaut.core.annotation.Nullable; -import io.micronaut.http.HttpResponse; import io.micronaut.http.annotation.Controller; import io.micronaut.http.annotation.Get; import io.micronaut.scheduling.TaskExecutors; @@ -11,10 +10,8 @@ import io.micronaut.security.annotation.Secured; import io.micronaut.security.rules.SecurityRule; import io.swagger.v3.oas.annotations.tags.Tag; -import reactor.core.publisher.Mono; import java.util.List; -import java.util.Set; @Controller("/services/reports/birthdays") @ExecuteOn(TaskExecutors.BLOCKING) @@ -22,7 +19,6 @@ @Tag(name = "Member Birthday") public class BirthDayController { - private final BirthDayServices birthDayServices; public BirthDayController(BirthDayServices birthDayServices) { @@ -32,14 +28,12 @@ public BirthDayController(BirthDayServices birthDayServices) { /** * Find birthdays given a month, or if blank get all birthdays. * - * @param month, month of the birthday - * @return {@link Set < BirthDayResponseDTO > list of birthdays} + * @param month month of the birthday + * @return list of birthdays */ - @Get("/{?month,dayOfMonth}") @RequiredPermission(Permission.CAN_VIEW_BIRTHDAY_REPORT) - public Mono>> findByValue(@Nullable String[] month, @Nullable Integer[] dayOfMonth) { - return Mono.fromCallable(() -> birthDayServices.findByValue(month, dayOfMonth)) - .map(HttpResponse::ok); + public List findByValue(@Nullable String[] month, @Nullable Integer[] dayOfMonth) { + return birthDayServices.findByValue(month, dayOfMonth); } } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/memberprofile/memberphoto/MemberPhotoController.java b/server/src/main/java/com/objectcomputing/checkins/services/memberprofile/memberphoto/MemberPhotoController.java index 4dac808d4d..ab16a00e20 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/memberprofile/memberphoto/MemberPhotoController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/memberprofile/memberphoto/MemberPhotoController.java @@ -12,7 +12,6 @@ import io.micronaut.security.rules.SecurityRule; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.constraints.NotNull; -import reactor.core.publisher.Mono; import static io.micronaut.http.HttpHeaders.CACHE_CONTROL; @@ -25,6 +24,7 @@ public class MemberPhotoController { private final String expiry; private final MemberPhotoService memberPhotoService; + public MemberPhotoController(@Property(name = "micronaut.caches.photo-cache.expire-after-write") String expiry, MemberPhotoService memberPhotoService) { this.expiry = expiry; @@ -34,13 +34,13 @@ public MemberPhotoController(@Property(name = "micronaut.caches.photo-cache.expi /** * Get user photo data from Google Directory API * - * @param workEmail - * @return {@link HttpResponse} StringURL of photo data + * @param workEmail {@link String} work email of the user + * @return StringURL of photo data */ @Get("/{workEmail}") - public Mono> userImage(@NotNull String workEmail) { - return Mono.fromCallable(() -> memberPhotoService.getImageByEmailAddress(workEmail)) - .map(photoData -> HttpResponse.ok(photoData) - .header(CACHE_CONTROL, String.format("public, max-age=%s", expiry))); + public HttpResponse userImage(@NotNull String workEmail) { + byte[] photoData = memberPhotoService.getImageByEmailAddress(workEmail); + return HttpResponse.ok(photoData) + .header(CACHE_CONTROL, String.format("public, max-age=%s", expiry)); } } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/memberprofile/memberphoto/MemberPhotoService.java b/server/src/main/java/com/objectcomputing/checkins/services/memberprofile/memberphoto/MemberPhotoService.java index 8c081be019..21ccf89a41 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/memberprofile/memberphoto/MemberPhotoService.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/memberprofile/memberphoto/MemberPhotoService.java @@ -1,7 +1,6 @@ package com.objectcomputing.checkins.services.memberprofile.memberphoto; -import java.io.IOException; - public interface MemberPhotoService { - byte[] getImageByEmailAddress(String workEmail) throws IOException; + + byte[] getImageByEmailAddress(String workEmail); } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/memberprofile/memberphoto/MemberPhotoServiceImpl.java b/server/src/main/java/com/objectcomputing/checkins/services/memberprofile/memberphoto/MemberPhotoServiceImpl.java index 0c31eb4b99..e8c364721f 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/memberprofile/memberphoto/MemberPhotoServiceImpl.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/memberprofile/memberphoto/MemberPhotoServiceImpl.java @@ -47,7 +47,7 @@ public MemberPhotoServiceImpl(GoogleApiAccess googleApiAccess, @Override @Cacheable - public byte[] getImageByEmailAddress(@NotNull String workEmail) throws IOException { + public byte[] getImageByEmailAddress(@NotNull String workEmail) { byte[] photoData; @@ -63,6 +63,9 @@ public byte[] getImageByEmailAddress(@NotNull String workEmail) throws IOExcepti LOG.error(String.format("An unexpected error occurred while retrieving photo from Google Directory API for: %s", workEmail), gjse); } photoData = defaultPhoto; + } catch (IOException e) { + LOG.error(String.format("An unexpected error occurred while retrieving photo from Google Directory API for: %s", workEmail), e); + photoData = defaultPhoto; } return photoData; diff --git a/server/src/main/java/com/objectcomputing/checkins/services/memberprofile/retentionreport/RetentionReportController.java b/server/src/main/java/com/objectcomputing/checkins/services/memberprofile/retentionreport/RetentionReportController.java index becc54b7d0..14047dd112 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/memberprofile/retentionreport/RetentionReportController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/memberprofile/retentionreport/RetentionReportController.java @@ -5,7 +5,9 @@ import com.objectcomputing.checkins.services.permissions.RequiredPermission; import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpResponse; -import io.micronaut.http.annotation.*; +import io.micronaut.http.annotation.Body; +import io.micronaut.http.annotation.Controller; +import io.micronaut.http.annotation.Post; import io.micronaut.scheduling.TaskExecutors; import io.micronaut.scheduling.annotation.ExecuteOn; import io.micronaut.security.annotation.Secured; @@ -13,7 +15,6 @@ import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; -import reactor.core.publisher.Mono; import java.net.URI; @@ -37,26 +38,26 @@ public RetentionReportController(RetentionReportServices retentionReportServices */ @Post @RequiredPermission(Permission.CAN_VIEW_RETENTION_REPORT) - public Mono> reportRetention(@Body @Valid @NotNull RetentionReportRequestDTO requestBody, - HttpRequest request) { + public HttpResponse reportRetention(@Body @Valid @NotNull RetentionReportRequestDTO requestBody, + HttpRequest request) { if (requestBody.getStartDate().isAfter(requestBody.getEndDate()) || requestBody.getStartDate().isEqual(requestBody.getEndDate())) { throw new BadArgException("Start date must be before end date"); } - return Mono.fromCallable(() -> retentionReportServices.report(dtoFromRequest(requestBody))) - .map(responseBody -> HttpResponse.created(responseBody) - .headers(headers -> headers.location(URI.create(String.format("%s", request.getPath()))))); + RetentionReportResponseDTO responseBody = retentionReportServices.report(dtoFromRequest(requestBody)); + return HttpResponse.created(responseBody) + .headers(headers -> headers.location(URI.create(String.format("%s", request.getPath())))); } private RetentionReportDTO dtoFromRequest(RetentionReportRequestDTO request) { RetentionReportDTO dto = new RetentionReportDTO(); dto.setStartDate(request.getStartDate()); dto.setEndDate(request.getEndDate()); - if (request.getFrequency()!= null && + if (request.getFrequency() != null && request.getFrequency().equalsIgnoreCase(FrequencyType.DAILY.toString())) { dto.setFrequency(FrequencyType.DAILY); - } else if (request.getFrequency()!= null && + } else if (request.getFrequency() != null && request.getFrequency().equalsIgnoreCase(FrequencyType.WEEKLY.toString())) { dto.setFrequency(FrequencyType.WEEKLY); } else { diff --git a/server/src/main/java/com/objectcomputing/checkins/services/opportunities/OpportunitiesController.java b/server/src/main/java/com/objectcomputing/checkins/services/opportunities/OpportunitiesController.java index 0aa318bf8e..906037eb25 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/opportunities/OpportunitiesController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/opportunities/OpportunitiesController.java @@ -3,7 +3,14 @@ import io.micronaut.core.annotation.Nullable; import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpResponse; -import io.micronaut.http.annotation.*; +import io.micronaut.http.HttpStatus; +import io.micronaut.http.annotation.Body; +import io.micronaut.http.annotation.Controller; +import io.micronaut.http.annotation.Delete; +import io.micronaut.http.annotation.Get; +import io.micronaut.http.annotation.Post; +import io.micronaut.http.annotation.Put; +import io.micronaut.http.annotation.Status; import io.micronaut.scheduling.TaskExecutors; import io.micronaut.scheduling.annotation.ExecuteOn; import io.micronaut.security.annotation.Secured; @@ -11,18 +18,15 @@ import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; -import reactor.core.publisher.Mono; import java.net.URI; -import java.util.ArrayList; import java.util.List; import java.util.UUID; - @Controller("/services/opportunities") @ExecuteOn(TaskExecutors.BLOCKING) @Secured(SecurityRule.IS_AUTHENTICATED) -@Tag(name="opportunities") +@Tag(name = "opportunities") public class OpportunitiesController { private final OpportunitiesService opportunitiesResponseServices; @@ -34,16 +38,15 @@ public OpportunitiesController(OpportunitiesService opportunitiesResponseService /** * Find opportunities by Name or Description or submittedBy. * - * @param name {@link String} + * @param name {@link String} * @param description {@link String} * @param submittedBy {@link UUID} of member * @return list of opportunities */ @Get("/{?name,description,submittedBy}") - public Mono>> findOpportunities(@Nullable String name, - @Nullable String description, @Nullable UUID submittedBy) { - return Mono.fromCallable(() -> opportunitiesResponseServices.findByFields(name, description, submittedBy)) - .map(opportunities -> HttpResponse.ok(new ArrayList<>(opportunities))); + public List findOpportunities(@Nullable String name, + @Nullable String description, @Nullable UUID submittedBy) { + return opportunitiesResponseServices.findByFields(name, description, submittedBy); } /** @@ -54,13 +57,13 @@ public Mono>> findOpportunities(@Nullable Strin */ @Post - public Mono> createOpportunities(@Body @Valid OpportunitiesCreateDTO opportunitiesResponse, - HttpRequest request) { - return Mono.fromCallable(() -> opportunitiesResponseServices.save(new Opportunities(opportunitiesResponse.getName(), - opportunitiesResponse.getDescription(), opportunitiesResponse.getUrl(), - opportunitiesResponse.getExpiresOn(),opportunitiesResponse.getPending()))) - .map(opportunities -> HttpResponse.created(opportunities) - .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), opportunities.getId()))))); + public HttpResponse createOpportunities(@Body @Valid OpportunitiesCreateDTO opportunitiesResponse, + HttpRequest request) { + Opportunities opportunities = opportunitiesResponseServices.save(new Opportunities(opportunitiesResponse.getName(), + opportunitiesResponse.getDescription(), opportunitiesResponse.getUrl(), + opportunitiesResponse.getExpiresOn(), opportunitiesResponse.getPending())); + return HttpResponse.created(opportunities) + .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), opportunities.getId())))); } /** @@ -70,11 +73,11 @@ public Mono> createOpportunities(@Body @Valid Opport * @return {@link HttpResponse} */ @Put - public Mono> update(@Body @Valid @NotNull Opportunities opportunitiesResponse, - HttpRequest request) { - return Mono.fromCallable(() -> opportunitiesResponseServices.update(opportunitiesResponse)) - .map(updatedOpportunities -> HttpResponse.ok(updatedOpportunities) - .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), updatedOpportunities.getId()))))); + public HttpResponse update(@Body @Valid @NotNull Opportunities opportunitiesResponse, + HttpRequest request) { + Opportunities updatedOpportunities = opportunitiesResponseServices.update(opportunitiesResponse); + return HttpResponse.ok(updatedOpportunities) + .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), updatedOpportunities.getId())))); } @@ -84,8 +87,8 @@ public Mono> update(@Body @Valid @NotNull Opportunit * @param id, id of {@link Opportunities} to delete */ @Delete("/{id}") - public Mono> deleteOpportunities(@NotNull UUID id) { - return Mono.fromRunnable(() -> opportunitiesResponseServices.delete(id)) - .thenReturn(HttpResponse.ok()); + @Status(HttpStatus.OK) + public void deleteOpportunities(@NotNull UUID id) { + opportunitiesResponseServices.delete(id); } } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/permissions/PermissionController.java b/server/src/main/java/com/objectcomputing/checkins/services/permissions/PermissionController.java index 6526a46744..f3a9f979d0 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/permissions/PermissionController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/permissions/PermissionController.java @@ -1,6 +1,5 @@ package com.objectcomputing.checkins.services.permissions; -import io.micronaut.http.HttpResponse; import io.micronaut.http.annotation.Controller; import io.micronaut.http.annotation.Get; import io.micronaut.scheduling.TaskExecutors; @@ -8,7 +7,6 @@ import io.micronaut.security.annotation.Secured; import io.micronaut.security.rules.SecurityRule; import io.swagger.v3.oas.annotations.tags.Tag; -import reactor.core.publisher.Mono; import java.util.List; @@ -29,11 +27,10 @@ public PermissionController(PermissionServices permissionServices) { * * @return {@link List < Permission > list order by Permissions} */ - @RequiredPermission(Permission.CAN_VIEW_PERMISSIONS) @Get("/OrderByPermission") - public Mono>> listOrderByPermission() { - return Mono.fromCallable(permissionServices::listOrderByPermission) - .map(HttpResponse::ok); + @RequiredPermission(Permission.CAN_VIEW_PERMISSIONS) + public List listOrderByPermission() { + return permissionServices.listOrderByPermission(); } /** @@ -41,10 +38,9 @@ public Mono>> listOrderByPermission() { * * @return {@link List < Permission > list of all Permissions} */ - @RequiredPermission(Permission.CAN_VIEW_PERMISSIONS) @Get - public Mono>> getAllPermissions() { - return Mono.fromCallable(permissionServices::findAll) - .map(HttpResponse::ok); + @RequiredPermission(Permission.CAN_VIEW_PERMISSIONS) + public List getAllPermissions() { + return permissionServices.findAll(); } } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/pulseresponse/PulseResponseController.java b/server/src/main/java/com/objectcomputing/checkins/services/pulseresponse/PulseResponseController.java index 19fc127974..5a1a96167d 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/pulseresponse/PulseResponseController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/pulseresponse/PulseResponseController.java @@ -5,7 +5,11 @@ import io.micronaut.core.convert.format.Format; import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpResponse; -import io.micronaut.http.annotation.*; +import io.micronaut.http.annotation.Body; +import io.micronaut.http.annotation.Controller; +import io.micronaut.http.annotation.Get; +import io.micronaut.http.annotation.Post; +import io.micronaut.http.annotation.Put; import io.micronaut.scheduling.TaskExecutors; import io.micronaut.scheduling.annotation.ExecuteOn; import io.micronaut.security.annotation.Secured; @@ -13,7 +17,6 @@ import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; -import reactor.core.publisher.Mono; import java.net.URI; import java.time.LocalDate; @@ -23,7 +26,7 @@ @Controller("/services/pulse-responses") @ExecuteOn(TaskExecutors.BLOCKING) @Secured(SecurityRule.IS_AUTHENTICATED) -@Tag(name="pulse-responses") +@Tag(name = "pulse-responses") public class PulseResponseController { private final PulseResponseService pulseResponseServices; @@ -34,65 +37,57 @@ public PulseResponseController(PulseResponseService pulseResponseServices) { /** * Find Pulse Response by Team Member or Date Range. - * + * * @param teamMemberId * @param dateFrom * @param dateTo * @return */ @Get("/{?teamMemberId,dateFrom,dateTo}") - public Mono>> findPulseResponses(@Nullable @Format("yyyy-MM-dd") LocalDate dateFrom, - @Nullable @Format("yyyy-MM-dd") LocalDate dateTo, - @Nullable UUID teamMemberId) { - return Mono.fromCallable(() -> pulseResponseServices.findByFields(teamMemberId, dateFrom, dateTo)) - .map(HttpResponse::ok); + public Set findPulseResponses(@Nullable @Format("yyyy-MM-dd") LocalDate dateFrom, + @Nullable @Format("yyyy-MM-dd") LocalDate dateTo, + @Nullable UUID teamMemberId) { + return pulseResponseServices.findByFields(teamMemberId, dateFrom, dateTo); } - /** + /** * Create and save a new PulseResponse. * * @param pulseResponse, {@link PulseResponseCreateDTO} * @return {@link HttpResponse} */ - @Post - public Mono> createPulseResponse(@Body @Valid PulseResponseCreateDTO pulseResponse, - HttpRequest request) { - return Mono.fromCallable(() -> pulseResponseServices.save(new PulseResponse(pulseResponse.getInternalScore(), pulseResponse.getExternalScore(), pulseResponse.getSubmissionDate(), pulseResponse.getTeamMemberId(), pulseResponse.getInternalFeelings(), pulseResponse.getExternalFeelings()))) - .map(pulseresponse -> HttpResponse.created(pulseresponse) - .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), pulseresponse.getId())))) - ); + public HttpResponse createPulseResponse(@Body @Valid PulseResponseCreateDTO pulseResponse, + HttpRequest request) { + PulseResponse pulseresponse = pulseResponseServices.save(new PulseResponse(pulseResponse.getInternalScore(), pulseResponse.getExternalScore(), pulseResponse.getSubmissionDate(), pulseResponse.getTeamMemberId(), pulseResponse.getInternalFeelings(), pulseResponse.getExternalFeelings())); + return HttpResponse.created(pulseresponse) + .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), pulseresponse.getId())))); } - /** + /** * Update a PulseResponse * * @param pulseResponse, {@link PulseResponse} * @return {@link HttpResponse} */ @Put - public Mono> update(@Body @Valid @NotNull PulseResponse pulseResponse, - HttpRequest request) { - return Mono.fromCallable(() -> pulseResponseServices.update(pulseResponse)) - .map(updatedPulseResponse -> HttpResponse.ok(updatedPulseResponse) - .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), updatedPulseResponse.getId()))))); - + public HttpResponse update(@Body @Valid @NotNull PulseResponse pulseResponse, + HttpRequest request) { + PulseResponse updatedPulseResponse = pulseResponseServices.update(pulseResponse); + return HttpResponse.ok(updatedPulseResponse) + .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), updatedPulseResponse.getId())))); } /** - * * @param id * @return */ @Get("/{id}") - public Mono> readRole(@NotNull UUID id) { - return Mono.fromCallable(() -> { - PulseResponse result = pulseResponseServices.read(id); - if (result == null) { - throw new NotFoundException("No role item for UUID"); - } - return result; - }).map(HttpResponse::ok); - + public PulseResponse readRole(@NotNull UUID id) { + PulseResponse result = pulseResponseServices.read(id); + if (result == null) { + throw new NotFoundException("No role item for UUID"); + } + return result; } } \ No newline at end of file diff --git a/server/src/main/java/com/objectcomputing/checkins/services/question_category/QuestionCategoryController.java b/server/src/main/java/com/objectcomputing/checkins/services/question_category/QuestionCategoryController.java index 97e2efc02b..f133d4911e 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/question_category/QuestionCategoryController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/question_category/QuestionCategoryController.java @@ -3,7 +3,14 @@ import io.micronaut.core.annotation.Nullable; import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpResponse; -import io.micronaut.http.annotation.*; +import io.micronaut.http.HttpStatus; +import io.micronaut.http.annotation.Body; +import io.micronaut.http.annotation.Controller; +import io.micronaut.http.annotation.Delete; +import io.micronaut.http.annotation.Get; +import io.micronaut.http.annotation.Post; +import io.micronaut.http.annotation.Put; +import io.micronaut.http.annotation.Status; import io.micronaut.scheduling.TaskExecutors; import io.micronaut.scheduling.annotation.ExecuteOn; import io.micronaut.security.annotation.Secured; @@ -11,7 +18,6 @@ import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; -import reactor.core.publisher.Mono; import java.net.URI; import java.util.Set; @@ -37,28 +43,25 @@ public QuestionCategoryController(QuestionCategoryServices questionCategoryServi */ @Post - public Mono> createAQuestionCategory(@Body @Valid QuestionCategoryCreateDTO questionCategory, - HttpRequest request) { - - return Mono.fromCallable(() -> questionCategoryService.saveQuestionCategory(new QuestionCategory(questionCategory.getName()))) - .map(createdQuestionCategory -> HttpResponse.created(createdQuestionCategory) - .headers(headers -> headers.location( - URI.create(String.format("%s/%s", request.getPath(), createdQuestionCategory.getId()))))); + public HttpResponse createAQuestionCategory(@Body @Valid QuestionCategoryCreateDTO questionCategory, + HttpRequest request) { + QuestionCategory createdQuestionCategory = questionCategoryService.saveQuestionCategory(new QuestionCategory(questionCategory.getName())); + return HttpResponse.created(createdQuestionCategory) + .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), createdQuestionCategory.getId())))); } /** * Find and read a question category or categories given its id, or name, if both are blank get all question categories. * - * @param id, id of the question category - * @param name, name of the question category + * @param id, id of the question category + * @param name, name of the question category * @return {@link Set < QuestionCategory > list of Question Categories} */ @Get("/{?id,name}") - public Mono>> findByValue(@Nullable UUID id, @Nullable String name) { - return Mono.fromCallable(() -> questionCategoryService.findByValue(name, id)) - .map(HttpResponse::ok); + public Set findByValue(@Nullable UUID id, @Nullable String name) { + return questionCategoryService.findByValue(name, id); } /** @@ -68,10 +71,10 @@ public Mono>> findByValue(@Nullable UUID id, * @return {@link HttpResponse} */ @Put - public Mono> update(@Body @Valid QuestionCategory questionCategory, HttpRequest request) { - return Mono.fromCallable(() -> questionCategoryService.update(questionCategory)) - .map(updatedQuestionCategory -> HttpResponse.ok(updatedQuestionCategory) - .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), updatedQuestionCategory.getId()))))); + public HttpResponse update(@Body @Valid QuestionCategory questionCategory, HttpRequest request) { + QuestionCategory updatedQuestionCategory = questionCategoryService.update(questionCategory); + return HttpResponse.ok(updatedQuestionCategory) + .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), updatedQuestionCategory.getId())))); } /** @@ -80,9 +83,8 @@ public Mono> update(@Body @Valid QuestionCategory * @param id, id of {@link QuestionCategory} to delete */ @Delete("/{id}") - public Mono> deleteQuestionCategory(@NotNull UUID id) { - return Mono.fromCallable(() -> questionCategoryService.delete(id)) - .thenReturn(HttpResponse.ok()); + @Status(HttpStatus.OK) + public void deleteQuestionCategory(@NotNull UUID id) { + questionCategoryService.delete(id); } - } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/request_notifications/CheckServicesController.java b/server/src/main/java/com/objectcomputing/checkins/services/request_notifications/CheckServicesController.java index a0ecfeee41..35793d205a 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/request_notifications/CheckServicesController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/request_notifications/CheckServicesController.java @@ -1,14 +1,11 @@ package com.objectcomputing.checkins.services.request_notifications; - -import io.micronaut.http.HttpResponse; import io.micronaut.http.annotation.Controller; import io.micronaut.http.annotation.Get; import io.micronaut.http.annotation.Header; import io.micronaut.scheduling.TaskExecutors; import io.micronaut.scheduling.annotation.ExecuteOn; import jakarta.annotation.security.PermitAll; -import reactor.core.publisher.Mono; @Controller("/services/feedback/daily-request-check") @ExecuteOn(TaskExecutors.BLOCKING) @@ -24,11 +21,9 @@ public CheckServicesController(CheckServices checkServices, ServiceAccountVerifi } @Get - public Mono> sendScheduledEmails(@Header("Authorization") String authorizationHeader) { + public boolean sendScheduledEmails(@Header("Authorization") String authorizationHeader) { String authorization = authorizationHeader.split(" ")[1]; serviceAccountVerifier.verify(authorization); - return Mono.fromCallable(checkServices::sendScheduledEmails) - .map(success -> (HttpResponse) HttpResponse.ok()); + return checkServices.sendScheduledEmails(); } - } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/reviews/ReviewAssignmentController.java b/server/src/main/java/com/objectcomputing/checkins/services/reviews/ReviewAssignmentController.java index 6dc06fb695..f7f695d793 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/reviews/ReviewAssignmentController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/reviews/ReviewAssignmentController.java @@ -6,7 +6,15 @@ import io.micronaut.core.annotation.Nullable; import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpResponse; -import io.micronaut.http.annotation.*; +import io.micronaut.http.HttpStatus; +import io.micronaut.http.annotation.Body; +import io.micronaut.http.annotation.Controller; +import io.micronaut.http.annotation.Delete; +import io.micronaut.http.annotation.Get; +import io.micronaut.http.annotation.Post; +import io.micronaut.http.annotation.Put; +import io.micronaut.http.annotation.QueryValue; +import io.micronaut.http.annotation.Status; import io.micronaut.scheduling.TaskExecutors; import io.micronaut.scheduling.annotation.ExecuteOn; import io.micronaut.security.annotation.Secured; @@ -14,13 +22,11 @@ import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; -import reactor.core.publisher.Mono; import java.net.URI; import java.util.List; import java.util.Set; import java.util.UUID; -import java.util.stream.Collectors; @Controller("/services/review-assignments") @ExecuteOn(TaskExecutors.BLOCKING) @@ -37,34 +43,32 @@ public ReviewAssignmentController(ReviewAssignmentServices reviewAssignmentServi /** * Create and save a new {@link ReviewAssignment}. * - * @param assignment a {@link ReviewAssignmentDTO} representing the desired review assignment + * @param assignment a {@link ReviewAssignmentDTO} representing the desired review assignment * @return a streamable response containing the stored {@link ReviewAssignment} */ @Post @RequiredPermission(Permission.CAN_CREATE_REVIEW_ASSIGNMENTS) - public Mono> createReviewAssignment(@Body @Valid ReviewAssignmentDTO assignment, HttpRequest request) { - return Mono.fromCallable(() -> reviewAssignmentServices.save(assignment.convertToEntity())) - .map(reviewAssignment -> HttpResponse.created(reviewAssignment) + public HttpResponse createReviewAssignment(@Body @Valid ReviewAssignmentDTO assignment, HttpRequest request) { + ReviewAssignment reviewAssignment = reviewAssignmentServices.save(assignment.convertToEntity()); + return HttpResponse.created(reviewAssignment) .headers(headers -> headers.location( - URI.create(String.format("%s/%s", request.getPath(), reviewAssignment.getId()))))); - + URI.create(String.format("%s/%s", request.getPath(), reviewAssignment.getId())))); } /** * Create and save multiple new {@link ReviewAssignment}s and associate them with a given {@link ReviewPeriod}. * * @param reviewPeriodId a {@link UUID} representing the review period to associate the review assignments with - * @param assignments a List of {@link ReviewAssignmentDTO} representing the desired review assignments + * @param assignments a List of {@link ReviewAssignmentDTO} representing the desired review assignments * @return a streamable response containing the list of stored {@link ReviewAssignment} */ @Post("/{reviewPeriodId}") @RequiredPermission(Permission.CAN_CREATE_REVIEW_ASSIGNMENTS) - public Mono>> createReviewAssignment(@NotNull UUID reviewPeriodId, - @Body List<@Valid ReviewAssignmentDTO> assignments) { - return Mono.fromCallable(() -> reviewAssignmentServices.saveAll(reviewPeriodId, - assignments.stream().map(ReviewAssignmentDTO::convertToEntity).collect(Collectors.toList()), Boolean.TRUE) - ).map(HttpResponse::created); - + @Status(HttpStatus.CREATED) + public List createReviewAssignment(@NotNull UUID reviewPeriodId, + @Body List<@Valid ReviewAssignmentDTO> assignments) { + List assignmentEntities = assignments.stream().map(ReviewAssignmentDTO::convertToEntity).toList(); + return reviewAssignmentServices.saveAll(reviewPeriodId, assignmentEntities, Boolean.TRUE); } /** @@ -73,50 +77,45 @@ public Mono>> createReviewAssignment(@NotNul * @param id {@link UUID} of the review assignment * @return a streamable response containing the found {@link ReviewAssignment} with the given ID */ - @RequiredPermission(Permission.CAN_VIEW_REVIEW_ASSIGNMENTS) @Get("/{id}") - public Mono> getById(@NotNull UUID id) { - return Mono.fromCallable(() -> { - ReviewAssignment result = reviewAssignmentServices.findById(id); - if (result == null) { - throw new NotFoundException("No review assignment for UUID"); - } - return result; - }).map(HttpResponse::ok); + public ReviewAssignment getById(@NotNull UUID id) { + ReviewAssignment result = reviewAssignmentServices.findById(id); + if (result == null) { + throw new NotFoundException("No review assignment for UUID"); + } + return result; } @RequiredPermission(Permission.CAN_VIEW_REVIEW_ASSIGNMENTS) @Get("/period/{reviewPeriodId}{?reviewerId}") - public Mono>> findAssignmentsByPeriodId(@NotNull UUID reviewPeriodId, @Nullable @QueryValue UUID reviewerId) { - return Mono.fromCallable(() -> reviewAssignmentServices.findAllByReviewPeriodIdAndReviewerId(reviewPeriodId, reviewerId)) - .map(HttpResponse::ok); + public Set findAssignmentsByPeriodId(@NotNull UUID reviewPeriodId, @Nullable @QueryValue UUID reviewerId) { + return reviewAssignmentServices.findAllByReviewPeriodIdAndReviewerId(reviewPeriodId, reviewerId); } /** * Update an existing {@link ReviewAssignment}. * - * @param reviewAssignment the updated {@link ReviewAssignment} + * @param reviewAssignment the updated {@link ReviewAssignment} * @return a streamable response containing the stored {@link ReviewAssignment} */ @RequiredPermission(Permission.CAN_UPDATE_REVIEW_ASSIGNMENTS) @Put - public Mono> update(@Body @Valid ReviewAssignment reviewAssignment, HttpRequest request) { - return Mono.fromCallable(() -> reviewAssignmentServices.update(reviewAssignment)) - .map(updatedReviewAssignment -> HttpResponse.ok(updatedReviewAssignment) - .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), updatedReviewAssignment.getId()))))); + public HttpResponse update(@Body @Valid ReviewAssignment reviewAssignment, HttpRequest request) { + ReviewAssignment updatedReviewAssignment = reviewAssignmentServices.update(reviewAssignment); + return HttpResponse.ok(updatedReviewAssignment) + .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), updatedReviewAssignment.getId())))); } /** * Delete a {@link ReviewAssignment}. * - * @param id the id of the review assignment to be deleted to delete + * @param id the id of the review assignment to be deleted to delete */ @RequiredPermission(Permission.CAN_DELETE_REVIEW_ASSIGNMENTS) @Delete("/{id}") - public Mono> deleteReviewAssignment(@NotNull UUID id) { - return Mono.fromRunnable(() -> reviewAssignmentServices.delete(id)) - .thenReturn(HttpResponse.ok()); + @Status(HttpStatus.OK) + public void deleteReviewAssignment(@NotNull UUID id) { + reviewAssignmentServices.delete(id); } - } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/role/RoleController.java b/server/src/main/java/com/objectcomputing/checkins/services/role/RoleController.java index 59145a3937..be5e4b6c2d 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/role/RoleController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/role/RoleController.java @@ -3,7 +3,14 @@ import com.objectcomputing.checkins.exceptions.NotFoundException; import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpResponse; -import io.micronaut.http.annotation.*; +import io.micronaut.http.HttpStatus; +import io.micronaut.http.annotation.Body; +import io.micronaut.http.annotation.Controller; +import io.micronaut.http.annotation.Delete; +import io.micronaut.http.annotation.Get; +import io.micronaut.http.annotation.Post; +import io.micronaut.http.annotation.Put; +import io.micronaut.http.annotation.Status; import io.micronaut.scheduling.TaskExecutors; import io.micronaut.scheduling.annotation.ExecuteOn; import io.micronaut.security.annotation.Secured; @@ -11,7 +18,6 @@ import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; -import reactor.core.publisher.Mono; import java.net.URI; import java.util.List; @@ -37,10 +43,10 @@ public RoleController(RoleServices roleServices) { */ @Post @Secured(RoleType.Constants.ADMIN_ROLE) - public Mono> create(@Body @Valid RoleCreateDTO role, HttpRequest request) { - return Mono.fromCallable(() -> roleServices.save(new Role(role.getRole(), role.getDescription()))) - .map(userRole -> HttpResponse.created(userRole) - .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), userRole.getId()))))); + public HttpResponse create(@Body @Valid RoleCreateDTO role, HttpRequest request) { + Role userRole = roleServices.save(new Role(role.getRole(), role.getDescription())); + return HttpResponse.created(userRole) + .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), userRole.getId())))); } /** @@ -51,10 +57,10 @@ public Mono> create(@Body @Valid RoleCreateDTO role, HttpRequ */ @Put @Secured(RoleType.Constants.ADMIN_ROLE) - public Mono> update(@Body @Valid @NotNull Role role, HttpRequest request) { - return Mono.fromCallable(() -> roleServices.update(role)) - .map(updatedRole -> HttpResponse.ok(updatedRole) - .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), updatedRole.getId()))))); + public HttpResponse update(@Body @Valid @NotNull Role role, HttpRequest request) { + Role updatedRole = roleServices.update(role); + return HttpResponse.ok(updatedRole) + .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), updatedRole.getId())))); } /** @@ -64,27 +70,23 @@ public Mono> update(@Body @Valid @NotNull Role role, HttpRequ * @return {@link Role} */ @Get("/{id}") - public Mono> readRole(@NotNull UUID id) { - return Mono.fromCallable(() -> { - Role result = roleServices.read(id); - if (result == null) { - throw new NotFoundException("No role item for UUID"); - } - return result; - }).map(HttpResponse::ok); + public Role readRole(@NotNull UUID id) { + Role result = roleServices.read(id); + if (result == null) { + throw new NotFoundException("No role item for UUID"); + } + return result; } - /** * List all roles * * @return {@link Role} */ @Get - public Mono>> findAll() { - return Mono.fromCallable(roleServices::findAllRoles) - .map(HttpResponse::ok); + public List findAll() { + return roleServices.findAllRoles(); } /** @@ -94,9 +96,8 @@ public Mono>> findAll() { */ @Delete("/{id}") @Secured(RoleType.Constants.ADMIN_ROLE) - public Mono> deleteRole(UUID id) { - return Mono.fromRunnable(() -> roleServices.delete(id)) - .thenReturn(HttpResponse.ok()); + @Status(HttpStatus.OK) + public void deleteRole(UUID id) { + roleServices.delete(id); } - } \ No newline at end of file diff --git a/server/src/main/java/com/objectcomputing/checkins/services/role/role_permissions/RolePermissionController.java b/server/src/main/java/com/objectcomputing/checkins/services/role/role_permissions/RolePermissionController.java index 6767dc5505..792d2d31f9 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/role/role_permissions/RolePermissionController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/role/role_permissions/RolePermissionController.java @@ -3,15 +3,19 @@ import com.objectcomputing.checkins.services.permissions.Permission; import com.objectcomputing.checkins.services.permissions.RequiredPermission; import io.micronaut.http.HttpResponse; -import io.micronaut.http.MutableHttpResponse; -import io.micronaut.http.annotation.*; +import io.micronaut.http.HttpStatus; +import io.micronaut.http.annotation.Body; +import io.micronaut.http.annotation.Controller; +import io.micronaut.http.annotation.Delete; +import io.micronaut.http.annotation.Get; +import io.micronaut.http.annotation.Post; +import io.micronaut.http.annotation.Status; import io.micronaut.scheduling.TaskExecutors; import io.micronaut.scheduling.annotation.ExecuteOn; import io.micronaut.security.annotation.Secured; import io.micronaut.security.rules.SecurityRule; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; -import reactor.core.publisher.Mono; import java.util.List; @@ -34,23 +38,23 @@ public RolePermissionController(RolePermissionServices rolePermissionServices) { */ @RequiredPermission(Permission.CAN_VIEW_ROLE_PERMISSIONS) @Get - public Mono>> getAllRolePermissions() { - return Mono.fromCallable(rolePermissionServices::findAll) - .map(HttpResponse::ok); + public List getAllRolePermissions() { + return rolePermissionServices.findAll(); } @RequiredPermission(Permission.CAN_ASSIGN_ROLE_PERMISSIONS) @Post - public Mono> save(@Body @Valid RolePermissionDTO rolePermission) { - return Mono.fromCallable(() -> rolePermissionServices.save(rolePermission.getRoleId(), Permission.fromName(rolePermission.getPermission()))) - .map(savedRolePermission -> HttpResponse.created(fromEntity(savedRolePermission))); + @Status(HttpStatus.CREATED) + public HttpResponse save(@Body @Valid RolePermissionDTO rolePermission) { + RolePermission savedRolePermission = rolePermissionServices.save(rolePermission.getRoleId(), Permission.fromName(rolePermission.getPermission())); + return HttpResponse.created(fromEntity(savedRolePermission)); } @RequiredPermission(Permission.CAN_ASSIGN_ROLE_PERMISSIONS) @Delete("/") - public Mono> delete(@Body RolePermissionDTO dto) { - return Mono.fromRunnable(() -> rolePermissionServices.delete(dto.getRoleId(), Permission.fromName(dto.getPermission()))) - .thenReturn(HttpResponse.ok()); + @Status(HttpStatus.OK) + public void delete(@Body RolePermissionDTO dto) { + rolePermissionServices.delete(dto.getRoleId(), Permission.fromName(dto.getPermission())); } private RolePermissionResponseDTO fromEntity(RolePermission rolePermission) { diff --git a/server/src/main/java/com/objectcomputing/checkins/services/skillcategory/SkillCategoryController.java b/server/src/main/java/com/objectcomputing/checkins/services/skillcategory/SkillCategoryController.java index e255408155..1d6303821d 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/skillcategory/SkillCategoryController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/skillcategory/SkillCategoryController.java @@ -5,7 +5,14 @@ import com.objectcomputing.checkins.services.permissions.RequiredPermission; import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpResponse; -import io.micronaut.http.annotation.*; +import io.micronaut.http.HttpStatus; +import io.micronaut.http.annotation.Body; +import io.micronaut.http.annotation.Controller; +import io.micronaut.http.annotation.Delete; +import io.micronaut.http.annotation.Get; +import io.micronaut.http.annotation.Post; +import io.micronaut.http.annotation.Put; +import io.micronaut.http.annotation.Status; import io.micronaut.scheduling.TaskExecutors; import io.micronaut.scheduling.annotation.ExecuteOn; import io.micronaut.security.annotation.Secured; @@ -13,7 +20,6 @@ import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; -import reactor.core.publisher.Mono; import java.net.URI; import java.util.List; @@ -33,50 +39,42 @@ public SkillCategoryController(SkillCategoryServices skillCategoryServices) { @Post @RequiredPermission(Permission.CAN_EDIT_SKILL_CATEGORIES) - public Mono> create(@Body @Valid SkillCategoryCreateDTO dto, HttpRequest request) { - return Mono.fromCallable(() -> { - SkillCategory skillCategory = new SkillCategory(dto.getName(), dto.getDescription()); - return skillCategoryServices.save(skillCategory); - }) - .map(createdSkillCategory -> HttpResponse.created(createdSkillCategory) - .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), createdSkillCategory.getId()))))); + public HttpResponse create(@Body @Valid SkillCategoryCreateDTO dto, HttpRequest request) { + SkillCategory skillCategory = new SkillCategory(dto.getName(), dto.getDescription()); + SkillCategory createdSkillCategory = skillCategoryServices.save(skillCategory); + return HttpResponse.created(createdSkillCategory) + .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), createdSkillCategory.getId())))); } @Put @RequiredPermission(Permission.CAN_EDIT_SKILL_CATEGORIES) - public Mono> update(@Body @Valid SkillCategoryUpdateDTO dto, HttpRequest request) { - return Mono.fromCallable(() -> { - SkillCategory skillCategory = new SkillCategory(dto.getId(), dto.getName(), dto.getDescription()); - return skillCategoryServices.update(skillCategory); - }) - .map(skillCategory -> HttpResponse.ok(skillCategory) - .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), skillCategory.getId()))))); + public HttpResponse update(@Body @Valid SkillCategoryUpdateDTO dto, HttpRequest request) { + SkillCategory skillCategory = new SkillCategory(dto.getId(), dto.getName(), dto.getDescription()); + SkillCategory update = skillCategoryServices.update(skillCategory); + return HttpResponse.ok(update) + .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), update.getId())))); } @Get("/{id}") @RequiredPermission(Permission.CAN_VIEW_SKILL_CATEGORIES) - public Mono> getById(@NotNull UUID id) { - return Mono.fromCallable(() -> { - SkillCategoryResponseDTO result = skillCategoryServices.read(id); - if (result == null) { - throw new NotFoundException("No skill category for UUID"); - } - return result; - }).map(HttpResponse::ok); + public SkillCategoryResponseDTO getById(@NotNull UUID id) { + SkillCategoryResponseDTO result = skillCategoryServices.read(id); + if (result == null) { + throw new NotFoundException("No skill category for UUID"); + } + return result; } @Get("/with-skills") @RequiredPermission(Permission.CAN_VIEW_SKILL_CATEGORIES) - public Mono>> findAllWithSkills() { - return Mono.fromCallable(skillCategoryServices::findAllWithSkills) - .map(HttpResponse::ok); + public List findAllWithSkills() { + return skillCategoryServices.findAllWithSkills(); } @Delete("/{id}") @RequiredPermission(Permission.CAN_EDIT_SKILL_CATEGORIES) - public Mono> delete(@NotNull UUID id) { - return Mono.fromRunnable(() -> skillCategoryServices.delete(id)) - .thenReturn(HttpResponse.ok()); + @Status(HttpStatus.OK) + public void delete(@NotNull UUID id) { + skillCategoryServices.delete(id); } - } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/skillcategory/skillcategory_skill/SkillCategorySkillController.java b/server/src/main/java/com/objectcomputing/checkins/services/skillcategory/skillcategory_skill/SkillCategorySkillController.java index 202af888a0..dfdeb54b8e 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/skillcategory/skillcategory_skill/SkillCategorySkillController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/skillcategory/skillcategory_skill/SkillCategorySkillController.java @@ -4,6 +4,7 @@ import com.objectcomputing.checkins.services.permissions.RequiredPermission; import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpResponse; +import io.micronaut.http.HttpStatus; import io.micronaut.http.annotation.*; import io.micronaut.scheduling.TaskExecutors; import io.micronaut.scheduling.annotation.ExecuteOn; @@ -29,17 +30,16 @@ public SkillCategorySkillController(SkillCategorySkillServices skillCategorySkil @Post @RequiredPermission(Permission.CAN_EDIT_SKILL_CATEGORIES) - public Mono> create(@Body @Valid SkillCategorySkillId dto, HttpRequest request) { - return Mono.fromCallable(() -> skillCategorySkillServices.save(dto)) - .map(skillCategorySkill -> HttpResponse.created(skillCategorySkill) - .headers(headers -> headers.location(URI.create(String.format("%s", request.getPath()))))); + public HttpResponse create(@Body @Valid SkillCategorySkillId dto, HttpRequest request) { + SkillCategorySkill skillCategorySkill = skillCategorySkillServices.save(dto); + return HttpResponse.created(skillCategorySkill) + .headers(headers -> headers.location(URI.create(String.format("%s", request.getPath())))); } @Delete @RequiredPermission(Permission.CAN_EDIT_SKILL_CATEGORIES) - public Mono> delete(@Body @Valid SkillCategorySkillId dto) { - return Mono.fromRunnable(() -> skillCategorySkillServices.delete(dto)) - .thenReturn(HttpResponse.ok()); + @Status(HttpStatus.OK) + public void delete(@Body @Valid SkillCategorySkillId dto) { + skillCategorySkillServices.delete(dto); } - } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/skills/SkillController.java b/server/src/main/java/com/objectcomputing/checkins/services/skills/SkillController.java index c8d82b2431..a87bb89278 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/skills/SkillController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/skills/SkillController.java @@ -4,7 +4,14 @@ import io.micronaut.core.annotation.Nullable; import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpResponse; -import io.micronaut.http.annotation.*; +import io.micronaut.http.HttpStatus; +import io.micronaut.http.annotation.Body; +import io.micronaut.http.annotation.Controller; +import io.micronaut.http.annotation.Delete; +import io.micronaut.http.annotation.Get; +import io.micronaut.http.annotation.Post; +import io.micronaut.http.annotation.Put; +import io.micronaut.http.annotation.Status; import io.micronaut.scheduling.TaskExecutors; import io.micronaut.scheduling.annotation.ExecuteOn; import io.micronaut.security.annotation.Secured; @@ -12,7 +19,6 @@ import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; -import reactor.core.publisher.Mono; import java.net.URI; import java.util.Set; @@ -36,14 +42,11 @@ public SkillController(SkillServices skillServices) { * @param skill, {@link SkillCreateDTO} * @return {@link HttpResponse< Skill >} */ - @Post - public Mono> createASkill(@Body @Valid SkillCreateDTO skill, HttpRequest request) { - return Mono.fromCallable(() -> skillServices.save(new Skill(skill.getName(), skill.isPending(), - skill.getDescription(), skill.isExtraneous()))) - .map(createdSkill -> HttpResponse.created(createdSkill) - .headers(headers -> headers.location( - URI.create(String.format("%s/%s", request.getPath(), createdSkill.getId()))))); + public HttpResponse createASkill(@Body @Valid SkillCreateDTO skill, HttpRequest request) { + Skill createdSkill = skillServices.save(new Skill(skill.getName(), skill.isPending(), skill.getDescription(), skill.isExtraneous())); + return HttpResponse.created(createdSkill) + .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), createdSkill.getId())))); } @@ -53,16 +56,13 @@ public Mono> createASkill(@Body @Valid SkillCreateDTO skill, * @param id {@link UUID} of the skill entry * @return */ - @Get("/{id}") - public Mono> getById(@NotNull UUID id) { - return Mono.fromCallable(() -> { - Skill result = skillServices.readSkill(id); - if (result == null) { - throw new NotFoundException("No skill for UUID"); - } - return result; - }).map(HttpResponse::ok); + public Skill getById(@NotNull UUID id) { + Skill result = skillServices.readSkill(id); + if (result == null) { + throw new NotFoundException("No skill for UUID"); + } + return result; } /** @@ -72,11 +72,9 @@ public Mono> getById(@NotNull UUID id) { * @param pending, whether the skill has been officially accepted * @return {@link Set list of Skills */ - @Get("/{?name,pending}") - public Mono>> findByValue(@Nullable String name, @Nullable Boolean pending) { - return Mono.fromCallable(() -> skillServices.findByValue(name, pending)) - .map(HttpResponse::ok); + public Set findByValue(@Nullable String name, @Nullable Boolean pending) { + return skillServices.findByValue(name, pending); } /** @@ -86,10 +84,10 @@ public Mono>> findByValue(@Nullable String name, @Nullab * @return {@link HttpResponse} */ @Put - public Mono> update(@Body @Valid Skill skill, HttpRequest request) { - return Mono.fromCallable(() -> skillServices.update(skill)) - .map(updatedSkill -> HttpResponse.ok(updatedSkill) - .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), updatedSkill.getId()))))); + public HttpResponse update(@Body @Valid Skill skill, HttpRequest request) { + Skill updatedSkill = skillServices.update(skill); + return HttpResponse.ok(updatedSkill) + .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), updatedSkill.getId())))); } /** @@ -98,9 +96,8 @@ public Mono> update(@Body @Valid Skill skill, HttpRequest * @param id, id of {@link Skill} to delete */ @Delete("/{id}") - public Mono> deleteSkill(@NotNull UUID id) { - return Mono.fromRunnable(() -> skillServices.delete(id)) - .thenReturn(HttpResponse.ok()); + @Status(HttpStatus.OK) + public void deleteSkill(@NotNull UUID id) { + skillServices.delete(id); } - } \ No newline at end of file diff --git a/server/src/main/java/com/objectcomputing/checkins/services/skills/combineskills/CombineSkillController.java b/server/src/main/java/com/objectcomputing/checkins/services/skills/combineskills/CombineSkillController.java index ad79593abd..2afb6ba3f9 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/skills/combineskills/CombineSkillController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/skills/combineskills/CombineSkillController.java @@ -12,7 +12,6 @@ import io.micronaut.security.rules.SecurityRule; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; -import reactor.core.publisher.Mono; import java.net.URI; @@ -36,10 +35,10 @@ public CombineSkillController(CombineSkillServices combineSkillServices) { */ @Post - public Mono> createNewSkillFromList(@Body @Valid CombineSkillsDTO skill, HttpRequest request) { - return Mono.fromCallable(() -> combineSkillServices.combine(skill)) - .map(createdSkill -> HttpResponse.created(createdSkill) - .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), createdSkill.getId()))))); + public HttpResponse createNewSkillFromList(@Body @Valid CombineSkillsDTO skill, HttpRequest request) { + Skill createdSkill = combineSkillServices.combine(skill); + return HttpResponse.created(createdSkill) + .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), createdSkill.getId())))); } } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/survey/SurveyController.java b/server/src/main/java/com/objectcomputing/checkins/services/survey/SurveyController.java index 6c6bb653d7..e2e71097ee 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/survey/SurveyController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/survey/SurveyController.java @@ -3,7 +3,14 @@ import io.micronaut.core.annotation.Nullable; import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpResponse; -import io.micronaut.http.annotation.*; +import io.micronaut.http.HttpStatus; +import io.micronaut.http.annotation.Body; +import io.micronaut.http.annotation.Controller; +import io.micronaut.http.annotation.Delete; +import io.micronaut.http.annotation.Get; +import io.micronaut.http.annotation.Post; +import io.micronaut.http.annotation.Put; +import io.micronaut.http.annotation.Status; import io.micronaut.scheduling.TaskExecutors; import io.micronaut.scheduling.annotation.ExecuteOn; import io.micronaut.security.annotation.Secured; @@ -11,17 +18,15 @@ import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; -import reactor.core.publisher.Mono; import java.net.URI; import java.util.Set; import java.util.UUID; - @Controller("/services/surveys") @ExecuteOn(TaskExecutors.BLOCKING) @Secured(SecurityRule.IS_AUTHENTICATED) -@Tag(name="survey") +@Tag(name = "survey") public class SurveyController { private final SurveyService surveyResponseServices; @@ -38,14 +43,12 @@ public SurveyController(SurveyService surveyResponseServices) { * @return */ @Get("/{?name,createdBy}") - public Mono>> findSurveys(@Nullable String name, @Nullable UUID createdBy) { - return Mono.fromCallable(() -> { - if (name!=null || createdBy!=null) { - return surveyResponseServices.findByFields(name, createdBy); - } else { - return surveyResponseServices.readAll(); - } - }).map(HttpResponse::ok); + public Set findSurveys(@Nullable String name, @Nullable UUID createdBy) { + if (name != null || createdBy != null) { + return surveyResponseServices.findByFields(name, createdBy); + } else { + return surveyResponseServices.readAll(); + } } /** @@ -54,13 +57,12 @@ public Mono>> findSurveys(@Nullable String name, @Nulla * @param surveyResponse, {@link SurveyCreateDTO} * @return {@link HttpResponse} */ - @Post - public Mono> createSurvey(@Body @Valid SurveyCreateDTO surveyResponse, HttpRequest request) { - return Mono.fromCallable(() -> surveyResponseServices.save(new Survey(surveyResponse.getCreatedOn(), - surveyResponse.getCreatedBy(), surveyResponse.getName(), surveyResponse.getDescription()))) - .map(survey -> HttpResponse.created(survey) - .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), survey.getId()))))); + public HttpResponse createSurvey(@Body @Valid SurveyCreateDTO surveyResponse, HttpRequest request) { + Survey survey = surveyResponseServices.save(new Survey(surveyResponse.getCreatedOn(), + surveyResponse.getCreatedBy(), surveyResponse.getName(), surveyResponse.getDescription())); + return HttpResponse.created(survey) + .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), survey.getId())))); } /** @@ -70,10 +72,10 @@ public Mono> createSurvey(@Body @Valid SurveyCreateDTO surv * @return {@link HttpResponse} */ @Put - public Mono> update(@Body @Valid @NotNull Survey surveyResponse, HttpRequest request) { - return Mono.fromCallable(() -> surveyResponseServices.update(surveyResponse)) - .map(updatedSurvey -> HttpResponse.ok(updatedSurvey) - .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), updatedSurvey.getId()))))); + public HttpResponse update(@Body @Valid @NotNull Survey surveyResponse, HttpRequest request) { + Survey updatedSurvey = surveyResponseServices.update(surveyResponse); + return HttpResponse.ok(updatedSurvey) + .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), updatedSurvey.getId())))); } /** @@ -82,8 +84,8 @@ public Mono> update(@Body @Valid @NotNull Survey surveyResp * @param id, id of {@link Survey} to delete */ @Delete("/{id}") - public Mono> deleteSurvey(@NotNull UUID id) { - return Mono.fromRunnable(() -> surveyResponseServices.delete(id)) - .thenReturn(HttpResponse.ok()); + @Status(HttpStatus.OK) + public void deleteSurvey(@NotNull UUID id) { + surveyResponseServices.delete(id); } } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/tags/TagController.java b/server/src/main/java/com/objectcomputing/checkins/services/tags/TagController.java index 7168a704de..9a435ea7d8 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/tags/TagController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/tags/TagController.java @@ -4,20 +4,25 @@ import io.micronaut.core.annotation.Nullable; import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpResponse; -import io.micronaut.http.annotation.*; +import io.micronaut.http.HttpStatus; +import io.micronaut.http.annotation.Body; +import io.micronaut.http.annotation.Controller; +import io.micronaut.http.annotation.Delete; +import io.micronaut.http.annotation.Get; +import io.micronaut.http.annotation.Post; +import io.micronaut.http.annotation.Put; +import io.micronaut.http.annotation.Status; import io.micronaut.scheduling.TaskExecutors; import io.micronaut.scheduling.annotation.ExecuteOn; import io.micronaut.security.annotation.Secured; import io.micronaut.security.rules.SecurityRule; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; -import reactor.core.publisher.Mono; import java.net.URI; import java.util.Set; import java.util.UUID; - @Controller("/services/tags") @ExecuteOn(TaskExecutors.BLOCKING) @Secured(SecurityRule.IS_AUTHENTICATED) @@ -28,7 +33,7 @@ public class TagController { public TagController(TagServices tagServices) { this.tagServices = tagServices; - } + } /** * Create and save a new tag. @@ -37,11 +42,10 @@ public TagController(TagServices tagServices) { * @return {@link HttpResponse< Tag >} */ @Post - public Mono> createTag(@Body @Valid @NotNull TagCreateDTO tag, HttpRequest request) { - return Mono.fromCallable(() -> tagServices.save(new Tag(tag.getName()))) - .map(createdTag -> HttpResponse.created(createdTag) - .headers(headers -> headers.location( - URI.create(String.format("%s/%s", request.getPath(), createdTag.getId()))))); + public HttpResponse createTag(@Body @Valid @NotNull TagCreateDTO tag, HttpRequest request) { + Tag createdTag = tagServices.save(new Tag(tag.getName())); + return HttpResponse.created(createdTag) + .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), createdTag.getId())))); } /** @@ -50,9 +54,9 @@ public Mono> createTag(@Body @Valid @NotNull TagCreateDTO tag, * @param id, id of {@link Tag} to delete */ @Delete("/{id}") - public Mono> deleteTag(UUID id) { - return Mono.fromRunnable(() -> tagServices.delete(id)) - .thenReturn(HttpResponse.ok()); + @Status(HttpStatus.OK) + public void deleteTag(UUID id) { + tagServices.delete(id); } /** @@ -62,14 +66,12 @@ public Mono> deleteTag(UUID id) { * @return {@link Tag} */ @Get("/{id}") - public Mono> readTag(@NotNull UUID id) { - return Mono.fromCallable(() -> { - Tag result = tagServices.read(id); - if (result == null) { - throw new NotFoundException("No tag for UUID"); - } - return result; - }).map(HttpResponse::ok); + public Tag readTag(@NotNull UUID id) { + Tag result = tagServices.read(id); + if (result == null) { + throw new NotFoundException("No tag for UUID"); + } + return result; } /** @@ -79,9 +81,8 @@ public Mono> readTag(@NotNull UUID id) { * @return {@link Set set of tags */ @Get("/{?name}") - public Mono>> findTags(@Nullable String name) { - return Mono.fromCallable(() -> tagServices.findByFields(name)) - .map(HttpResponse::ok); + public Set findTags(@Nullable String name) { + return tagServices.findByFields(name); } /** @@ -91,10 +92,9 @@ public Mono>> findTags(@Nullable String name) { * @return {@link Tag} */ @Put - public Mono> update(@Body @Valid Tag tag, HttpRequest request) { - return Mono.fromCallable(() -> tagServices.update(tag)) - .map(tag1 -> HttpResponse.ok(tag1) - .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), tag1.getId()))))); + public HttpResponse update(@Body @Valid Tag tag, HttpRequest request) { + Tag tag1 = tagServices.update(tag); + return HttpResponse.ok(tag1) + .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), tag1.getId())))); } - } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/tags/entityTag/EntityTagController.java b/server/src/main/java/com/objectcomputing/checkins/services/tags/entityTag/EntityTagController.java index 87bbd427b0..0dd129a550 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/tags/entityTag/EntityTagController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/tags/entityTag/EntityTagController.java @@ -5,7 +5,13 @@ import io.micronaut.core.annotation.Nullable; import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpResponse; -import io.micronaut.http.annotation.*; +import io.micronaut.http.HttpStatus; +import io.micronaut.http.annotation.Body; +import io.micronaut.http.annotation.Controller; +import io.micronaut.http.annotation.Delete; +import io.micronaut.http.annotation.Get; +import io.micronaut.http.annotation.Post; +import io.micronaut.http.annotation.Status; import io.micronaut.scheduling.TaskExecutors; import io.micronaut.scheduling.annotation.ExecuteOn; import io.micronaut.security.annotation.Secured; @@ -13,7 +19,6 @@ import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; -import reactor.core.publisher.Mono; import java.net.URI; import java.util.Set; @@ -39,12 +44,10 @@ public EntityTagController(EntityTagServices entityTagServices) { * @return {@link HttpResponse< EntityTag >} */ @Post - public Mono> createAEntityTag(@Body @Valid @NotNull EntityTagCreateDTO entityTag, HttpRequest request) { - return Mono.fromCallable(() -> entityTagServices.save(new EntityTag(entityTag.getEntityId(), - entityTag.getTagId(), entityTag.getType()))) - .map(createdEntityTag -> HttpResponse.created(createdEntityTag) - .headers(headers -> headers.location( - URI.create(String.format("%s/%s", request.getPath(), createdEntityTag.getId()))))); + public HttpResponse createAEntityTag(@Body @Valid @NotNull EntityTagCreateDTO entityTag, HttpRequest request) { + EntityTag createdEntityTag = entityTagServices.save(new EntityTag(entityTag.getEntityId(), entityTag.getTagId(), entityTag.getType())); + return HttpResponse.created(createdEntityTag) + .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), createdEntityTag.getId())))); } /** @@ -53,9 +56,9 @@ public Mono> createAEntityTag(@Body @Valid @NotNull Enti * @param id, id of {@link EntityTag} to delete */ @Delete("/{id}") - public Mono> deleteEntityTag(@NotNull UUID id) { - return Mono.fromRunnable(() -> entityTagServices.delete(id)) - .thenReturn(HttpResponse.ok()); + @Status(HttpStatus.OK) + public void deleteEntityTag(@NotNull UUID id) { + entityTagServices.delete(id); } /** @@ -65,26 +68,23 @@ public Mono> deleteEntityTag(@NotNull UUID id) { * @return {@link EntityTag} */ @Get("/{id}") - public Mono> readEntityTag(@NotNull UUID id) { - return Mono.fromCallable(() -> { - EntityTag result = entityTagServices.read(id); - if (result == null) { - throw new NotFoundException("No entity tag for UUID"); - } - return result; - }).map(HttpResponse::ok); + public EntityTag readEntityTag(@NotNull UUID id) { + EntityTag result = entityTagServices.read(id); + if (result == null) { + throw new NotFoundException("No entity tag for UUID"); + } + return result; } /** * Find Entity Tags that match all filled in parameters, return all results when given no params * * @param entityId {@link UUID} of entity tag - * @param tagId {@link UUID} of tags + * @param tagId {@link UUID} of tags * @return set of Entity Tags */ @Get("/{?entityId,tagId}") - public Mono>> findEntityTag(@Nullable UUID entityId, @Nullable UUID tagId, @Nullable EntityType type) { - return Mono.fromCallable(() -> entityTagServices.findByFields(entityId, tagId, type)) - .map(HttpResponse::ok); + public Set findEntityTag(@Nullable UUID entityId, @Nullable UUID tagId, @Nullable EntityType type) { + return entityTagServices.findByFields(entityId, tagId, type); } } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/team/TeamController.java b/server/src/main/java/com/objectcomputing/checkins/services/team/TeamController.java index fdc4a6baec..756d0b7836 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/team/TeamController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/team/TeamController.java @@ -1,10 +1,16 @@ package com.objectcomputing.checkins.services.team; - import io.micronaut.core.annotation.Nullable; import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpResponse; -import io.micronaut.http.annotation.*; +import io.micronaut.http.HttpStatus; +import io.micronaut.http.annotation.Body; +import io.micronaut.http.annotation.Controller; +import io.micronaut.http.annotation.Delete; +import io.micronaut.http.annotation.Get; +import io.micronaut.http.annotation.Post; +import io.micronaut.http.annotation.Put; +import io.micronaut.http.annotation.Status; import io.micronaut.scheduling.TaskExecutors; import io.micronaut.scheduling.annotation.ExecuteOn; import io.micronaut.security.annotation.Secured; @@ -12,7 +18,6 @@ import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; -import reactor.core.publisher.Mono; import java.net.URI; import java.util.List; @@ -38,10 +43,10 @@ public TeamController(TeamServices teamService) { * @return {@link HttpResponse} */ @Post - public Mono> createATeam(@Body @Valid TeamCreateDTO team, HttpRequest request) { - return Mono.fromCallable(() -> teamService.save(team)) - .map(createdTeam -> HttpResponse.created(createdTeam) - .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), createdTeam.getId()))))); + public HttpResponse createATeam(@Body @Valid TeamCreateDTO team, HttpRequest request) { + TeamResponseDTO createdTeam = teamService.save(team); + return HttpResponse.created(createdTeam) + .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), createdTeam.getId())))); } /** @@ -50,11 +55,9 @@ public Mono> createATeam(@Body @Valid TeamCreateDT * @param id of team * @return {@link TeamResponseDTO team matching id} */ - @Get("/{id}") - public Mono> readTeam(@NotNull UUID id) { - return Mono.fromCallable(() -> teamService.read(id)) - .map(HttpResponse::ok); + public TeamResponseDTO readTeam(@NotNull UUID id) { + return teamService.read(id); } /** @@ -66,9 +69,8 @@ public Mono> readTeam(@NotNull UUID id) { * return all teams that match all the filled in params */ @Get("/{?name,memberId}") - public Mono>> findTeams(@Nullable String name, @Nullable UUID memberId) { - return Mono.fromCallable(() -> teamService.findByFields(name, memberId)) - .map(HttpResponse::ok); + public Set findTeams(@Nullable String name, @Nullable UUID memberId) { + return teamService.findByFields(name, memberId); } /** @@ -78,22 +80,20 @@ public Mono>> findTeams(@Nullable String name, * @return {@link HttpResponse} */ @Put - public Mono> update(@Body @Valid TeamUpdateDTO team, HttpRequest request) { - return Mono.fromCallable(() -> teamService.update(team)) - .map(updated -> HttpResponse.ok(updated) - .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getUri(), team.getId()))))); - + public HttpResponse update(@Body @Valid TeamUpdateDTO team, HttpRequest request) { + TeamResponseDTO updated = teamService.update(team); + return HttpResponse.ok(updated) + .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getUri(), team.getId())))); } /** * Delete Team * * @param id, id of {@link TeamUpdateDTO} to delete - * @return */ @Delete("/{id}") - public Mono> deleteTeam(@NotNull UUID id) { - return Mono.fromCallable(() -> teamService.delete(id)) - .map(success -> HttpResponse.ok()); + @Status(HttpStatus.OK) + public void deleteTeam(@NotNull UUID id) { + teamService.delete(id); } } \ No newline at end of file diff --git a/server/src/main/java/com/objectcomputing/checkins/services/today/TodayController.java b/server/src/main/java/com/objectcomputing/checkins/services/today/TodayController.java index d865624042..c6935f2faf 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/today/TodayController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/today/TodayController.java @@ -1,6 +1,5 @@ package com.objectcomputing.checkins.services.today; -import io.micronaut.http.HttpResponse; import io.micronaut.http.annotation.Controller; import io.micronaut.http.annotation.Get; import io.micronaut.scheduling.TaskExecutors; @@ -8,7 +7,6 @@ import io.micronaut.security.annotation.Secured; import io.micronaut.security.rules.SecurityRule; import io.swagger.v3.oas.annotations.tags.Tag; -import reactor.core.publisher.Mono; @Controller("/services/today") @ExecuteOn(TaskExecutors.BLOCKING) @@ -28,8 +26,7 @@ public TodayController(TodayServices todayServices) { * @return {@link TodayResponseDTO today's events} */ @Get - public Mono> getTodaysEvents() { - return Mono.fromCallable(todayServices::getTodaysEvents) - .map(HttpResponse::ok); + public TodayResponseDTO getTodaysEvents() { + return todayServices.getTodaysEvents(); } } diff --git a/server/src/test/java/com/objectcomputing/checkins/services/demographics/DemographicsControllerTest.java b/server/src/test/java/com/objectcomputing/checkins/services/demographics/DemographicsControllerTest.java index 8089fbb4ae..308bd08a8b 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/demographics/DemographicsControllerTest.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/demographics/DemographicsControllerTest.java @@ -243,7 +243,7 @@ public void testDELETEDemographicsWrongId() { final MemberProfile lucy = getMemberProfileRepository().save(mkMemberProfile("Lucy")); createAndAssignAdminRole(lucy); - Demographics demographic = createDefaultDemographics(lucy.getId()); + createDefaultDemographics(lucy.getId()); final HttpRequest request = HttpRequest. DELETE(String.format("/%s", UUID.randomUUID())).basicAuth(lucy.getWorkEmail(), ADMIN_ROLE); @@ -255,6 +255,22 @@ public void testDELETEDemographicsWrongId() { } + @Test + void testGETDemographicsWrongId() { + MemberProfile lucy = memberWithoutBoss("Lucy"); + createAndAssignAdminRole(lucy); + + createDefaultDemographics(lucy.getId()); + + final HttpRequest request = HttpRequest. + GET(String.format("/%s", UUID.randomUUID())).basicAuth(lucy.getWorkEmail(), ADMIN_ROLE); + + HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, + () -> client.toBlocking().exchange(request, Map.class)); + + assertEquals(HttpStatus.NOT_FOUND,responseException.getStatus()); + } + @Test public void testDELETEDemographicsNoPermission() { final MemberProfile lucy = getMemberProfileRepository().save(mkMemberProfile("Lucy"));