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 CpdServiceExecutor extends ServiceExecutor {
36
37 @Inject
38 public CpdServiceExecutor(ToolchainManager toolchainManager, Provider<MavenSession> sessionProvider) {
39 super(toolchainManager, sessionProvider);
40 }
41
42 public CpdResult execute(CpdRequest request) throws MavenReportException {
43
44 ClassLoader origLoader = Thread.currentThread().getContextClassLoader();
45 try {
46 Thread.currentThread().setContextClassLoader(CpdExecutor.class.getClassLoader());
47 CpdExecutor executor = new CpdExecutor(request);
48
49 String javaExecutable = getJavaExecutable(request.getJdkToolchain());
50 if (javaExecutable != null) {
51 return executor.fork(javaExecutable);
52 }
53
54 return executor.run();
55 } finally {
56 Thread.currentThread().setContextClassLoader(origLoader);
57 }
58 }
59 }