From 239bc5271d248923cf65df277ccfc9a4a4244860 Mon Sep 17 00:00:00 2001 From: KevinVdV Date: Wed, 22 Jul 2020 11:31:51 +0200 Subject: [PATCH 1/3] [Issue: 2800] Put dynamic workflowgroup links on Collections in an array --- .../CollectionResourceWorkflowGroupHalLinkFactory.java | 4 ++-- .../org/dspace/app/rest/model/hateoas/HALResource.java | 8 -------- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/link/CollectionResourceWorkflowGroupHalLinkFactory.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/link/CollectionResourceWorkflowGroupHalLinkFactory.java index 7d0256cfc49c..c049a74c0ded 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/link/CollectionResourceWorkflowGroupHalLinkFactory.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/link/CollectionResourceWorkflowGroupHalLinkFactory.java @@ -47,9 +47,9 @@ protected void addLinks(CollectionResource halResource, Pageable pageable, Linke Map roles = WorkflowUtils.getCollectionRoles(collection); UUID resourceUuid = UUID.fromString(halResource.getContent().getUuid()); for (Map.Entry entry : roles.entrySet()) { - list.add(buildLink("workflowGroups/" + entry.getKey(), getMethodOn() + list.add(buildLink("workflowGroups", getMethodOn() .getWorkflowGroupForRole(resourceUuid, null, null, - entry.getKey()))); + entry.getKey())).withName(entry.getKey())); } } diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/model/hateoas/HALResource.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/model/hateoas/HALResource.java index 31e2c672e336..0077ae1bc522 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/model/hateoas/HALResource.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/model/hateoas/HALResource.java @@ -44,12 +44,4 @@ public void embedResource(String rel, Object object) { public void setPageHeader(EmbeddedPageHeader page) { this.pageHeader = page; } - - @Override - public EntityModel add(Link link) { - if (!hasLink(link.getRel())) { - return super.add(link); - } - return this; - } } From 338764b0462f59d3deff7054711978747131ded2 Mon Sep 17 00:00:00 2001 From: Raf Ponsaerts Date: Wed, 29 Jul 2020 13:00:16 +0200 Subject: [PATCH 2/3] [Task 72222] fixed a bug with the links after the implementation of the array dynamic workflowgroup links --- .../app/rest/model/hateoas/HALResource.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/model/hateoas/HALResource.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/model/hateoas/HALResource.java index 0077ae1bc522..d82da2b1834c 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/model/hateoas/HALResource.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/model/hateoas/HALResource.java @@ -8,11 +8,13 @@ package org.dspace.app.rest.model.hateoas; import java.util.HashMap; +import java.util.List; import java.util.Map; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonUnwrapped; +import org.apache.commons.lang3.StringUtils; import org.springframework.hateoas.EntityModel; import org.springframework.hateoas.Link; @@ -44,4 +46,26 @@ public void embedResource(String rel, Object object) { public void setPageHeader(EmbeddedPageHeader page) { this.pageHeader = page; } + + @Override + public EntityModel add(Link link) { + if (!hasLink(link.getRel())) { + return super.add(link); + } else { + String name = link.getName(); + if (StringUtils.isNotBlank(name)) { + List list = this.getLinks(link.getRel()); + boolean doesNameExist = false; + for (Link existingLink : list) { + if (StringUtils.equalsIgnoreCase(existingLink.getName(), link.getName())) { + doesNameExist = true; + } + } + if (!doesNameExist) { + super.add(link); + } + } + } + return this; + } } From 61d44087fd6d8b8e9f035e5962fedcde8ef8ea7b Mon Sep 17 00:00:00 2001 From: Raf Ponsaerts Date: Thu, 6 Aug 2020 12:25:11 +0200 Subject: [PATCH 3/3] [Task 72222] simplified the for loop in halResource to use java8 stream --- .../org/dspace/app/rest/model/hateoas/HALResource.java | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/model/hateoas/HALResource.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/model/hateoas/HALResource.java index d82da2b1834c..2631b63417d6 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/model/hateoas/HALResource.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/model/hateoas/HALResource.java @@ -55,13 +55,8 @@ public EntityModel add(Link link) { String name = link.getName(); if (StringUtils.isNotBlank(name)) { List list = this.getLinks(link.getRel()); - boolean doesNameExist = false; - for (Link existingLink : list) { - if (StringUtils.equalsIgnoreCase(existingLink.getName(), link.getName())) { - doesNameExist = true; - } - } - if (!doesNameExist) { + // If a link of this name doesn't already exist in the list, add it + if (!list.stream().anyMatch((l -> StringUtils.equalsIgnoreCase(l.getName(), name)))) { super.add(link); } }