diff --git a/aether-dependency-resolver/src/org/jetbrains/idea/maven/aether/ArtifactRepositoryManager.java b/aether-dependency-resolver/src/org/jetbrains/idea/maven/aether/ArtifactRepositoryManager.java index 9d004fce8dbe..fcb2326c604c 100644 --- a/aether-dependency-resolver/src/org/jetbrains/idea/maven/aether/ArtifactRepositoryManager.java +++ b/aether-dependency-resolver/src/org/jetbrains/idea/maven/aether/ArtifactRepositoryManager.java @@ -39,9 +39,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; -import java.lang.reflect.InvocationHandler; -import java.lang.reflect.Method; -import java.lang.reflect.Proxy; import java.util.*; /** @@ -97,25 +94,42 @@ public class ArtifactRepositoryManager { myRemoteRepositories.addAll(remoteRepositories); final DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession(); if (progressConsumer != ProgressConsumer.DEAF) { - session.setTransferListener((TransferListener)Proxy - .newProxyInstance(session.getClass().getClassLoader(), new Class[]{TransferListener.class}, new InvocationHandler() { - private final EnumSet checkCancelEvents = EnumSet.of(TransferEvent.EventType.INITIATED, TransferEvent.EventType.STARTED, TransferEvent.EventType.PROGRESSED); + session.setTransferListener(new TransferListener() { @Override - public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { - final Object event = args[0]; - if (event instanceof TransferEvent) { - final TransferEvent.EventType type = ((TransferEvent)event).getType(); - if (checkCancelEvents.contains(type) && progressConsumer.isCanceled()) { - throw new TransferCancelledException(); - } - progressConsumer.consume(event.toString()); - //if (type != TransferEvent.EventType.PROGRESSED) { - // progressConsumer.consume(event.toString()); - //} - } - return null; + public void transferInitiated(TransferEvent event) throws TransferCancelledException { + handle(event); } - })); + + @Override + public void transferStarted(TransferEvent event) throws TransferCancelledException { + handle(event); + } + + @Override + public void transferProgressed(TransferEvent event) throws TransferCancelledException { + handle(event); + } + + @Override + public void transferCorrupted(TransferEvent event) throws TransferCancelledException { + } + + @Override + public void transferSucceeded(TransferEvent event) { + + } + + @Override + public void transferFailed(TransferEvent event) { + } + + private void handle(TransferEvent event) throws TransferCancelledException { + if (progressConsumer.isCanceled()) { + throw new TransferCancelledException(); + } + progressConsumer.consume(event.toString()); + } + }); } // setup session here