On 31/05/2018 10:48, Alexander Tsvetkov wrote:
Hi all,
Recently I realised that SUSPEND and REACTIVATE bulk operations on User are not propagated. This happen because of in AbstractAnyService

 case SUSPEND:
                if (logic instanceof UserLogic) {
                    for (String key : bulkAction.getTargets()) {
                        StatusPatch statusPatch = new StatusPatch.Builder().key(key).
type(StatusPatchType.SUSPEND).
                                onSyncope(true).
                                build();

                        try {
                            result.getResults().put(
                                    ((UserLogic) logic).
status(statusPatch, isNullPriorityAsync()).getEntity().getKey(),
BulkActionResult.Status.SUCCESS);
                        } catch (Exception e) {
                            LOG.error("Error performing suspend for user {}", key, e);                             result.getResults().put(key, BulkActionResult.Status.FAILURE);
                        }
                    }
                } else {
                    throw new BadRequestException();
                }
                break;

when we create StatusPatch, we don't set Resources to it.

Questions:
1. Is there any way to propagate SUSPEND and REACTIVATE bulk operations?
2. Was it implemented intentionally or I should create a bug for this in jira?

Hi Alexander,
the snippet above appears to be taken from [1]: the only way to trigger it is by invoking the REST service [2], e.g.

POST /users/bulk

with payload [3].

As you can see, the payload class bears minimum information, being meant to cover all possible bulk actions. In order to specify which resource(s) should be considered when suspending or re-activating an user, however, further input is needed. I don't see how to allow to provide such further input without making the method and payload design confused, in the general case.

You can, however, add a new dedicated REST endpoint in your own project to cover such need; some indications are provided in [4].

Regards.

[1] https://github.com/apache/syncope/blob/2_0_X/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractAnyService.java#L353-L374 [2] https://github.com/apache/syncope/blob/2_0_X/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AnyService.java#L290 [3] https://github.com/apache/syncope/blob/2_0_X/common/lib/src/main/java/org/apache/syncope/common/lib/to/BulkAction.java
[4] http://blog.tirasa.net/add-rest-endpoints-to-apache-syncope-2.0.html

--
Francesco Chicchiriccò

Tirasa - Open Source Excellence
http://www.tirasa.net/

Member at The Apache Software Foundation
Syncope, Cocoon, Olingo, CXF, OpenJPA, PonyMail
http://home.apache.org/~ilgrosso/

Reply via email to