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.Inject;
22 import javax.inject.Named;
23 import javax.inject.Provider;
24 import javax.inject.Singleton;
25
26 import org.apache.maven.execution.MavenSession;
27 import org.apache.maven.reporting.MavenReportException;
28 import org.apache.maven.toolchain.ToolchainManager;
29
30
31
32
33 @Named
34 @Singleton
35 public class PmdServiceExecutor extends ServiceExecutor {
36
37 @Inject
38 public PmdServiceExecutor(ToolchainManager toolchainManager, Provider<MavenSession> sessionProvider) {
39 super(toolchainManager, sessionProvider);
40 }
41
42 public PmdResult execute(PmdRequest request) throws MavenReportException {
43
44
45 ClassLoader origLoader = Thread.currentThread().getContextClassLoader();
46 try {
47 Thread.currentThread().setContextClassLoader(PmdExecutor.class.getClassLoader());
48 PmdExecutor executor = new PmdExecutor(request);
49
50 String javaExecutable = getJavaExecutable(request.getJdkToolchain());
51 if (javaExecutable != null) {
52 return executor.fork(javaExecutable);
53 }
54 return executor.run();
55 } finally {
56 Thread.currentThread().setContextClassLoader(origLoader);
57 }
58 }
59 }