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
+{}