diff --git a/pom.xml b/pom.xml
index 7e743c1..53271b9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,8 +13,8 @@
Standard Maven wagon support for s3:// urls
- 1.11.276
- 3.0.0
+ 1.11.762
+ 3.3.4
1.7.25
1.2.3
4.12
@@ -30,7 +30,7 @@
com.amazonaws
- aws-java-sdk
+ aws-java-sdk-s3
${amazonaws.version}
diff --git a/src/main/java/com/github/platform/team/plugin/AmazonS3Wagon.java b/src/main/java/com/github/platform/team/plugin/AmazonS3Wagon.java
index 31742be..bc15687 100644
--- a/src/main/java/com/github/platform/team/plugin/AmazonS3Wagon.java
+++ b/src/main/java/com/github/platform/team/plugin/AmazonS3Wagon.java
@@ -92,13 +92,9 @@ public AmazonS3Wagon() {
this.baseDirectory = baseDirectory;
}
- private static ObjectMetadata getObjectMetadata(AmazonS3 amazonS3, String bucketName, String baseDirectory,
- String resourceName) {
- return amazonS3.getObjectMetadata(bucketName, getKey(baseDirectory, resourceName));
- }
-
private static String getKey(String baseDirectory, String resourceName) {
- return String.format(KEY_FORMAT, baseDirectory, resourceName);
+ return String.format(KEY_FORMAT, baseDirectory, resourceName)
+ .replaceAll("/[^/]+/{1,}\\.\\./","/");
}
private static List getResourceNames(ObjectListing objectListing, Pattern pattern) {
@@ -185,7 +181,7 @@ protected void disconnectFromRepository() {
@Override
protected boolean doesRemoteResourceExist(String resourceName) {
try {
- getObjectMetadata(this.amazonS3, this.bucketName, this.baseDirectory, resourceName);
+ this.amazonS3.getObjectMetadata(this.bucketName, getKey(this.baseDirectory, resourceName));
return true;
} catch (AmazonServiceException e) {
return false;
@@ -195,7 +191,7 @@ protected boolean doesRemoteResourceExist(String resourceName) {
@Override
protected boolean isRemoteResourceNewer(String resourceName, long timestamp) throws ResourceDoesNotExistException {
try {
- Date lastModified = getObjectMetadata(this.amazonS3, this.bucketName, this.baseDirectory, resourceName)
+ Date lastModified = this.amazonS3.getObjectMetadata(this.bucketName, getKey(this.baseDirectory, resourceName))
.getLastModified();
return lastModified == null || lastModified.getTime() > timestamp;
} catch (AmazonServiceException e) {
@@ -225,7 +221,6 @@ protected List listDirectory(String directory) throws ResourceDoesNotExi
objectListing = this.amazonS3.listObjects(listObjectsRequest);
directoryContents.addAll(getResourceNames(objectListing, pattern));
}
-
return directoryContents;
} catch (AmazonServiceException e) {
throw new ResourceDoesNotExistException(String.format("'%s' does not exist", directory), e);
@@ -239,7 +234,6 @@ protected void getResource(String resourceName, File destination, TransferProgre
OutputStream out = null;
try {
S3Object s3Object = this.amazonS3.getObject(this.bucketName, getKey(this.baseDirectory, resourceName));
-
in = s3Object.getObjectContent();
out = new TransferProgressFileOutputStream(destination, transferProgress);
@@ -271,7 +265,6 @@ protected void putResource(File source, String destination, TransferProgress tra
objectMetadata.setSSEAlgorithm(ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION);
in = new TransferProgressFileInputStream(source, transferProgress);
-
this.amazonS3.putObject(new PutObjectRequest(this.bucketName, key, in, objectMetadata));
} catch (AmazonServiceException e) {
throw new TransferFailedException(String.format("Cannot write file to '%s'", destination), e);
diff --git a/src/main/java/com/github/platform/team/plugin/maven/AbstractWagon.java b/src/main/java/com/github/platform/team/plugin/maven/AbstractWagon.java
index 69525a2..3ffb50a 100644
--- a/src/main/java/com/github/platform/team/plugin/maven/AbstractWagon.java
+++ b/src/main/java/com/github/platform/team/plugin/maven/AbstractWagon.java
@@ -239,7 +239,17 @@ public final void putDirectory(File sourceDirectory, String destinationDirectory
File[] files = sourceDirectory.listFiles();
if (files != null) {
for (File f : files) {
- put(f, destinationDirectory + "/" + f.getName());
+ String name;
+ if (destinationDirectory.equals("./")) {
+ name = f.getName();
+ } else {
+ name = destinationDirectory + "/" + f.getName();
+ }
+ if (f.isFile()) {
+ put(f, name);
+ } else if (f.isDirectory()) {
+ putDirectory(f, name);
+ }
}
}
}