@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 public IdentityQuery<T> setParameter(QueryParameter queryParameter, Object... value) { if (value == null || value.length == 0) { throw MESSAGES.nullArgument("Query Parameter values null or empty"); } parameters.put(queryParameter, value); if (IdentityType.CREATED_AFTER.equals(queryParameter) || IdentityType.EXPIRY_AFTER.equals(queryParameter)) { this.conditions.add(queryBuilder.greaterThanOrEqualTo(queryParameter, value[0])); } else if (IdentityType.CREATED_BEFORE.equals(queryParameter) || IdentityType.EXPIRY_BEFORE.equals(queryParameter)) { this.conditions.add(queryBuilder.lessThanOrEqualTo(queryParameter, value[0])); } else { this.conditions.add(queryBuilder.equal(queryParameter, value[0])); } return this; }
@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 public List<T> getResultList() { // remove this statement once deprecated methods on IdentityQuery are removed if (this.sortParameters != null) { for (QueryParameter parameter : this.sortParameters) { if (isSortAscending()) { sortBy(this.queryBuilder.asc(parameter)); } else { sortBy(this.queryBuilder.desc(parameter)); } } } List<T> result = new ArrayList<T>(); try { Set<IdentityStore<?>> identityStores = this.storeSelector.getStoresForIdentityQuery(this.context, this.getIdentityType()); AttributeStore<?> attributeStore = this.storeSelector.getStoreForAttributeOperation(context); for (IdentityStore<?> store : identityStores) { for (T identityType : store.fetchQueryResults(this.context, this)) { configureDefaultPartition(this.context, identityType, store, this.partitionManager); if (attributeStore != null) { attributeStore.loadAttributes(this.context, identityType); } result.add(identityType); } } } catch (Exception e) { throw MESSAGES.queryIdentityTypeFailed(this, e); } return result; }
@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 public List<T> getResultList() { // remove this statement once deprecated methods on IdentityQuery are removed if (this.sortParameters != null) { for (QueryParameter parameter : this.sortParameters) { if (isSortAscending()) { sortBy(this.queryBuilder.asc(parameter)); } else { sortBy(this.queryBuilder.desc(parameter)); } } } List<T> result = new ArrayList<T>(); try { Set<IdentityStore<?>> identityStores = this.storeSelector.getStoresForIdentityQuery(this.context, this.getIdentityType()); AttributeStore<?> attributeStore = this.storeSelector.getStoreForAttributeOperation(context); for (IdentityStore<?> store : identityStores) { for (T identityType : store.fetchQueryResults(this.context, this)) { configureDefaultPartition(this.context, identityType, store, this.partitionManager); if (attributeStore != null) { attributeStore.loadAttributes(this.context, identityType); } result.add(identityType); } } } catch (Exception e) { throw MESSAGES.queryIdentityTypeFailed(this, e); } return result; }
@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 public IdentityQuery<T> setParameter(QueryParameter queryParameter, Object... value) { if (value == null || value.length == 0) { throw MESSAGES.nullArgument("Query Parameter values null or empty"); } parameters.put(queryParameter, value); if (IdentityType.CREATED_AFTER.equals(queryParameter) || IdentityType.EXPIRY_AFTER.equals(queryParameter)) { this.conditions.add(queryBuilder.greaterThanOrEqualTo(queryParameter, value[0])); } else if (IdentityType.CREATED_BEFORE.equals(queryParameter) || IdentityType.EXPIRY_BEFORE.equals(queryParameter)) { this.conditions.add(queryBuilder.lessThanOrEqualTo(queryParameter, value[0])); } else { this.conditions.add(queryBuilder.equal(queryParameter, value[0])); } return this; }
/** * <p> Returns an {@link Role} instance with the given <code>name</code>. </p> * * @param name The role's name. * * @return An {@link Role} instance or null if the <code>name</code> is null or an empty string. * * @throws IdentityManagementException If the method fails. */ public static Role getRole(IdentityManager identityManager, String name) throws IdentityManagementException { if (identityManager == null) { throw MESSAGES.nullArgument("IdentityManager"); } if (isNullOrEmpty(name)) { return null; } IdentityQueryBuilder queryBuilder = identityManager.getQueryBuilder(); List<Role> roles = queryBuilder.createIdentityQuery(Role.class) .where(queryBuilder.equal(Role.NAME, name)).getResultList(); if (roles.isEmpty()) { return null; } else if (roles.size() == 1) { return roles.get(0); } else { throw new IdentityManagementException("Error - multiple Role objects found with same name"); } }
/** * <p> Returns an {@link Agent} instance with the given <code>loginName</code>. </p> * * @param loginName The agent's login name. * * @return An {@link Agent} instance or null if the <code>loginName</code> is null or an empty string. {@link User} * are also agents, so if the <code>loginName</code> maps to an user, it will be returned. * * @throws IdentityManagementException If the method fails. */ public static Agent getAgent(IdentityManager identityManager, String loginName) throws IdentityManagementException { if (identityManager == null) { throw MESSAGES.nullArgument("IdentityManager"); } if (isNullOrEmpty(loginName)) { return null; } IdentityQueryBuilder queryBuilder = identityManager.getQueryBuilder(); List<Agent> agents = queryBuilder.createIdentityQuery(Agent.class) .where(queryBuilder.equal(Agent.LOGIN_NAME, loginName)).getResultList(); if (agents.isEmpty()) { return null; } else if (agents.size() == 1) { return agents.get(0); } else { throw new IdentityManagementException("Error - multiple Agent objects found with same login name"); } }
/** * <p> Returns an {@link Role} instance with the given <code>name</code>. </p> * * @param name The role's name. * * @return An {@link Role} instance or null if the <code>name</code> is null or an empty string. * * @throws IdentityManagementException If the method fails. */ public static Role getRole(IdentityManager identityManager, String name) throws IdentityManagementException { if (identityManager == null) { throw MESSAGES.nullArgument("IdentityManager"); } if (isNullOrEmpty(name)) { return null; } IdentityQueryBuilder queryBuilder = identityManager.getQueryBuilder(); List<Role> roles = queryBuilder.createIdentityQuery(Role.class) .where(queryBuilder.equal(Role.NAME, name)).getResultList(); if (roles.isEmpty()) { return null; } else if (roles.size() == 1) { return roles.get(0); } else { throw new IdentityManagementException("Error - multiple Role objects found with same name"); } }
/** * <p> Returns an {@link User} instance with the given <code>loginName</code>. </p> * * @param loginName The agent's login name. * * @return An {@link User} instance or null if the <code>loginName</code> is null or an empty string. * * @throws IdentityManagementException If the method fails. */ public static User getUser(IdentityManager identityManager, String loginName) throws IdentityManagementException { if (identityManager == null) { throw MESSAGES.nullArgument("IdentityManager"); } if (isNullOrEmpty(loginName)) { return null; } IdentityQueryBuilder queryBuilder = identityManager.getQueryBuilder(); List<User> agents = queryBuilder.createIdentityQuery(User.class) .where(queryBuilder.equal(User.LOGIN_NAME, loginName)).getResultList(); if (agents.isEmpty()) { return null; } else if (agents.size() == 1) { return agents.get(0); } else { throw new IdentityManagementException("Error - multiple Agent objects found with same login name"); } }
/** * <p> Returns an {@link User} instance with the given <code>loginName</code>. </p> * * @param loginName The agent's login name. * * @return An {@link User} instance or null if the <code>loginName</code> is null or an empty string. * * @throws IdentityManagementException If the method fails. */ public static User getUser(IdentityManager identityManager, String loginName) throws IdentityManagementException { if (identityManager == null) { throw MESSAGES.nullArgument("IdentityManager"); } if (isNullOrEmpty(loginName)) { return null; } IdentityQueryBuilder queryBuilder = identityManager.getQueryBuilder(); List<User> agents = queryBuilder.createIdentityQuery(User.class) .where(queryBuilder.equal(User.LOGIN_NAME, loginName)).getResultList(); if (agents.isEmpty()) { return null; } else if (agents.size() == 1) { return agents.get(0); } else { throw new IdentityManagementException("Error - multiple Agent objects found with same login name"); } }
/** * <p> Returns an {@link Agent} instance with the given <code>loginName</code>. </p> * * @param loginName The agent's login name. * * @return An {@link Agent} instance or null if the <code>loginName</code> is null or an empty string. {@link User} * are also agents, so if the <code>loginName</code> maps to an user, it will be returned. * * @throws IdentityManagementException If the method fails. */ public static Agent getAgent(IdentityManager identityManager, String loginName) throws IdentityManagementException { if (identityManager == null) { throw MESSAGES.nullArgument("IdentityManager"); } if (isNullOrEmpty(loginName)) { return null; } IdentityQueryBuilder queryBuilder = identityManager.getQueryBuilder(); List<Agent> agents = queryBuilder.createIdentityQuery(Agent.class) .where(queryBuilder.equal(Agent.LOGIN_NAME, loginName)).getResultList(); if (agents.isEmpty()) { return null; } else if (agents.size() == 1) { return agents.get(0); } else { throw new IdentityManagementException("Error - multiple Agent objects found with same login name"); } }
String name = paths[paths.length - 1]; IdentityQueryBuilder queryBuilder = identityManager.getQueryBuilder(); IdentityQuery<Group> query = queryBuilder.createIdentityQuery(Group.class) .where(queryBuilder.equal(Group.NAME, name));
String name = paths[paths.length - 1]; IdentityQueryBuilder queryBuilder = identityManager.getQueryBuilder(); IdentityQuery<Group> query = queryBuilder.createIdentityQuery(Group.class) .where(queryBuilder.equal(Group.NAME, name));
IdentityQuery<Account> query = (IdentityQuery<Account>) queryBuilder.createIdentityQuery(accountType); query.where(queryBuilder.equal(Account.PARTITION, context.getPartition())); query.where(queryBuilder.equal(Account.ID, identifier));
IdentityQuery<Account> query = (IdentityQuery<Account>) queryBuilder.createIdentityQuery(accountType); query.where(queryBuilder.equal(Account.PARTITION, context.getPartition())); query.where(queryBuilder.equal(Account.ID, identifier));
IdentityQuery<Account> query = (IdentityQuery<Account>) queryBuilder.createIdentityQuery(accountType); query.where(queryBuilder.equal(Account.PARTITION, context.getPartition())); query.where(queryBuilder.equal(Account.QUERY_ATTRIBUTE.byName(loginNameProperty), userName));
IdentityQuery<Account> query = (IdentityQuery<Account>) queryBuilder.createIdentityQuery(accountType); query.where(queryBuilder.equal(Account.PARTITION, context.getPartition())); query.where(queryBuilder.equal(Account.QUERY_ATTRIBUTE.byName(loginNameProperty), userName));