use of org.wso2.carbon.identity.user.store.configuration.model.ChangedUserStoreAttribute in project carbon-identity-framework by wso2.
the class UserStoreConfigComponent method getModifiedAttributeMap.
/**
* To merge default attribute mappings and mappings changes of other user stores.
*
* @param defaultUserStoreAttrMapping Default userstore attribute mappings.
* @param changedUserStoreAttrMap Userstore attribute mapping changes.
* @return Map of user store type and their attribute mappings.
*/
private Map<String, UserStoreAttribute> getModifiedAttributeMap(Map<String, UserStoreAttribute> defaultUserStoreAttrMapping, Map<String, ChangedUserStoreAttribute> changedUserStoreAttrMap) {
if (defaultUserStoreAttrMapping == null) {
return null;
}
Gson gson = new Gson();
String serializedDefaultAttrMappings = gson.toJson(defaultUserStoreAttrMapping);
// To deserialize a hashmap using Gson, need a type object of the hashmap.
Type type = new TypeToken<HashMap<String, UserStoreAttribute>>() {
}.getType();
Map<String, UserStoreAttribute> clonedAttrMap = gson.fromJson(serializedDefaultAttrMappings, type);
for (Map.Entry<String, ChangedUserStoreAttribute> entry : changedUserStoreAttrMap.entrySet()) {
if (!clonedAttrMap.containsKey(entry.getKey())) {
continue;
}
if (entry.getValue().getOperation() == UserStoreConfigurationConstant.UserStoreOperation.UPDATE) {
UserStoreAttribute defaultUserStoreAttribute = clonedAttrMap.get(entry.getKey());
UserStoreAttribute newUserStoreAttribute = entry.getValue().getUsAttribute();
if (org.apache.commons.lang3.StringUtils.isNotBlank(newUserStoreAttribute.getMappedAttribute())) {
defaultUserStoreAttribute.setMappedAttribute(newUserStoreAttribute.getMappedAttribute());
}
if (org.apache.commons.lang3.StringUtils.isNotBlank(newUserStoreAttribute.getDisplayName())) {
defaultUserStoreAttribute.setDisplayName(newUserStoreAttribute.getDisplayName());
}
clonedAttrMap.put(entry.getKey(), defaultUserStoreAttribute);
} else if (entry.getValue().getOperation() == UserStoreConfigurationConstant.UserStoreOperation.DELETE) {
clonedAttrMap.remove(entry.getKey());
}
}
return clonedAttrMap;
}
use of org.wso2.carbon.identity.user.store.configuration.model.ChangedUserStoreAttribute in project carbon-identity-framework by wso2.
the class UserStoreAttributeMappingChangesLoader method buildAttributeMappings.
private void buildAttributeMappings(InputStream inStream, Map<String, Map<String, ChangedUserStoreAttribute>> userStoreAttributeChanges) throws XMLStreamException, OMException, IdentityUserStoreServerException {
StAXOMBuilder builder = new StAXOMBuilder(inStream);
Iterator iterator = builder.getDocumentElement().getChildElements();
String userStoreType = builder.getDocumentElement().getAttributeValue(new QName(USERSTORE_TYPE));
Map<String, ChangedUserStoreAttribute> attributeChangeMap = new HashMap<>();
if (iterator == null) {
return;
}
while (iterator.hasNext()) {
OMElement attributeElement = (OMElement) iterator.next();
Iterator attributeIterator = attributeElement.getChildElements();
ChangedUserStoreAttribute changedUserStoreAttribute = new ChangedUserStoreAttribute();
UserStoreAttribute userStoreAttribute = new UserStoreAttribute();
if (attributeIterator == null) {
continue;
}
while (attributeIterator.hasNext()) {
OMElement attributes = (OMElement) attributeIterator.next();
String attributeQName = attributes.getQName().getLocalPart();
if (StringUtils.equalsIgnoreCase(OPERATION, attributeQName)) {
changedUserStoreAttribute.setOperation(getOperation(attributes.getText()));
} else if (StringUtils.equalsIgnoreCase(ATTRIBUTE_ID, attributeQName)) {
userStoreAttribute.setMappedAttribute(attributes.getText());
} else if (StringUtils.equalsIgnoreCase(CLAIM_URI, attributeQName)) {
userStoreAttribute.setClaimUri(attributes.getText());
userStoreAttribute.setClaimId(Base64.getUrlEncoder().withoutPadding().encodeToString(attributes.getText().getBytes(StandardCharsets.UTF_8)));
} else if (StringUtils.equalsIgnoreCase(DISPLAY_NAME, attributeQName)) {
userStoreAttribute.setDisplayName(attributes.getText());
}
}
changedUserStoreAttribute.setUsAttribute(userStoreAttribute);
attributeChangeMap.put(userStoreAttribute.getClaimId(), changedUserStoreAttribute);
}
userStoreAttributeChanges.put(userStoreType, attributeChangeMap);
}
use of org.wso2.carbon.identity.user.store.configuration.model.ChangedUserStoreAttribute in project carbon-identity-framework by wso2.
the class UserStoreConfigComponent method readUserStoreAttributeMappingConfigs.
private void readUserStoreAttributeMappingConfigs() {
UserStoreAttributeMappings mappings = new UserStoreAttributeMappings();
Map<String, Map<String, UserStoreAttribute>> userStoreAttributeMappings = new HashMap<>();
Map<String, UserStoreAttribute> defaultAttributeMappings = null;
Map<String, Map<String, ChangedUserStoreAttribute>> attributeMappingChanges = null;
try {
defaultAttributeMappings = new DefaultUserStoreAttributeConfigLoader().loadDefaultUserStoreAttributeMappings();
attributeMappingChanges = new UserStoreAttributeMappingChangesLoader().loadUserStoreAttributeMappingChanges();
} catch (IdentityUserStoreServerException e) {
log.error("Error occurred while reading userstore attribute mappings configuration files.", e);
}
if (MapUtils.isNotEmpty(defaultAttributeMappings) && MapUtils.isNotEmpty(attributeMappingChanges)) {
for (Map.Entry<String, Map<String, ChangedUserStoreAttribute>> entry : attributeMappingChanges.entrySet()) {
Map<String, UserStoreAttribute> tempMap = getModifiedAttributeMap(defaultAttributeMappings, entry.getValue());
userStoreAttributeMappings.put(entry.getKey(), tempMap);
}
}
if (MapUtils.isNotEmpty(defaultAttributeMappings)) {
mappings.setDefaultUserStoreAttributeMappings(defaultAttributeMappings);
} else {
mappings.setDefaultUserStoreAttributeMappings(Collections.emptyMap());
}
if (MapUtils.isNotEmpty(userStoreAttributeMappings)) {
mappings.setUserStoreAttributeMappings(userStoreAttributeMappings);
} else {
mappings.setUserStoreAttributeMappings(Collections.emptyMap());
}
UserStoreConfigListenersHolder.getInstance().setUserStoreAttributeMappings(mappings);
}
Aggregations