Skip to content

Commit f5de5df

Browse files
Use AutoClosable for cleanups of PlexusContext
1 parent b37ca9e commit f5de5df

File tree

1 file changed

+22
-9
lines changed

1 file changed

+22
-9
lines changed

src/main/java/org/codehaus/plexus/testing/PlexusExtension.java

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,23 @@
6464
*/
6565
public class PlexusExtension implements BeforeEachCallback, AfterEachCallback {
6666

67+
private static class PlexusClosableWrapper implements AutoCloseable {
68+
private final PlexusContainer container;
69+
70+
PlexusClosableWrapper(PlexusContainer container) {
71+
this.container = container;
72+
}
73+
74+
@Override
75+
public void close() {
76+
container.dispose();
77+
}
78+
79+
public PlexusContainer get() {
80+
return container;
81+
}
82+
}
83+
6784
private static final ExtensionContext.Namespace PLEXUS_EXTENSION =
6885
ExtensionContext.Namespace.create("PlexusExtension");
6986

@@ -140,7 +157,7 @@ private PlexusContainer setupContainer(ExtensionContext context) {
140157
throw new IllegalArgumentException("Failed to create plexus container.", e);
141158
}
142159
testInstanceCustomizeContainer(container, context);
143-
context.getStore(PLEXUS_EXTENSION).put(PlexusContainer.class, container);
160+
context.getStore(PLEXUS_EXTENSION).put(PlexusClosableWrapper.class, new PlexusClosableWrapper(container));
144161

145162
return container;
146163
}
@@ -175,11 +192,7 @@ protected void customizeContext(Context context) {}
175192

176193
@Override
177194
public void afterEach(ExtensionContext context) throws Exception {
178-
PlexusContainer container =
179-
context.getStore(PLEXUS_EXTENSION).remove(PlexusContainer.class, PlexusContainer.class);
180-
if (container != null) {
181-
container.dispose();
182-
}
195+
// empty method, not used
183196
}
184197

185198
/**
@@ -211,12 +224,12 @@ protected void setTestBasedir(String testBasedir, ExtensionContext context) {
211224
}
212225

213226
public PlexusContainer getContainer(ExtensionContext context) {
214-
PlexusContainer container =
215-
context.getStore(PLEXUS_EXTENSION).get(PlexusContainer.class, PlexusContainer.class);
227+
PlexusClosableWrapper container =
228+
context.getStore(PLEXUS_EXTENSION).get(PlexusClosableWrapper.class, PlexusClosableWrapper.class);
216229
if (container == null) {
217230
return setupContainer(context);
218231
}
219-
return container;
232+
return container.get();
220233
}
221234

222235
protected String getCustomConfigurationName() {

0 commit comments

Comments
 (0)