@Override public void update(IdentityType identityType) { checkInvalidIdentityType(identityType); IdentityTypeHandler<IdentityType> identityTypeManager = getConfig().getIdentityTypeManager(identityType.getClass()); Object identity = getIdentityObject(identityType); identityTypeManager.populateIdentityInstance(getContext().getRealm(), identity, identityType, this); updateAttributes(identityType, identity); EntityManager em = getEntityManager(); em.merge(identity); em.flush(); AbstractBaseEvent event = identityTypeManager.raiseUpdatedEvent(identityType, this); event.getContext().setValue(EVENT_CONTEXT_USER_ENTITY, identity); getContext().getEventBridge().raiseEvent(event); }
@Override public void remove(IdentityType identityType) { checkInvalidIdentityType(identityType); EntityManager em = getEntityManager(); IdentityTypeHandler<IdentityType> identityTypeManager = getConfig().getIdentityTypeManager(identityType.getClass()); Object identity = getIdentityObject(identityType); identityTypeManager.remove(identity, identityType, this); // Remove credentials removeCredentials(identity); // Remove attributes removeAttributes(identity); // Remove memberships - this takes a little more work because the identity may be // a member, a role or a group removeMemberships(identity); // Remove the identity object itself em.remove(identity); em.flush(); AbstractBaseEvent event = identityTypeManager.raiseDeletedEvent(identityType, this); event.getContext().setValue(EVENT_CONTEXT_USER_ENTITY, identity); getContext().getEventBridge().raiseEvent(event); }
@Override public void add(IdentityType identityType) { checkInvalidIdentityType(identityType); if (lookupIdentityObjectById(identityType) != null) { throw new IdentityManagementException("IdentityType already exists."); } try { IdentityTypeHandler<IdentityType> identityTypeManager = getConfig().getIdentityTypeManager(identityType.getClass()); Object identity = identityTypeManager.createIdentityInstance(getContext().getRealm(), identityType, this); EntityManager em = getEntityManager(); em.persist(identity); em.flush(); updateAttributes(identityType, identity); AbstractBaseEvent event = identityTypeManager.raiseCreatedEvent(identityType, this); event.getContext().setValue(EVENT_CONTEXT_USER_ENTITY, identity); getContext().getEventBridge().raiseEvent(event); } catch (Exception ex) { throw new IdentityManagementException("Exception while creating IdentityType [" + identityType + "].", ex); } }