1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.internal.aether;
20
21 import org.eclipse.aether.artifact.Artifact;
22 import org.eclipse.aether.graph.Dependency;
23 import org.eclipse.aether.metadata.Metadata;
24 import org.eclipse.aether.repository.LocalRepository;
25 import org.eclipse.aether.spi.validator.Validator;
26 import org.eclipse.aether.util.PathUtils;
27
28
29
30
31
32
33
34
35
36 public class MavenValidator implements Validator {
37 private final boolean validatePathComponents;
38
39 public MavenValidator(boolean validatePathComponents) {
40 this.validatePathComponents = validatePathComponents;
41 }
42
43 protected boolean containsPlaceholder(String value) {
44 return value != null && value.contains("${");
45 }
46
47 @Override
48 public void validateArtifact(Artifact artifact) throws IllegalArgumentException {
49 if (containsPlaceholder(artifact.getGroupId())
50 || containsPlaceholder(artifact.getArtifactId())
51 || containsPlaceholder(artifact.getVersion())
52 || containsPlaceholder(artifact.getClassifier())
53 || containsPlaceholder(artifact.getExtension())) {
54 throw new IllegalArgumentException("Not fully interpolated artifact " + artifact);
55 }
56 if (validatePathComponents) {
57 PathUtils.validateArtifactComponents(artifact);
58 }
59 }
60
61 @Override
62 public void validateMetadata(Metadata metadata) throws IllegalArgumentException {
63 if (containsPlaceholder(metadata.getGroupId())
64 || containsPlaceholder(metadata.getArtifactId())
65 || containsPlaceholder(metadata.getVersion())
66 || containsPlaceholder(metadata.getType())) {
67 throw new IllegalArgumentException("Not fully interpolated metadata " + metadata);
68 }
69 if (validatePathComponents) {
70 PathUtils.validateMetadataComponents(metadata);
71 }
72 }
73
74 @Override
75 public void validateDependency(Dependency dependency) throws IllegalArgumentException {
76 Artifact artifact = dependency.getArtifact();
77 if (containsPlaceholder(artifact.getGroupId())
78 || containsPlaceholder(artifact.getArtifactId())
79 || containsPlaceholder(artifact.getVersion())
80 || containsPlaceholder(artifact.getClassifier())
81 || containsPlaceholder(artifact.getExtension())
82 || containsPlaceholder(dependency.getScope())
83 || dependency.getExclusions().stream()
84 .anyMatch(e -> containsPlaceholder(e.getGroupId())
85 || containsPlaceholder(e.getArtifactId())
86 || containsPlaceholder(e.getClassifier())
87 || containsPlaceholder(e.getExtension()))) {
88 throw new IllegalArgumentException("Not fully interpolated dependency " + dependency);
89 }
90 if (validatePathComponents) {
91 PathUtils.validateArtifactComponents(artifact);
92 }
93 }
94
95 @Override
96 public void validateLocalRepository(LocalRepository localRepository) throws IllegalArgumentException {
97 if (containsPlaceholder(localRepository.getBasePath().toString())
98 || containsPlaceholder(localRepository.getContentType())
99 || containsPlaceholder(localRepository.getId())) {
100 throw new IllegalArgumentException("Not fully interpolated local repository " + localRepository);
101 }
102 }
103 }