Fixup 28ffaea Send transfer events to the client for better display #284

This commit is contained in:
Peter Palaga
2021-01-08 22:00:56 +01:00
parent 3beb854cc9
commit 3eb9d8d41b
6 changed files with 80 additions and 46 deletions

View File

@@ -1302,14 +1302,14 @@ public class DaemonMavenCli {
// If we're logging to a file then we don't want the console transfer listener as it will spew
// download progress all over the place
//
return getDaemonTransferListener();
return getConsoleTransferListener();
} else {
return getBatchTransferListener();
}
}
protected TransferListener getDaemonTransferListener() {
return new DaemonMavenTransferListener(buildEventListener);
protected TransferListener getConsoleTransferListener() {
return new DaemonMavenTransferListener(buildEventListener, new Slf4jMavenTransferListener());
}
protected TransferListener getBatchTransferListener() {

View File

@@ -26,6 +26,8 @@ import org.apache.maven.execution.MavenSession;
import org.apache.maven.plugin.MojoExecution;
import org.apache.maven.project.MavenProject;
import org.eclipse.aether.transfer.TransferEvent;
import org.eclipse.aether.transfer.TransferEvent.EventType;
import org.eclipse.aether.transfer.TransferEvent.RequestType;
import org.mvndaemon.mvnd.builder.DependencyGraph;
import org.mvndaemon.mvnd.common.Message;
import org.mvndaemon.mvnd.common.Message.BuildException;
@@ -114,37 +116,50 @@ public class ClientDispatcher extends BuildEventListener {
}
public void transfer(String projectId, TransferEvent e) {
int event;
final int event;
switch (e.getType()) {
case INITIATED:
event = Message.TRANSFER_INITIATED;
break;
case STARTED:
event = Message.TRANSFER_STARTED;
break;
case PROGRESSED:
event = Message.TRANSFER_PROGRESSED;
break;
case CORRUPTED:
event = Message.TRANSFER_CORRUPTED;
break;
case SUCCEEDED:
event = Message.TRANSFER_SUCCEEDED;
break;
case FAILED:
event = Message.TRANSFER_FAILED;
break;
default:
throw new IllegalStateException();
case INITIATED:
event = Message.TRANSFER_INITIATED;
break;
case STARTED:
event = Message.TRANSFER_STARTED;
break;
case PROGRESSED:
event = Message.TRANSFER_PROGRESSED;
break;
case CORRUPTED:
event = Message.TRANSFER_CORRUPTED;
break;
case SUCCEEDED:
event = Message.TRANSFER_SUCCEEDED;
break;
case FAILED:
event = Message.TRANSFER_FAILED;
break;
default:
throw new IllegalStateException("Unexpected " + EventType.class.getSimpleName() + ": " + e.getType());
}
final int requestType;
switch (e.getRequestType()) {
case GET:
requestType = Message.TransferEvent.GET;
break;
case GET_EXISTENCE:
requestType = Message.TransferEvent.GET_EXISTENCE;
break;
case PUT:
requestType = Message.TransferEvent.PUT;
break;
default:
throw new IllegalStateException("Unexpected " + RequestType.class.getSimpleName() + ": " + e.getRequestType());
}
int request = e.getRequestType().ordinal();
String repositoryId = e.getResource().getRepositoryId();
String repositoryUrl = e.getResource().getRepositoryUrl();
String resourceName = e.getResource().getResourceName();
long contentLength = e.getResource().getContentLength();
long transferredBytes = e.getTransferredBytes();
String exception = e.getException() != null ? e.getException().toString() : null;
queue.add(Message.transfer(projectId, event, request, repositoryId, repositoryUrl, resourceName,
queue.add(Message.transfer(projectId, event, requestType, repositoryId, repositoryUrl, resourceName,
contentLength, transferredBytes, exception));
}

View File

@@ -24,38 +24,46 @@ import org.mvndaemon.mvnd.logging.smart.ProjectBuildLogAppender;
public class DaemonMavenTransferListener implements TransferListener {
private final BuildEventListener dispatcher;
private final TransferListener delegate;
public DaemonMavenTransferListener(BuildEventListener dispatcher) {
public DaemonMavenTransferListener(BuildEventListener dispatcher, TransferListener delegate) {
this.dispatcher = dispatcher;
this.delegate = delegate;
}
@Override
public void transferInitiated(TransferEvent event) throws TransferCancelledException {
dispatcher.transfer(ProjectBuildLogAppender.getProjectId(), event);
delegate.transferInitiated(event);
}
@Override
public void transferStarted(TransferEvent event) throws TransferCancelledException {
dispatcher.transfer(ProjectBuildLogAppender.getProjectId(), event);
delegate.transferStarted(event);
}
@Override
public void transferProgressed(TransferEvent event) throws TransferCancelledException {
dispatcher.transfer(ProjectBuildLogAppender.getProjectId(), event);
delegate.transferProgressed(event);
}
@Override
public void transferCorrupted(TransferEvent event) throws TransferCancelledException {
dispatcher.transfer(ProjectBuildLogAppender.getProjectId(), event);
delegate.transferCorrupted(event);
}
@Override
public void transferSucceeded(TransferEvent event) {
dispatcher.transfer(ProjectBuildLogAppender.getProjectId(), event);
delegate.transferSucceeded(event);
}
@Override
public void transferFailed(TransferEvent event) {
dispatcher.transfer(ProjectBuildLogAppender.getProjectId(), event);
delegate.transferFailed(event);
}
}