public void testAddRelation_correctRolesReturned() throws Exception
{
registerRelationService(true);
registerMBeans();
RoleList roleList = new RoleList();
createRoleList(mbeanObjectName1, "owner", roleList);
createRoleList(mbeanObjectName2, "car", roleList);
ObjectName relationSupportObjectName = new ObjectName("relationDomain:name=aRelationSupport");
SimpleRelationTestSupport relationSupport = new SimpleRelationTestSupport("relationID",
m_relationServiceObjectName,
"relationTypeName",
roleList);
m_server.registerMBean(relationSupport, relationSupportObjectName);
/* create the relationType */
m_relationService.createRelationType("relationTypeName", createRoleInfos("car", "owner"));
/* now add the relation */
m_relationService.addRelation(relationSupportObjectName);
////////////////////////////////////////////////////////////////////////////////////////////////
RoleList roleList1 = new RoleList();
createRoleList(mbeanObjectName3, "parent", roleList1);
createRoleList(mbeanObjectName4, "child", roleList1);
ObjectName relationSupportObjectName2 = new ObjectName("relationDomain:name=aRelationSupport2");
SimpleRelationTestSupport relationSupport2 = new SimpleRelationTestSupport("relationID2",
m_relationServiceObjectName,
"relationTypeName2",
roleList1);
m_server.registerMBean(relationSupport2, relationSupportObjectName2);
m_relationService.createRelationType("relationTypeName2", createRoleInfos("parent", "child"));
m_relationService.addRelation(relationSupportObjectName2);
///////////////// validate querying roles for relationId2(added second) returns the correct roles ////////////////////////////////
RoleResult result1 = m_relationService.getAllRoles("relationID2");
RoleList actual1 = result1.getRoles();
// we have to do this as role does not have an equals or hashcode, must check if it is added it will break compatibility!!!!
final Role role = (Role)roleList1.get(0);
boolean success = false;
for (Iterator iterator = actual1.iterator(); iterator.hasNext();)
{
Role role1 = (Role)iterator.next();
String roleName = role1.getRoleName();
if (roleName.equals(role.getRoleName())) success = true;
}
assertTrue(success);
///////////////////// validate querying roles for relaionID (added first) returns the expected roles ///////////////////////////////
RoleResult result = m_relationService.getAllRoles("relationID");
RoleList actual = result.getRoles();
final Role role2 = (Role)roleList.get(0);
boolean success2 = false;
for (Iterator iterator = actual.iterator(); iterator.hasNext();)
{
Role role1 = (Role)iterator.next();
String roleName = role1.getRoleName();
if (roleName.equals(role2.getRoleName())) success2 = true;
}