Search in sources :

Example 1 with ChangedUserStoreAttribute

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;
}
Also used : Type(java.lang.reflect.Type) HashMap(java.util.HashMap) Gson(com.google.gson.Gson) ChangedUserStoreAttribute(org.wso2.carbon.identity.user.store.configuration.model.ChangedUserStoreAttribute) HashMap(java.util.HashMap) Map(java.util.Map) UserStoreAttribute(org.wso2.carbon.identity.user.store.configuration.model.UserStoreAttribute) ChangedUserStoreAttribute(org.wso2.carbon.identity.user.store.configuration.model.ChangedUserStoreAttribute)

Example 2 with ChangedUserStoreAttribute

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);
}
Also used : HashMap(java.util.HashMap) QName(javax.xml.namespace.QName) Iterator(java.util.Iterator) ChangedUserStoreAttribute(org.wso2.carbon.identity.user.store.configuration.model.ChangedUserStoreAttribute) StAXOMBuilder(org.apache.axiom.om.impl.builder.StAXOMBuilder) OMElement(org.apache.axiom.om.OMElement) UserStoreAttribute(org.wso2.carbon.identity.user.store.configuration.model.UserStoreAttribute) ChangedUserStoreAttribute(org.wso2.carbon.identity.user.store.configuration.model.ChangedUserStoreAttribute)

Example 3 with ChangedUserStoreAttribute

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);
}
Also used : UserStoreAttributeMappings(org.wso2.carbon.identity.user.store.configuration.model.UserStoreAttributeMappings) IdentityUserStoreServerException(org.wso2.carbon.identity.user.store.configuration.utils.IdentityUserStoreServerException) UserStoreAttributeMappingChangesLoader(org.wso2.carbon.identity.user.store.configuration.utils.UserStoreAttributeMappingChangesLoader) HashMap(java.util.HashMap) DefaultUserStoreAttributeConfigLoader(org.wso2.carbon.identity.user.store.configuration.utils.DefaultUserStoreAttributeConfigLoader) HashMap(java.util.HashMap) Map(java.util.Map) UserStoreAttribute(org.wso2.carbon.identity.user.store.configuration.model.UserStoreAttribute) ChangedUserStoreAttribute(org.wso2.carbon.identity.user.store.configuration.model.ChangedUserStoreAttribute)

Aggregations

HashMap (java.util.HashMap)3 ChangedUserStoreAttribute (org.wso2.carbon.identity.user.store.configuration.model.ChangedUserStoreAttribute)3 UserStoreAttribute (org.wso2.carbon.identity.user.store.configuration.model.UserStoreAttribute)3 Map (java.util.Map)2 Gson (com.google.gson.Gson)1 Type (java.lang.reflect.Type)1 Iterator (java.util.Iterator)1 QName (javax.xml.namespace.QName)1 OMElement (org.apache.axiom.om.OMElement)1 StAXOMBuilder (org.apache.axiom.om.impl.builder.StAXOMBuilder)1 UserStoreAttributeMappings (org.wso2.carbon.identity.user.store.configuration.model.UserStoreAttributeMappings)1 DefaultUserStoreAttributeConfigLoader (org.wso2.carbon.identity.user.store.configuration.utils.DefaultUserStoreAttributeConfigLoader)1 IdentityUserStoreServerException (org.wso2.carbon.identity.user.store.configuration.utils.IdentityUserStoreServerException)1 UserStoreAttributeMappingChangesLoader (org.wso2.carbon.identity.user.store.configuration.utils.UserStoreAttributeMappingChangesLoader)1