/* * Copyright (c) 2014, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. * * WSO2 Inc. licenses this file to you under the Apache License, * Version 2.0 (the "License"); you may not use this file except * in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.wso2.carbon.identity.application.common.model; import org.apache.axiom.om.OMElement; import org.apache.commons.collections.CollectionUtils; import java.io.Serializable; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class PermissionsAndRoleConfig implements Serializable { private static final long serialVersionUID = 784509684062361809L; private ApplicationPermission[] permissions = new ApplicationPermission[0]; private RoleMapping[] roleMappings = new RoleMapping[0]; private String[] idpRoles = new String[0]; /* * <PermissionsAndRoleConfig> <Permissions></Permissions> <RoleMappings></RoleMappings> * <IdpRoles></IdpRoles> </PermissionsAndRoleConfig> */ public static PermissionsAndRoleConfig build(OMElement permissionsAndRoleConfigOM) { PermissionsAndRoleConfig permissionsAndRoleConfig = new PermissionsAndRoleConfig(); if (permissionsAndRoleConfigOM == null) { return permissionsAndRoleConfig; } Iterator<?> iter = permissionsAndRoleConfigOM.getChildElements(); while (iter.hasNext()) { OMElement element = (OMElement) (iter.next()); String elementName = element.getLocalName(); if ("Permissions".equals(elementName)) { Iterator<?> permissionsIter = element.getChildElements(); List<ApplicationPermission> permissionsArrList = new ArrayList<ApplicationPermission>(); if (permissionsIter != null) { while (permissionsIter.hasNext()) { OMElement permissionsElement = (OMElement) (permissionsIter.next()); ApplicationPermission appPermission = ApplicationPermission .build(permissionsElement); if (appPermission != null) { permissionsArrList.add(appPermission); } } } if (CollectionUtils.isNotEmpty(permissionsArrList)) { ApplicationPermission[] permissionsArr = permissionsArrList .toArray(new ApplicationPermission[0]); permissionsAndRoleConfig.setPermissions(permissionsArr); } } if ("RoleMappings".equals(elementName)) { Iterator<?> roleMappingsIter = element.getChildElements(); ArrayList<RoleMapping> roleMappingsArrList = new ArrayList<RoleMapping>(); if (roleMappingsIter != null) { while (roleMappingsIter.hasNext()) { OMElement roleMappingsElement = (OMElement) (roleMappingsIter.next()); RoleMapping roleMapping = RoleMapping.build(roleMappingsElement); if (roleMapping != null) { roleMappingsArrList.add(roleMapping); } } } if (CollectionUtils.isNotEmpty(roleMappingsArrList)) { RoleMapping[] roleMappingsArr = roleMappingsArrList.toArray(new RoleMapping[0]); permissionsAndRoleConfig.setRoleMappings(roleMappingsArr); } } if ("IdpRoles".equals(elementName)) { Iterator<?> idpRolesIter = element.getChildElements(); List<String> roleMappingsArrList = new ArrayList<String>(); while (idpRolesIter.hasNext()) { OMElement idpRolesElement = (OMElement) (idpRolesIter.next()); if (idpRolesElement.getText() != null) { roleMappingsArrList.add(idpRolesElement.getText()); } } if (CollectionUtils.isNotEmpty(roleMappingsArrList)) { String[] idpRolesArr = roleMappingsArrList.toArray(new String[0]); permissionsAndRoleConfig.setIdpRoles(idpRolesArr); } } } return permissionsAndRoleConfig; } /** * @return */ public ApplicationPermission[] getPermissions() { return permissions; } /** * @param permissions */ public void setPermissions(ApplicationPermission[] permissions) { this.permissions = permissions; } /** * @return */ public RoleMapping[] getRoleMappings() { return roleMappings; } /** * @param roleMappings */ public void setRoleMappings(RoleMapping[] roleMappings) { this.roleMappings = roleMappings; } public String[] getIdpRoles() { return idpRoles; } public void setIdpRoles(String[] idpRoles) { this.idpRoles = idpRoles; } }