You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by an...@apache.org on 2017/04/07 15:02:21 UTC

syncope git commit: [SYNCOPE-1060] fixed wrong dates propagation to/from enduser

Repository: syncope
Updated Branches:
  refs/heads/master 832453828 -> dbf07add3


[SYNCOPE-1060] fixed wrong dates propagation to/from enduser


Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/dbf07add
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/dbf07add
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/dbf07add

Branch: refs/heads/master
Commit: dbf07add3dbca0b3a99993e9153bfbfa72b417ea
Parents: 8324538
Author: Andrea Patricelli <an...@apache.org>
Authored: Fri Apr 7 16:57:24 2017 +0200
Committer: Andrea Patricelli <an...@apache.org>
Committed: Fri Apr 7 16:57:54 2017 +0200

----------------------------------------------------------------------
 .../enduser/resources/UserSelfReadResource.java | 33 +++++++----
 .../resources/UserSelfUpdateResource.java       | 60 +++++++++++---------
 .../resources/app/configuration/customForm.json |  2 +-
 3 files changed, 56 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/dbf07add/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfReadResource.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfReadResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfReadResource.java
index 8aefb55..3d913e2 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfReadResource.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfReadResource.java
@@ -20,6 +20,7 @@ package org.apache.syncope.client.enduser.resources;
 
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
+import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -59,22 +60,15 @@ public class UserSelfReadResource extends BaseResource {
             UserTO userTO = SerializationUtils.clone(SyncopeEnduserSession.get().getSelfTO());
             Map<String, AttrTO> userPlainAttrMap = userTO.getPlainAttrMap();
 
-            // Date -> millis conversion
+            // 1. Date -> millis conversion for PLAIN attributes of USER and its MEMBERSHIPS
             for (PlainSchemaTO plainSchema : SyncopeEnduserSession.get().getDatePlainSchemas()) {
-                if (userPlainAttrMap.containsKey(plainSchema.getKey())) {
-                    FastDateFormat fmt = FastDateFormat.getInstance(plainSchema.getConversionPattern());
-
-                    AttrTO dateAttr = userPlainAttrMap.get(plainSchema.getKey());
-                    List<String> milliValues = new ArrayList<>(dateAttr.getValues().size());
-                    for (String value : dateAttr.getValues()) {
-                        milliValues.add(String.valueOf(fmt.parse(value).getTime()));
-                    }
-                    dateAttr.getValues().clear();
-                    dateAttr.getValues().addAll(milliValues);
+                dateToMillis(userPlainAttrMap, plainSchema);
+                for (MembershipTO membership : userTO.getMemberships()) {
+                    dateToMillis(membership.getPlainAttrMap(), plainSchema);
                 }
             }
 
-            // membership attributes management
+            // 2. membership attributes management
             for (MembershipTO membership : userTO.getMemberships()) {
                 String groupName = membership.getGroupName();
                 for (AttrTO attr : membership.getPlainAttrs()) {
@@ -116,4 +110,19 @@ public class UserSelfReadResource extends BaseResource {
         }
         return response;
     }
+
+    private void dateToMillis(final Map<String, AttrTO> plainAttrMap, final PlainSchemaTO plainSchema)
+            throws ParseException {
+        if (plainAttrMap.containsKey(plainSchema.getKey())) {
+            FastDateFormat fmt = FastDateFormat.getInstance(plainSchema.getConversionPattern());
+
+            AttrTO dateAttr = plainAttrMap.get(plainSchema.getKey());
+            List<String> milliValues = new ArrayList<>(dateAttr.getValues().size());
+            for (String value : dateAttr.getValues()) {
+                milliValues.add(String.valueOf(fmt.parse(value).getTime()));
+            }
+            dateAttr.getValues().clear();
+            dateAttr.getValues().addAll(milliValues);
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/dbf07add/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfUpdateResource.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfUpdateResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfUpdateResource.java
index 2ee22db..9934aad 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfUpdateResource.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfUpdateResource.java
@@ -70,52 +70,40 @@ public class UserSelfUpdateResource extends BaseResource {
 
             UserTO userTO = MAPPER.readValue(request.getReader().readLine(), UserTO.class);
 
-            Map<String, AttrTO> userPlainAttrMap = userTO.getPlainAttrMap();
-
-            // millis -> Date conversion
-            for (PlainSchemaTO plainSchema : SyncopeEnduserSession.get().getDatePlainSchemas()) {
-                if (userPlainAttrMap.containsKey(plainSchema.getKey())) {
-                    FastDateFormat fmt = FastDateFormat.getInstance(plainSchema.getConversionPattern());
-
-                    AttrTO dateAttr = userPlainAttrMap.get(plainSchema.getKey());
-                    List<String> formattedValues = new ArrayList<>(dateAttr.getValues().size());
-                    for (String value : dateAttr.getValues()) {
-                        try {
-                            formattedValues.add(fmt.format(Long.valueOf(value)));
-                        } catch (NumberFormatException e) {
-                            throw new IllegalArgumentException("Invalid format value for " + value);
-                        }
-                    }
-                    dateAttr.getValues().clear();
-                    dateAttr.getValues().addAll(formattedValues);
-                }
-            }
-
-            // membership attributes management
+            // 1. membership attributes management
             Set<AttrTO> membAttrs = new HashSet<>();
             for (AttrTO attr : userTO.getPlainAttrs()) {
                 if (attr.getSchema().contains("#")) {
-                    final String[] simpleAttrs = attr.getSchema().split("#");
+                    final String[] compositeSchemaKey = attr.getSchema().split("#");
                     MembershipTO membership = IterableUtils.find(userTO.getMemberships(),
                             new Predicate<MembershipTO>() {
 
                         @Override
                         public boolean evaluate(final MembershipTO item) {
-                            return simpleAttrs[0].equals(item.getGroupName());
+                            return compositeSchemaKey[0].equals(item.getGroupName());
                         }
                     });
                     if (membership == null) {
-                        membership = new MembershipTO.Builder().group(null, simpleAttrs[0]).build();
+                        membership = new MembershipTO.Builder().group(null, compositeSchemaKey[0]).build();
                         userTO.getMemberships().add(membership);
                     }
                     AttrTO clone = SerializationUtils.clone(attr);
-                    clone.setSchema(simpleAttrs[1]);
+                    clone.setSchema(compositeSchemaKey[1]);
                     membership.getPlainAttrs().add(clone);
                     membAttrs.add(attr);
                 }
             }
             userTO.getPlainAttrs().removeAll(membAttrs);
 
+            // 2. millis -> Date conversion for PLAIN attributes of USER and its MEMBERSHIPS
+            Map<String, AttrTO> userPlainAttrMap = userTO.getPlainAttrMap();
+            for (PlainSchemaTO plainSchema : SyncopeEnduserSession.get().getDatePlainSchemas()) {
+                millisToDate(userPlainAttrMap, plainSchema);
+                for (MembershipTO membership : userTO.getMemberships()) {
+                    millisToDate(membership.getPlainAttrMap(), plainSchema);
+                }
+            }
+
             membAttrs.clear();
             for (AttrTO attr : userTO.getDerAttrs()) {
                 if (attr.getSchema().contains("#")) {
@@ -198,4 +186,24 @@ public class UserSelfUpdateResource extends BaseResource {
         }
         return response;
     }
+
+    private void millisToDate(final Map<String, AttrTO> plainAttrMap, final PlainSchemaTO plainSchema)
+            throws IllegalArgumentException {
+        LOG.info("CONVERTING >>>>>>>>>> {}", plainSchema.getKey());
+        if (plainAttrMap.containsKey(plainSchema.getKey())) {
+            FastDateFormat fmt = FastDateFormat.getInstance(plainSchema.getConversionPattern());
+
+            AttrTO dateAttr = plainAttrMap.get(plainSchema.getKey());
+            List<String> formattedValues = new ArrayList<>(dateAttr.getValues().size());
+            for (String value : dateAttr.getValues()) {
+                try {
+                    formattedValues.add(fmt.format(Long.valueOf(value)));
+                } catch (NumberFormatException e) {
+                    throw new IllegalArgumentException("Invalid format value for " + value);
+                }
+            }
+            dateAttr.getValues().clear();
+            dateAttr.getValues().addAll(formattedValues);
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/dbf07add/client/enduser/src/main/resources/META-INF/resources/app/configuration/customForm.json
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/resources/META-INF/resources/app/configuration/customForm.json b/client/enduser/src/main/resources/META-INF/resources/app/configuration/customForm.json
index 9e26dfe..0967ef4 100644
--- a/client/enduser/src/main/resources/META-INF/resources/app/configuration/customForm.json
+++ b/client/enduser/src/main/resources/META-INF/resources/app/configuration/customForm.json
@@ -1 +1 @@
-{}
\ No newline at end of file
+{}