@Override public <T extends CredentialStorage> T retrieveCurrentCredential(Agent agent, Class<T> storageClass) { T storage = null; List<Property<Object>> annotatedTypes = PropertyQueries.createQuery(storageClass) .addCriteria(new AnnotatedPropertyCriteria(Stored.class)).getResultList(); if (annotatedTypes.isEmpty()) { throw new IdentityManagementException("Could not find any @Stored annotated method for CredentialStorage type [" + storageClass.getName() + "]."); } else { Property<Object> storedProperty = annotatedTypes.get(0); org.picketlink.idm.model.Attribute<Serializable> credentialAttribute = agent.getAttribute(storageClass.getName()); if (credentialAttribute != null) { try { storage = storageClass.newInstance(); } catch (Exception e) { throw new IdentityManagementException("Error while creating a " + storageClass.getName() + " storage instance.", e); } storedProperty.setValue(storage, credentialAttribute.getValue()); } else { throw new IdentityManagementException( "Methods annotated with @Stored should aways return a serializable object."); } } return storage; }
@Override protected void doPopulateIdentityInstance(Object toIdentity, Agent fromUser, JPAIdentityStore store) { store.setModelProperty(toIdentity, PROPERTY_IDENTITY_ID, fromUser.getId(), true); }
@Override public void storeCredential(Agent agent, CredentialStorage storage) { List<Property<Object>> annotatedTypes = PropertyQueries.createQuery(storage.getClass()) .addCriteria(new AnnotatedPropertyCriteria(Stored.class)).getResultList(); if (annotatedTypes.isEmpty()) { throw new IdentityManagementException("Could not find any @Stored annotated method for CredentialStorage type [" + storage.getClass().getName() + "]."); } else { Property<Object> storedProperty = annotatedTypes.get(0); Object credential = storedProperty.getValue(storage); if (Serializable.class.isInstance(credential)) { org.picketlink.idm.model.Attribute<Serializable> credentialAttribute = new org.picketlink.idm.model.Attribute<Serializable>( storage.getClass().getName(), (Serializable) credential); agent.setAttribute(credentialAttribute); update(agent); } else { throw new IdentityManagementException( "Credential storage property [" + storedProperty.getName() + "] in class [" + storage.getClass().getName() + "] must implement Serializable"); } } }
/** * <p> * Creates a new {@link Agent} instance using the API. This method also checks if the user was properly created by retrieving * his information from the store. * </p> * * @throws Exception */ @Test public void testCreate() throws Exception { Agent newAgent = loadOrCreateAgent("someAgent", true); IdentityManager identityManager = getIdentityManager(); identityManager.update(newAgent); // let's retrieve the user information and see if they are properly stored Agent storedAgent = identityManager.getAgent(newAgent.getId()); assertNotNull(storedAgent); assertEquals(newAgent.getId(), storedAgent.getId()); assertTrue(storedAgent.isEnabled()); assertTrue(new Date().compareTo(storedAgent.getCreatedDate()) > 0); }
oauthApp.setAttribute( new Attribute<String>("appURL", appURL) ); oauthApp.setAttribute( new Attribute<String>("appDesc", appDesc) ); assertTrue(result.size() == 1); assertEquals(appName, result.get(0).getId()); assertTrue(result.size() == 1); assertEquals(appName, result.get(0).getId());
/** * <p> * Updates the stored agent information. * </p> * * @throws Exception */ @Test public void testUpdate() throws Exception { Agent storedAgent = getIdentityType(true); assertNotNull(storedAgent); assertEquals("someAgent", storedAgent.getId()); IdentityManager identityManager = getIdentityManager(); storedAgent.setAttribute(new Attribute<String>("someAttribute", "1")); identityManager.update(storedAgent); // let's load again the user from the store and check for the updated information Agent updatedUser = identityManager.getAgent(storedAgent.getId()); assertNotNull(updatedUser.getAttribute("someAttribute")); assertEquals("1", updatedUser.getAttribute("someAttribute").getValue()); }
/** * <p> * Finds users by the expiration date. * </p> * * @throws Exception */ @Test public void testFindExpiryDate() throws Exception { Agent user = loadOrCreateAgent("someAgent", true); Date expirationDate = new Date(); IdentityManager identityManager = getIdentityManager(); user = identityManager.getAgent("someAgent"); user.setExpirationDate(expirationDate); identityManager.update(user); IdentityQuery<Agent> query = identityManager.<Agent> createQuery(Agent.class); query.setParameter(Agent.EXPIRY_DATE, user.getExpirationDate()); // all expired users List<Agent> result = query.getResultList(); assertFalse(result.isEmpty()); assertTrue(contains(result, user.getId())); assertEquals("someAgent", result.get(0).getId()); query = identityManager.<Agent> createQuery(Agent.class); Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.HOUR, 1); query.setParameter(Agent.EXPIRY_DATE, calendar.getTime()); // no users result = query.getResultList(); assertTrue(result.isEmpty()); }
/** * <p> * Finds users by the creation date. * </p> * * @throws Exception */ @Test public void testFindCreationDate() throws Exception { Agent user = loadOrCreateAgent("someAgent", true); IdentityManager identityManager = getIdentityManager(); IdentityQuery<Agent> query = identityManager.<Agent> createQuery(Agent.class); query.setParameter(Agent.CREATED_DATE, user.getCreatedDate()); // only the previously created user List<Agent> result = query.getResultList(); assertFalse(result.isEmpty()); assertTrue(result.size() == 1); assertEquals("someAgent", result.get(0).getId()); query = identityManager.<Agent> createQuery(Agent.class); Calendar futureDate = Calendar.getInstance(); futureDate.add(Calendar.MINUTE, 1); query.setParameter(Agent.CREATED_DATE, futureDate.getTime()); // no users result = query.getResultList(); assertTrue(result.isEmpty()); }
someAgent.setExpirationDate(currentDate); someAnotherAgent.setExpirationDate(currentDate); someFutureAgent.setExpirationDate(new Date()); someAnotherFutureAgent.setExpirationDate(new Date()); assertTrue(contains(result, someAgent.getId())); assertTrue(contains(result, someAnotherAgent.getId())); assertFalse(contains(result, someFutureAgent.getId())); assertTrue(contains(result, someAgent.getId())); assertTrue(contains(result, someAnotherAgent.getId())); assertTrue(contains(result, someFutureAgent.getId())); assertTrue(contains(result, someAnotherFutureAgent.getId())); assertTrue(contains(result, someAgent.getId())); assertTrue(contains(result, someAnotherAgent.getId())); assertTrue(contains(result, someFutureAgent.getId())); assertTrue(contains(result, someAnotherFutureAgent.getId()));
Agent someAnotherAgent = loadOrCreateAgent("someAnotherAgent", true); someAgent.setEnabled(true); someAnotherAgent.setEnabled(true); assertTrue(contains(result, someAgent.getId())); assertTrue(contains(result, someAnotherAgent.getId())); assertFalse(contains(result, someAgent.getId())); assertFalse(contains(result, someAnotherAgent.getId())); someAgent.setEnabled(false); assertTrue(contains(result, someAgent.getId())); assertFalse(contains(result, someAnotherAgent.getId())); someAnotherAgent.setEnabled(false); assertFalse(contains(result, someAgent.getId())); assertFalse(contains(result, someAnotherAgent.getId()));
Agent agent = (Agent) storedIdentityType; if (!isQueryParameterEquals(identityQuery.getParameters(), Agent.ID, agent.getId())) { continue; Agent memberAgent = (Agent) membership.getMember(); if (!selectedAgent.getId().equals(memberAgent.getId())) { continue; Agent agent = (Agent) member; if (agent != null && agent.getKey().equals(membership.getMember().getKey()) && membership.getRole().getKey().equals(fileUser.getKey())) { valuesMatchCount--; Agent agent = (Agent) member; if (agent != null && agent.getKey().equals(membership.getMember().getKey()) && membership.getGroup().getKey().equals(fileUser.getKey())) { valuesMatchCount--;
Agent someAgent = loadOrCreateAgent("someAgent", true); someAgent.setAttribute(new Attribute<String>("someAttribute", "someAttributeValue")); assertTrue(contains(result, someAgent.getId())); someAgent.setAttribute(new Attribute<String>("someAttribute", "someAttributeValueChanged")); assertFalse(contains(result, someAgent.getId())); someAgent.setAttribute(new Attribute<String>("someAttribute2", "someAttributeValue2")); assertTrue(contains(result, someAgent.getId()));
private boolean contains(List<Agent> result, String userId) { for (Agent resultAgent : result) { if (resultAgent.getId().equals(userId)) { return true; } } return false; } }
user.setAttribute(new Attribute<String>("someAttribute", "someAttributeValue")); assertTrue(contains(result, user.getId())); assertEquals(1, result.size()); assertTrue(contains(result, user.getId())); assertEquals(1, result.size());
@Override public <T extends CredentialStorage> List<T> retrieveCredentials(Agent agent, Class<T> storageClass) { ArrayList<T> storedCredentials = new ArrayList<T>(); Map<String, List<FileCredentialStorage>> agentCredentials = getConfig().getCredentials().get(agent.getId()); if (agentCredentials == null) { agentCredentials = new HashMap<String, List<FileCredentialStorage>>(); } List<FileCredentialStorage> credentials = agentCredentials.get(storageClass.getName()); if (credentials != null) { for (FileCredentialStorage fileCredentialStorage : credentials) { storedCredentials.add(convertToCredentialStorage(storageClass, fileCredentialStorage)); } } return storedCredentials; }
Agent someAgent = loadOrCreateAgent("someAgent", true); someAgent.setAttribute(new Attribute<String[]>("someAttribute", new String[] { "someAttributeValue1", "someAttributeValue2" })); assertTrue(contains(result, someAgent.getId())); assertFalse(contains(result, someAgent.getId())); someAgent.setAttribute(new Attribute<String[]>("someAttribute", new String[] { "someAttributeValue1", "someAttributeValueChanged" })); someAgent.setAttribute(new Attribute<String[]>("someAttribute2", new String[] { "someAttribute2Value1", "someAttribute2Value2" })); assertTrue(contains(result, someAgent.getId()));
@Override public GroupRole getMembership(IdentityType member, Group group, Role role) { for (GroupRole membership : new ArrayList<GroupRole>(getConfig().getMemberships())) { Agent providedMember = (Agent) member; Agent membershipMember = (Agent) membership.getMember(); if (membershipMember == null || providedMember == null || !membershipMember.getId().equals(providedMember.getId())) { continue; } if (hasGroupRole(membership, group, role)) { return membership; } } return null; }
@Override public <T extends CredentialStorage> T retrieveCurrentCredential(Agent agent, Class<T> storageClass) { Map<String, List<FileCredentialStorage>> agentCredentials = getConfig().getCredentials().get(agent.getId()); if (agentCredentials == null) { agentCredentials = new HashMap<String, List<FileCredentialStorage>>(); } List<FileCredentialStorage> credentials = agentCredentials.get(storageClass.getName()); if (credentials != null) { for (FileCredentialStorage fileCredentialStorage : credentials) { if (isCurrentCredential(fileCredentialStorage)) { return convertToCredentialStorage(storageClass, fileCredentialStorage); } } } return null; }
@Override public void removeMembership(IdentityType member, Group group, Role role) { for (GroupRole membership : new ArrayList<GroupRole>(getConfig().getMemberships())) { Agent providedMember = (Agent) member; Agent membershipMember = (Agent) membership.getMember(); if (membershipMember == null || providedMember == null || !membershipMember.getId().equals(providedMember.getId())) { continue; } if (hasGroupRole(membership, group, role)) { getConfig().getMemberships().remove(membership); } } flushMemberships(); }