public IdentityObjectRelationship createRelationship(IdentityStoreInvocationContext invocationCxt, IdentityObject fromIdentity, IdentityObject toIdentity, IdentityObjectRelationshipType relationshipType, String relationshipName, boolean createNames) throws IdentityException
{
IdentityStore fromStore = resolveIdentityStore(fromIdentity);
IdentityStore toStore = resolveIdentityStore(toIdentity);
IdentityStoreInvocationContext toTargetCtx = resolveInvocationContext(toStore, invocationCxt);
IdentityStoreInvocationContext defaultTargetCtx = resolveInvocationContext(defaultIdentityStore, invocationCxt);
if (fromStore == toStore)
{
if (relationshipName == null ||
(relationshipName != null && fromStore.getSupportedFeatures().isNamedRelationshipsSupported()))
{
return fromStore.createRelationship(toTargetCtx, fromIdentity, toIdentity, relationshipType, relationshipName, createNames);
}
}
if (!hasIdentityObject(defaultTargetCtx, defaultIdentityStore, fromIdentity))
{
defaultIdentityStore.createIdentityObject(defaultTargetCtx, fromIdentity.getName(), fromIdentity.getIdentityType());
}
if (!hasIdentityObject(defaultTargetCtx, defaultIdentityStore, toIdentity))
{
defaultIdentityStore.createIdentityObject(defaultTargetCtx, toIdentity.getName(), toIdentity.getIdentityType());
}
return defaultIdentityStore.createRelationship(defaultTargetCtx, fromIdentity, toIdentity, relationshipType, relationshipName, createNames);
}