From da916a33f743486e8f517f1c239af9261ce60638 Mon Sep 17 00:00:00 2001
From: Markus Alexander Kuppe
Date: Mon, 14 Apr 2014 15:14:45 +0200
Subject: [PATCH 1/2] Print raw URL of up and downloaded resources
---
.../org/kuali/maven/wagon/AbstractWagon.java | 4 +-
.../org/kuali/maven/wagon/S3Listener.java | 13 ++++++-
.../org/kuali/maven/wagon/S3Resource.java | 38 +++++++++++++++++++
.../java/org/kuali/maven/wagon/S3Wagon.java | 15 ++++++--
.../kuali/maven/wagon/TransferProgress.java | 8 ++--
5 files changed, 68 insertions(+), 10 deletions(-)
create mode 100644 src/main/java/org/kuali/maven/wagon/S3Resource.java
diff --git a/src/main/java/org/kuali/maven/wagon/AbstractWagon.java b/src/main/java/org/kuali/maven/wagon/AbstractWagon.java
index 22d587c..e10c512 100644
--- a/src/main/java/org/kuali/maven/wagon/AbstractWagon.java
+++ b/src/main/java/org/kuali/maven/wagon/AbstractWagon.java
@@ -163,7 +163,7 @@ public final void disconnect() throws ConnectionException {
}
public final void get(final String resourceName, final File destination) throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException {
- Resource resource = new Resource(resourceName);
+ S3Resource resource = new S3Resource(resourceName);
transferListeners.fireTransferInitiated(resource, TransferEvent.REQUEST_GET);
transferListeners.fireTransferStarted(resource, TransferEvent.REQUEST_GET);
@@ -225,7 +225,7 @@ public final void openConnection() throws ConnectionException, AuthenticationExc
}
protected PutFileContext getPutFileContext(File source, String destination) {
- Resource resource = new Resource(destination);
+ S3Resource resource = new S3Resource(destination);
PutFileContext context = new PutFileContext();
context.setResource(resource);
context.setProgress(new TransferProgress(resource, TransferEvent.REQUEST_PUT, transferListeners));
diff --git a/src/main/java/org/kuali/maven/wagon/S3Listener.java b/src/main/java/org/kuali/maven/wagon/S3Listener.java
index e7ad0eb..41369e9 100644
--- a/src/main/java/org/kuali/maven/wagon/S3Listener.java
+++ b/src/main/java/org/kuali/maven/wagon/S3Listener.java
@@ -22,6 +22,7 @@
import org.apache.maven.wagon.events.SessionListener;
import org.apache.maven.wagon.events.TransferEvent;
import org.apache.maven.wagon.events.TransferListener;
+import org.apache.maven.wagon.resource.Resource;
import org.kuali.common.aws.s3.SimpleFormatter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -40,7 +41,15 @@ public class S3Listener implements TransferListener, SessionListener {
public void transferCompleted(final TransferEvent transferEvent) {
TransferTracker tt = sessionTracker.getCurrentTransfer();
tt.setCompleted(System.currentTimeMillis());
- // System.out.println();
+ Resource resource = transferEvent.getResource();
+ if (resource instanceof S3Resource) {
+ final S3Resource s3resource = (S3Resource) resource;
+ if (transferEvent.getRequestType() == TransferEvent.REQUEST_PUT) {
+ log.info("Uploaded: " + s3resource.getUrl());
+ } else {
+ log.info("Downloaded: " + s3resource.getUrl());
+ }
+ }
// log(tt.toString());
}
@@ -74,7 +83,7 @@ public void transferStarted(final TransferEvent transferEvent) {
}
// System.out.print("[INFO] ");
}
-
+
protected String getURI(final TransferEvent event) {
return getNormalizedURI(event.getWagon().getRepository().getUrl() + "/" + event.getResource().getName());
}
diff --git a/src/main/java/org/kuali/maven/wagon/S3Resource.java b/src/main/java/org/kuali/maven/wagon/S3Resource.java
new file mode 100644
index 0000000..71f1602
--- /dev/null
+++ b/src/main/java/org/kuali/maven/wagon/S3Resource.java
@@ -0,0 +1,38 @@
+/**
+ * Copyright 2014 Adobe Systems Incorporated
+ *
+ * Licensed under the Educational Community License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.opensource.org/licenses/ecl2.php
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.kuali.maven.wagon;
+
+import org.apache.maven.wagon.resource.Resource;
+
+/**
+ * @author contexts) {
protected void putResource(final File source, final String destination, final TransferProgress progress) throws IOException {
// Create a new PutObjectRequest
- PutObjectRequest request = getPutObjectRequest(source, destination, progress);
+ String key = getCanonicalKey(destination);
+ PutObjectRequest request = getPutObjectRequest(source, destination, key, progress);
// Upload the file to S3, using multi-part upload for large files
S3Utils.getInstance().upload(source, request, client, transferManager);
+
+ progress.getResource().setURL(client.getResourceUrl(bucketName, key));
}
protected String getDestinationPath(final String destination) {
diff --git a/src/main/java/org/kuali/maven/wagon/TransferProgress.java b/src/main/java/org/kuali/maven/wagon/TransferProgress.java
index 70406d0..b3e8c68 100644
--- a/src/main/java/org/kuali/maven/wagon/TransferProgress.java
+++ b/src/main/java/org/kuali/maven/wagon/TransferProgress.java
@@ -15,7 +15,6 @@
*/
package org.kuali.maven.wagon;
-import org.apache.maven.wagon.resource.Resource;
/**
* A class that encapsulates the notification of the transfer listeners for
@@ -26,13 +25,13 @@
*/
class TransferProgress {
- private Resource resource;
+ private S3Resource resource;
private int requestType;
private TransferListenerSupport transferListeners;
- public TransferProgress(Resource resource, int requestType, TransferListenerSupport listeners) {
+ public TransferProgress(S3Resource resource, int requestType, TransferListenerSupport listeners) {
this.resource = resource;
this.requestType = requestType;
this.transferListeners = listeners;
@@ -42,4 +41,7 @@ protected void notify(byte[] buffer, int length) {
transferListeners.fireTransferProgress(resource, requestType, buffer, length);
}
+ public S3Resource getResource() {
+ return resource;
+ }
}
From 59d62c1cb148d51407af7aef5e0ea53813d05254 Mon Sep 17 00:00:00 2001
From: Markus Alexander Kuppe
Date: Wed, 7 May 2014 13:16:51 +0200
Subject: [PATCH 2/2] Generate Plexus DI meta-data from annotations/javadoc
tags
---
pom.xml | 33 +++++++++++++++++++
.../java/org/kuali/maven/wagon/S3Wagon.java | 5 +--
.../resources/META-INF/plexus/components.xml | 27 ---------------
3 files changed, 36 insertions(+), 29 deletions(-)
delete mode 100644 src/main/resources/META-INF/plexus/components.xml
diff --git a/pom.xml b/pom.xml
index 4cd75a2..bac0f81 100644
--- a/pom.xml
+++ b/pom.xml
@@ -84,9 +84,42 @@
+
+
+ org.codehaus.plexus
+ plexus-component-metadata
+ 1.5.5
+
+
+
+ generate-metadata
+
+
+
+
+
+ javax.inject
+ javax.inject
+ 1
+
+
+ org.codehaus.plexus
+ plexus-component-annotations
+ 1.5.5
+
+
+ org.apache.maven.plugin-tools
+ maven-plugin-annotations
+ 3.2
+
+
+ org.apache.maven
+ maven-project
+ 2.2.1
+
junit
junit
diff --git a/src/main/java/org/kuali/maven/wagon/S3Wagon.java b/src/main/java/org/kuali/maven/wagon/S3Wagon.java
index 7df64d8..eb18752 100644
--- a/src/main/java/org/kuali/maven/wagon/S3Wagon.java
+++ b/src/main/java/org/kuali/maven/wagon/S3Wagon.java
@@ -28,10 +28,12 @@
import org.apache.commons.lang.StringUtils;
import org.apache.maven.wagon.ResourceDoesNotExistException;
import org.apache.maven.wagon.TransferFailedException;
+import org.apache.maven.wagon.Wagon;
import org.apache.maven.wagon.authentication.AuthenticationInfo;
import org.apache.maven.wagon.proxy.ProxyInfo;
import org.apache.maven.wagon.repository.Repository;
import org.apache.maven.wagon.repository.RepositoryPermissions;
+import org.codehaus.plexus.component.annotations.Component;
import org.kuali.common.aws.s3.S3Utils;
import org.kuali.common.aws.s3.SimpleFormatter;
import org.kuali.common.threads.ExecutionStatistics;
@@ -78,11 +80,10 @@
* This implementation uses the username
and password
portions of the server authentication metadata for credentials.
*
*
- * @plexus.component role="org.apache.maven.wagon.Wagon" role-hint="http" instantiation-strategy="per-lookup"
- *
* @author Ben Hale
* @author Jeff Caddel
*/
+@Component( role = Wagon.class, hint = "s3", instantiationStrategy= "per-lookup")
public class S3Wagon extends AbstractWagon implements RequestFactory {
/**
diff --git a/src/main/resources/META-INF/plexus/components.xml b/src/main/resources/META-INF/plexus/components.xml
deleted file mode 100644
index aa61ceb..0000000
--- a/src/main/resources/META-INF/plexus/components.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
- org.apache.maven.wagon.Wagon
- s3
- org.kuali.maven.wagon.S3Wagon
- per-lookup
-
-
-