/******************************************************************************* * Copyright (c) 2010-2014 SAP AG and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * SAP AG - initial API and implementation *******************************************************************************/ package org.eclipse.skalli.core.role; import java.util.LinkedList; import java.util.List; import java.util.SortedSet; import java.util.TreeSet; import org.apache.commons.lang.StringUtils; import org.eclipse.skalli.model.Issue; import org.eclipse.skalli.model.Issuer; import org.eclipse.skalli.model.Severity; import org.eclipse.skalli.services.configuration.ConfigResourceBase; public class RolesResource extends ConfigResourceBase<RolesConfig> implements Issuer { @Override protected Class<RolesConfig> getConfigClass() { return RolesConfig.class; } @Override protected List<Class<?>> getAdditionalConfigClasses() { List<Class<?>> ret = new LinkedList<Class<?>>(); ret.add(RoleConfig.class); return ret; } @Override public SortedSet<Issue> validate(RolesConfig configObject, String loggedInUser) { TreeSet<Issue> issues = new TreeSet<Issue>(); for (RoleConfig roleConfig: configObject.getRoles()) { if (StringUtils.isBlank(roleConfig.getRoleId())) { issues.add(new Issue(Severity.FATAL, this.getClass(), "Roles must have non-empty role identifiers")); return issues; } } //check that roles identifiers are unique List<RoleConfig> roleConfigs = configObject.getRoles(); if (roleConfigs.size() > 1) { for (int i = 0; i < roleConfigs.size(); i++) { RoleConfig role = roleConfigs.get(i); String roleId = role.getRoleId(); if (StringUtils.isNotBlank(roleId)) { for (int j = i + 1; j < roleConfigs.size(); j++) { if (roleId.equals(roleConfigs.get(j).getRoleId())) { issues.add(new Issue(Severity.FATAL, this.getClass(), "Role names must be unique")); return issues; } } } } } return issues; } }