/** * */ package org.js.model.rbac.validation; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.util.EcoreUtil; import org.js.model.rbac.Group; import org.js.model.rbac.Role; /** * A constraint to ensure that a group represented by a role does not contain that role. * * @author Julia * */ public class GroupRoleCycleConstraint extends AbstractGroupConstraint { @Override String validateGroup(Group group) { String msg = null; Role represents = group.getOwner(); if (represents != null) { EList<Role> contains = group.getMembers(); for (Role containedRole : contains) { if (EcoreUtil.equals(containedRole, represents)) { msg = "Role with id <" + represents.getId() + "> cannot be contained in own group <" + group.getId() + ">."; break; } } } return msg; } }