/** * This file is part of CloudML [ http://cloudml.org ] * * Copyright (C) 2012 - SINTEF ICT * Contact: Franck Chauvel <franck.chauvel@sintef.no> * * Module: root * * CloudML is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation, either version 3 of * the License, or (at your option) any later version. * * CloudML is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General * Public License along with CloudML. If not, see * <http://www.gnu.org/licenses/>. */ /* */ package org.cloudml.core.credentials; import java.io.FileInputStream; import java.io.IOException; import java.util.Properties; import java.util.logging.Level; import java.util.logging.Logger; import org.cloudml.core.Provider; public class FileCredentials implements Credentials { public static final String DEFAULT_PATH = "credentials.properties"; private static final String NONE = null; private String path; private String login; private String password; public FileCredentials(String login, String password){ this.login=login; this.password=password; } public FileCredentials() { this(DEFAULT_PATH); } public FileCredentials(String pathToCredentials) { path = pathToCredentials; } public String getPathToCredentials() { return path; } @Override public String getLogin() { initializeIfNeeded(); return login; } @Override public String getPassword() { initializeIfNeeded(); return password; } @Override public void setPassword(String password) { this.password = password; } @Override public void setLogin(String login) { this.login = login; } private boolean notYetInitialized() { return (login == NONE || password == NONE); } private void initializeCredentials() { FileInputStream in = null; try { Properties props = new Properties(); in = new FileInputStream(this.path); props.load(in); login = props.getProperty("login"); password = props.getProperty("passwd"); } catch (IOException ex) { Logger.getLogger(Provider.class.getName()).log(Level.SEVERE, "Missing credentials", new Object[]{}); } finally { try { if (in != null) { in.close(); } } catch (IOException ex) { Logger.getLogger(Provider.class.getName()).log(Level.SEVERE, null, ex); } } } private void initializeIfNeeded() { if (notYetInitialized()) { initializeCredentials(); } } }