Fix suspicious proxy object usage (reported by new inspection IDEA-242644)

GitOrigin-RevId: 447d11436034d5208a7d2878def4a438d5c70331
This commit is contained in:
Nikita Skvortsov
2020-06-08 07:15:54 +00:00
committed by intellij-monorepo-bot
parent 2515873511
commit c950cba15c
@@ -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<TransferEvent.EventType> 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