1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.cling.invoker;
20
21 import org.apache.maven.api.services.Lookup;
22 import org.apache.maven.internal.impl.DefaultLookup;
23 import org.codehaus.plexus.PlexusContainer;
24
25 import static java.util.Objects.requireNonNull;
26
27
28
29
30 public class PlexusContainerCapsule implements ContainerCapsule {
31 private final ClassLoader previousClassLoader;
32 private final PlexusContainer plexusContainer;
33 private final Lookup lookup;
34
35 public PlexusContainerCapsule(ClassLoader previousClassLoader, PlexusContainer plexusContainer) {
36 this.previousClassLoader = requireNonNull(previousClassLoader, "previousClassLoader");
37 this.plexusContainer = requireNonNull(plexusContainer, "plexusContainer");
38 this.lookup = new DefaultLookup(plexusContainer);
39 }
40
41 @Override
42 public Lookup getLookup() {
43 return lookup;
44 }
45
46 @Override
47 public void close() {
48 try {
49 plexusContainer.dispose();
50 } finally {
51 Thread.currentThread().setContextClassLoader(previousClassLoader);
52 }
53 }
54 }