/** * Find an User by the id specified * * @param id * @return User */ @Override public User findById(long id) throws RuntimeException { IdentityQuery<User> query = identityManager.createIdentityQuery(User.class); query.setParameter(User.ID, id); return query.getResultList().get(0); }
@Override public boolean deleteGroup(String id) { verifyIdentityManager(); IdentityQuery<Group> query = identityManager.<Group> createIdentityQuery(Group.class); query.setParameter(AttributedType.ID, id); List<Group> result = query.getResultList(); Group group = null; if(result.size() == 1){ group = result.get(0); } else if(result.size() == 0){ log.error("No group instances with id:" + id); } else { log.error("Multiple group instances with id:" + id); } if (group != null) { identityManager.remove(group); return true; } return false; }
@Override public boolean deleteUser(String id) { verifyIdentityManager(); IdentityQuery<User> query = identityManager.<User> createIdentityQuery(User.class); query.setParameter(AttributedType.ID, id); List<User> result = query.getResultList(); User user = null; if(result.size() == 1){ user = result.get(0); } else if(result.size() == 0) { log.error("No user instances with id:" + id); } else { log.error("Multiple user instances with id:" + id); } if(user != null){ identityManager.remove(user); return true; } return false; }
/** * Validate the access token * * @param passedAccessToken * @param identityManager * @return */ public static boolean validateAccessToken(String passedAccessToken, IdentityManager identityManager) { IdentityQuery<Agent> agentQuery = identityManager.createIdentityQuery(Agent.class); agentQuery.setParameter(AttributedType.QUERY_ATTRIBUTE.byName("accessToken"), passedAccessToken); List<Agent> agents = agentQuery.getResultList(); int size = agents.size(); if (size == 0 || size != 1) { return false; } return true; }
private List<Group> getGroups(User storedUser) { IdentityQuery<Group> groupQuery = getIdentityManager().createIdentityQuery(Group.class); groupQuery.setParameter(Role.HAS_MEMBER, storedUser); return groupQuery.getResultList(); }
private List<Role> getRoles(User userFromIDM) { IdentityQuery<Role> query = getIdentityManager().createIdentityQuery(Role.class); query.setParameter(Role.ROLE_OF, userFromIDM); return query.getResultList(); }
/** * Get All the users * * @param name Role name * @return Users by roles */ @Override public List<User> findAllByRole(String name) { Role role = BasicModel.getRole(identityManager, name); IdentityQuery<User> query = identityManager.createIdentityQuery(User.class); query.setParameter(GroupRole.ROLE, role); return query.getResultList(); }
@Override public SCIMGroups getGroups(String id) { verifyIdentityManager(); SCIMGroups scimGroup = new SCIMGroups(); IdentityQuery<Group> query = identityManager.<Group> createIdentityQuery(Group.class); query.setParameter(AttributedType.ID, id); List<Group> result = query.getResultList(); Group group = null; if(result.size() == 1){ group = result.get(0); } else if(result.size() == 0){ log.error("No group instances with id:" + id); } else { log.error("Multiple group instances with id:" + id); } if (group != null) { scimGroup.setDisplayName(group.getName()); scimGroup.setId(id); } return scimGroup; }
@Override public <V extends IdentityType> int countQueryResults(IdentityContext context, IdentityQuery<V> identityQuery) { int limit = identityQuery.getLimit(); int offset = identityQuery.getOffset(); identityQuery.setLimit(0); identityQuery.setOffset(0); int resultCount = identityQuery.getResultList().size(); identityQuery.setLimit(limit); identityQuery.setOffset(offset); return resultCount; }
@Override public <V extends IdentityType> int countQueryResults(IdentityContext context, IdentityQuery<V> identityQuery) { int limit = identityQuery.getLimit(); int offset = identityQuery.getOffset(); identityQuery.setLimit(0); identityQuery.setOffset(0); int resultCount = identityQuery.getResultList().size(); identityQuery.setLimit(limit); identityQuery.setOffset(offset); return resultCount; }
@Override public <C extends IdentityType> C lookupById(Class<C> attributedType, String id) throws IdentityManagementException { if (attributedType == null) { throw MESSAGES.nullArgument("IdentityType class"); } if (id == null) { throw MESSAGES.nullArgument("Identifier"); } IdentityQueryBuilder queryBuilder = getQueryBuilder(); IdentityQuery<C> query = queryBuilder.createIdentityQuery(attributedType); query.where(queryBuilder.equal(IdentityType.ID, id)); List<C> result = query.getResultList(); C identity = null; if (!result.isEmpty()) { if (result.size() > 1) { throw MESSAGES.attributedTypeAmbiguosFoundWithId(id); } else { identity = result.get(0); } } return identity; }
@Override protected void doRemove(Partition attributedType) { checkPartitionManagementSupported(); IdentityManager identityManager = createIdentityManager(attributedType); IdentityQueryBuilder queryBuilder = identityManager.getQueryBuilder(); IdentityQuery<IdentityType> query = queryBuilder.createIdentityQuery(IdentityType.class); for (IdentityType identityType : query.getResultList()) { identityManager.remove(identityType); } IdentityContext identityContext = getIdentityContext(); getStoreSelector().getStoreForPartitionOperation(identityContext, attributedType.getClass()).remove(identityContext, attributedType); }
@Override protected void doRemove(Partition attributedType) { checkPartitionManagementSupported(); IdentityManager identityManager = createIdentityManager(attributedType); IdentityQueryBuilder queryBuilder = identityManager.getQueryBuilder(); IdentityQuery<IdentityType> query = queryBuilder.createIdentityQuery(IdentityType.class); for (IdentityType identityType : query.getResultList()) { identityManager.remove(identityType); } IdentityContext identityContext = getIdentityContext(); getStoreSelector().getStoreForPartitionOperation(identityContext, attributedType.getClass()).remove(identityContext, attributedType); }
/** * <p> * Find an {@link Agent} by id. * </p> * * @throws Exception */ @Test public void testFindById() throws Exception { loadOrCreateAgent("someAgent", true); IdentityManager identityManager = getIdentityManager(); IdentityQuery<Agent> query = identityManager.<Agent> createQuery(Agent.class); query.setParameter(Agent.ID, "someAgent"); List<Agent> result = query.getResultList(); assertFalse(result.isEmpty()); assertTrue(result.size() == 1); assertEquals("someAgent", result.get(0).getId()); }
/** * <p> * Find an {@link User} by id. * </p> * * @throws Exception */ @Test public void testFindById() throws Exception { loadOrCreateUser("admin", true); IdentityManager identityManager = getIdentityManager(); IdentityQuery<User> query = identityManager.<User> createQuery(User.class); query.setParameter(User.ID, "admin"); List<User> result = query.getResultList(); assertFalse(result.isEmpty()); assertTrue(result.size() == 1); assertEquals("admin", result.get(0).getId()); }
/** * <p> * Find an {@link Group} by id. * </p> * * @throws Exception */ @Test public void testFindByName() throws Exception { loadOrCreateGroup("admin", null, true); IdentityManager identityManager = getIdentityManager(); IdentityQuery<Group> query = identityManager.<Group> createQuery(Group.class); query.setParameter(Group.NAME, "admin"); List<Group> result = query.getResultList(); assertFalse(result.isEmpty()); assertTrue(result.size() == 1); assertEquals("admin", result.get(0).getName()); }
/** * <p> * Find an {@link Role} by id. * </p> * * @throws Exception */ @Test public void testFindByName() throws Exception { loadOrCreateRole("admin", true); IdentityManager identityManager = getIdentityManager(); IdentityQuery<Role> query = identityManager.<Role> createQuery(Role.class); query.setParameter(Role.NAME, "admin"); List<Role> result = query.getResultList(); assertFalse(result.isEmpty()); assertTrue(result.size() == 1); assertEquals("admin", result.get(0).getName()); }
/** * <p> * Find an {@link User} by his associated {@link Group}. * </p> * * @throws Exception */ @Test public void testFindBySingleGroup() throws Exception { User user = loadOrCreateUser("admin", true); Group administratorGroup = loadOrCreateGroup("Administrators", null, true); IdentityManager identityManager = getIdentityManager(); IdentityQuery<User> query = identityManager.createQuery(User.class); query.setParameter(User.MEMBER_OF, new String[] { "Administrators" }); List<User> result = query.getResultList(); assertTrue(result.isEmpty()); identityManager.addToGroup(user, administratorGroup); query = identityManager.createQuery(User.class); query.setParameter(User.MEMBER_OF, new String[] { "Administrators" }); result = query.getResultList(); assertFalse(result.isEmpty()); assertEquals(user.getId(), result.get(0).getId()); }
@Override public SCIMUser getUser(String id) { verifyIdentityManager(); SCIMUser scimUser = new SCIMUser(); IdentityQueryBuilder queryBuilder = identityManager.<User>getQueryBuilder(); IdentityQuery<User> query = queryBuilder.createIdentityQuery(User.class); query.where(queryBuilder.equal(AttributedType.ID, id)); List<User> result = query.getResultList(); User user = null; if (result.size() > 0) { user = result.get(0); scimUser.setId(id); UserName userName = new UserName(); userName.setGivenName(user.getFirstName()); userName.setFamilyName(user.getLastName()); scimUser.setName(userName); } // TODO: populate SCIM object return scimUser; }
/** * <p> * Finds groups by the creation date. * </p> * * @throws Exception */ @Test public void testFindWithParent() throws Exception { Group group = loadOrCreateGroup("someGroup", "Parent Group", true); IdentityManager identityManager = getIdentityManager(); IdentityQuery<Group> query = identityManager.<Group> createQuery(Group.class); query.setParameter(Group.PARENT, group.getParentGroup().getName()); List<Group> result = query.getResultList(); assertFalse(result.isEmpty()); assertTrue(result.size() == 1); assertEquals(group.getName(), result.get(0).getName()); assertEquals(group.getParentGroup().getName(), result.get(0).getParentGroup().getName()); }