This is an automated email from the ASF dual-hosted git repository.
ilgrosso pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/syncope.git
The following commit(s) were added to refs/heads/master by this push:
new 0c32003a60 [SYNCOPE-1813] Ensuring (de)provision results are sorted
according to request
0c32003a60 is described below
commit 0c32003a60a538d976dcc392aa08c0a2d9aa6831
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 8720b90c54..b31499a158 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 6fb59cce1d..d03803eba0 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;
}).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 b30d41c3a7..e6a9756d74 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.Set;
@@ -302,7 +303,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);
@@ -312,13 +315,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) {
@@ -331,6 +335,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 676847158e..01c6b21cfc 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.Set;
@@ -361,7 +362,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);
@@ -371,6 +374,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;
}
@@ -378,7 +382,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) {
@@ -391,6 +395,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 50bb44bd0d..feaac461cf 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
@@ -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.Objects;
import java.util.Optional;
@@ -596,7 +597,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);
@@ -606,6 +609,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;
}
@@ -613,7 +617,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) {
@@ -626,6 +630,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;
}