1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.plugins.pmd.exec;
20
21 import javax.inject.Provider;
22
23 import java.util.List;
24 import java.util.Map;
25
26 import org.apache.maven.execution.MavenSession;
27 import org.apache.maven.toolchain.Toolchain;
28 import org.apache.maven.toolchain.ToolchainManager;
29 import org.slf4j.Logger;
30 import org.slf4j.LoggerFactory;
31
32
33
34
35 abstract class ServiceExecutor {
36
37 private static final Logger LOG = LoggerFactory.getLogger(ServiceExecutor.class);
38
39 private final ToolchainManager toolchainManager;
40
41 private final Provider<MavenSession> sessionProvider;
42
43 protected ServiceExecutor(ToolchainManager toolchainManager, Provider<MavenSession> sessionProvider) {
44 this.toolchainManager = toolchainManager;
45 this.sessionProvider = sessionProvider;
46 }
47
48 protected final Toolchain getToolchain(Map<String, String> jdkToolchain) {
49 Toolchain tc = null;
50
51 if (jdkToolchain != null) {
52 List<Toolchain> tcs = toolchainManager.getToolchains(sessionProvider.get(), "jdk", jdkToolchain);
53 if (tcs != null && !tcs.isEmpty()) {
54 tc = tcs.get(0);
55 }
56 }
57
58 if (tc == null) {
59 tc = toolchainManager.getToolchainFromBuildContext("jdk", sessionProvider.get());
60 }
61
62 return tc;
63 }
64
65 protected String getJavaExecutable(Map<String, String> jdkToolchain) {
66 Toolchain tc = getToolchain(jdkToolchain);
67 if (tc != null) {
68 LOG.info("Toolchain in maven-pmd-plugin: {}", tc);
69 return tc.findTool("java");
70 }
71 return null;
72 }
73 }