public Set<IdentityObjectRelationship> resolveRelationships( IdentityStoreInvocationContext invocationCxt, IdentityObject fromIdentity, IdentityObject toIdentity, IdentityObjectRelationshipType relationshipType) throws IdentityException { IdentityObjectRelationshipSearchImpl search = new IdentityObjectRelationshipSearchImpl(); if (fromIdentity != null) { search.setFromIOName(fromIdentity.getName()); search.setFromIOType(fromIdentity.getIdentityType().getName()); } if (toIdentity != null) { search.setToIOName(toIdentity.getName()); search.setToIOType(toIdentity.getIdentityType().getName()); } if (relationshipType != null) { search.setRelationshipType(relationshipType.getName()); } Set<IdentityObjectRelationship> results = cacheSupport.getIdentityObjectRelationshipSearch(getCacheNS(invocationCxt), search); if (results != null) { return results; } results = identityStore.resolveRelationships( invocationCxt, fromIdentity, toIdentity, relationshipType); cacheSupport.putIdentityObjectRelationshipSearch(getCacheNS(invocationCxt), search, results); return results; }