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 2017/08/24 14:57:41 UTC
[1/2] syncope git commit: Minor changes
Repository: syncope
Updated Branches:
refs/heads/2_0_X 61862e34c -> 120d1e282
refs/heads/master e8f2c12bc -> 64a650a47
Minor changes
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/120d1e28
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/120d1e28
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/120d1e28
Branch: refs/heads/2_0_X
Commit: 120d1e2829abcccf622d9ba5f7028107cb6c8807
Parents: 61862e3
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Thu Aug 24 16:52:02 2017 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Thu Aug 24 16:52:02 2017 +0200
----------------------------------------------------------------------
.../jpa/entity/anyobject/JPAAnyObject.java | 1 -
.../java/data/AnyObjectDataBinderImpl.java | 18 ++++++++------
.../java/data/UserDataBinderImpl.java | 19 +++++++-------
.../syncope/fit/core/UserWorkflowITCase.java | 26 ++++++++++++++++++++
4 files changed, 46 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/120d1e28/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/anyobject/JPAAnyObject.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/anyobject/JPAAnyObject.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/anyobject/JPAAnyObject.java
index 2a0703d..32bd4c0 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/anyobject/JPAAnyObject.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/anyobject/JPAAnyObject.java
@@ -62,7 +62,6 @@ public class JPAAnyObject
@NotNull
private String name;
- @NotNull
@ManyToOne(fetch = FetchType.EAGER, optional = false)
private JPAAnyType type;
http://git-wip-us.apache.org/repos/asf/syncope/blob/120d1e28/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyObjectDataBinderImpl.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyObjectDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyObjectDataBinderImpl.java
index d2d7314..2e85e60 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyObjectDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyObjectDataBinderImpl.java
@@ -177,10 +177,11 @@ public class AnyObjectDataBinderImpl extends AbstractAnyDataBinder implements An
AnyUtils anyUtils = anyUtilsFactory.getInstance(AnyTypeKind.ANY_OBJECT);
if (anyObject.getRealm() != null) {
// relationships
- Collection<String> assignableAnyObjects = CollectionUtils.collect(
- searchDAO.searchAssignable(anyObject.getRealm().getFullPath(), AnyTypeKind.ANY_OBJECT),
- EntityUtils.keyTransformer());
-
+ Collection<String> assignableAnyObjects = anyObjectTO.getRelationships().isEmpty()
+ ? Collections.<String>emptyList()
+ : CollectionUtils.collect(
+ searchDAO.searchAssignable(anyObject.getRealm().getFullPath(), AnyTypeKind.ANY_OBJECT),
+ EntityUtils.keyTransformer());
for (RelationshipTO relationshipTO : anyObjectTO.getRelationships()) {
if (StringUtils.isBlank(relationshipTO.getRightType())
|| AnyTypeKind.USER.name().equals(relationshipTO.getRightType())
@@ -219,10 +220,11 @@ public class AnyObjectDataBinderImpl extends AbstractAnyDataBinder implements An
}
// memberships
- Collection<String> assignableGroups = CollectionUtils.collect(
- searchDAO.searchAssignable(anyObject.getRealm().getFullPath(), AnyTypeKind.GROUP),
- EntityUtils.keyTransformer());
-
+ Collection<String> assignableGroups = anyObjectTO.getMemberships().isEmpty()
+ ? Collections.<String>emptyList()
+ : CollectionUtils.collect(
+ searchDAO.searchAssignable(anyObject.getRealm().getFullPath(), AnyTypeKind.GROUP),
+ EntityUtils.keyTransformer());
for (MembershipTO membershipTO : anyObjectTO.getMemberships()) {
Group group = membershipTO.getRightKey() == null
? groupDAO.findByName(membershipTO.getGroupName())
http://git-wip-us.apache.org/repos/asf/syncope/blob/120d1e28/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java
index fa9fa5f..72d7243 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java
@@ -210,10 +210,11 @@ public class UserDataBinderImpl extends AbstractAnyDataBinder implements UserDat
AnyUtils anyUtils = anyUtilsFactory.getInstance(AnyTypeKind.USER);
if (user.getRealm() != null) {
// relationships
- Collection<String> assignableAnyObjects = CollectionUtils.collect(
- searchDAO.searchAssignable(user.getRealm().getFullPath(), AnyTypeKind.ANY_OBJECT),
- EntityUtils.keyTransformer());
-
+ Collection<String> assignableAnyObjects = userTO.getRelationships().isEmpty()
+ ? Collections.<String>emptyList()
+ : CollectionUtils.collect(
+ searchDAO.searchAssignable(user.getRealm().getFullPath(), AnyTypeKind.ANY_OBJECT),
+ EntityUtils.keyTransformer());
for (RelationshipTO relationshipTO : userTO.getRelationships()) {
AnyObject otherEnd = anyObjectDAO.find(relationshipTO.getRightKey());
if (otherEnd == null) {
@@ -223,7 +224,6 @@ public class UserDataBinderImpl extends AbstractAnyDataBinder implements UserDat
if (relationshipType == null) {
LOG.debug("Ignoring invalid relationship type {}", relationshipTO.getType());
} else {
-
URelationship relationship = entityFactory.newEntity(URelationship.class);
relationship.setType(relationshipType);
relationship.setRightEnd(otherEnd);
@@ -242,10 +242,11 @@ public class UserDataBinderImpl extends AbstractAnyDataBinder implements UserDat
}
// memberships
- Collection<String> assignableGroups = CollectionUtils.collect(
- searchDAO.searchAssignable(user.getRealm().getFullPath(), AnyTypeKind.GROUP),
- EntityUtils.keyTransformer());
-
+ Collection<String> assignableGroups = userTO.getMemberships().isEmpty()
+ ? Collections.<String>emptyList()
+ : CollectionUtils.collect(
+ searchDAO.searchAssignable(user.getRealm().getFullPath(), AnyTypeKind.GROUP),
+ EntityUtils.keyTransformer());
for (MembershipTO membershipTO : userTO.getMemberships()) {
Group group = membershipTO.getRightKey() == null
? groupDAO.findByName(membershipTO.getGroupName())
http://git-wip-us.apache.org/repos/asf/syncope/blob/120d1e28/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserWorkflowITCase.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserWorkflowITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserWorkflowITCase.java
index e21929e..ac563aa 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserWorkflowITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserWorkflowITCase.java
@@ -36,6 +36,7 @@ import org.apache.syncope.common.lib.SyncopeClientException;
import org.apache.syncope.common.lib.patch.MembershipPatch;
import org.apache.syncope.common.lib.patch.PasswordPatch;
import org.apache.syncope.common.lib.patch.StringPatchItem;
+import org.apache.syncope.common.lib.patch.StringReplacePatchItem;
import org.apache.syncope.common.lib.patch.UserPatch;
import org.apache.syncope.common.lib.to.MembershipTO;
import org.apache.syncope.common.lib.to.ProvisioningResult;
@@ -221,6 +222,8 @@ public class UserWorkflowITCase extends AbstractITCase {
UserTO created = createUser(UserITCase.getUniqueSampleTO("updateApproval@syncope.apache.org")).getEntity();
assertNotNull(created);
+ assertEquals("/", created.getRealm());
+ assertEquals(0, created.getMemberships().size());
UserPatch patch = new UserPatch();
patch.setKey(created.getKey());
@@ -229,6 +232,7 @@ public class UserWorkflowITCase extends AbstractITCase {
SyncopeClient client = clientFactory.create(created.getUsername(), "password123");
Response response = client.getService(UserSelfService.class).update(patch);
assertEquals(Response.Status.OK.getStatusCode(), response.getStatus());
+ assertEquals("updateApproval", userService.read(created.getKey()).getStatus());
forms = userWorkflowService.getForms();
assertNotNull(forms);
@@ -241,6 +245,28 @@ public class UserWorkflowITCase extends AbstractITCase {
assertNotNull(form.getUserTO());
assertNotNull(form.getUserPatch());
assertEquals(patch, form.getUserPatch());
+
+ // as admin, request for more changes: still pending approval
+ patch.setRealm(new StringReplacePatchItem.Builder().value("/even/two").build());
+ response = userService.update(patch);
+ assertEquals(Response.Status.OK.getStatusCode(), response.getStatus());
+ assertEquals("updateApproval", userService.read(created.getKey()).getStatus());
+
+ // the patch is updated in the approval form
+ form = userWorkflowService.getFormForUser(created.getKey());
+ assertEquals(patch, form.getUserPatch());
+
+ // approve the user
+ form = userWorkflowService.claimForm(form.getTaskId());
+ form.getProperty("approve").setValue(Boolean.TRUE.toString());
+ userWorkflowService.submitForm(form);
+
+ // verify that the approved user bears both original and further changes
+ UserTO approved = userService.read(created.getKey());
+ assertNotNull(approved);
+ assertEquals("/even/two", approved.getRealm());
+ assertEquals(1, approved.getMemberships().size());
+ assertNotNull(approved.getMembership("b1f7c12d-ec83-441f-a50e-1691daaedf3b"));
}
@Test
[2/2] syncope git commit: Minor changes
Posted by il...@apache.org.
Minor changes
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/64a650a4
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/64a650a4
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/64a650a4
Branch: refs/heads/master
Commit: 64a650a4747c43098b64c58379b6133735d3faa6
Parents: e8f2c12
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Thu Aug 24 16:52:02 2017 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Thu Aug 24 16:57:33 2017 +0200
----------------------------------------------------------------------
.../jpa/entity/anyobject/JPAAnyObject.java | 1 -
.../java/data/AnyObjectDataBinderImpl.java | 10 +++++---
.../java/data/UserDataBinderImpl.java | 11 +++++----
.../syncope/fit/core/UserWorkflowITCase.java | 26 ++++++++++++++++++++
4 files changed, 38 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/64a650a4/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/anyobject/JPAAnyObject.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/anyobject/JPAAnyObject.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/anyobject/JPAAnyObject.java
index 2a0703d..32bd4c0 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/anyobject/JPAAnyObject.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/anyobject/JPAAnyObject.java
@@ -62,7 +62,6 @@ public class JPAAnyObject
@NotNull
private String name;
- @NotNull
@ManyToOne(fetch = FetchType.EAGER, optional = false)
private JPAAnyType type;
http://git-wip-us.apache.org/repos/asf/syncope/blob/64a650a4/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyObjectDataBinderImpl.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyObjectDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyObjectDataBinderImpl.java
index c9b177e..78811e5 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyObjectDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyObjectDataBinderImpl.java
@@ -158,8 +158,9 @@ public class AnyObjectDataBinderImpl extends AbstractAnyDataBinder implements An
AnyUtils anyUtils = anyUtilsFactory.getInstance(AnyTypeKind.ANY_OBJECT);
if (anyObject.getRealm() != null) {
// relationships
- Collection<String> assignableAnyObjects =
- searchDAO.searchAssignable(anyObject.getRealm().getFullPath(), AnyTypeKind.ANY_OBJECT).stream().
+ Collection<String> assignableAnyObjects = anyObjectTO.getRelationships().isEmpty()
+ ? Collections.<String>emptyList()
+ : searchDAO.searchAssignable(anyObject.getRealm().getFullPath(), AnyTypeKind.ANY_OBJECT).stream().
map(a -> a.getKey()).collect(Collectors.toList());
anyObjectTO.getRelationships().forEach(relationshipTO -> {
@@ -200,8 +201,9 @@ public class AnyObjectDataBinderImpl extends AbstractAnyDataBinder implements An
});
// memberships
- Collection<String> assignableGroups =
- searchDAO.searchAssignable(anyObject.getRealm().getFullPath(), AnyTypeKind.GROUP).stream().
+ Collection<String> assignableGroups = anyObjectTO.getMemberships().isEmpty()
+ ? Collections.<String>emptyList()
+ : searchDAO.searchAssignable(anyObject.getRealm().getFullPath(), AnyTypeKind.GROUP).stream().
map(g -> g.getKey()).collect(Collectors.toList());
anyObjectTO.getMemberships().forEach(membershipTO -> {
http://git-wip-us.apache.org/repos/asf/syncope/blob/64a650a4/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java
index 5bae851..9950dd4 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java
@@ -203,8 +203,9 @@ public class UserDataBinderImpl extends AbstractAnyDataBinder implements UserDat
AnyUtils anyUtils = anyUtilsFactory.getInstance(AnyTypeKind.USER);
if (user.getRealm() != null) {
// relationships
- Collection<String> assignableAnyObjects =
- searchDAO.searchAssignable(user.getRealm().getFullPath(), AnyTypeKind.ANY_OBJECT).stream().
+ Collection<String> assignableAnyObjects = userTO.getRelationships().isEmpty()
+ ? Collections.<String>emptyList()
+ : searchDAO.searchAssignable(user.getRealm().getFullPath(), AnyTypeKind.ANY_OBJECT).stream().
map(a -> a.getKey()).collect(Collectors.toList());
userTO.getRelationships().forEach(relationshipTO -> {
@@ -216,7 +217,6 @@ public class UserDataBinderImpl extends AbstractAnyDataBinder implements UserDat
if (relationshipType == null) {
LOG.debug("Ignoring invalid relationship type {}", relationshipTO.getType());
} else {
-
URelationship relationship = entityFactory.newEntity(URelationship.class);
relationship.setType(relationshipType);
relationship.setRightEnd(otherEnd);
@@ -235,8 +235,9 @@ public class UserDataBinderImpl extends AbstractAnyDataBinder implements UserDat
});
// memberships
- Collection<String> assignableGroups =
- searchDAO.searchAssignable(user.getRealm().getFullPath(), AnyTypeKind.GROUP).stream().
+ Collection<String> assignableGroups = userTO.getMemberships().isEmpty()
+ ? Collections.<String>emptyList()
+ : searchDAO.searchAssignable(user.getRealm().getFullPath(), AnyTypeKind.GROUP).stream().
map(g -> g.getKey()).collect(Collectors.toList());
userTO.getMemberships().forEach(membershipTO -> {
http://git-wip-us.apache.org/repos/asf/syncope/blob/64a650a4/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserWorkflowITCase.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserWorkflowITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserWorkflowITCase.java
index 4d20d2a..b4ad656 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserWorkflowITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserWorkflowITCase.java
@@ -36,6 +36,7 @@ import org.apache.syncope.common.lib.SyncopeClientException;
import org.apache.syncope.common.lib.patch.MembershipPatch;
import org.apache.syncope.common.lib.patch.PasswordPatch;
import org.apache.syncope.common.lib.patch.StringPatchItem;
+import org.apache.syncope.common.lib.patch.StringReplacePatchItem;
import org.apache.syncope.common.lib.patch.UserPatch;
import org.apache.syncope.common.lib.to.MembershipTO;
import org.apache.syncope.common.lib.to.ProvisioningResult;
@@ -221,6 +222,8 @@ public class UserWorkflowITCase extends AbstractITCase {
UserTO created = createUser(UserITCase.getUniqueSampleTO("updateApproval@syncope.apache.org")).getEntity();
assertNotNull(created);
+ assertEquals("/", created.getRealm());
+ assertEquals(0, created.getMemberships().size());
UserPatch patch = new UserPatch();
patch.setKey(created.getKey());
@@ -229,6 +232,7 @@ public class UserWorkflowITCase extends AbstractITCase {
SyncopeClient client = clientFactory.create(created.getUsername(), "password123");
Response response = client.getService(UserSelfService.class).update(patch);
assertEquals(Response.Status.OK.getStatusCode(), response.getStatus());
+ assertEquals("updateApproval", userService.read(created.getKey()).getStatus());
forms = userWorkflowService.getForms();
assertNotNull(forms);
@@ -241,6 +245,28 @@ public class UserWorkflowITCase extends AbstractITCase {
assertNotNull(form.getUserTO());
assertNotNull(form.getUserPatch());
assertEquals(patch, form.getUserPatch());
+
+ // as admin, request for more changes: still pending approval
+ patch.setRealm(new StringReplacePatchItem.Builder().value("/even/two").build());
+ response = userService.update(patch);
+ assertEquals(Response.Status.OK.getStatusCode(), response.getStatus());
+ assertEquals("updateApproval", userService.read(created.getKey()).getStatus());
+
+ // the patch is updated in the approval form
+ form = userWorkflowService.getFormForUser(created.getKey());
+ assertEquals(patch, form.getUserPatch());
+
+ // approve the user
+ form = userWorkflowService.claimForm(form.getTaskId());
+ form.getProperty("approve").setValue(Boolean.TRUE.toString());
+ userWorkflowService.submitForm(form);
+
+ // verify that the approved user bears both original and further changes
+ UserTO approved = userService.read(created.getKey());
+ assertNotNull(approved);
+ assertEquals("/even/two", approved.getRealm());
+ assertEquals(1, approved.getMemberships().size());
+ assertNotNull(approved.getMembership("b1f7c12d-ec83-441f-a50e-1691daaedf3b"));
}
@Test