I am trying to check if two role objects are having same set of entitlements. I used BundleDifference class but the results are not accurate. Even if all entitlements are exactly same, the result is showing it has difference by returning true while using hasDifferences method. Below is the code that i tried.
Code
RoleLifecycler rl = new RoleLifecycler(context);
Bundle bns = context.getObjectByName(Bundle.class, "MyRole001");
Bundle role= context.getObjectByName(Bundle.class, "MyRole002");
BundleDifference bdiff = rl.diff(bns, role);
return bdiff.getProfileDifferences();
Result
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE List PUBLIC "sailpoint.dtd" "sailpoint.dtd">
<List>
<ProfileDifference application="AD Access">
<AttributeDifferences>
<Difference attribute="Application" displayName="Application" oldValue="AD Access"/>
</AttributeDifferences>
<FilterDifference>
<Difference oldValue="groups containsAll {"SuperAdmin"}"/>
</FilterDifference>
</ProfileDifference>
<ProfileDifference application="SystemAccess">
<AttributeDifferences>
<Difference attribute="Application" displayName="Application" oldValue="SystemAccess"/>
</AttributeDifferences>
<FilterDifference>
<Difference oldValue="groups containsAll {"Director"}"/>
</FilterDifference>
</ProfileDifference>
<ProfileDifference application="AD Access">
<AttributeDifferences>
<Difference attribute="Application" displayName="Application" newValue="AD Access"/>
</AttributeDifferences>
<FilterDifference>
<Difference newValue="groups containsAll {"SuperAdmin"}"/>
</FilterDifference>
</ProfileDifference>
<ProfileDifference application="SystemAccess">
<AttributeDifferences>
<Difference attribute="Application" displayName="Application" newValue="SystemAccess"/>
</AttributeDifferences>
<FilterDifference>
<Difference newValue="groups containsAll {"Director"}"/>
</FilterDifference>
</ProfileDifference>
</List>