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 {
|
throws NotSupportedException {
|
||||||
super(local, uri);
|
super(local, uri);
|
||||||
|
|
||||||
Properties props = null;
|
s3 = new AmazonS3(loadProperties());
|
||||||
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);
|
|
||||||
bucket = uri.getHost();
|
bucket = uri.getHost();
|
||||||
|
|
||||||
String p = uri.getPath();
|
String p = uri.getPath();
|
||||||
|
@ -153,6 +137,33 @@ static boolean canHandle(final URIish uri) {
|
||||||
keyPrefix = p;
|
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
|
@Override
|
||||||
public FetchConnection openFetch() throws TransportException {
|
public FetchConnection openFetch() throws TransportException {
|
||||||
final DatabaseS3 c = new DatabaseS3(bucket, keyPrefix + "/objects");
|
final DatabaseS3 c = new DatabaseS3(bucket, keyPrefix + "/objects");
|
||||||
|
|
Loading…
Reference in New Issue