This is the codeAbility Sharing Platform! Learn more about the codeAbility Sharing Platform.

Skip to content
Snippets Groups Projects

Resolve "Edu-Sharing-Integration: deleteNode in zusätzliches try-catch"

Files
2
@@ -243,8 +243,6 @@ public class EduSharingService {
this.assignWorkflowToNode(eduSharingId);
this.addOrUpdatePermissionsToCuratorGroup(eduSharingId);
if (update) {
linkedEduSharingProject.setUpdatedAt(Instant.now());
} else {
@@ -571,74 +569,4 @@ public class EduSharingService {
.bodyToMono(String.class)
.block();
}
private void addOrUpdatePermissionsToCuratorGroup(@NotNull final String nodeId) throws JsonProcessingException {
final GetPermissionAnswerDTO currentPermissions = getCurrentPermissionsForNode(nodeId);
LocalPermissionDTO localPermissions = currentPermissions.getLocalPermissions();
localPermissions = localPermissions == null ? createOerRepoCuratorLocalPermissionDTO() : addPermissionForCuratorGroup(localPermissions);
final var uri = UriComponentsBuilder
.newInstance()
.path("/rest/node/v1/nodes/{repository}/{node}/permissions")
.queryParam("mailtext", "")
.queryParam("sendMail", false)
.queryParam("sendCopy", false)
.build(this.eduSharingConfiguration.getDefaultRepository(), nodeId);
final var answer =
this.webClient.post()
.uri(uri.toString())
.accept(MediaType.APPLICATION_JSON)
.contentType(MediaType.APPLICATION_JSON)
.bodyValue(localPermissions)
.retrieve();
ResponseEntity<String> response = answer.toEntity(String.class).block();
if (response == null || !response.getStatusCode().is2xxSuccessful()) {
LOGGER.error("POST request to " + uri + " failed!");
LOGGER.error(response.getBody());
}
}
protected LocalPermissionDTO addPermissionForCuratorGroup(@NotNull final LocalPermissionDTO localPermissionDTO) {
final PermissionDTO oerRepoCuratorPermissionDTO = createOerRepoCuratorPermissionDTO();
localPermissionDTO
.getPermissions()
.stream()
.filter(dto -> dto.getAuthority().equals(oerRepoCuratorPermissionDTO.getAuthority()))
.findFirst()
.ifPresentOrElse(
dto -> {
dto.setEditable(dto.isEditable() || oerRepoCuratorPermissionDTO.isEditable());
dto.getPermissions().addAll(oerRepoCuratorPermissionDTO.getPermissions());
},
() -> localPermissionDTO.getPermissions().add(oerRepoCuratorPermissionDTO)
);
return localPermissionDTO;
}
protected LocalPermissionDTO createOerRepoCuratorLocalPermissionDTO() {
final var result = new LocalPermissionDTO();
result.setInherited(true);
result.setPermissions(new HashSet<>(Set.of(createOerRepoCuratorPermissionDTO())));
return result;
}
protected PermissionDTO createOerRepoCuratorPermissionDTO() {
final var permission = new PermissionDTO();
permission.setAuthority(this.eduSharingConfiguration.getEditorialGroup());
permission.setEditable(true);
permission.setPermissions(new HashSet<>(Set.of(this.eduSharingConfiguration.getEditorialPermission())));
return permission;
}
private GetPermissionAnswerDTO getCurrentPermissionsForNode(@NotNull final String nodeId) {
final var uri = UriComponentsBuilder
.newInstance()
.path("/rest/node/v1/nodes/{repository}/{node}/permissions")
.build(this.eduSharingConfiguration.getDefaultRepository(), nodeId);
return this.webClient.get().uri(uri.toString()).retrieve().bodyToMono(GetPermissionAnswerDTO.class).block();
}
}