Copilot commented on code in PR #4054:
URL:
https://github.com/apache/incubator-kie-kogito-runtimes/pull/4054#discussion_r2329657262
##########
kogito-codegen-modules/kogito-codegen-processes/src/main/resources/class-templates/usertask/RestResourceUserTaskQuarkusTemplate.java:
##########
@@ -273,4 +274,176 @@ public Attachment getAttachment(
.orElseThrow(() -> new
UserTaskInstanceNotFoundException("Attachment " + attachmentId + " not found"));
}
+ @POST
+ @Path("/{taskId}/adminUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView addAdminUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("adminUsers") Set<String> adminUsers
+ ) {
+ return userTaskService.addAdminUsers(taskId, adminUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @PUT
+ @Path("/{taskId}/adminUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView setAdminUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("adminUsers") Set<String> adminUsers
+ ) {
+ return userTaskService.setAdminUsers(taskId, adminUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+
+ @DELETE
+ @Path("/{taskId}/adminUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView removeAdminUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") Set<String> groups,
+ @QueryParam("adminUsers") Set<String> adminUsersToRemove
+ ) {
+ return userTaskService.removeAdminUsers(taskId, adminUsersToRemove,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @POST
+ @Path("/{taskId}/potentialUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView addPotentialUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("potentialUsers") Set<String> potentialUsers
+ ) {
+ return userTaskService.addPotentialUsers(taskId, potentialUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @PUT
+ @Path("/{taskId}/potentialUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView setPotentialUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("potentialUsers") Set<String> potentialUsers
+ ) {
+ return userTaskService.setPotentialUsers(taskId, potentialUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+
+ @DELETE
+ @Path("/{taskId}/potentialUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView removePotentialUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") Set<String> groups,
+ @QueryParam("potentialUsers") Set<String> potentialUsersToRemove
+ ) {
+ return userTaskService.removePotentialUsers(taskId,
potentialUsersToRemove, identityProviderFactory.getOrImpersonateIdentity(user,
groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @POST
+ @Path("/{taskId}/excludedUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView addExcludedUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("excludedUsers") Set<String> excludedUsers
+ ) {
+ return userTaskService.addExcludedUsers(taskId, excludedUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @PUT
+ @Path("/{taskId}/excludedUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView setExcludedUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("excludedUsers") Set<String> excludedUsers
+ ) {
+ return userTaskService.setExcludedUsers(taskId, excludedUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+
+ @DELETE
+ @Path("/{taskId}/excludedUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView removeExcludedUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") Set<String> groups,
+ @QueryParam("excludedUsers") Set<String> excludedUsersToRemove
+ ) {
+ return userTaskService.removeExcludedUsers(taskId,
excludedUsersToRemove, identityProviderFactory.getOrImpersonateIdentity(user,
groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @POST
+ @Path("/{taskId}/adminGroups")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView addAdminGroups(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("adminGroups") Set<String> adminGroups
+ ) {
+ return userTaskService.addAdminGroups(taskId, adminGroups,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @PUT
+ @Path("/{taskId}/adminGroups")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView setAdminGroups(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("adminGroups") Set<String> adminGroups
+ ) {
+ return userTaskService.setAdminGroups(taskId, adminGroups,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+
+ @DELETE
+ @Path("/{taskId}/adminGroups")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView removeAdminGroups(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") Set<String> groups,
Review Comment:
The parameter 'groups' is declared as Set<String> here but as List<String>
in all other endpoints. This inconsistency could confuse API consumers and
cause type compatibility issues.
```suggestion
@QueryParam("group") List<String> groups,
```
##########
kogito-codegen-modules/kogito-codegen-processes/src/main/resources/class-templates/usertask/RestResourceUserTaskQuarkusTemplate.java:
##########
@@ -273,4 +274,176 @@ public Attachment getAttachment(
.orElseThrow(() -> new
UserTaskInstanceNotFoundException("Attachment " + attachmentId + " not found"));
}
+ @POST
+ @Path("/{taskId}/adminUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView addAdminUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("adminUsers") Set<String> adminUsers
+ ) {
+ return userTaskService.addAdminUsers(taskId, adminUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @PUT
+ @Path("/{taskId}/adminUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView setAdminUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("adminUsers") Set<String> adminUsers
+ ) {
+ return userTaskService.setAdminUsers(taskId, adminUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+
+ @DELETE
+ @Path("/{taskId}/adminUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView removeAdminUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") Set<String> groups,
+ @QueryParam("adminUsers") Set<String> adminUsersToRemove
Review Comment:
Using @QueryParam for Set<String> parameters is problematic. Query
parameters are typically simple values or arrays of strings, but Set<String>
collections should be passed in the request body using @RequestBody/@Consumes
instead.
```suggestion
Set<String> adminUsersToRemove
```
##########
kogito-codegen-modules/kogito-codegen-processes/src/main/resources/class-templates/usertask/RestResourceUserTaskQuarkusTemplate.java:
##########
@@ -273,4 +274,176 @@ public Attachment getAttachment(
.orElseThrow(() -> new
UserTaskInstanceNotFoundException("Attachment " + attachmentId + " not found"));
}
+ @POST
+ @Path("/{taskId}/adminUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView addAdminUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("adminUsers") Set<String> adminUsers
+ ) {
+ return userTaskService.addAdminUsers(taskId, adminUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @PUT
+ @Path("/{taskId}/adminUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView setAdminUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("adminUsers") Set<String> adminUsers
+ ) {
+ return userTaskService.setAdminUsers(taskId, adminUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+
+ @DELETE
+ @Path("/{taskId}/adminUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView removeAdminUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") Set<String> groups,
Review Comment:
The parameter 'groups' is declared as Set<String> here but as List<String>
in all other endpoints. This inconsistency could confuse API consumers and
cause type compatibility issues.
```suggestion
@QueryParam("group") List<String> groups,
```
##########
kogito-codegen-modules/kogito-codegen-processes/src/main/resources/class-templates/usertask/RestResourceUserTaskQuarkusTemplate.java:
##########
@@ -273,4 +274,176 @@ public Attachment getAttachment(
.orElseThrow(() -> new
UserTaskInstanceNotFoundException("Attachment " + attachmentId + " not found"));
}
+ @POST
+ @Path("/{taskId}/adminUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView addAdminUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("adminUsers") Set<String> adminUsers
+ ) {
+ return userTaskService.addAdminUsers(taskId, adminUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @PUT
+ @Path("/{taskId}/adminUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView setAdminUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("adminUsers") Set<String> adminUsers
+ ) {
+ return userTaskService.setAdminUsers(taskId, adminUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+
+ @DELETE
+ @Path("/{taskId}/adminUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView removeAdminUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") Set<String> groups,
+ @QueryParam("adminUsers") Set<String> adminUsersToRemove
+ ) {
+ return userTaskService.removeAdminUsers(taskId, adminUsersToRemove,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @POST
+ @Path("/{taskId}/potentialUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView addPotentialUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("potentialUsers") Set<String> potentialUsers
+ ) {
+ return userTaskService.addPotentialUsers(taskId, potentialUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @PUT
+ @Path("/{taskId}/potentialUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView setPotentialUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("potentialUsers") Set<String> potentialUsers
+ ) {
+ return userTaskService.setPotentialUsers(taskId, potentialUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+
+ @DELETE
+ @Path("/{taskId}/potentialUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView removePotentialUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") Set<String> groups,
+ @QueryParam("potentialUsers") Set<String> potentialUsersToRemove
+ ) {
+ return userTaskService.removePotentialUsers(taskId,
potentialUsersToRemove, identityProviderFactory.getOrImpersonateIdentity(user,
groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @POST
+ @Path("/{taskId}/excludedUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView addExcludedUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("excludedUsers") Set<String> excludedUsers
+ ) {
+ return userTaskService.addExcludedUsers(taskId, excludedUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @PUT
+ @Path("/{taskId}/excludedUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView setExcludedUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("excludedUsers") Set<String> excludedUsers
+ ) {
+ return userTaskService.setExcludedUsers(taskId, excludedUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+
+ @DELETE
+ @Path("/{taskId}/excludedUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView removeExcludedUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") Set<String> groups,
Review Comment:
The parameter 'groups' is declared as Set<String> here but as List<String>
in all other endpoints. This inconsistency could confuse API consumers and
cause type compatibility issues.
##########
kogito-codegen-modules/kogito-codegen-processes/src/main/resources/class-templates/usertask/RestResourceUserTaskQuarkusTemplate.java:
##########
@@ -273,4 +274,176 @@ public Attachment getAttachment(
.orElseThrow(() -> new
UserTaskInstanceNotFoundException("Attachment " + attachmentId + " not found"));
}
+ @POST
+ @Path("/{taskId}/adminUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView addAdminUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("adminUsers") Set<String> adminUsers
+ ) {
+ return userTaskService.addAdminUsers(taskId, adminUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @PUT
+ @Path("/{taskId}/adminUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView setAdminUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("adminUsers") Set<String> adminUsers
+ ) {
+ return userTaskService.setAdminUsers(taskId, adminUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+
+ @DELETE
+ @Path("/{taskId}/adminUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView removeAdminUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") Set<String> groups,
+ @QueryParam("adminUsers") Set<String> adminUsersToRemove
+ ) {
+ return userTaskService.removeAdminUsers(taskId, adminUsersToRemove,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @POST
+ @Path("/{taskId}/potentialUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView addPotentialUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("potentialUsers") Set<String> potentialUsers
+ ) {
+ return userTaskService.addPotentialUsers(taskId, potentialUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @PUT
+ @Path("/{taskId}/potentialUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView setPotentialUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("potentialUsers") Set<String> potentialUsers
+ ) {
+ return userTaskService.setPotentialUsers(taskId, potentialUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+
+ @DELETE
+ @Path("/{taskId}/potentialUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView removePotentialUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") Set<String> groups,
Review Comment:
The parameter 'groups' is declared as Set<String> here but as List<String>
in all other endpoints. This inconsistency could confuse API consumers and
cause type compatibility issues.
```suggestion
@QueryParam("group") List<String> groups,
```
##########
kogito-codegen-modules/kogito-codegen-processes/src/main/resources/class-templates/usertask/RestResourceUserTaskQuarkusTemplate.java:
##########
@@ -273,4 +274,176 @@ public Attachment getAttachment(
.orElseThrow(() -> new
UserTaskInstanceNotFoundException("Attachment " + attachmentId + " not found"));
}
+ @POST
+ @Path("/{taskId}/adminUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView addAdminUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("adminUsers") Set<String> adminUsers
Review Comment:
Using @QueryParam for Set<String> parameters is problematic. Query
parameters are typically simple values or arrays of strings, but Set<String>
collections should be passed in the request body using @RequestBody/@Consumes
instead.
##########
kogito-codegen-modules/kogito-codegen-processes/src/main/resources/class-templates/usertask/RestResourceUserTaskQuarkusTemplate.java:
##########
@@ -273,4 +274,176 @@ public Attachment getAttachment(
.orElseThrow(() -> new
UserTaskInstanceNotFoundException("Attachment " + attachmentId + " not found"));
}
+ @POST
+ @Path("/{taskId}/adminUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView addAdminUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("adminUsers") Set<String> adminUsers
+ ) {
+ return userTaskService.addAdminUsers(taskId, adminUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @PUT
+ @Path("/{taskId}/adminUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView setAdminUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("adminUsers") Set<String> adminUsers
+ ) {
+ return userTaskService.setAdminUsers(taskId, adminUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+
+ @DELETE
+ @Path("/{taskId}/adminUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView removeAdminUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") Set<String> groups,
+ @QueryParam("adminUsers") Set<String> adminUsersToRemove
+ ) {
+ return userTaskService.removeAdminUsers(taskId, adminUsersToRemove,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @POST
+ @Path("/{taskId}/potentialUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView addPotentialUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("potentialUsers") Set<String> potentialUsers
Review Comment:
Using @QueryParam for Set<String> parameters is problematic. Query
parameters are typically simple values or arrays of strings, but Set<String>
collections should be passed in the request body using @RequestBody/@Consumes
instead.
##########
kogito-codegen-modules/kogito-codegen-processes/src/main/resources/class-templates/usertask/RestResourceUserTaskQuarkusTemplate.java:
##########
@@ -273,4 +274,176 @@ public Attachment getAttachment(
.orElseThrow(() -> new
UserTaskInstanceNotFoundException("Attachment " + attachmentId + " not found"));
}
+ @POST
+ @Path("/{taskId}/adminUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView addAdminUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("adminUsers") Set<String> adminUsers
+ ) {
+ return userTaskService.addAdminUsers(taskId, adminUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @PUT
+ @Path("/{taskId}/adminUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView setAdminUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("adminUsers") Set<String> adminUsers
+ ) {
+ return userTaskService.setAdminUsers(taskId, adminUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+
+ @DELETE
+ @Path("/{taskId}/adminUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView removeAdminUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") Set<String> groups,
+ @QueryParam("adminUsers") Set<String> adminUsersToRemove
+ ) {
+ return userTaskService.removeAdminUsers(taskId, adminUsersToRemove,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @POST
+ @Path("/{taskId}/potentialUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView addPotentialUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("potentialUsers") Set<String> potentialUsers
+ ) {
+ return userTaskService.addPotentialUsers(taskId, potentialUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @PUT
+ @Path("/{taskId}/potentialUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView setPotentialUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("potentialUsers") Set<String> potentialUsers
+ ) {
+ return userTaskService.setPotentialUsers(taskId, potentialUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+
+ @DELETE
+ @Path("/{taskId}/potentialUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView removePotentialUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") Set<String> groups,
+ @QueryParam("potentialUsers") Set<String> potentialUsersToRemove
Review Comment:
Using @QueryParam for Set<String> parameters is problematic. Query
parameters are typically simple values or arrays of strings, but Set<String>
collections should be passed in the request body using @RequestBody/@Consumes
instead.
##########
kogito-codegen-modules/kogito-codegen-processes/src/main/resources/class-templates/usertask/RestResourceUserTaskQuarkusTemplate.java:
##########
@@ -273,4 +274,176 @@ public Attachment getAttachment(
.orElseThrow(() -> new
UserTaskInstanceNotFoundException("Attachment " + attachmentId + " not found"));
}
+ @POST
+ @Path("/{taskId}/adminUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView addAdminUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("adminUsers") Set<String> adminUsers
+ ) {
+ return userTaskService.addAdminUsers(taskId, adminUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @PUT
+ @Path("/{taskId}/adminUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView setAdminUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("adminUsers") Set<String> adminUsers
+ ) {
+ return userTaskService.setAdminUsers(taskId, adminUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+
+ @DELETE
+ @Path("/{taskId}/adminUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView removeAdminUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") Set<String> groups,
+ @QueryParam("adminUsers") Set<String> adminUsersToRemove
+ ) {
+ return userTaskService.removeAdminUsers(taskId, adminUsersToRemove,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @POST
+ @Path("/{taskId}/potentialUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView addPotentialUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("potentialUsers") Set<String> potentialUsers
+ ) {
+ return userTaskService.addPotentialUsers(taskId, potentialUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @PUT
+ @Path("/{taskId}/potentialUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView setPotentialUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("potentialUsers") Set<String> potentialUsers
+ ) {
+ return userTaskService.setPotentialUsers(taskId, potentialUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+
+ @DELETE
+ @Path("/{taskId}/potentialUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView removePotentialUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") Set<String> groups,
+ @QueryParam("potentialUsers") Set<String> potentialUsersToRemove
+ ) {
+ return userTaskService.removePotentialUsers(taskId,
potentialUsersToRemove, identityProviderFactory.getOrImpersonateIdentity(user,
groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @POST
+ @Path("/{taskId}/excludedUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView addExcludedUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("excludedUsers") Set<String> excludedUsers
+ ) {
+ return userTaskService.addExcludedUsers(taskId, excludedUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @PUT
+ @Path("/{taskId}/excludedUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView setExcludedUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("excludedUsers") Set<String> excludedUsers
+ ) {
+ return userTaskService.setExcludedUsers(taskId, excludedUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+
+ @DELETE
+ @Path("/{taskId}/excludedUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView removeExcludedUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") Set<String> groups,
+ @QueryParam("excludedUsers") Set<String> excludedUsersToRemove
Review Comment:
Using @QueryParam for Set<String> parameters is problematic. Query
parameters are typically simple values or arrays of strings, but Set<String>
collections should be passed in the request body using @RequestBody/@Consumes
instead.
##########
kogito-codegen-modules/kogito-codegen-processes/src/main/resources/class-templates/usertask/RestResourceUserTaskQuarkusTemplate.java:
##########
@@ -273,4 +274,176 @@ public Attachment getAttachment(
.orElseThrow(() -> new
UserTaskInstanceNotFoundException("Attachment " + attachmentId + " not found"));
}
+ @POST
+ @Path("/{taskId}/adminUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView addAdminUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("adminUsers") Set<String> adminUsers
+ ) {
+ return userTaskService.addAdminUsers(taskId, adminUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @PUT
+ @Path("/{taskId}/adminUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView setAdminUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("adminUsers") Set<String> adminUsers
+ ) {
+ return userTaskService.setAdminUsers(taskId, adminUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+
+ @DELETE
+ @Path("/{taskId}/adminUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView removeAdminUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") Set<String> groups,
+ @QueryParam("adminUsers") Set<String> adminUsersToRemove
+ ) {
+ return userTaskService.removeAdminUsers(taskId, adminUsersToRemove,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @POST
+ @Path("/{taskId}/potentialUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView addPotentialUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("potentialUsers") Set<String> potentialUsers
+ ) {
+ return userTaskService.addPotentialUsers(taskId, potentialUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @PUT
+ @Path("/{taskId}/potentialUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView setPotentialUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("potentialUsers") Set<String> potentialUsers
+ ) {
+ return userTaskService.setPotentialUsers(taskId, potentialUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+
+ @DELETE
+ @Path("/{taskId}/potentialUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView removePotentialUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") Set<String> groups,
+ @QueryParam("potentialUsers") Set<String> potentialUsersToRemove
+ ) {
+ return userTaskService.removePotentialUsers(taskId,
potentialUsersToRemove, identityProviderFactory.getOrImpersonateIdentity(user,
groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @POST
+ @Path("/{taskId}/excludedUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView addExcludedUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("excludedUsers") Set<String> excludedUsers
Review Comment:
Using @QueryParam for Set<String> parameters is problematic. Query
parameters are typically simple values or arrays of strings, but Set<String>
collections should be passed in the request body using @RequestBody/@Consumes
instead.
##########
kogito-codegen-modules/kogito-codegen-processes/src/main/resources/class-templates/usertask/RestResourceUserTaskQuarkusTemplate.java:
##########
@@ -273,4 +274,176 @@ public Attachment getAttachment(
.orElseThrow(() -> new
UserTaskInstanceNotFoundException("Attachment " + attachmentId + " not found"));
}
+ @POST
+ @Path("/{taskId}/adminUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView addAdminUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("adminUsers") Set<String> adminUsers
+ ) {
+ return userTaskService.addAdminUsers(taskId, adminUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @PUT
+ @Path("/{taskId}/adminUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView setAdminUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("adminUsers") Set<String> adminUsers
+ ) {
+ return userTaskService.setAdminUsers(taskId, adminUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+
+ @DELETE
+ @Path("/{taskId}/adminUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView removeAdminUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") Set<String> groups,
+ @QueryParam("adminUsers") Set<String> adminUsersToRemove
+ ) {
+ return userTaskService.removeAdminUsers(taskId, adminUsersToRemove,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @POST
+ @Path("/{taskId}/potentialUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView addPotentialUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("potentialUsers") Set<String> potentialUsers
+ ) {
+ return userTaskService.addPotentialUsers(taskId, potentialUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @PUT
+ @Path("/{taskId}/potentialUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView setPotentialUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("potentialUsers") Set<String> potentialUsers
+ ) {
+ return userTaskService.setPotentialUsers(taskId, potentialUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+
+ @DELETE
+ @Path("/{taskId}/potentialUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView removePotentialUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") Set<String> groups,
+ @QueryParam("potentialUsers") Set<String> potentialUsersToRemove
+ ) {
+ return userTaskService.removePotentialUsers(taskId,
potentialUsersToRemove, identityProviderFactory.getOrImpersonateIdentity(user,
groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @POST
+ @Path("/{taskId}/excludedUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView addExcludedUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("excludedUsers") Set<String> excludedUsers
+ ) {
+ return userTaskService.addExcludedUsers(taskId, excludedUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @PUT
+ @Path("/{taskId}/excludedUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView setExcludedUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("excludedUsers") Set<String> excludedUsers
+ ) {
+ return userTaskService.setExcludedUsers(taskId, excludedUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+
+ @DELETE
+ @Path("/{taskId}/excludedUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView removeExcludedUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") Set<String> groups,
+ @QueryParam("excludedUsers") Set<String> excludedUsersToRemove
+ ) {
+ return userTaskService.removeExcludedUsers(taskId,
excludedUsersToRemove, identityProviderFactory.getOrImpersonateIdentity(user,
groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @POST
+ @Path("/{taskId}/adminGroups")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView addAdminGroups(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("adminGroups") Set<String> adminGroups
+ ) {
+ return userTaskService.addAdminGroups(taskId, adminGroups,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @PUT
+ @Path("/{taskId}/adminGroups")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView setAdminGroups(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("adminGroups") Set<String> adminGroups
+ ) {
+ return userTaskService.setAdminGroups(taskId, adminGroups,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+
+ @DELETE
+ @Path("/{taskId}/adminGroups")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView removeAdminGroups(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") Set<String> groups,
+ @QueryParam("adminGroups") Set<String> adminGroupsToRemove
Review Comment:
Using @QueryParam for Set<String> parameters is problematic. Query
parameters are typically simple values or arrays of strings, but Set<String>
collections should be passed in the request body using @RequestBody/@Consumes
instead.
```suggestion
Set<String> adminGroupsToRemove
```
##########
jbpm/jbpm-usertask/src/main/java/org/kie/kogito/usertask/impl/DefaultUserTaskInstance.java:
##########
@@ -456,12 +487,27 @@ public Set<String> getAdminGroups() {
return this.adminGroups;
}
+ @Override
public void setAdminGroups(Set<String> adminGroups) {
Set<String> oldValues = new HashSet<>(this.adminGroups);
this.adminGroups = adminGroups;
- if (this.userTaskEventSupport != null) {
- this.userTaskEventSupport.fireOnUserTaskAssignmentChange(this,
AssignmentType.ADMIN_GROUPS, oldValues, adminGroups);
- }
+ fireTaskAssignmentChange(AssignmentType.ADMIN_GROUPS, oldValues,
adminGroups);
+ updatePersistence();
+ }
+
+ @Override
+ public void addAdminGroups(Set<String> adminGroups) {
+ Set<String> oldValues = new HashSet<>(this.adminGroups);
+ this.adminGroups = adminGroups;
Review Comment:
The adminGroups should be added to the existing set using addAll(), not
replaced entirely. This is inconsistent with the method name 'addAdminGroups'
which implies addition, not replacement.
```suggestion
this.adminGroups.addAll(adminGroups);
```
##########
kogito-codegen-modules/kogito-codegen-processes/src/main/resources/class-templates/usertask/RestResourceUserTaskQuarkusTemplate.java:
##########
@@ -273,4 +274,176 @@ public Attachment getAttachment(
.orElseThrow(() -> new
UserTaskInstanceNotFoundException("Attachment " + attachmentId + " not found"));
}
+ @POST
+ @Path("/{taskId}/adminUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView addAdminUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("adminUsers") Set<String> adminUsers
+ ) {
+ return userTaskService.addAdminUsers(taskId, adminUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @PUT
+ @Path("/{taskId}/adminUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView setAdminUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("adminUsers") Set<String> adminUsers
+ ) {
+ return userTaskService.setAdminUsers(taskId, adminUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+
+ @DELETE
+ @Path("/{taskId}/adminUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView removeAdminUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") Set<String> groups,
+ @QueryParam("adminUsers") Set<String> adminUsersToRemove
+ ) {
+ return userTaskService.removeAdminUsers(taskId, adminUsersToRemove,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @POST
+ @Path("/{taskId}/potentialUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView addPotentialUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("potentialUsers") Set<String> potentialUsers
+ ) {
+ return userTaskService.addPotentialUsers(taskId, potentialUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @PUT
+ @Path("/{taskId}/potentialUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView setPotentialUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("potentialUsers") Set<String> potentialUsers
+ ) {
+ return userTaskService.setPotentialUsers(taskId, potentialUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+
+ @DELETE
+ @Path("/{taskId}/potentialUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView removePotentialUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") Set<String> groups,
+ @QueryParam("potentialUsers") Set<String> potentialUsersToRemove
+ ) {
+ return userTaskService.removePotentialUsers(taskId,
potentialUsersToRemove, identityProviderFactory.getOrImpersonateIdentity(user,
groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @POST
+ @Path("/{taskId}/excludedUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView addExcludedUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("excludedUsers") Set<String> excludedUsers
+ ) {
+ return userTaskService.addExcludedUsers(taskId, excludedUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @PUT
+ @Path("/{taskId}/excludedUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView setExcludedUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("excludedUsers") Set<String> excludedUsers
+ ) {
+ return userTaskService.setExcludedUsers(taskId, excludedUsers,
identityProviderFactory.getOrImpersonateIdentity(user, groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+
+ @DELETE
+ @Path("/{taskId}/excludedUsers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView removeExcludedUsers(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") Set<String> groups,
+ @QueryParam("excludedUsers") Set<String> excludedUsersToRemove
+ ) {
+ return userTaskService.removeExcludedUsers(taskId,
excludedUsersToRemove, identityProviderFactory.getOrImpersonateIdentity(user,
groups))
+ .orElseThrow(UserTaskInstanceNotFoundException::new);
+ }
+
+ @POST
+ @Path("/{taskId}/adminGroups")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public UserTaskView addAdminGroups(
+ @PathParam("taskId") String taskId,
+ @QueryParam("user") String user,
+ @QueryParam("group") List<String> groups,
+ @QueryParam("adminGroups") Set<String> adminGroups
Review Comment:
Using @QueryParam for Set<String> parameters is problematic. Query
parameters are typically simple values or arrays of strings, but Set<String>
collections should be passed in the request body using @RequestBody/@Consumes
instead.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]