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;
}