Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,9 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;

import org.eclipse.aether.Keys;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.artifact.Artifact;
import org.eclipse.aether.collection.CollectRequest;
Expand All @@ -50,6 +52,7 @@
@Singleton
@Named
public class DefaultRepositorySystemValidator implements RepositorySystemValidator {
private static final Object SESSION_VALIDATORS = Keys.of(DefaultRepositorySystemValidator.class, "validators");
private final List<ValidatorFactory> validatorFactories;

@Inject
Expand All @@ -65,22 +68,35 @@ private void mayThrow(List<Exception> exceptions, String message) {
}
}

@SuppressWarnings("unchecked")
private Validator newInstance(RepositorySystemSession session, ValidatorFactory factory) {
if (session.getCache() != null) {
return ((ConcurrentHashMap<Integer, Validator>)
session.getCache().computeIfAbsent(session, SESSION_VALIDATORS, ConcurrentHashMap::new))
.computeIfAbsent(System.identityHashCode(factory), key -> factory.newInstance(session));
} else {
Comment thread
cstamas marked this conversation as resolved.
return factory.newInstance(session);
}
}

@Override
public void validateVersionRequest(RepositorySystemSession session, VersionRequest request) {
ArrayList<Exception> exceptions = new ArrayList<>();
for (ValidatorFactory factory : validatorFactories) {
Validator validator = factory.newInstance(session);
try {
validator.validateArtifact(request.getArtifact());
} catch (Exception e) {
exceptions.add(e);
}
for (RemoteRepository repository : request.getRepositories()) {
Validator validator = newInstance(session, factory);
if (validator != null) {
try {
validator.validateRemoteRepository(repository);
validator.validateArtifact(request.getArtifact());
} catch (Exception e) {
exceptions.add(e);
}
for (RemoteRepository repository : request.getRepositories()) {
try {
validator.validateRemoteRepository(repository);
} catch (Exception e) {
exceptions.add(e);
}
}
}
}
mayThrow(exceptions, "Invalid Version Request: " + request);
Expand All @@ -90,18 +106,20 @@ public void validateVersionRequest(RepositorySystemSession session, VersionReque
public void validateVersionRangeRequest(RepositorySystemSession session, VersionRangeRequest request) {
ArrayList<Exception> exceptions = new ArrayList<>();
for (ValidatorFactory factory : validatorFactories) {
Validator validator = factory.newInstance(session);
try {
validator.validateArtifact(request.getArtifact());
} catch (Exception e) {
exceptions.add(e);
}
for (RemoteRepository repository : request.getRepositories()) {
Validator validator = newInstance(session, factory);
if (validator != null) {
try {
validator.validateRemoteRepository(repository);
validator.validateArtifact(request.getArtifact());
} catch (Exception e) {
exceptions.add(e);
}
for (RemoteRepository repository : request.getRepositories()) {
try {
validator.validateRemoteRepository(repository);
} catch (Exception e) {
exceptions.add(e);
}
}
}
}
mayThrow(exceptions, "Invalid Version Range Request: " + request);
Expand All @@ -111,18 +129,20 @@ public void validateVersionRangeRequest(RepositorySystemSession session, Version
public void validateArtifactDescriptorRequest(RepositorySystemSession session, ArtifactDescriptorRequest request) {
ArrayList<Exception> exceptions = new ArrayList<>();
for (ValidatorFactory factory : validatorFactories) {
Validator validator = factory.newInstance(session);
try {
validator.validateArtifact(request.getArtifact());
} catch (Exception e) {
exceptions.add(e);
}
for (RemoteRepository repository : request.getRepositories()) {
Validator validator = newInstance(session, factory);
if (validator != null) {
try {
validator.validateRemoteRepository(repository);
validator.validateArtifact(request.getArtifact());
} catch (Exception e) {
exceptions.add(e);
}
for (RemoteRepository repository : request.getRepositories()) {
try {
validator.validateRemoteRepository(repository);
} catch (Exception e) {
exceptions.add(e);
}
}
}
}
mayThrow(exceptions, "Invalid Artifact Descriptor Request: " + request);
Expand All @@ -133,19 +153,21 @@ public void validateArtifactRequests(
RepositorySystemSession session, Collection<? extends ArtifactRequest> requests) {
ArrayList<Exception> exceptions = new ArrayList<>();
for (ValidatorFactory factory : validatorFactories) {
Validator validator = factory.newInstance(session);
for (ArtifactRequest request : requests) {
try {
validator.validateArtifact(request.getArtifact());
} catch (Exception e) {
exceptions.add(e);
}
for (RemoteRepository repository : request.getRepositories()) {
Validator validator = newInstance(session, factory);
if (validator != null) {
for (ArtifactRequest request : requests) {
try {
validator.validateRemoteRepository(repository);
validator.validateArtifact(request.getArtifact());
} catch (Exception e) {
exceptions.add(e);
}
for (RemoteRepository repository : request.getRepositories()) {
try {
validator.validateRemoteRepository(repository);
} catch (Exception e) {
exceptions.add(e);
}
}
}
}
}
Expand All @@ -157,19 +179,21 @@ public void validateMetadataRequests(
RepositorySystemSession session, Collection<? extends MetadataRequest> requests) {
ArrayList<Exception> exceptions = new ArrayList<>();
for (ValidatorFactory factory : validatorFactories) {
Validator validator = factory.newInstance(session);
for (MetadataRequest request : requests) {
try {
validator.validateMetadata(request.getMetadata());
} catch (Exception e) {
exceptions.add(e);
}
try {
if (request.getRepository() != null) {
validator.validateRemoteRepository(request.getRepository());
Validator validator = newInstance(session, factory);
if (validator != null) {
for (MetadataRequest request : requests) {
try {
validator.validateMetadata(request.getMetadata());
} catch (Exception e) {
exceptions.add(e);
}
try {
if (request.getRepository() != null) {
validator.validateRemoteRepository(request.getRepository());
}
} catch (Exception e) {
exceptions.add(e);
}
} catch (Exception e) {
exceptions.add(e);
}
}
}
Expand All @@ -180,40 +204,42 @@ public void validateMetadataRequests(
public void validateCollectRequest(RepositorySystemSession session, CollectRequest request) {
ArrayList<Exception> exceptions = new ArrayList<>();
for (ValidatorFactory factory : validatorFactories) {
Validator validator = factory.newInstance(session);
if (request.getRootArtifact() != null) {
try {
validator.validateArtifact(request.getRootArtifact());
} catch (Exception e) {
exceptions.add(e);
Validator validator = newInstance(session, factory);
if (validator != null) {
if (request.getRootArtifact() != null) {
try {
validator.validateArtifact(request.getRootArtifact());
} catch (Exception e) {
exceptions.add(e);
}
}
}
if (request.getRoot() != null) {
try {
validator.validateDependency(request.getRoot());
} catch (Exception e) {
exceptions.add(e);
if (request.getRoot() != null) {
try {
validator.validateDependency(request.getRoot());
} catch (Exception e) {
exceptions.add(e);
}
}
}
for (Dependency dependency : request.getDependencies()) {
try {
validator.validateDependency(dependency);
} catch (Exception e) {
exceptions.add(e);
for (Dependency dependency : request.getDependencies()) {
try {
validator.validateDependency(dependency);
} catch (Exception e) {
exceptions.add(e);
}
}
}
for (Dependency managedDependency : request.getManagedDependencies()) {
try {
validator.validateDependency(managedDependency);
} catch (Exception e) {
exceptions.add(e);
for (Dependency managedDependency : request.getManagedDependencies()) {
try {
validator.validateManagedDependency(managedDependency);
} catch (Exception e) {
exceptions.add(e);
}
}
}
for (RemoteRepository repository : request.getRepositories()) {
try {
validator.validateRemoteRepository(repository);
} catch (Exception e) {
exceptions.add(e);
for (RemoteRepository repository : request.getRepositories()) {
try {
validator.validateRemoteRepository(repository);
} catch (Exception e) {
exceptions.add(e);
}
}
}
}
Expand All @@ -235,19 +261,21 @@ public void validateDependencyRequest(RepositorySystemSession session, Dependenc
public void validateInstallRequest(RepositorySystemSession session, InstallRequest request) {
ArrayList<Exception> exceptions = new ArrayList<>();
for (ValidatorFactory factory : validatorFactories) {
Validator validator = factory.newInstance(session);
for (Artifact artifact : request.getArtifacts()) {
try {
validator.validateArtifact(artifact);
} catch (Exception e) {
exceptions.add(e);
Validator validator = newInstance(session, factory);
if (validator != null) {
for (Artifact artifact : request.getArtifacts()) {
try {
validator.validateArtifact(artifact);
} catch (Exception e) {
exceptions.add(e);
}
}
}
for (Metadata metadata : request.getMetadata()) {
try {
validator.validateMetadata(metadata);
} catch (Exception e) {
exceptions.add(e);
for (Metadata metadata : request.getMetadata()) {
try {
validator.validateMetadata(metadata);
} catch (Exception e) {
exceptions.add(e);
}
}
}
}
Expand All @@ -258,28 +286,30 @@ public void validateInstallRequest(RepositorySystemSession session, InstallReque
public void validateDeployRequest(RepositorySystemSession session, DeployRequest request) {
ArrayList<Exception> exceptions = new ArrayList<>();
for (ValidatorFactory factory : validatorFactories) {
Validator validator = factory.newInstance(session);
for (Artifact artifact : request.getArtifacts()) {
try {
validator.validateArtifact(artifact);
} catch (Exception e) {
exceptions.add(e);
Validator validator = newInstance(session, factory);
if (validator != null) {
for (Artifact artifact : request.getArtifacts()) {
try {
validator.validateArtifact(artifact);
} catch (Exception e) {
exceptions.add(e);
}
}
for (Metadata metadata : request.getMetadata()) {
try {
validator.validateMetadata(metadata);
} catch (Exception e) {
exceptions.add(e);
}
}
}
for (Metadata metadata : request.getMetadata()) {
try {
validator.validateMetadata(metadata);
if (request.getRepository() != null) {
validator.validateRemoteRepository(request.getRepository());
}
} catch (Exception e) {
exceptions.add(e);
}
}
try {
if (request.getRepository() != null) {
validator.validateRemoteRepository(request.getRepository());
}
} catch (Exception e) {
exceptions.add(e);
}
}
mayThrow(exceptions, "Invalid Deploy Request: " + request);
}
Expand All @@ -288,12 +318,14 @@ public void validateDeployRequest(RepositorySystemSession session, DeployRequest
public void validateLocalRepositories(RepositorySystemSession session, Collection<LocalRepository> repositories) {
ArrayList<Exception> exceptions = new ArrayList<>();
for (ValidatorFactory factory : validatorFactories) {
Validator validator = factory.newInstance(session);
for (LocalRepository repository : repositories) {
try {
validator.validateLocalRepository(repository);
} catch (Exception e) {
exceptions.add(e);
Validator validator = newInstance(session, factory);
if (validator != null) {
for (LocalRepository repository : repositories) {
try {
validator.validateLocalRepository(repository);
} catch (Exception e) {
exceptions.add(e);
}
}
}
}
Expand All @@ -304,12 +336,14 @@ public void validateLocalRepositories(RepositorySystemSession session, Collectio
public void validateRemoteRepositories(RepositorySystemSession session, Collection<RemoteRepository> repositories) {
ArrayList<Exception> exceptions = new ArrayList<>();
for (ValidatorFactory factory : validatorFactories) {
Validator validator = factory.newInstance(session);
for (RemoteRepository repository : repositories) {
try {
validator.validateRemoteRepository(repository);
} catch (Exception e) {
exceptions.add(e);
Validator validator = newInstance(session, factory);
if (validator != null) {
for (RemoteRepository repository : repositories) {
try {
validator.validateRemoteRepository(repository);
} catch (Exception e) {
exceptions.add(e);
}
}
}
}
Expand Down
Loading
Loading