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