/** * <p> * Flush all changes made to credentials to the filesystem. * </p> */ synchronized void flushCredentials() { try { FileOutputStream fos = new FileOutputStream(this.getConfig().getCredentialsFile()); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(getConfig().getCredentials()); oos.close(); } catch (Exception e) { e.printStackTrace(); } }
@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; }
@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 storeCredential(Agent agent, CredentialStorage storage) { Map<String, List<FileCredentialStorage>> agentCredentials = getConfig().getCredentials().get(agent.getId()); if (agentCredentials == null) { agentCredentials = new HashMap<String, List<FileCredentialStorage>>(); } List<FileCredentialStorage> credentials = agentCredentials.get(storage.getClass().getName()); if (credentials == null) { credentials = new ArrayList<FileCredentialStorage>(); } for (FileCredentialStorage fileCredentialStorage : credentials) { if (isCurrentCredential(fileCredentialStorage)) { fileCredentialStorage.setExpiryDate(new Date()); } } List<Property<Object>> annotatedTypes = PropertyQueries.createQuery(storage.getClass()) .addCriteria(new AnnotatedPropertyCriteria(Stored.class)).getResultList(); FileCredentialStorage credential = new FileCredentialStorage(); for (Property<Object> property : annotatedTypes) { credential.getStoredFields().put(property.getName(), (Serializable) property.getValue(storage)); } if (credential.getEffectiveDate() == null) { credential.setEffectiveDate(new Date()); } credentials.add(credential); agentCredentials.put(storage.getClass().getName(), credentials); getConfig().getCredentials().put(agent.getId(), agentCredentials); flushCredentials(); }