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:
parent
f39c9fc741
commit
479fcf9e32
|
@ -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");
|
||||
|
|
Loading…
Reference in New Issue