You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2018/06/27 11:04:36 UTC
[2/4] syncope git commit: Various cleanup and optimizations WRT
dynamic memberships
Various cleanup and optimizations WRT dynamic memberships
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/756dc386
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/756dc386
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/756dc386
Branch: refs/heads/2_0_X
Commit: 756dc386acf28d2b8f983bbf454200fc738859a0
Parents: cae1c87
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Wed Jun 27 12:15:52 2018 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Wed Jun 27 12:15:52 2018 +0200
----------------------------------------------------------------------
.../org/apache/syncope/core/logic/RoleLogic.java | 5 ++---
.../core/persistence/api/dao/DynRealmDAO.java | 2 ++
.../syncope/core/persistence/api/dao/GroupDAO.java | 7 +++++++
.../syncope/core/persistence/api/dao/RoleDAO.java | 2 ++
.../core/persistence/jpa/dao/JPADynRealmDAO.java | 8 ++++++--
.../core/persistence/jpa/dao/JPAGroupDAO.java | 10 +++++-----
.../core/persistence/jpa/dao/JPARoleDAO.java | 8 ++++++--
.../core/persistence/jpa/outer/AnySearchTest.java | 2 +-
.../core/persistence/jpa/outer/DynRealmTest.java | 3 +--
.../core/persistence/jpa/outer/GroupTest.java | 4 ++--
.../core/persistence/jpa/outer/RoleTest.java | 2 +-
.../java/data/DynRealmDataBinderImpl.java | 2 +-
.../provisioning/java/data/GroupDataBinderImpl.java | 2 ++
.../provisioning/java/data/RoleDataBinderImpl.java | 2 +-
.../activiti/ActivitiUserWorkflowAdapter.java | 7 ++-----
.../syncope/core/workflow/activiti/task/Update.java | 16 ----------------
.../flowable/FlowableUserWorkflowAdapter.java | 7 ++-----
.../syncope/core/workflow/flowable/task/Update.java | 16 ----------------
.../java/DefaultAnyObjectWorkflowAdapter.java | 14 +-------------
.../workflow/java/DefaultGroupWorkflowAdapter.java | 16 ++--------------
.../workflow/java/DefaultUserWorkflowAdapter.java | 16 +---------------
21 files changed, 47 insertions(+), 104 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/756dc386/core/logic/src/main/java/org/apache/syncope/core/logic/RoleLogic.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/RoleLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/RoleLogic.java
index c5b3b9a..80fe6bb 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/RoleLogic.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/RoleLogic.java
@@ -72,7 +72,7 @@ public class RoleLogic extends AbstractTransactionalLogic<RoleTO> {
@PreAuthorize("hasRole('" + StandardEntitlement.ROLE_CREATE + "')")
public RoleTO create(final RoleTO roleTO) {
- return binder.getRoleTO(roleDAO.save(binder.create(roleTO)));
+ return binder.getRoleTO(binder.create(roleTO));
}
@PreAuthorize("hasRole('" + StandardEntitlement.ROLE_UPDATE + "')")
@@ -83,7 +83,7 @@ public class RoleLogic extends AbstractTransactionalLogic<RoleTO> {
throw new NotFoundException(roleTO.getKey());
}
- return binder.getRoleTO(roleDAO.save(binder.update(role, roleTO)));
+ return binder.getRoleTO(binder.update(role, roleTO));
}
@PreAuthorize("hasRole('" + StandardEntitlement.ROLE_DELETE + "')")
@@ -159,5 +159,4 @@ public class RoleLogic extends AbstractTransactionalLogic<RoleTO> {
throw new UnresolvedReferenceException();
}
-
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/756dc386/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/DynRealmDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/DynRealmDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/DynRealmDAO.java
index a782ea8..cc2a7af 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/DynRealmDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/DynRealmDAO.java
@@ -30,6 +30,8 @@ public interface DynRealmDAO extends DAO<DynRealm> {
DynRealm save(DynRealm dynRealm);
+ DynRealm saveAndRefreshDynMemberships(DynRealm dynRealm);
+
void delete(String key);
void clearDynMembers(DynRealm dynRealm);
http://git-wip-us.apache.org/repos/asf/syncope/blob/756dc386/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/GroupDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/GroupDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/GroupDAO.java
index f296932..8a88618 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/GroupDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/GroupDAO.java
@@ -94,4 +94,11 @@ public interface GroupDAO extends AnyDAO<Group> {
*/
Set<String> removeDynMemberships(User user);
+ /**
+ * Saves the provided group and refreshes all User and AnyObject members.
+ *
+ * @param group group to save
+ * @return merged group
+ */
+ Group saveAndRefreshDynMemberships(Group group);
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/756dc386/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/RoleDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/RoleDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/RoleDAO.java
index cc29852..f399734 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/RoleDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/RoleDAO.java
@@ -35,6 +35,8 @@ public interface RoleDAO extends DAO<Role> {
Role save(Role role);
+ Role saveAndRefreshDynMemberships(Role role);
+
void delete(Role role);
void delete(String key);
http://git-wip-us.apache.org/repos/asf/syncope/blob/756dc386/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPADynRealmDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPADynRealmDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPADynRealmDAO.java
index 0ef29e6..ea45afb 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPADynRealmDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPADynRealmDAO.java
@@ -87,7 +87,12 @@ public class JPADynRealmDAO extends AbstractDAO<DynRealm> implements DynRealmDAO
@Override
public DynRealm save(final DynRealm dynRealm) {
- DynRealm merged = entityManager().merge(dynRealm);
+ return entityManager().merge(dynRealm);
+ }
+
+ @Override
+ public DynRealm saveAndRefreshDynMemberships(final DynRealm dynRealm) {
+ DynRealm merged = save(dynRealm);
// refresh dynamic memberships
clearDynMembers(merged);
@@ -155,5 +160,4 @@ public class JPADynRealmDAO extends AbstractDAO<DynRealm> implements DynRealmDAO
delete.setParameter(1, key);
delete.executeUpdate();
}
-
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/756dc386/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAGroupDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAGroupDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAGroupDAO.java
index 797dd96..c4b7362 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAGroupDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAGroupDAO.java
@@ -292,8 +292,8 @@ public class JPAGroupDAO extends AbstractAnyDAO<Group> implements GroupDAO {
}
@Override
- public Group save(final Group group) {
- Group merged = super.save(group);
+ public Group saveAndRefreshDynMemberships(final Group group) {
+ Group merged = save(group);
publisher.publishEvent(new AnyCreatedUpdatedEvent<>(this, merged, AuthContextUtils.getDomain()));
// refresh dynamic memberships
@@ -427,7 +427,7 @@ public class JPAGroupDAO extends AbstractAnyDAO<Group> implements GroupDAO {
@Override
public int countAMembers(final Group group) {
Query query = entityManager().createNativeQuery(
- "SELECT COUNT(anyObject_id) FROM " + JPAAMembership.TABLE + " WHERE group_id=?");
+ "SELECT COUNT(anyObject_id) FROM " + JPAAMembership.TABLE + " WHERE group_id=?");
query.setParameter(1, group.getKey());
return ((Number) query.getSingleResult()).intValue();
@@ -436,7 +436,7 @@ public class JPAGroupDAO extends AbstractAnyDAO<Group> implements GroupDAO {
@Override
public int countUMembers(final Group group) {
Query query = entityManager().createNativeQuery(
- "SELECT COUNT(user_id) FROM " + JPAUMembership.TABLE + " WHERE group_id=?");
+ "SELECT COUNT(user_id) FROM " + JPAUMembership.TABLE + " WHERE group_id=?");
query.setParameter(1, group.getKey());
return ((Number) query.getSingleResult()).intValue();
@@ -445,7 +445,7 @@ public class JPAGroupDAO extends AbstractAnyDAO<Group> implements GroupDAO {
@Override
public int countADynMembers(final Group group) {
Query query = entityManager().createNativeQuery(
- "SELECT COUNT(any_id) FROM " + ADYNMEMB_TABLE + " WHERE group_id=?");
+ "SELECT COUNT(any_id) FROM " + ADYNMEMB_TABLE + " WHERE group_id=?");
query.setParameter(1, group.getKey());
return ((Number) query.getSingleResult()).intValue();
http://git-wip-us.apache.org/repos/asf/syncope/blob/756dc386/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARoleDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARoleDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARoleDAO.java
index 37096c7..60dfe11 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARoleDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARoleDAO.java
@@ -88,7 +88,12 @@ public class JPARoleDAO extends AbstractDAO<Role> implements RoleDAO {
@Override
public Role save(final Role role) {
- Role merged = entityManager().merge(role);
+ return entityManager().merge(role);
+ }
+
+ @Override
+ public Role saveAndRefreshDynMemberships(final Role role) {
+ Role merged = save(role);
// refresh dynamic memberships
clearDynMembers(merged);
@@ -189,5 +194,4 @@ public class JPARoleDAO extends AbstractDAO<Role> implements RoleDAO {
delete.setParameter(1, key);
delete.executeUpdate();
}
-
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/756dc386/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/AnySearchTest.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/AnySearchTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/AnySearchTest.java
index f3d3203..9d9d287 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/AnySearchTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/AnySearchTest.java
@@ -93,7 +93,7 @@ public class AnySearchTest extends AbstractTest {
role.setDynMembership(dynMembership);
- role = roleDAO.save(role);
+ role = roleDAO.saveAndRefreshDynMemberships(role);
assertNotNull(role);
roleDAO.flush();
http://git-wip-us.apache.org/repos/asf/syncope/blob/756dc386/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/DynRealmTest.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/DynRealmTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/DynRealmTest.java
index db47035..efeb338 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/DynRealmTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/DynRealmTest.java
@@ -76,7 +76,7 @@ public class DynRealmTest extends AbstractTest {
}
dynRealm.setKey("name");
- DynRealm actual = dynRealmDAO.save(dynRealm);
+ DynRealm actual = dynRealmDAO.saveAndRefreshDynMemberships(dynRealm);
assertNotNull(actual);
dynRealmDAO.flush();
@@ -92,5 +92,4 @@ public class DynRealmTest extends AbstractTest {
assertTrue(userDAO.findDynRealms(user.getKey()).contains(actual.getKey()));
}
-
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/756dc386/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/GroupTest.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/GroupTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/GroupTest.java
index fc359e3..6d9fa9e 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/GroupTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/GroupTest.java
@@ -227,7 +227,7 @@ public class GroupTest extends AbstractTest {
group.setUDynMembership(dynMembership);
- Group actual = groupDAO.save(group);
+ Group actual = groupDAO.saveAndRefreshDynMemberships(group);
assertNotNull(actual);
groupDAO.flush();
@@ -328,7 +328,7 @@ public class GroupTest extends AbstractTest {
group.add(dynMembership);
- Group actual = groupDAO.save(group);
+ Group actual = groupDAO.saveAndRefreshDynMemberships(group);
assertNotNull(actual);
groupDAO.flush();
http://git-wip-us.apache.org/repos/asf/syncope/blob/756dc386/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/RoleTest.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/RoleTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/RoleTest.java
index 6ba7906..eeae5b9 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/RoleTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/RoleTest.java
@@ -121,7 +121,7 @@ public class RoleTest extends AbstractTest {
role.setDynMembership(dynMembership);
- Role actual = roleDAO.save(role);
+ Role actual = roleDAO.saveAndRefreshDynMemberships(role);
assertNotNull(actual);
roleDAO.flush();
http://git-wip-us.apache.org/repos/asf/syncope/blob/756dc386/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/DynRealmDataBinderImpl.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/DynRealmDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/DynRealmDataBinderImpl.java
index cf324ea..87b6a93 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/DynRealmDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/DynRealmDataBinderImpl.java
@@ -97,7 +97,7 @@ public class DynRealmDataBinderImpl implements DynRealmDataBinder {
}
}
- return dynRealmDAO.save(dynRealm);
+ return dynRealmDAO.saveAndRefreshDynMemberships(dynRealm);
}
@Override
http://git-wip-us.apache.org/repos/asf/syncope/blob/756dc386/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/GroupDataBinderImpl.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/GroupDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/GroupDataBinderImpl.java
index c0e1b89..137bd82 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/GroupDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/GroupDataBinderImpl.java
@@ -264,6 +264,8 @@ public class GroupDataBinderImpl extends AbstractAnyDataBinder implements GroupD
}
}
+ group = groupDAO.saveAndRefreshDynMemberships(group);
+
// type extensions
for (TypeExtensionTO typeExtTO : groupPatch.getTypeExtensions()) {
AnyType anyType = anyTypeDAO.find(typeExtTO.getAnyType());
http://git-wip-us.apache.org/repos/asf/syncope/blob/756dc386/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/RoleDataBinderImpl.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/RoleDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/RoleDataBinderImpl.java
index b907051..9122118 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/RoleDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/RoleDataBinderImpl.java
@@ -125,7 +125,7 @@ public class RoleDataBinderImpl implements RoleDataBinder {
setDynMembership(role, roleTO.getDynMembershipCond());
}
- return role;
+ return roleDAO.saveAndRefreshDynMemberships(role);
}
@Override
http://git-wip-us.apache.org/repos/asf/syncope/blob/756dc386/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/ActivitiUserWorkflowAdapter.java
----------------------------------------------------------------------
diff --git a/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/ActivitiUserWorkflowAdapter.java b/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/ActivitiUserWorkflowAdapter.java
index b25ffd9..123f8df 100644
--- a/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/ActivitiUserWorkflowAdapter.java
+++ b/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/ActivitiUserWorkflowAdapter.java
@@ -351,16 +351,13 @@ public class ActivitiUserWorkflowAdapter extends AbstractUserWorkflowAdapter {
PropagationByResource propByRes = engine.getRuntimeService().getVariable(
user.getWorkflowId(), PROP_BY_RESOURCE, PropagationByResource.class);
- UserPatch updatedPatch = engine.getRuntimeService().getVariable(
- user.getWorkflowId(), USER_PATCH, UserPatch.class);
-
saveForFormSubmit(
- updated, updatedPatch.getPassword() == null ? null : updatedPatch.getPassword().getValue(), propByRes);
+ updated, userPatch.getPassword() == null ? null : userPatch.getPassword().getValue(), propByRes);
Boolean propagateEnable = engine.getRuntimeService().getVariable(
user.getWorkflowId(), PROPAGATE_ENABLE, Boolean.class);
- return new WorkflowResult<>(Pair.of(updatedPatch, propagateEnable), propByRes, tasks);
+ return new WorkflowResult<>(Pair.of(userPatch, propagateEnable), propByRes, tasks);
}
@Override
http://git-wip-us.apache.org/repos/asf/syncope/blob/756dc386/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/task/Update.java
----------------------------------------------------------------------
diff --git a/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/task/Update.java b/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/task/Update.java
index e769871..0e65277 100644
--- a/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/task/Update.java
+++ b/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/task/Update.java
@@ -18,12 +18,7 @@
*/
package org.apache.syncope.core.workflow.activiti.task;
-import java.util.Set;
-import org.apache.syncope.common.lib.AnyOperations;
-import org.apache.syncope.common.lib.patch.PasswordPatch;
import org.apache.syncope.common.lib.patch.UserPatch;
-import org.apache.syncope.common.lib.to.AttrTO;
-import org.apache.syncope.common.lib.to.UserTO;
import org.apache.syncope.core.persistence.api.dao.UserDAO;
import org.apache.syncope.core.provisioning.api.PropagationByResource;
import org.apache.syncope.core.persistence.api.entity.user.User;
@@ -49,22 +44,11 @@ public class Update extends AbstractActivitiServiceTask {
getVariable(executionId, ActivitiUserWorkflowAdapter.USER_PATCH, UserPatch.class);
user = userDAO.save(user);
- UserTO original = dataBinder.getUserTO(user, true);
PropagationByResource propByRes = dataBinder.update(user, userPatch);
- PasswordPatch password = userPatch.getPassword();
- Set<AttrTO> virAttrs = userPatch.getVirAttrs();
-
- UserTO updated = dataBinder.getUserTO(user.getKey());
- userPatch = AnyOperations.diff(updated, original, false);
- userPatch.setPassword(password);
- userPatch.getVirAttrs().clear();
- userPatch.getVirAttrs().addAll(virAttrs);
// report updated user and propagation by resource as result
engine.getRuntimeService().setVariable(executionId, ActivitiUserWorkflowAdapter.USER, user);
- engine.getRuntimeService().setVariable(executionId, ActivitiUserWorkflowAdapter.USER_TO, updated);
- engine.getRuntimeService().setVariable(executionId, ActivitiUserWorkflowAdapter.USER_PATCH, userPatch);
engine.getRuntimeService().setVariable(executionId, ActivitiUserWorkflowAdapter.PROP_BY_RESOURCE, propByRes);
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/756dc386/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 23a4da1..8755572 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
@@ -350,16 +350,13 @@ public class FlowableUserWorkflowAdapter extends AbstractUserWorkflowAdapter {
PropagationByResource propByRes = engine.getRuntimeService().getVariable(
user.getWorkflowId(), PROP_BY_RESOURCE, PropagationByResource.class);
- UserPatch updatedPatch = engine.getRuntimeService().getVariable(
- user.getWorkflowId(), USER_PATCH, UserPatch.class);
-
saveForFormSubmit(
- updated, updatedPatch.getPassword() == null ? null : updatedPatch.getPassword().getValue(), propByRes);
+ updated, userPatch.getPassword() == null ? null : userPatch.getPassword().getValue(), propByRes);
Boolean propagateEnable = engine.getRuntimeService().getVariable(
user.getWorkflowId(), PROPAGATE_ENABLE, Boolean.class);
- return new WorkflowResult<>(Pair.of(updatedPatch, propagateEnable), propByRes, tasks);
+ return new WorkflowResult<>(Pair.of(userPatch, propagateEnable), propByRes, tasks);
}
@Override
http://git-wip-us.apache.org/repos/asf/syncope/blob/756dc386/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/task/Update.java
----------------------------------------------------------------------
diff --git a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/task/Update.java b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/task/Update.java
index c619211..757d009 100644
--- a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/task/Update.java
+++ b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/task/Update.java
@@ -18,12 +18,7 @@
*/
package org.apache.syncope.core.workflow.flowable.task;
-import java.util.Set;
-import org.apache.syncope.common.lib.AnyOperations;
-import org.apache.syncope.common.lib.patch.PasswordPatch;
import org.apache.syncope.common.lib.patch.UserPatch;
-import org.apache.syncope.common.lib.to.AttrTO;
-import org.apache.syncope.common.lib.to.UserTO;
import org.apache.syncope.core.persistence.api.dao.UserDAO;
import org.apache.syncope.core.provisioning.api.PropagationByResource;
import org.apache.syncope.core.persistence.api.entity.user.User;
@@ -49,22 +44,11 @@ public class Update extends AbstractFlowableServiceTask {
getVariable(executionId, FlowableUserWorkflowAdapter.USER_PATCH, UserPatch.class);
user = userDAO.save(user);
- UserTO original = dataBinder.getUserTO(user, true);
PropagationByResource propByRes = dataBinder.update(user, userPatch);
- PasswordPatch password = userPatch.getPassword();
- Set<AttrTO> virAttrs = userPatch.getVirAttrs();
-
- UserTO updated = dataBinder.getUserTO(user.getKey());
- userPatch = AnyOperations.diff(updated, original, false);
- userPatch.setPassword(password);
- userPatch.getVirAttrs().clear();
- userPatch.getVirAttrs().addAll(virAttrs);
// report updated user and propagation by resource as result
engine.getRuntimeService().setVariable(executionId, FlowableUserWorkflowAdapter.USER, user);
- engine.getRuntimeService().setVariable(executionId, FlowableUserWorkflowAdapter.USER_TO, updated);
- engine.getRuntimeService().setVariable(executionId, FlowableUserWorkflowAdapter.USER_PATCH, userPatch);
engine.getRuntimeService().setVariable(executionId, FlowableUserWorkflowAdapter.PROP_BY_RESOURCE, propByRes);
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/756dc386/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultAnyObjectWorkflowAdapter.java
----------------------------------------------------------------------
diff --git a/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultAnyObjectWorkflowAdapter.java b/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultAnyObjectWorkflowAdapter.java
index 2a35600..eac899a 100644
--- a/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultAnyObjectWorkflowAdapter.java
+++ b/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultAnyObjectWorkflowAdapter.java
@@ -21,11 +21,8 @@ package org.apache.syncope.core.workflow.java;
import java.io.OutputStream;
import java.util.Collections;
import java.util.List;
-import java.util.Set;
-import org.apache.syncope.common.lib.AnyOperations;
import org.apache.syncope.common.lib.patch.AnyObjectPatch;
import org.apache.syncope.common.lib.to.AnyObjectTO;
-import org.apache.syncope.common.lib.to.AttrTO;
import org.apache.syncope.common.lib.to.WorkflowDefinitionTO;
import org.apache.syncope.common.lib.to.WorkflowFormTO;
import org.apache.syncope.common.lib.to.WorkflowTaskTO;
@@ -60,17 +57,8 @@ public class DefaultAnyObjectWorkflowAdapter extends AbstractAnyObjectWorkflowAd
@Override
protected WorkflowResult<AnyObjectPatch> doUpdate(final AnyObject anyObject, final AnyObjectPatch anyObjectPatch) {
- AnyObjectTO original = dataBinder.getAnyObjectTO(anyObject, true);
-
PropagationByResource propByRes = dataBinder.update(anyObject, anyObjectPatch);
- Set<AttrTO> virAttrs = anyObjectPatch.getVirAttrs();
-
- AnyObjectTO updated = dataBinder.getAnyObjectTO(anyObjectDAO.save(anyObject), true);
- AnyObjectPatch effectivePatch = AnyOperations.diff(updated, original, false);
- effectivePatch.getVirAttrs().clear();
- effectivePatch.getVirAttrs().addAll(virAttrs);
-
- return new WorkflowResult<>(effectivePatch, propByRes, "update");
+ return new WorkflowResult<>(anyObjectPatch, propByRes, "update");
}
@Override
http://git-wip-us.apache.org/repos/asf/syncope/blob/756dc386/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultGroupWorkflowAdapter.java
----------------------------------------------------------------------
diff --git a/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultGroupWorkflowAdapter.java b/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultGroupWorkflowAdapter.java
index e3adfab..d430200 100644
--- a/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultGroupWorkflowAdapter.java
+++ b/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultGroupWorkflowAdapter.java
@@ -21,10 +21,7 @@ package org.apache.syncope.core.workflow.java;
import java.io.OutputStream;
import java.util.Collections;
import java.util.List;
-import java.util.Set;
-import org.apache.syncope.common.lib.AnyOperations;
import org.apache.syncope.common.lib.patch.GroupPatch;
-import org.apache.syncope.common.lib.to.AttrTO;
import org.apache.syncope.common.lib.to.GroupTO;
import org.apache.syncope.common.lib.to.WorkflowDefinitionTO;
import org.apache.syncope.common.lib.to.WorkflowFormTO;
@@ -50,7 +47,7 @@ public class DefaultGroupWorkflowAdapter extends AbstractGroupWorkflowAdapter {
protected WorkflowResult<String> doCreate(final GroupTO groupTO) {
Group group = entityFactory.newEntity(Group.class);
dataBinder.create(group, groupTO);
- group = groupDAO.save(group);
+ group = groupDAO.saveAndRefreshDynMemberships(group);
PropagationByResource propByRes = new PropagationByResource();
propByRes.set(ResourceOperation.CREATE, groupDAO.findAllResourceKeys(group.getKey()));
@@ -60,17 +57,8 @@ public class DefaultGroupWorkflowAdapter extends AbstractGroupWorkflowAdapter {
@Override
protected WorkflowResult<GroupPatch> doUpdate(final Group group, final GroupPatch groupPatch) {
- GroupTO original = dataBinder.getGroupTO(group, true);
-
PropagationByResource propByRes = dataBinder.update(group, groupPatch);
- Set<AttrTO> virAttrs = groupPatch.getVirAttrs();
-
- GroupTO updated = dataBinder.getGroupTO(groupDAO.save(group), true);
- GroupPatch effectivePatch = AnyOperations.diff(updated, original, false);
- effectivePatch.getVirAttrs().clear();
- effectivePatch.getVirAttrs().addAll(virAttrs);
-
- return new WorkflowResult<>(effectivePatch, propByRes, "update");
+ return new WorkflowResult<>(groupPatch, propByRes, "update");
}
@Override
http://git-wip-us.apache.org/repos/asf/syncope/blob/756dc386/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 8503622..c055d8f 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,12 +21,9 @@ package org.apache.syncope.core.workflow.java;
import java.io.OutputStream;
import java.util.Collections;
import java.util.List;
-import java.util.Set;
import org.apache.commons.lang3.tuple.Pair;
-import org.apache.syncope.common.lib.AnyOperations;
import org.apache.syncope.common.lib.patch.PasswordPatch;
import org.apache.syncope.common.lib.patch.UserPatch;
-import org.apache.syncope.common.lib.to.AttrTO;
import org.apache.syncope.common.lib.to.UserTO;
import org.apache.syncope.common.lib.to.WorkflowDefinitionTO;
import org.apache.syncope.common.lib.to.WorkflowFormTO;
@@ -105,19 +102,8 @@ public class DefaultUserWorkflowAdapter extends AbstractUserWorkflowAdapter {
@Override
protected WorkflowResult<Pair<UserPatch, Boolean>> doUpdate(final User user, final UserPatch userPatch) {
- UserTO original = dataBinder.getUserTO(user, true);
-
PropagationByResource propByRes = dataBinder.update(user, userPatch);
- PasswordPatch password = userPatch.getPassword();
- Set<AttrTO> virAttrs = userPatch.getVirAttrs();
-
- UserTO updated = dataBinder.getUserTO(userDAO.save(user), true);
- UserPatch effectivePatch = AnyOperations.diff(updated, original, false);
- effectivePatch.setPassword(password);
- effectivePatch.getVirAttrs().clear();
- effectivePatch.getVirAttrs().addAll(virAttrs);
-
- return new WorkflowResult<>(Pair.of(effectivePatch, !user.isSuspended()), propByRes, "update");
+ return new WorkflowResult<>(Pair.of(userPatch, !user.isSuspended()), propByRes, "update");
}
@Override