More artifact listener muck
git-svn-id: https://svn.apache.org/repos/asf/geronimo/gshell/trunk@721603 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/gshell-cli/src/main/java/org/apache/geronimo/gshell/cli/Main.java b/gshell-cli/src/main/java/org/apache/geronimo/gshell/cli/Main.java
index 4d0d845..01069a2 100644
--- a/gshell-cli/src/main/java/org/apache/geronimo/gshell/cli/Main.java
+++ b/gshell-cli/src/main/java/org/apache/geronimo/gshell/cli/Main.java
@@ -214,9 +214,11 @@
builder.setClassLoader(getClass().getClassLoader());
builder.setIo(io);
- // Configure the download monitor
- ArtifactResolver artifactResolver = builder.getContainer().getBean(ArtifactResolver.class);
- artifactResolver.setTransferListener(new ProgressSpinnerMonitor(io));
+ if (!io.isQuiet() && !io.isSilent()) {
+ // Configure the download monitor
+ ArtifactResolver artifactResolver = builder.getContainer().getBean(ArtifactResolver.class);
+ artifactResolver.setTransferListener(new ProgressSpinnerMonitor(io));
+ }
// --help and --version need access to the application's information, so we have to handle these options late
if (help|version) {
diff --git a/gshell-support/gshell-artifact-maven/src/main/java/org/apache/geronimo/gshell/artifact/maven/ArtifactResolverImpl.java b/gshell-support/gshell-artifact-maven/src/main/java/org/apache/geronimo/gshell/artifact/maven/ArtifactResolverImpl.java
index a4b27c0..a237e3f 100644
--- a/gshell-support/gshell-artifact-maven/src/main/java/org/apache/geronimo/gshell/artifact/maven/ArtifactResolverImpl.java
+++ b/gshell-support/gshell-artifact-maven/src/main/java/org/apache/geronimo/gshell/artifact/maven/ArtifactResolverImpl.java
@@ -53,8 +53,32 @@
public void setTransferListener(final TransferListener listener) {
assert listener != null;
-
- // TODO: Hookup adapter to wagon manager
+
+ artifactManager.setDownloadMonitor(new org.apache.maven.wagon.events.TransferListener() {
+ public void transferInitiated(final org.apache.maven.wagon.events.TransferEvent transferEvent) {
+ // ignore
+ }
+
+ public void transferStarted(final org.apache.maven.wagon.events.TransferEvent transferEvent) {
+ // TODO:
+ }
+
+ public void transferProgress(final org.apache.maven.wagon.events.TransferEvent transferEvent, final byte[] buffer, final int length) {
+ // TODO:
+ }
+
+ public void transferCompleted(final org.apache.maven.wagon.events.TransferEvent transferEvent) {
+ // TODO:
+ }
+
+ public void transferError(final org.apache.maven.wagon.events.TransferEvent transferEvent) {
+ // TODO:
+ }
+
+ public void debug(final String message) {
+ log.trace(message);
+ }
+ });
}
public Result resolve(final Request request) throws Failure {
diff --git a/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/transfer/TransferEvent.java b/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/transfer/TransferEvent.java
index addd7aa..d6bce53 100644
--- a/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/transfer/TransferEvent.java
+++ b/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/transfer/TransferEvent.java
@@ -19,6 +19,8 @@
package org.apache.geronimo.gshell.artifact.transfer;
+import java.net.URL;
+
/**
* Artifact transfer event.
*
@@ -26,5 +28,23 @@
*/
public interface TransferEvent
{
- // ???
+ enum Type {
+ UPLOAD, DOWNLOAD
+ }
+
+ Type getType();
+
+ URL getUrl();
+
+ /**
+ * The maximum length of the content.
+ */
+ long getContentLength();
+
+ /**
+ * The length of bytes received for this event.
+ */
+ long getLength();
+
+ Throwable getCause();
}
\ No newline at end of file
diff --git a/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/transfer/TransferListener.java b/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/transfer/TransferListener.java
index 76e1b0c..2239bd9 100644
--- a/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/transfer/TransferListener.java
+++ b/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/transfer/TransferListener.java
@@ -26,6 +26,8 @@
*/
public interface TransferListener
{
+ int UNKNOWN_LENGTH = -1;
+
void transferStarted(TransferEvent event);
void transferProgress(TransferEvent event);
diff --git a/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/transfer/TransferListenerSupport.java b/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/transfer/TransferListenerSupport.java
index 8b52cc7..5b83725 100644
--- a/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/transfer/TransferListenerSupport.java
+++ b/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/transfer/TransferListenerSupport.java
@@ -45,8 +45,6 @@
}
public void transferFailed(final TransferEvent event) {
- log.trace("Transfer error: {}", event);
-
- log.error("Transfer failure: {}", event);
+ log.trace("Transfer failure: {}", event);
}
}
\ No newline at end of file
diff --git a/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/transfer/monitor/ProgressSpinnerMonitor.java b/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/transfer/monitor/ProgressSpinnerMonitor.java
index 6a4b08e..dd2cd2d 100644
--- a/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/transfer/monitor/ProgressSpinnerMonitor.java
+++ b/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/transfer/monitor/ProgressSpinnerMonitor.java
@@ -21,8 +21,10 @@
import org.apache.geronimo.gshell.io.IO;
import org.apache.geronimo.gshell.artifact.transfer.TransferListenerSupport;
+import org.apache.geronimo.gshell.artifact.transfer.TransferEvent;
import java.io.IOException;
+import java.net.URL;
/**
* A download monitor providing a simple spinning progress interface.
@@ -61,39 +63,28 @@
}
}
- //
- // TODO: May actually want to use a little timmer thread to make this spin more often for better user feedback
- // that we are still working, then use the event to update the message. Or really, put the timer in
- // the spinner impl, and then just update the status message
- //
-
- /*
public void transferStarted(final TransferEvent event) {
assert event != null;
- super.transferStarted(event);
-
complete = 0;
spinner.reset();
- String type = event.getRequestType() == REQUEST_PUT ? "Uploading" : "Downloading";
- String url = event.getWagon().getRepository().getUrl();
+ String type = event.getType() == TransferEvent.Type.UPLOAD ? "Uploading" : "Downloading";
+ URL url = event.getUrl();
- String message = type + ": " + url + "/" + event.getResource().getName();
+ String message = type + ": " + url;
log.debug(message);
println(message);
}
- public void transferProgress(final TransferEvent event, final byte[] buffer, final int length) {
+ public void transferProgress(final TransferEvent event) {
assert event != null;
- super.transferProgress(event, buffer, length);
-
- long total = event.getResource().getContentLength();
- complete += length;
+ long total = event.getContentLength();
+ complete += event.getLength();
String message;
@@ -114,12 +105,11 @@
super.transferCompleted(event);
- long length = event.getResource().getContentLength();
- String type = event.getRequestType() == REQUEST_PUT ? "Uploaded" : "Downloaded";
+ long length = event.getLength();
+ String type = event.getType() == TransferEvent.Type.UPLOAD ? "Uploaded" : "Downloaded";
String bytes = length >= 1024 ? ( length / 1024 ) + "K" : length + "b";
// pad at end just incase, should really blank the reset of the line
print(type + " " + bytes + " ");
}
- */
}
\ No newline at end of file