[SYNCOPE-1207] Reorganizing event management and ProvisioningManager output in case of update in order to generate correct audit messages
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/928b90c9 Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/928b90c9 Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/928b90c9 Branch: refs/heads/master Commit: 928b90c934a11329e741306b50e83520290b9c80 Parents: 2143809 Author: Francesco Chicchiriccò <ilgro...@apache.org> Authored: Thu Sep 14 18:06:19 2017 +0200 Committer: Francesco Chicchiriccò <ilgro...@apache.org> Committed: Thu Sep 14 18:22:46 2017 +0200 ---------------------------------------------------------------------- .../apache/syncope/client/lib/SyncopeClient.java | 3 +-- .../apache/syncope/common/lib/AnyOperations.java | 18 +++++++++++++++++- .../syncope/common/lib/types/AuditLoggerName.java | 3 +-- .../apache/syncope/core/logic/AnyObjectLogic.java | 5 +++-- .../org/apache/syncope/core/logic/GroupLogic.java | 5 +++-- .../apache/syncope/core/logic/LoggerLogic.java | 15 +++++++-------- .../org/apache/syncope/core/logic/UserLogic.java | 5 +++-- .../syncope/core/logic/UserWorkflowLogic.java | 6 +++--- .../provisioning/api/ProvisioningManager.java | 4 ++-- .../provisioning/api/UserProvisioningManager.java | 2 +- .../java/DefaultAnyObjectProvisioningManager.java | 6 +++--- .../java/DefaultGroupProvisioningManager.java | 8 +++++--- .../java/DefaultUserProvisioningManager.java | 10 +++++----- .../java/pushpull/AbstractPullResultHandler.java | 18 ++++++++++-------- .../pushpull/AnyObjectPullResultHandlerImpl.java | 14 +++++--------- .../java/pushpull/GroupPullResultHandlerImpl.java | 18 ++++++------------ .../java/pushpull/UserPullResultHandlerImpl.java | 11 ++++------- .../flowable/FlowableUserWorkflowAdapter.java | 9 ++++----- .../workflow/java/DefaultUserWorkflowAdapter.java | 5 ++--- .../camel/CamelAnyObjectProvisioningManager.java | 4 ++-- .../camel/CamelGroupProvisioningManager.java | 6 ++++-- .../camel/CamelUserProvisioningManager.java | 9 ++++----- .../camel/producer/CreateProducer.java | 8 +++----- .../camel/producer/StatusProducer.java | 4 ++-- .../camel/producer/SuspendProducer.java | 3 +-- .../camel/producer/UpdateProducer.java | 7 +++---- .../core/logic/saml2/SAML2UserManager.java | 4 ++-- .../org/apache/syncope/fit/core/LoggerITCase.java | 4 ++-- .../apache/syncope/fit/core/PullTaskITCase.java | 7 +++++-- 29 files changed, 113 insertions(+), 108 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/syncope/blob/928b90c9/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java ---------------------------------------------------------------------- diff --git a/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java b/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java index a3f959d..2a66f14 100644 --- a/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java +++ b/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java @@ -30,7 +30,6 @@ import javax.ws.rs.core.EntityTag; import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; -import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.Pair; import org.apache.cxf.jaxrs.client.Client; import org.apache.cxf.jaxrs.client.ClientConfiguration; @@ -260,7 +259,7 @@ public class SyncopeClient { } try { - return new ImmutablePair<>( + return Pair.of( (Map<String, Set<String>>) new ObjectMapper().readValue( response.getHeaderString(RESTHeaders.OWNED_ENTITLEMENTS), new TypeReference<HashMap<String, Set<String>>>() { http://git-wip-us.apache.org/repos/asf/syncope/blob/928b90c9/common/lib/src/main/java/org/apache/syncope/common/lib/AnyOperations.java ---------------------------------------------------------------------- diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/AnyOperations.java b/common/lib/src/main/java/org/apache/syncope/common/lib/AnyOperations.java index f180ed0..7340d69 100644 --- a/common/lib/src/main/java/org/apache/syncope/common/lib/AnyOperations.java +++ b/common/lib/src/main/java/org/apache/syncope/common/lib/AnyOperations.java @@ -413,7 +413,10 @@ public final class AnyOperations { if (patch.getAttrTO() == null) { LOG.warn("Invalid {} specified: {}", AttrPatch.class.getName(), patch); } else { - rwattrs.remove(patch.getAttrTO().getSchema()); + AttrTO removed = rwattrs.remove(patch.getAttrTO().getSchema()); + if (removed != null && removed.getSchemaInfo() != null) { + patch.getAttrTO().setSchemaInfo(removed.getSchemaInfo()); + } if (patch.getOperation() == PatchOperation.ADD_REPLACE) { rwattrs.put(patch.getAttrTO().getSchema(), patch.getAttrTO()); } @@ -471,6 +474,19 @@ public final class AnyOperations { } } + public static AnyTO patch(final AnyTO anyTO, final AnyPatch anyPatch) { + if (anyTO instanceof UserTO) { + return patch((UserTO) anyTO, (UserPatch) anyPatch); + } + if (anyTO instanceof GroupTO) { + return patch((GroupTO) anyTO, (GroupPatch) anyPatch); + } + if (anyTO instanceof AnyObjectTO) { + return patch((AnyObjectTO) anyTO, (AnyObjectPatch) anyPatch); + } + return null; + } + public static GroupTO patch(final GroupTO groupTO, final GroupPatch groupPatch) { GroupTO result = SerializationUtils.clone(groupTO); patch(groupTO, groupPatch, result); http://git-wip-us.apache.org/repos/asf/syncope/blob/928b90c9/common/lib/src/main/java/org/apache/syncope/common/lib/types/AuditLoggerName.java ---------------------------------------------------------------------- diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/types/AuditLoggerName.java b/common/lib/src/main/java/org/apache/syncope/common/lib/types/AuditLoggerName.java index 6fc1ab0..a595e9b 100644 --- a/common/lib/src/main/java/org/apache/syncope/common/lib/types/AuditLoggerName.java +++ b/common/lib/src/main/java/org/apache/syncope/common/lib/types/AuditLoggerName.java @@ -23,7 +23,6 @@ import com.fasterxml.jackson.annotation.JsonProperty; import java.text.ParseException; import java.util.Map; import org.apache.commons.lang3.StringUtils; -import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.Pair; import org.apache.syncope.common.lib.AbstractBaseBean; import org.apache.syncope.common.lib.log.EventCategoryTO; @@ -162,7 +161,7 @@ public class AuditLoggerName extends AbstractBaseBean { } } - return new ImmutablePair<>(eventCategoryTO, condition); + return Pair.of(eventCategoryTO, condition); } /** http://git-wip-us.apache.org/repos/asf/syncope/blob/928b90c9/core/logic/src/main/java/org/apache/syncope/core/logic/AnyObjectLogic.java ---------------------------------------------------------------------- diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/AnyObjectLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/AnyObjectLogic.java index a067ab7..5857513 100644 --- a/core/logic/src/main/java/org/apache/syncope/core/logic/AnyObjectLogic.java +++ b/core/logic/src/main/java/org/apache/syncope/core/logic/AnyObjectLogic.java @@ -137,10 +137,11 @@ public class AnyObjectLogic extends AbstractAnyLogic<AnyObjectTO, AnyObjectPatch realm); boolean authDynRealms = securityChecks(effectiveRealms, realm, before.getLeft().getKey()); - Pair<String, List<PropagationStatus>> updated = provisioningManager.update(anyObjectPatch, nullPriorityAsync); + Pair<AnyObjectPatch, List<PropagationStatus>> updated = + provisioningManager.update(anyObjectPatch, nullPriorityAsync); return afterUpdate( - binder.getAnyObjectTO(updated.getKey()), + binder.getAnyObjectTO(updated.getLeft().getKey()), updated.getRight(), before.getRight(), authDynRealms, http://git-wip-us.apache.org/repos/asf/syncope/blob/928b90c9/core/logic/src/main/java/org/apache/syncope/core/logic/GroupLogic.java ---------------------------------------------------------------------- diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/GroupLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/GroupLogic.java index c4ccc53..ace95de 100644 --- a/core/logic/src/main/java/org/apache/syncope/core/logic/GroupLogic.java +++ b/core/logic/src/main/java/org/apache/syncope/core/logic/GroupLogic.java @@ -201,10 +201,11 @@ public class GroupLogic extends AbstractAnyLogic<GroupTO, GroupPatch> { realm); boolean authDynRealms = securityChecks(effectiveRealms, realm, before.getLeft().getKey()); - Pair<String, List<PropagationStatus>> updated = provisioningManager.update(groupPatch, nullPriorityAsync); + Pair<GroupPatch, List<PropagationStatus>> updated = + provisioningManager.update(groupPatch, nullPriorityAsync); return afterUpdate( - binder.getGroupTO(updated.getKey()), + binder.getGroupTO(updated.getLeft().getKey()), updated.getRight(), before.getRight(), authDynRealms, http://git-wip-us.apache.org/repos/asf/syncope/blob/928b90c9/core/logic/src/main/java/org/apache/syncope/core/logic/LoggerLogic.java ---------------------------------------------------------------------- diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/LoggerLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/LoggerLogic.java index 9c8a8b3..a3f3a3a 100644 --- a/core/logic/src/main/java/org/apache/syncope/core/logic/LoggerLogic.java +++ b/core/logic/src/main/java/org/apache/syncope/core/logic/LoggerLogic.java @@ -351,37 +351,36 @@ public class LoggerLogic extends AbstractTransactionalLogic<LoggerTO> { for (AnyTypeKind anyTypeKind : AnyTypeKind.values()) { resourceDAO.findAll().forEach(resource -> { EventCategoryTO propEventCategoryTO = new EventCategoryTO(EventCategoryType.PROPAGATION); - EventCategoryTO syncEventCategoryTO = new EventCategoryTO(EventCategoryType.PULL); + EventCategoryTO pullEventCategoryTO = new EventCategoryTO(EventCategoryType.PULL); EventCategoryTO pushEventCategoryTO = new EventCategoryTO(EventCategoryType.PUSH); propEventCategoryTO.setCategory(anyTypeKind.name().toLowerCase()); propEventCategoryTO.setSubcategory(resource.getKey()); - syncEventCategoryTO.setCategory(anyTypeKind.name().toLowerCase()); + pullEventCategoryTO.setCategory(anyTypeKind.name().toLowerCase()); pushEventCategoryTO.setCategory(anyTypeKind.name().toLowerCase()); - syncEventCategoryTO.setSubcategory(resource.getKey()); + pullEventCategoryTO.setSubcategory(resource.getKey()); pushEventCategoryTO.setSubcategory(resource.getKey()); for (ResourceOperation resourceOperation : ResourceOperation.values()) { propEventCategoryTO.getEvents().add(resourceOperation.name().toLowerCase()); - syncEventCategoryTO.getEvents().add(resourceOperation.name().toLowerCase()); - pushEventCategoryTO.getEvents().add(resourceOperation.name().toLowerCase()); } + pullEventCategoryTO.getEvents().add(ResourceOperation.DELETE.name().toLowerCase()); for (UnmatchingRule unmatching : UnmatchingRule.values()) { String event = UnmatchingRule.toEventName(unmatching); - syncEventCategoryTO.getEvents().add(event); + pullEventCategoryTO.getEvents().add(event); pushEventCategoryTO.getEvents().add(event); } for (MatchingRule matching : MatchingRule.values()) { String event = MatchingRule.toEventName(matching); - syncEventCategoryTO.getEvents().add(event); + pullEventCategoryTO.getEvents().add(event); pushEventCategoryTO.getEvents().add(event); } events.add(propEventCategoryTO); - events.add(syncEventCategoryTO); + events.add(pullEventCategoryTO); events.add(pushEventCategoryTO); }); } http://git-wip-us.apache.org/repos/asf/syncope/blob/928b90c9/core/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java ---------------------------------------------------------------------- diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java index 5f99944..a225bba 100644 --- a/core/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java +++ b/core/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java @@ -195,10 +195,11 @@ public class UserLogic extends AbstractAnyLogic<UserTO, UserPatch> { securityChecks(effectiveRealms, before.getLeft().getRealm().getValue(), before.getLeft().getKey()); } - Pair<String, List<PropagationStatus>> updated = provisioningManager.update(before.getLeft(), nullPriorityAsync); + Pair<UserPatch, List<PropagationStatus>> updated = + provisioningManager.update(before.getLeft(), nullPriorityAsync); return afterUpdate( - binder.returnUserTO(binder.getUserTO(updated.getKey())), + binder.returnUserTO(binder.getUserTO(updated.getLeft().getKey())), updated.getRight(), before.getRight(), authDynRealms, http://git-wip-us.apache.org/repos/asf/syncope/blob/928b90c9/core/logic/src/main/java/org/apache/syncope/core/logic/UserWorkflowLogic.java ---------------------------------------------------------------------- diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/UserWorkflowLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/UserWorkflowLogic.java index a9100cc..6f080e1 100644 --- a/core/logic/src/main/java/org/apache/syncope/core/logic/UserWorkflowLogic.java +++ b/core/logic/src/main/java/org/apache/syncope/core/logic/UserWorkflowLogic.java @@ -20,7 +20,7 @@ package org.apache.syncope.core.logic; import java.lang.reflect.Method; import java.util.List; -import org.apache.commons.lang3.tuple.ImmutablePair; +import org.apache.commons.lang3.tuple.Pair; import org.apache.syncope.common.lib.patch.AnyPatch; import org.apache.syncope.common.lib.patch.UserPatch; import org.apache.syncope.common.lib.to.UserTO; @@ -72,7 +72,7 @@ public class UserWorkflowLogic extends AbstractTransactionalLogic<WorkflowFormTO List<PropagationTask> tasks = propagationManager.getUserUpdateTasks( new WorkflowResult<>( - new ImmutablePair<>(userPatch, null), + Pair.<UserPatch, Boolean>of(userPatch, null), updated.getPropByRes(), updated.getPerformedTasks())); taskExecutor.execute(tasks, false); @@ -106,7 +106,7 @@ public class UserWorkflowLogic extends AbstractTransactionalLogic<WorkflowFormTO List<PropagationTask> tasks = propagationManager.getUserUpdateTasks( new WorkflowResult<>( - new ImmutablePair<>((UserPatch) updated.getResult(), Boolean.TRUE), + Pair.of((UserPatch) updated.getResult(), Boolean.TRUE), updated.getPropByRes(), updated.getPerformedTasks())); http://git-wip-us.apache.org/repos/asf/syncope/blob/928b90c9/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/ProvisioningManager.java ---------------------------------------------------------------------- diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/ProvisioningManager.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/ProvisioningManager.java index 0fabe15..32ece41 100644 --- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/ProvisioningManager.java +++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/ProvisioningManager.java @@ -30,9 +30,9 @@ public interface ProvisioningManager<T extends AnyTO, P extends AnyPatch> { Pair<String, List<PropagationStatus>> create(T anyTO, boolean nullPriorityAsync); - Pair<String, List<PropagationStatus>> update(P patch, boolean nullPriorityAsync); + Pair<P, List<PropagationStatus>> update(P patch, boolean nullPriorityAsync); - Pair<String, List<PropagationStatus>> update(P patch, Set<String> excludedResources, boolean nullPriorityAsync); + Pair<P, List<PropagationStatus>> update(P patch, Set<String> excludedResources, boolean nullPriorityAsync); List<PropagationStatus> delete(String anyKey, boolean nullPriorityAsync); http://git-wip-us.apache.org/repos/asf/syncope/blob/928b90c9/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/UserProvisioningManager.java ---------------------------------------------------------------------- diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/UserProvisioningManager.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/UserProvisioningManager.java index d1160a2..c9aa60c 100644 --- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/UserProvisioningManager.java +++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/UserProvisioningManager.java @@ -48,7 +48,7 @@ public interface UserProvisioningManager extends ProvisioningManager<UserTO, Use Set<String> excludedResources, boolean nullPriorityAsync); - Pair<String, List<PropagationStatus>> update( + Pair<UserPatch, List<PropagationStatus>> update( UserPatch userPatch, ProvisioningReport result, Boolean enabled, http://git-wip-us.apache.org/repos/asf/syncope/blob/928b90c9/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAnyObjectProvisioningManager.java ---------------------------------------------------------------------- diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAnyObjectProvisioningManager.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAnyObjectProvisioningManager.java index 0113ebf..ed4fc0a 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAnyObjectProvisioningManager.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAnyObjectProvisioningManager.java @@ -87,7 +87,7 @@ public class DefaultAnyObjectProvisioningManager implements AnyObjectProvisionin } @Override - public Pair<String, List<PropagationStatus>> update( + public Pair<AnyObjectPatch, List<PropagationStatus>> update( final AnyObjectPatch anyObjectPatch, final boolean nullPriorityAsync) { return update(anyObjectPatch, Collections.<String>emptySet(), nullPriorityAsync); @@ -95,7 +95,7 @@ public class DefaultAnyObjectProvisioningManager implements AnyObjectProvisionin @Transactional(propagation = Propagation.REQUIRES_NEW) @Override - public Pair<String, List<PropagationStatus>> update( + public Pair<AnyObjectPatch, List<PropagationStatus>> update( final AnyObjectPatch anyObjectPatch, final Set<String> excludedResources, final boolean nullPriorityAsync) { WorkflowResult<String> updated = awfAdapter.update(anyObjectPatch); @@ -110,7 +110,7 @@ public class DefaultAnyObjectProvisioningManager implements AnyObjectProvisionin excludedResources); PropagationReporter propagationReporter = taskExecutor.execute(tasks, nullPriorityAsync); - return Pair.of(updated.getResult(), propagationReporter.getStatuses()); + return Pair.of(anyObjectPatch, propagationReporter.getStatuses()); } @Override http://git-wip-us.apache.org/repos/asf/syncope/blob/928b90c9/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java ---------------------------------------------------------------------- diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java index 141561b..208cb00 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java @@ -112,13 +112,15 @@ public class DefaultGroupProvisioningManager implements GroupProvisioningManager } @Override - public Pair<String, List<PropagationStatus>> update(final GroupPatch groupPatch, final boolean nullPriorityAsync) { + public Pair<GroupPatch, List<PropagationStatus>> update( + final GroupPatch groupPatch, final boolean nullPriorityAsync) { + return update(groupPatch, Collections.<String>emptySet(), nullPriorityAsync); } @Transactional(propagation = Propagation.REQUIRES_NEW) @Override - public Pair<String, List<PropagationStatus>> update( + public Pair<GroupPatch, List<PropagationStatus>> update( final GroupPatch groupPatch, final Set<String> excludedResources, final boolean nullPriorityAsync) { WorkflowResult<String> updated = gwfAdapter.update(groupPatch); @@ -133,7 +135,7 @@ public class DefaultGroupProvisioningManager implements GroupProvisioningManager excludedResources); PropagationReporter propagationReporter = taskExecutor.execute(tasks, nullPriorityAsync); - return Pair.of(updated.getResult(), propagationReporter.getStatuses()); + return Pair.of(groupPatch, propagationReporter.getStatuses()); } @Override http://git-wip-us.apache.org/repos/asf/syncope/blob/928b90c9/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java ---------------------------------------------------------------------- diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java index 468f88e..a123683 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java @@ -112,17 +112,17 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager { } @Override - public Pair<String, List<PropagationStatus>> update(final UserPatch userPatch, final boolean nullPriorityAsync) { + public Pair<UserPatch, List<PropagationStatus>> update(final UserPatch userPatch, final boolean nullPriorityAsync) { WorkflowResult<Pair<UserPatch, Boolean>> updated = uwfAdapter.update(userPatch); List<PropagationTask> tasks = propagationManager.getUserUpdateTasks(updated); PropagationReporter propagationReporter = taskExecutor.execute(tasks, nullPriorityAsync); - return Pair.of(updated.getResult().getLeft().getKey(), propagationReporter.getStatuses()); + return Pair.of(updated.getResult().getLeft(), propagationReporter.getStatuses()); } @Override - public Pair<String, List<PropagationStatus>> update( + public Pair<UserPatch, List<PropagationStatus>> update( final UserPatch userPatch, final Set<String> excludedResources, final boolean nullPriorityAsync) { return update(userPatch, new ProvisioningReport(), null, excludedResources, nullPriorityAsync); @@ -130,7 +130,7 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager { @Transactional(propagation = Propagation.REQUIRES_NEW) @Override - public Pair<String, List<PropagationStatus>> update( + public Pair<UserPatch, List<PropagationStatus>> update( final UserPatch userPatch, final ProvisioningReport result, final Boolean enabled, @@ -177,7 +177,7 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager { updated, updated.getResult().getLeft().getPassword() != null, excludedResources); PropagationReporter propagationReporter = taskExecutor.execute(tasks, nullPriorityAsync); - return Pair.of(updated.getResult().getLeft().getKey(), propagationReporter.getStatuses()); + return Pair.of(updated.getResult().getLeft(), propagationReporter.getStatuses()); } @Override http://git-wip-us.apache.org/repos/asf/syncope/blob/928b90c9/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPullResultHandler.java ---------------------------------------------------------------------- diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPullResultHandler.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPullResultHandler.java index 74928d9..c31f094 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPullResultHandler.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPullResultHandler.java @@ -22,6 +22,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.apache.commons.lang3.exception.ExceptionUtils; +import org.apache.syncope.common.lib.AnyOperations; import org.apache.syncope.common.lib.patch.AnyPatch; import org.apache.syncope.common.lib.patch.StringPatchItem; import org.apache.syncope.common.lib.to.AnyTO; @@ -90,9 +91,9 @@ public abstract class AbstractPullResultHandler extends AbstractSyncopeResultHan protected abstract ProvisioningManager<?, ?> getProvisioningManager(); - protected abstract AnyTO doCreate(AnyTO anyTO, SyncDelta delta, ProvisioningReport result); + protected abstract AnyTO doCreate(AnyTO anyTO, SyncDelta delta); - protected abstract AnyTO doUpdate(AnyTO before, AnyPatch anyPatch, SyncDelta delta, ProvisioningReport result); + protected abstract AnyPatch doUpdate(AnyTO before, AnyPatch anyPatch, SyncDelta delta, ProvisioningReport result); protected void doDelete(final AnyTypeKind kind, final String key) { PropagationByResource propByRes = new PropagationByResource(); @@ -263,16 +264,17 @@ public abstract class AbstractPullResultHandler extends AbstractSyncopeResultHan Result resultStatus; try { - AnyTO actual = doCreate(anyTO, delta, result); - result.setName(getName(actual)); - output = actual; + AnyTO created = doCreate(anyTO, delta); + output = created; + result.setKey(created.getKey()); + result.setName(getName(created)); resultStatus = Result.SUCCESS; for (PullActions action : profile.getActions()) { - action.after(profile, delta, actual, result); + action.after(profile, delta, created, result); } - LOG.debug("{} {} successfully created", actual.getType(), actual.getKey()); + LOG.debug("{} {} successfully created", created.getType(), created.getKey()); } catch (PropagationException e) { // A propagation failure doesn't imply a pull failure. // The propagation exception status will be reported into the propagation task execution. @@ -344,7 +346,7 @@ public abstract class AbstractPullResultHandler extends AbstractSyncopeResultHan workingDelta = action.beforeUpdate(profile, workingDelta, before, anyPatch); } - AnyTO updated = doUpdate(before, anyPatch, workingDelta, result); + AnyTO updated = AnyOperations.patch(before, doUpdate(before, anyPatch, workingDelta, result)); for (PullActions action : profile.getActions()) { action.after(profile, workingDelta, updated, result); http://git-wip-us.apache.org/repos/asf/syncope/blob/928b90c9/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AnyObjectPullResultHandlerImpl.java ---------------------------------------------------------------------- diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AnyObjectPullResultHandlerImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AnyObjectPullResultHandlerImpl.java index a328e56..6a6c93d 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AnyObjectPullResultHandlerImpl.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AnyObjectPullResultHandlerImpl.java @@ -21,6 +21,7 @@ package org.apache.syncope.core.provisioning.java.pushpull; import java.util.Collections; import java.util.List; import java.util.Map; +import org.apache.commons.lang3.tuple.Pair; import org.apache.syncope.common.lib.patch.AnyObjectPatch; import org.apache.syncope.common.lib.patch.AnyPatch; import org.apache.syncope.common.lib.to.AnyTO; @@ -85,20 +86,17 @@ public class AnyObjectPullResultHandlerImpl extends AbstractPullResultHandler im } @Override - protected AnyTO doCreate(final AnyTO anyTO, final SyncDelta delta, final ProvisioningReport result) { + protected AnyTO doCreate(final AnyTO anyTO, final SyncDelta delta) { AnyObjectTO anyObjectTO = AnyObjectTO.class.cast(anyTO); Map.Entry<String, List<PropagationStatus>> created = anyObjectProvisioningManager.create( anyObjectTO, Collections.singleton(profile.getTask().getResource().getKey()), true); - result.setKey(created.getKey()); - result.setName(getName(anyTO)); - return getAnyTO(created.getKey()); } @Override - protected AnyTO doUpdate( + protected AnyPatch doUpdate( final AnyTO before, final AnyPatch anyPatch, final SyncDelta delta, @@ -106,11 +104,9 @@ public class AnyObjectPullResultHandlerImpl extends AbstractPullResultHandler im AnyObjectPatch anyObjectPatch = AnyObjectPatch.class.cast(anyPatch); - Map.Entry<String, List<PropagationStatus>> updated = anyObjectProvisioningManager.update( + Pair<AnyObjectPatch, List<PropagationStatus>> updated = anyObjectProvisioningManager.update( anyObjectPatch, Collections.singleton(profile.getTask().getResource().getKey()), true); - AnyObjectTO after = anyObjectDataBinder.getAnyObjectTO(updated.getKey()); - result.setName(getName(after)); - return after; + return anyPatch; } } http://git-wip-us.apache.org/repos/asf/syncope/blob/928b90c9/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/GroupPullResultHandlerImpl.java ---------------------------------------------------------------------- diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/GroupPullResultHandlerImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/GroupPullResultHandlerImpl.java index 01af49f..b008efa 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/GroupPullResultHandlerImpl.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/GroupPullResultHandlerImpl.java @@ -22,6 +22,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; +import org.apache.commons.lang3.tuple.Pair; import org.apache.syncope.common.lib.patch.AnyPatch; import org.apache.syncope.common.lib.patch.AttrPatch; import org.apache.syncope.common.lib.patch.GroupPatch; @@ -95,7 +96,7 @@ public class GroupPullResultHandlerImpl extends AbstractPullResultHandler implem } @Override - protected AnyTO doCreate(final AnyTO anyTO, final SyncDelta delta, final ProvisioningReport result) { + protected AnyTO doCreate(final AnyTO anyTO, final SyncDelta delta) { GroupTO groupTO = GroupTO.class.cast(anyTO); Map.Entry<String, List<PropagationStatus>> created = groupProvisioningManager.create( @@ -104,14 +105,11 @@ public class GroupPullResultHandlerImpl extends AbstractPullResultHandler implem Collections.singleton(profile.getTask().getResource().getKey()), true); - result.setKey(created.getKey()); - result.setName(getName(anyTO)); - return getAnyTO(created.getKey()); } @Override - protected AnyTO doUpdate( + protected AnyPatch doUpdate( final AnyTO before, final AnyPatch anyPatch, final SyncDelta delta, @@ -119,7 +117,7 @@ public class GroupPullResultHandlerImpl extends AbstractPullResultHandler implem GroupPatch groupPatch = GroupPatch.class.cast(anyPatch); - Map.Entry<String, List<PropagationStatus>> updated = groupProvisioningManager.update( + Pair<GroupPatch, List<PropagationStatus>> updated = groupProvisioningManager.update( groupPatch, Collections.singleton(profile.getTask().getResource().getKey()), true); String groupOwner = null; @@ -131,14 +129,10 @@ public class GroupPullResultHandlerImpl extends AbstractPullResultHandler implem } } if (groupOwner != null) { - groupOwnerMap.put(updated.getKey(), groupOwner); + groupOwnerMap.put(updated.getLeft().getKey(), groupOwner); } - GroupTO after = groupDataBinder.getGroupTO(updated.getKey()); - - result.setName(getName(after)); - - return after; + return anyPatch; } } http://git-wip-us.apache.org/repos/asf/syncope/blob/928b90c9/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/UserPullResultHandlerImpl.java ---------------------------------------------------------------------- diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/UserPullResultHandlerImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/UserPullResultHandlerImpl.java index 91575e2..349f863 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/UserPullResultHandlerImpl.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/UserPullResultHandlerImpl.java @@ -88,7 +88,7 @@ public class UserPullResultHandlerImpl extends AbstractPullResultHandler impleme } @Override - protected AnyTO doCreate(final AnyTO anyTO, final SyncDelta delta, final ProvisioningReport result) { + protected AnyTO doCreate(final AnyTO anyTO, final SyncDelta delta) { UserTO userTO = UserTO.class.cast(anyTO); Boolean enabled = pullUtils.readEnabled(delta.getObject(), profile.getTask()); @@ -96,14 +96,11 @@ public class UserPullResultHandlerImpl extends AbstractPullResultHandler impleme userProvisioningManager.create(userTO, true, true, enabled, Collections.singleton(profile.getTask().getResource().getKey()), true); - result.setKey(created.getKey()); - result.setName(getName(anyTO)); - return getAnyTO(created.getKey()); } @Override - protected AnyTO doUpdate( + protected AnyPatch doUpdate( final AnyTO before, final AnyPatch anyPatch, final SyncDelta delta, @@ -112,14 +109,14 @@ public class UserPullResultHandlerImpl extends AbstractPullResultHandler impleme UserPatch userPatch = UserPatch.class.cast(anyPatch); Boolean enabled = pullUtils.readEnabled(delta.getObject(), profile.getTask()); - Map.Entry<String, List<PropagationStatus>> updated = userProvisioningManager.update( + Pair<UserPatch, List<PropagationStatus>> updated = userProvisioningManager.update( userPatch, result, enabled, Collections.singleton(profile.getTask().getResource().getKey()), true); - return getAnyTO(updated.getKey()); + return updated.getLeft(); } @Override http://git-wip-us.apache.org/repos/asf/syncope/blob/928b90c9/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableUserWorkflowAdapter.java ---------------------------------------------------------------------- diff --git a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableUserWorkflowAdapter.java b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableUserWorkflowAdapter.java index 4cc0139..44cd847 100644 --- a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableUserWorkflowAdapter.java +++ b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableUserWorkflowAdapter.java @@ -35,7 +35,6 @@ import java.util.stream.Collectors; import javax.annotation.Resource; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; -import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.Pair; import org.apache.syncope.common.lib.SyncopeClientException; import org.apache.syncope.common.lib.patch.PasswordPatch; @@ -280,7 +279,7 @@ public class FlowableUserWorkflowAdapter extends AbstractUserWorkflowAdapter { Set<String> tasks = getPerformedTasks(user); return new WorkflowResult<>( - new ImmutablePair<>(user.getKey(), propagateEnable), propByRes, tasks); + Pair.of(user.getKey(), propagateEnable), propByRes, tasks); } protected Set<String> doExecuteTask(final User user, final String task, final Map<String, Object> moreVariables) { @@ -350,7 +349,7 @@ public class FlowableUserWorkflowAdapter extends AbstractUserWorkflowAdapter { user.getWorkflowId(), PROPAGATE_ENABLE, Boolean.class); return new WorkflowResult<>( - new ImmutablePair<>(updatedPatch, propagateEnable), propByRes, tasks); + Pair.of(updatedPatch, propagateEnable), propByRes, tasks); } @Override @@ -420,7 +419,7 @@ public class FlowableUserWorkflowAdapter extends AbstractUserWorkflowAdapter { user.getWorkflowId(), PROPAGATE_ENABLE, Boolean.class); return new WorkflowResult<>( - new ImmutablePair<>(updatedPatch, propagateEnable), propByRes, tasks); + Pair.of(updatedPatch, propagateEnable), propByRes, tasks); } @Override @@ -702,7 +701,7 @@ public class FlowableUserWorkflowAdapter extends AbstractUserWorkflowAdapter { } } - return new ImmutablePair<>(task, formData); + return Pair.of(task, formData); } @Override http://git-wip-us.apache.org/repos/asf/syncope/blob/928b90c9/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultUserWorkflowAdapter.java ---------------------------------------------------------------------- diff --git a/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultUserWorkflowAdapter.java b/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultUserWorkflowAdapter.java index c027431..97c338a 100644 --- a/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultUserWorkflowAdapter.java +++ b/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultUserWorkflowAdapter.java @@ -21,7 +21,6 @@ package org.apache.syncope.core.workflow.java; import java.io.OutputStream; import java.util.Collections; import java.util.List; -import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.Pair; import org.apache.syncope.common.lib.patch.PasswordPatch; import org.apache.syncope.common.lib.patch.UserPatch; @@ -79,7 +78,7 @@ public class DefaultUserWorkflowAdapter extends AbstractUserWorkflowAdapter { PropagationByResource propByRes = new PropagationByResource(); propByRes.set(ResourceOperation.CREATE, userDAO.findAllResourceKeys(user.getKey())); - return new WorkflowResult<>(new ImmutablePair<>(user.getKey(), propagateEnable), propByRes, "create"); + return new WorkflowResult<>(Pair.of(user.getKey(), propagateEnable), propByRes, "create"); } @Override @@ -101,7 +100,7 @@ public class DefaultUserWorkflowAdapter extends AbstractUserWorkflowAdapter { userDAO.save(user); - return new WorkflowResult<>(new ImmutablePair<>(userPatch, !user.isSuspended()), propByRes, "update"); + return new WorkflowResult<>(Pair.of(userPatch, !user.isSuspended()), propByRes, "update"); } @Override http://git-wip-us.apache.org/repos/asf/syncope/blob/928b90c9/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/CamelAnyObjectProvisioningManager.java ---------------------------------------------------------------------- diff --git a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/CamelAnyObjectProvisioningManager.java b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/CamelAnyObjectProvisioningManager.java index 56783f7..d89e4d2 100644 --- a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/CamelAnyObjectProvisioningManager.java +++ b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/CamelAnyObjectProvisioningManager.java @@ -66,7 +66,7 @@ public class CamelAnyObjectProvisioningManager } @Override - public Pair<String, List<PropagationStatus>> update( + public Pair<AnyObjectPatch, List<PropagationStatus>> update( final AnyObjectPatch anyPatch, final boolean nullPriorityAsync) { return update(anyPatch, Collections.<String>emptySet(), nullPriorityAsync); @@ -75,7 +75,7 @@ public class CamelAnyObjectProvisioningManager @Transactional(propagation = Propagation.REQUIRES_NEW) @Override @SuppressWarnings("unchecked") - public Pair<String, List<PropagationStatus>> update( + public Pair<AnyObjectPatch, List<PropagationStatus>> update( final AnyObjectPatch anyPatch, final Set<String> excludedResources, final boolean nullPriorityAsync) { PollingConsumer pollingConsumer = getConsumer("direct:updateAnyObjectPort"); http://git-wip-us.apache.org/repos/asf/syncope/blob/928b90c9/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/CamelGroupProvisioningManager.java ---------------------------------------------------------------------- diff --git a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/CamelGroupProvisioningManager.java b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/CamelGroupProvisioningManager.java index c6feb91..4f6620e 100644 --- a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/CamelGroupProvisioningManager.java +++ b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/CamelGroupProvisioningManager.java @@ -85,14 +85,16 @@ public class CamelGroupProvisioningManager } @Override - public Pair<String, List<PropagationStatus>> update(final GroupPatch anyPatch, final boolean nullPriorityAsync) { + public Pair<GroupPatch, List<PropagationStatus>> update( + final GroupPatch anyPatch, final boolean nullPriorityAsync) { + return update(anyPatch, Collections.<String>emptySet(), nullPriorityAsync); } @Transactional(propagation = Propagation.REQUIRES_NEW) @Override @SuppressWarnings("unchecked") - public Pair<String, List<PropagationStatus>> update( + public Pair<GroupPatch, List<PropagationStatus>> update( final GroupPatch anyPatch, final Set<String> excludedResources, final boolean nullPriorityAsync) { PollingConsumer pollingConsumer = getConsumer("direct:updateGroupPort"); http://git-wip-us.apache.org/repos/asf/syncope/blob/928b90c9/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java ---------------------------------------------------------------------- diff --git a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java index 781362a..7f721a5 100644 --- a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java +++ b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/CamelUserProvisioningManager.java @@ -27,7 +27,6 @@ import java.util.Map; import java.util.Set; import org.apache.camel.Exchange; import org.apache.camel.PollingConsumer; -import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.Pair; import org.apache.syncope.common.lib.patch.StatusPatch; import org.apache.syncope.common.lib.patch.UserPatch; @@ -91,7 +90,7 @@ public class CamelUserProvisioningManager extends AbstractCamelProvisioningManag @Override @SuppressWarnings("unchecked") - public Pair<String, List<PropagationStatus>> update(final UserPatch userPatch, final boolean nullPriorityAsync) { + public Pair<UserPatch, List<PropagationStatus>> update(final UserPatch userPatch, final boolean nullPriorityAsync) { PollingConsumer pollingConsumer = getConsumer("direct:updatePort"); Map<String, Object> props = new HashMap<>(); @@ -109,7 +108,7 @@ public class CamelUserProvisioningManager extends AbstractCamelProvisioningManag } @Override - public Pair<String, List<PropagationStatus>> update( + public Pair<UserPatch, List<PropagationStatus>> update( final UserPatch anyPatch, final Set<String> excludedResources, final boolean nullPriorityAsync) { return update(anyPatch, new ProvisioningReport(), null, excludedResources, nullPriorityAsync); @@ -317,7 +316,7 @@ public class CamelUserProvisioningManager extends AbstractCamelProvisioningManag @Transactional(propagation = Propagation.REQUIRES_NEW) @Override @SuppressWarnings("unchecked") - public Pair<String, List<PropagationStatus>> update( + public Pair<UserPatch, List<PropagationStatus>> update( final UserPatch userPatch, final ProvisioningReport result, final Boolean enabled, @@ -346,7 +345,7 @@ public class CamelUserProvisioningManager extends AbstractCamelProvisioningManag result.setMessage("Update failed, trying to pull status anyway (if configured)\n" + ex.getMessage()); WorkflowResult<Pair<UserPatch, Boolean>> updated = new WorkflowResult<>( - new ImmutablePair<>(userPatch, false), new PropagationByResource(), + Pair.of(userPatch, false), new PropagationByResource(), new HashSet<>()); sendMessage("direct:userInPull", updated, props); exchange = pollingConsumer.receive(); http://git-wip-us.apache.org/repos/asf/syncope/blob/928b90c9/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/CreateProducer.java ---------------------------------------------------------------------- diff --git a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/CreateProducer.java b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/CreateProducer.java index 6782330..40a6f33 100644 --- a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/CreateProducer.java +++ b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/CreateProducer.java @@ -26,7 +26,6 @@ import java.util.Set; import org.apache.camel.Endpoint; import org.apache.camel.Exchange; import org.apache.commons.lang3.StringUtils; -import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.Pair; import org.apache.syncope.common.lib.to.AnyObjectTO; import org.apache.syncope.common.lib.to.AnyTO; @@ -67,7 +66,7 @@ public class CreateProducer extends AbstractProducer { getPropagationTaskExecutor().execute(tasks, nullPriorityAsync); exchange.getOut().setBody( - new ImmutablePair<>(created.getResult().getKey(), propagationReporter.getStatuses())); + Pair.of(created.getResult().getKey(), propagationReporter.getStatuses())); } else if (actual instanceof AnyTO) { WorkflowResult<String> created = (WorkflowResult<String>) exchange.getIn().getBody(); @@ -86,7 +85,7 @@ public class CreateProducer extends AbstractProducer { excludedResources); getPropagationTaskExecutor().execute(tasks, nullPriorityAsync); - exchange.getOut().setBody(new ImmutablePair<>(created.getResult(), null)); + exchange.getOut().setBody(Pair.of(created.getResult(), null)); } else { List<PropagationTask> tasks = getPropagationManager().getCreateTasks( actual instanceof AnyObjectTO ? AnyTypeKind.ANY_OBJECT : AnyTypeKind.GROUP, @@ -97,8 +96,7 @@ public class CreateProducer extends AbstractProducer { PropagationReporter propagationReporter = getPropagationTaskExecutor().execute(tasks, nullPriorityAsync); - exchange.getOut().setBody(new ImmutablePair<>(created.getResult(), - propagationReporter.getStatuses())); + exchange.getOut().setBody(Pair.of(created.getResult(), propagationReporter.getStatuses())); } } } http://git-wip-us.apache.org/repos/asf/syncope/blob/928b90c9/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/StatusProducer.java ---------------------------------------------------------------------- diff --git a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/StatusProducer.java b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/StatusProducer.java index 45f62e6..8fa02ad 100644 --- a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/StatusProducer.java +++ b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/StatusProducer.java @@ -24,7 +24,7 @@ import java.util.Map.Entry; import org.apache.camel.Endpoint; import org.apache.camel.Exchange; -import org.apache.commons.lang3.tuple.ImmutablePair; +import org.apache.commons.lang3.tuple.Pair; import org.apache.syncope.common.lib.patch.StatusPatch; import org.apache.syncope.common.lib.patch.UserPatch; import org.apache.syncope.common.lib.types.AnyTypeKind; @@ -102,7 +102,7 @@ public class StatusProducer extends AbstractProducer { null); PropagationReporter propagationReporter = getPropagationTaskExecutor().execute(tasks, nullPriorityAsync); - exchange.getOut().setBody(new ImmutablePair<>(updated.getResult(), propagationReporter.getStatuses())); + exchange.getOut().setBody(Pair.of(updated.getResult(), propagationReporter.getStatuses())); } } http://git-wip-us.apache.org/repos/asf/syncope/blob/928b90c9/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/SuspendProducer.java ---------------------------------------------------------------------- diff --git a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/SuspendProducer.java b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/SuspendProducer.java index 1f541df..ac43c7f 100644 --- a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/SuspendProducer.java +++ b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/SuspendProducer.java @@ -22,7 +22,6 @@ import java.util.List; import org.apache.camel.Endpoint; import org.apache.camel.Exchange; -import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.Pair; import org.apache.syncope.common.lib.patch.UserPatch; import org.apache.syncope.common.lib.types.AnyTypeKind; @@ -49,7 +48,7 @@ public class SuspendProducer extends AbstractProducer { List<PropagationTask> tasks = getPropagationManager().getUserUpdateTasks( new WorkflowResult<>( - new ImmutablePair<>(userPatch, Boolean.FALSE), + Pair.of(userPatch, Boolean.FALSE), updated.getKey().getPropByRes(), updated.getKey().getPerformedTasks())); getPropagationTaskExecutor().execute(tasks, false); } http://git-wip-us.apache.org/repos/asf/syncope/blob/928b90c9/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/UpdateProducer.java ---------------------------------------------------------------------- diff --git a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/UpdateProducer.java b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/UpdateProducer.java index 68fbd0e..90fcb29 100644 --- a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/UpdateProducer.java +++ b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/UpdateProducer.java @@ -23,7 +23,6 @@ import java.util.Set; import org.apache.camel.Endpoint; import org.apache.camel.Exchange; -import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.Pair; import org.apache.syncope.common.lib.patch.AnyObjectPatch; import org.apache.syncope.common.lib.patch.AnyPatch; @@ -61,8 +60,8 @@ public class UpdateProducer extends AbstractProducer { PropagationReporter propagationReporter = getPropagationTaskExecutor().execute(tasks, nullPriorityAsync); - exchange.getOut().setBody(new ImmutablePair<>( - updated.getResult().getKey().getKey(), propagationReporter.getStatuses())); + exchange.getOut().setBody(Pair.of( + updated.getResult().getLeft(), propagationReporter.getStatuses())); } else if (actual instanceof AnyPatch) { WorkflowResult<String> updated = (WorkflowResult<String>) exchange.getIn().getBody(); @@ -77,7 +76,7 @@ public class UpdateProducer extends AbstractProducer { PropagationReporter propagationReporter = getPropagationTaskExecutor().execute(tasks, nullPriorityAsync); - exchange.getOut().setBody(new ImmutablePair<>(updated.getResult(), propagationReporter.getStatuses())); + exchange.getOut().setBody(Pair.of(actual, propagationReporter.getStatuses())); } } } http://git-wip-us.apache.org/repos/asf/syncope/blob/928b90c9/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2UserManager.java ---------------------------------------------------------------------- diff --git a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2UserManager.java b/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2UserManager.java index 8792a26..2245fc7 100644 --- a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2UserManager.java +++ b/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2UserManager.java @@ -267,8 +267,8 @@ public class SAML2UserManager { userPatch = action.beforeUpdate(userPatch, responseTO); } - Pair<String, List<PropagationStatus>> updated = provisioningManager.update(userPatch, false); - userTO = binder.getUserTO(updated.getKey()); + Pair<UserPatch, List<PropagationStatus>> updated = provisioningManager.update(userPatch, false); + userTO = binder.getUserTO(updated.getLeft().getKey()); for (SAML2IdPActions action : actions) { userTO = action.afterUpdate(userTO, responseTO); http://git-wip-us.apache.org/repos/asf/syncope/blob/928b90c9/fit/core-reference/src/test/java/org/apache/syncope/fit/core/LoggerITCase.java ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/LoggerITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/LoggerITCase.java index e90e9d2..5ba1c9e 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/LoggerITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/LoggerITCase.java @@ -211,8 +211,7 @@ public class LoggerITCase extends AbstractITCase { if (AnyTypeKind.USER.name().toLowerCase().equals(eventCategoryTO.getCategory())) { if (RESOURCE_NAME_LDAP.equals(eventCategoryTO.getSubcategory()) && EventCategoryType.PULL == eventCategoryTO.getType()) { - assertTrue(eventCategoryTO.getEvents().contains(ResourceOperation.CREATE.name().toLowerCase())); - assertTrue(eventCategoryTO.getEvents().contains(ResourceOperation.UPDATE.name().toLowerCase())); + assertTrue(eventCategoryTO.getEvents().contains(ResourceOperation.DELETE.name().toLowerCase())); found = true; } @@ -225,6 +224,7 @@ public class LoggerITCase extends AbstractITCase { if (AnyTypeKind.USER.name().toLowerCase().equals(eventCategoryTO.getCategory())) { if (RESOURCE_NAME_CSV.equals(eventCategoryTO.getSubcategory()) && EventCategoryType.PROPAGATION == eventCategoryTO.getType()) { + assertTrue(eventCategoryTO.getEvents().contains(ResourceOperation.CREATE.name().toLowerCase())); assertTrue(eventCategoryTO.getEvents().contains(ResourceOperation.UPDATE.name().toLowerCase())); assertTrue(eventCategoryTO.getEvents().contains(ResourceOperation.DELETE.name().toLowerCase())); http://git-wip-us.apache.org/repos/asf/syncope/blob/928b90c9/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PullTaskITCase.java ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PullTaskITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PullTaskITCase.java index 9b754df..0919b77 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PullTaskITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PullTaskITCase.java @@ -402,6 +402,9 @@ public class PullTaskITCase extends AbstractTaskITCase { @Test public void reconcileFromScriptedSQL() { + System.out.println("QUAAAAAAAAAAAAAAAAAAAAA"); + LOG.info("QUAAAAAAAAAAAAAAAa"); + // 0. reset sync token and set MappingItemTransformer ResourceTO resource = resourceService.read(RESOURCE_NAME_DBSCRIPTED); ResourceTO originalResource = SerializationUtils.clone(resource); @@ -463,10 +466,10 @@ public class PullTaskITCase extends AbstractTaskITCase { assertFalse(pullTask.isPerformDelete()); // 4. pull - execProvisioningTask(taskService, "30cfd653-257b-495f-8665-281281dbcb3d", 50, false); + execProvisioningTask(taskService, pullTask.getKey(), 50, false); // 5. verify that printer was re-created in Syncope (implies that location does not start with given prefix, - // hence PrefixMappingItemTransformer was applied during pull) + // hence PrefixItemTransformer was applied during pull) matchingPrinters = anyObjectService.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM). fiql(SyncopeClient.getAnyObjectSearchConditionBuilder("PRINTER"). is("location").equalTo("pull*").query()).build());