1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.shared.jar.identification.exposers;
20
21 import javax.inject.Inject;
22 import javax.inject.Named;
23 import javax.inject.Singleton;
24
25 import java.util.ArrayList;
26 import java.util.List;
27
28 import org.apache.maven.artifact.Artifact;
29 import org.apache.maven.shared.jar.JarAnalyzer;
30 import org.apache.maven.shared.jar.identification.JarIdentification;
31 import org.apache.maven.shared.jar.identification.JarIdentificationExposer;
32 import org.apache.maven.shared.jar.identification.hash.JarHashAnalyzer;
33 import org.apache.maven.shared.jar.identification.repository.RepositoryHashSearch;
34
35 import static java.util.Objects.requireNonNull;
36
37
38
39
40
41 @Singleton
42 @Named("repositorySearch")
43 public class RepositorySearchExposer implements JarIdentificationExposer {
44
45
46
47
48
49 private final RepositoryHashSearch repositoryHashSearch;
50
51
52
53
54 private final JarHashAnalyzer fileHashAnalyzer;
55
56
57
58
59 private final JarHashAnalyzer bytecodeHashAnalyzer;
60
61 @Inject
62 public RepositorySearchExposer(
63 RepositoryHashSearch repositoryHashSearch,
64 @Named("file") JarHashAnalyzer fileHashAnalyzer,
65 @Named("bytecode") JarHashAnalyzer bytecodeHashAnalyzer) {
66 this.repositoryHashSearch = requireNonNull(repositoryHashSearch);
67 this.fileHashAnalyzer = requireNonNull(fileHashAnalyzer);
68 this.bytecodeHashAnalyzer = requireNonNull(bytecodeHashAnalyzer);
69 }
70
71 @Override
72 public void expose(JarIdentification identification, JarAnalyzer jarAnalyzer) {
73 List<Artifact> repohits = new ArrayList<>();
74
75 String hash = fileHashAnalyzer.computeHash(jarAnalyzer);
76 if (hash != null) {
77 repohits.addAll(repositoryHashSearch.searchFileHash(hash));
78 }
79
80 String bytecodehash = bytecodeHashAnalyzer.computeHash(jarAnalyzer);
81 if (bytecodehash != null) {
82 repohits.addAll(repositoryHashSearch.searchBytecodeHash(bytecodehash));
83 }
84
85
86 for (Artifact artifact : repohits) {
87 identification.addAndSetGroupId(artifact.getGroupId());
88 identification.addAndSetArtifactId(artifact.getArtifactId());
89 identification.addAndSetVersion(artifact.getVersion());
90 }
91 }
92 }