This is an automated email from the ASF dual-hosted git repository.

ilgrosso pushed a commit to branch 3_0_X
in repository https://gitbox.apache.org/repos/asf/syncope.git


The following commit(s) were added to refs/heads/3_0_X by this push:
     new 389a418905 [SYNCOPE-1813] Ensuring (de)provision results are sorted 
according to request
389a418905 is described below

commit 389a4189052b998bda4affe01001ef2c04fd1dd0
Author: Francesco Chicchiriccò <[email protected]>
AuthorDate: Fri Apr 12 11:52:21 2024 +0200

    [SYNCOPE-1813] Ensuring (de)provision results are sorted according to 
request
---
 .../syncope/client/console/rest/AbstractAnyRestClient.java       | 4 ++--
 .../apache/syncope/common/rest/api/batch/BatchPayloadParser.java | 6 ++----
 .../apache/syncope/core/logic/AbstractResourceAssociator.java    | 5 +++--
 .../main/java/org/apache/syncope/core/logic/AnyObjectLogic.java  | 9 +++++++--
 .../src/main/java/org/apache/syncope/core/logic/GroupLogic.java  | 9 +++++++--
 .../src/main/java/org/apache/syncope/core/logic/UserLogic.java   | 9 +++++++--
 6 files changed, 28 insertions(+), 14 deletions(-)

diff --git 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/AbstractAnyRestClient.java
 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/AbstractAnyRestClient.java
index 28655d3f4e..a32d4e4bcd 100644
--- 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/AbstractAnyRestClient.java
+++ 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/AbstractAnyRestClient.java
@@ -94,7 +94,6 @@ public abstract class AbstractAnyRestClient<TO extends AnyTO> 
extends BaseRestCl
             }
 
             StatusR statusR = StatusUtils.statusR(key, StatusRType.ACTIVATE, 
statuses);
-
             ResourceAR resourceAR = new ResourceAR.Builder().key(key).
                     action(action).
                     onSyncope(statusR.isOnSyncope()).
@@ -130,9 +129,10 @@ public abstract class AbstractAnyRestClient<TO extends 
AnyTO> extends BaseRestCl
                 client.accept(RESTHeaders.MULTIPART_MIXED);
             }
 
+            StatusR statusR = StatusUtils.statusR(key, StatusRType.SUSPEND, 
statuses);
             ResourceDR resourceDR = new ResourceDR.Builder().key(key).
                     action(action).
-                    resources(StatusUtils.statusR(key, StatusRType.ACTIVATE, 
statuses).getResources()).build();
+                    resources(statusR.getResources()).build();
             try {
                 List<BatchResponseItem> items = 
parseBatchResponse(service.deassociate(resourceDR));
                 for (int i = 0; i < items.size(); i++) {
diff --git 
a/common/idrepo/rest-api/src/main/java/org/apache/syncope/common/rest/api/batch/BatchPayloadParser.java
 
b/common/idrepo/rest-api/src/main/java/org/apache/syncope/common/rest/api/batch/BatchPayloadParser.java
index d64509a1dd..0e61c87f1c 100644
--- 
a/common/idrepo/rest-api/src/main/java/org/apache/syncope/common/rest/api/batch/BatchPayloadParser.java
+++ 
b/common/idrepo/rest-api/src/main/java/org/apache/syncope/common/rest/api/batch/BatchPayloadParser.java
@@ -146,7 +146,7 @@ public final class BatchPayloadParser {
                 } else if (item instanceof BatchResponseItem) {
                     BatchResponseItem bri = BatchResponseItem.class.cast(item);
                     try {
-                        
bri.setStatus(Integer.valueOf(StringUtils.substringBefore(
+                        
bri.setStatus(Integer.parseInt(StringUtils.substringBefore(
                                 
StringUtils.substringAfter(currentLine.toString(), " "), " ").trim()));
                     } catch (NumberFormatException e) {
                         LOG.error("Invalid value found in response for HTTP 
status", e);
@@ -197,10 +197,8 @@ public final class BatchPayloadParser {
                     LOG.debug("Body part:\n{}", bodyPart);
 
                     T item = SerializationUtils.clone(template);
-
                     consumeHeaders(bodyPart, item);
-                    item.setContent(
-                            
bodyPart.stream().map(BatchPayloadLine::toString).collect(Collectors.joining()));
+                    
item.setContent(bodyPart.stream().map(BatchPayloadLine::toString).collect(Collectors.joining()));
 
                     return item;
                 }).collect(Collectors.toList());
diff --git 
a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AbstractResourceAssociator.java
 
b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AbstractResourceAssociator.java
index 577455bc06..8f5209cfdf 100644
--- 
a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AbstractResourceAssociator.java
+++ 
b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AbstractResourceAssociator.java
@@ -19,6 +19,7 @@
 package org.apache.syncope.core.logic;
 
 import java.util.Collection;
+import java.util.List;
 import org.apache.syncope.common.lib.to.AnyTO;
 import org.apache.syncope.common.lib.to.ProvisioningResult;
 
@@ -35,8 +36,8 @@ public abstract class AbstractResourceAssociator<A extends 
AnyTO> extends Abstra
             String key, Collection<String> resources, boolean changepwd, 
String password, boolean nullPriorityAsync);
 
     public abstract ProvisioningResult<A> deprovision(
-            String key, Collection<String> resources, boolean 
nullPriorityAsync);
+            String key, List<String> resources, boolean nullPriorityAsync);
 
     public abstract ProvisioningResult<A> provision(
-            String key, Collection<String> resources, boolean changepwd, 
String password, boolean nullPriorityAsync);
+            String key, List<String> resources, boolean changepwd, String 
password, boolean nullPriorityAsync);
 }
diff --git 
a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AnyObjectLogic.java
 
b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AnyObjectLogic.java
index b6d1126803..29ded60542 100644
--- 
a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AnyObjectLogic.java
+++ 
b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AnyObjectLogic.java
@@ -20,6 +20,7 @@ package org.apache.syncope.core.logic;
 
 import java.lang.reflect.Method;
 import java.util.Collection;
+import java.util.Comparator;
 import java.util.List;
 import java.util.Objects;
 import java.util.Optional;
@@ -301,7 +302,9 @@ public class AnyObjectLogic extends 
AbstractAnyLogic<AnyObjectTO, AnyObjectCR, A
 
     @Override
     public ProvisioningResult<AnyObjectTO> deprovision(
-            final String key, final Collection<String> resources, final 
boolean nullPriorityAsync) {
+            final String key,
+            final List<String> resources,
+            final boolean nullPriorityAsync) {
 
         updateChecks(key);
 
@@ -311,13 +314,14 @@ public class AnyObjectLogic extends 
AbstractAnyLogic<AnyObjectTO, AnyObjectCR, A
         ProvisioningResult<AnyObjectTO> result = new ProvisioningResult<>();
         result.setEntity(binder.getAnyObjectTO(key));
         result.getPropagationStatuses().addAll(statuses);
+        result.getPropagationStatuses().sort(Comparator.comparing(item -> 
resources.indexOf(item.getResource())));
         return result;
     }
 
     @Override
     public ProvisioningResult<AnyObjectTO> provision(
             final String key,
-            final Collection<String> resources,
+            final List<String> resources,
             final boolean changePwd,
             final String password,
             final boolean nullPriorityAsync) {
@@ -330,6 +334,7 @@ public class AnyObjectLogic extends 
AbstractAnyLogic<AnyObjectTO, AnyObjectCR, A
         ProvisioningResult<AnyObjectTO> result = new ProvisioningResult<>();
         result.setEntity(binder.getAnyObjectTO(key));
         result.getPropagationStatuses().addAll(statuses);
+        result.getPropagationStatuses().sort(Comparator.comparing(item -> 
resources.indexOf(item.getResource())));
         return result;
     }
 
diff --git 
a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/GroupLogic.java 
b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/GroupLogic.java
index 39a9805a3e..050f57f7fc 100644
--- 
a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/GroupLogic.java
+++ 
b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/GroupLogic.java
@@ -21,6 +21,7 @@ package org.apache.syncope.core.logic;
 import java.lang.reflect.Method;
 import java.time.OffsetDateTime;
 import java.util.Collection;
+import java.util.Comparator;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
@@ -362,7 +363,9 @@ public class GroupLogic extends AbstractAnyLogic<GroupTO, 
GroupCR, GroupUR> {
     @PreAuthorize("hasRole('" + IdRepoEntitlement.GROUP_UPDATE + "')")
     @Override
     public ProvisioningResult<GroupTO> deprovision(
-            final String key, final Collection<String> resources, final 
boolean nullPriorityAsync) {
+            final String key,
+            final List<String> resources,
+            final boolean nullPriorityAsync) {
 
         updateChecks(key);
 
@@ -372,6 +375,7 @@ public class GroupLogic extends AbstractAnyLogic<GroupTO, 
GroupCR, GroupUR> {
         ProvisioningResult<GroupTO> result = new ProvisioningResult<>();
         result.setEntity(binder.getGroupTO(key));
         result.getPropagationStatuses().addAll(statuses);
+        result.getPropagationStatuses().sort(Comparator.comparing(item -> 
resources.indexOf(item.getResource())));
         return result;
     }
 
@@ -379,7 +383,7 @@ public class GroupLogic extends AbstractAnyLogic<GroupTO, 
GroupCR, GroupUR> {
     @Override
     public ProvisioningResult<GroupTO> provision(
             final String key,
-            final Collection<String> resources,
+            final List<String> resources,
             final boolean changePwd,
             final String password,
             final boolean nullPriorityAsync) {
@@ -392,6 +396,7 @@ public class GroupLogic extends AbstractAnyLogic<GroupTO, 
GroupCR, GroupUR> {
         ProvisioningResult<GroupTO> result = new ProvisioningResult<>();
         result.setEntity(binder.getGroupTO(key));
         result.getPropagationStatuses().addAll(statuses);
+        result.getPropagationStatuses().sort(Comparator.comparing(item -> 
resources.indexOf(item.getResource())));
         return result;
     }
 
diff --git 
a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java 
b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java
index 08c18cb1b6..c53128011b 100644
--- 
a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java
+++ 
b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java
@@ -20,6 +20,7 @@ package org.apache.syncope.core.logic;
 
 import java.lang.reflect.Method;
 import java.util.Collection;
+import java.util.Comparator;
 import java.util.List;
 import java.util.Objects;
 import java.util.Optional;
@@ -593,7 +594,9 @@ public class UserLogic extends AbstractAnyLogic<UserTO, 
UserCR, UserUR> {
     @PreAuthorize("hasRole('" + IdRepoEntitlement.USER_UPDATE + "')")
     @Override
     public ProvisioningResult<UserTO> deprovision(
-            final String key, final Collection<String> resources, final 
boolean nullPriorityAsync) {
+            final String key,
+            final List<String> resources,
+            final boolean nullPriorityAsync) {
 
         updateChecks(key);
 
@@ -603,6 +606,7 @@ public class UserLogic extends AbstractAnyLogic<UserTO, 
UserCR, UserUR> {
         ProvisioningResult<UserTO> result = new ProvisioningResult<>();
         result.setEntity(binder.getUserTO(key));
         result.getPropagationStatuses().addAll(statuses);
+        result.getPropagationStatuses().sort(Comparator.comparing(item -> 
resources.indexOf(item.getResource())));
         return result;
     }
 
@@ -610,7 +614,7 @@ public class UserLogic extends AbstractAnyLogic<UserTO, 
UserCR, UserUR> {
     @Override
     public ProvisioningResult<UserTO> provision(
             final String key,
-            final Collection<String> resources,
+            final List<String> resources,
             final boolean changePwd,
             final String password,
             final boolean nullPriorityAsync) {
@@ -623,6 +627,7 @@ public class UserLogic extends AbstractAnyLogic<UserTO, 
UserCR, UserUR> {
         ProvisioningResult<UserTO> result = new ProvisioningResult<>();
         result.setEntity(binder.getUserTO(key));
         result.getPropagationStatuses().addAll(statuses);
+        result.getPropagationStatuses().sort(Comparator.comparing(item -> 
resources.indexOf(item.getResource())));
         return result;
     }
 

Reply via email to