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 eac7775ed9a7..8ae7e439cbfc 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 @@ -37,7 +37,6 @@ import org.eclipse.aether.util.repository.AuthenticationBuilder; import org.eclipse.aether.util.repository.SimpleResolutionErrorPolicy; import org.eclipse.aether.util.version.GenericVersionScheme; import org.eclipse.aether.version.*; -import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; @@ -113,11 +112,6 @@ public final class ArtifactRepositoryManager { mySessionFactory = new RepositorySystemSessionFactory(localRepositoryPath, progressConsumer, offline, retry); } - @ApiStatus.Internal - public boolean isValidArchive(File archive) { - var localRepositoryManager = mySessionFactory.sessionTemplate.getLocalRepositoryManager(); - return ((StrictLocalRepositoryManager) localRepositoryManager).isValidArchive(archive); - } private static final class RepositorySystemSessionFactory { private final RepositorySystemSession sessionTemplate; @@ -163,7 +157,7 @@ public final class ArtifactRepositoryManager { }); } // setup session here - session.setLocalRepositoryManager(new StrictLocalRepositoryManager(ourSystem.newLocalRepositoryManager(session, new LocalRepository(localRepositoryPath)))); + session.setLocalRepositoryManager(ourSystem.newLocalRepositoryManager(session, new LocalRepository(localRepositoryPath))); session.setProxySelector(ourProxySelector); session.setOffline(offline); diff --git a/aether-dependency-resolver/src/org/jetbrains/idea/maven/aether/StrictLocalRepositoryManager.java b/aether-dependency-resolver/src/org/jetbrains/idea/maven/aether/StrictLocalRepositoryManager.java deleted file mode 100644 index 59df3f98f06b..000000000000 --- a/aether-dependency-resolver/src/org/jetbrains/idea/maven/aether/StrictLocalRepositoryManager.java +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package org.jetbrains.idea.maven.aether; - -import org.eclipse.aether.RepositorySystemSession; -import org.eclipse.aether.artifact.Artifact; -import org.eclipse.aether.metadata.Metadata; -import org.eclipse.aether.repository.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.File; -import java.io.IOException; -import java.nio.file.Files; -import java.util.zip.ZipFile; - -class StrictLocalRepositoryManager implements LocalRepositoryManager { - private static final Logger LOG = LoggerFactory.getLogger(StrictLocalRepositoryManager.class); - private static final boolean STRICT_VALIDATION = "true".equals(System.getProperty("org.jetbrains.idea.maven.aether.strictValidation")); - private final LocalRepositoryManager delegate; - - StrictLocalRepositoryManager(LocalRepositoryManager delegate) { - this.delegate = delegate; - } - - @Override - public LocalArtifactResult find(RepositorySystemSession session, LocalArtifactRequest request) { - var result = delegate.find(session, request); - if (result.isAvailable() && !isValidArchive(result.getFile())) { - result.setFile(null); - result.setAvailable(false); - } - return result; - } - - boolean isValidArchive(File archive) { - if (!archive.exists()) return false; - // TODO: to be revised after IDEA-269182 is implemented - if (STRICT_VALIDATION && (archive.getName().endsWith(".jar") || archive.getName().endsWith(".zip"))) { - long entriesCount; - try (var zip = new ZipFile(archive)) { - entriesCount = zip.size(); - } - catch (IOException e) { - LOG.warn("Unable to read a number of entries in " + archive + ": " + e.getMessage()); - entriesCount = 0; - } - if (entriesCount <= 0) { - LOG.warn(archive + " is probably corrupted, deleting"); - try { - Files.deleteIfExists(archive.toPath()); - } - catch (IOException e) { - throw new RuntimeException("Unable to delete " + archive, e); - } - return false; - } - } - return true; - } - - @Override - public LocalRepository getRepository() { - return delegate.getRepository(); - } - - @Override - public String getPathForLocalArtifact(Artifact artifact) { - return delegate.getPathForLocalArtifact(artifact); - } - - @Override - public String getPathForRemoteArtifact(Artifact artifact, RemoteRepository repository, String context) { - return delegate.getPathForRemoteArtifact(artifact, repository, context); - } - - @Override - public String getPathForLocalMetadata(Metadata metadata) { - return delegate.getPathForLocalMetadata(metadata); - } - - @Override - public String getPathForRemoteMetadata(Metadata metadata, RemoteRepository repository, String context) { - return delegate.getPathForRemoteMetadata(metadata, repository, context); - } - - @Override - public void add(RepositorySystemSession session, LocalArtifactRegistration request) { - delegate.add(session, request); - } - - @Override - public LocalMetadataResult find(RepositorySystemSession session, LocalMetadataRequest request) { - return delegate.find(session, request); - } - - @Override - public void add(RepositorySystemSession session, LocalMetadataRegistration request) { - delegate.add(session, request); - } -} diff --git a/aether-dependency-resolver/testSrc/org/jetbrains/idea/maven/aether/ArtifactRepositoryManagerTest.java b/aether-dependency-resolver/testSrc/org/jetbrains/idea/maven/aether/ArtifactRepositoryManagerTest.java index 681cbf21b47b..eda2bd39e319 100644 --- a/aether-dependency-resolver/testSrc/org/jetbrains/idea/maven/aether/ArtifactRepositoryManagerTest.java +++ b/aether-dependency-resolver/testSrc/org/jetbrains/idea/maven/aether/ArtifactRepositoryManagerTest.java @@ -116,56 +116,6 @@ public class ArtifactRepositoryManagerTest extends UsefulTestCase { } } - private Path resolveSomeSingleJar() throws Exception { - myRepositoryManager.resolveDependency( - "org.jetbrains", "annotations", "20.1.0", - false, Collections.emptyList() - ); - try (var stream = Files.walk(localRepository.toPath())) { - var resolvedJars = stream.filter(file -> file.getFileName().toString().endsWith(".jar")).collect(Collectors.toList()); - assertSize(1, resolvedJars); - var resolvedJar = resolvedJars.get(0); - try (var zip = new ZipFile(resolvedJar.toFile())) { - assert zip.size() > 0; - } - return resolvedJar; - } - } - - public void testResolutionForEmptyJar() throws Exception { - var resolvedJar = resolveSomeSingleJar(); - Files.delete(resolvedJar); - Files.createFile(resolvedJar); - assert Files.size(resolvedJar) == 0; - resolveSomeSingleJar(); - } - - public void testResolutionForSymbolicLinkToEmptyJar() throws Exception { - var resolvedJar = resolveSomeSingleJar(); - Files.delete(resolvedJar); - var brokenTarget = Files.createTempFile("empty", ".jar"); - assert Files.size(brokenTarget) == 0; - Files.createSymbolicLink(resolvedJar, brokenTarget); - resolveSomeSingleJar(); - } - - public void testResolutionForMalformedJar() throws Exception { - var resolvedJar = resolveSomeSingleJar(); - Files.delete(resolvedJar); - Files.createFile(resolvedJar); - Files.writeString(resolvedJar, "malformed jar content"); - resolveSomeSingleJar(); - } - - public void testResolutionForSymbolicLinkToMalformedJar() throws Exception { - var resolvedJar = resolveSomeSingleJar(); - Files.delete(resolvedJar); - var brokenTarget = Files.createTempFile("malformed", ".jar"); - Files.writeString(brokenTarget, "malformed jar content"); - Files.createSymbolicLink(resolvedJar, brokenTarget); - resolveSomeSingleJar(); - } - private static void assertCoordinates(Artifact artifact, String groupId, String artifactId, String version) { assertEquals(groupId, artifact.getGroupId()); assertEquals(artifactId, artifact.getArtifactId());