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