Refactor amazon-s3:// property file loading to support no directory

In the future getDirectory() can return null.  Avoid an NPE here by
refactoring the code to support conditionally skipping a check for
the properties file in the repository directory, falling to only
the user's ~/ file location.

Change-Id: I76f5503d4063fdd9d24b7c1b58e1b09ddf1a5670
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
This commit is contained in:
Shawn O. Pearce 2010-06-25 17:42:01 -07:00
parent f39c9fc741
commit 479fcf9e32
1 changed files with 28 additions and 17 deletions

View File

@ -126,23 +126,7 @@ static boolean canHandle(final URIish uri) {
throws NotSupportedException {
super(local, uri);
Properties props = null;
File propsFile = new File(local.getDirectory(), uri.getUser());
if (!propsFile.isFile())
propsFile = new File(local.getFS().userHome(), uri.getUser());
if (propsFile.isFile()) {
try {
props = AmazonS3.properties(propsFile);
} catch (IOException e) {
throw new NotSupportedException(MessageFormat.format(JGitText.get().cannotReadFile, propsFile), e);
}
} else {
props = new Properties();
props.setProperty("accesskey", uri.getUser());
props.setProperty("secretkey", uri.getPass());
}
s3 = new AmazonS3(props);
s3 = new AmazonS3(loadProperties());
bucket = uri.getHost();
String p = uri.getPath();
@ -153,6 +137,33 @@ static boolean canHandle(final URIish uri) {
keyPrefix = p;
}
private Properties loadProperties() throws NotSupportedException {
if (local.getDirectory() != null) {
File propsFile = new File(local.getDirectory(), uri.getUser());
if (propsFile.isFile())
return loadPropertiesFile(propsFile);
}
File propsFile = new File(local.getFS().userHome(), uri.getUser());
if (propsFile.isFile())
return loadPropertiesFile(propsFile);
Properties props = new Properties();
props.setProperty("accesskey", uri.getUser());
props.setProperty("secretkey", uri.getPass());
return props;
}
private static Properties loadPropertiesFile(File propsFile)
throws NotSupportedException {
try {
return AmazonS3.properties(propsFile);
} catch (IOException e) {
throw new NotSupportedException(MessageFormat.format(
JGitText.get().cannotReadFile, propsFile), e);
}
}
@Override
public FetchConnection openFetch() throws TransportException {
final DatabaseS3 c = new DatabaseS3(bucket, keyPrefix + "/objects");