155 Boolean useFriendlyNames = Boolean.valueOf(mapperModel.getConfig().get(
USE_FRIENDLY_NAMES));
158 Set<String> assertedUserAttributes =
new HashSet<String>();
159 for (AttributeType a : attributesInContext) {
160 String attribute = useFriendlyNames ? a.getFriendlyName() : a.getName();
161 List<String> attributeValuesInContext = a.getAttributeValue().stream().filter(Objects::nonNull).map(Object::toString).collect(Collectors.toList());
162 List<String> currentAttributeValues = user.getAttributes().get(attribute);
163 if (attributeValuesInContext == null) {
165 user.removeAttribute(attribute);
166 }
else if (currentAttributeValues == null) {
168 user.setAttribute(attribute, attributeValuesInContext);
169 }
else if (!CollectionUtil.collectionEquals(attributeValuesInContext, currentAttributeValues)) {
171 user.setAttribute(attribute, attributeValuesInContext);
173 if (Objects.equals(attribute, emailAttribute)) {
175 }
else if (Objects.equals(attribute, firstNameAttribute)) {
176 setIfNotEmpty(context::setFirstName, attributeValuesInContext);
177 }
else if (Objects.equals(attribute, lastNameAttribute)) {
178 setIfNotEmpty(context::setLastName, attributeValuesInContext);
179 }
else if (Objects.equals(attribute, langAttribute)) {
180 if(attributeValuesInContext == null) {
188 assertedUserAttributes.add(attribute);
191 user.getAttributes().keySet().stream().filter(a -> !assertedUserAttributes.contains(a)).forEach(a -> user.removeAttribute(a));
void setIfNotEmpty(Consumer< String > consumer, List< String > values)
Definition: UserAttributeStatementMapper.java:214
static final String USER_ATTRIBUTE_EMAIL
Definition: UserAttributeStatementMapper.java:48
static final String USER_ATTR_LOCALE
Definition: UserAttributeStatementMapper.java:36
static final String USER_ATTRIBUTE_FIRST_NAME
Definition: UserAttributeStatementMapper.java:44
static final String USER_ATTRIBUTE_LANGUAGE
Definition: UserAttributeStatementMapper.java:50
Optional< Pattern > getAttributePattern(IdentityProviderMapperModel mapperModel)
Definition: UserAttributeStatementMapper.java:199
List< AttributeType > findAttributesInContext(BrokeredIdentityContext context, Optional< Pattern > attributePattern)
Definition: UserAttributeStatementMapper.java:204
static final String USE_FRIENDLY_NAMES
Definition: UserAttributeStatementMapper.java:52
static final String USER_ATTRIBUTE_LAST_NAME
Definition: UserAttributeStatementMapper.java:46