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 - - -