|
64 | 64 | */ |
65 | 65 | public class PlexusExtension implements BeforeEachCallback, AfterEachCallback { |
66 | 66 |
|
| 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 | + |
67 | 84 | private static final ExtensionContext.Namespace PLEXUS_EXTENSION = |
68 | 85 | ExtensionContext.Namespace.create("PlexusExtension"); |
69 | 86 |
|
@@ -140,7 +157,7 @@ private PlexusContainer setupContainer(ExtensionContext context) { |
140 | 157 | throw new IllegalArgumentException("Failed to create plexus container.", e); |
141 | 158 | } |
142 | 159 | testInstanceCustomizeContainer(container, context); |
143 | | - context.getStore(PLEXUS_EXTENSION).put(PlexusContainer.class, container); |
| 160 | + context.getStore(PLEXUS_EXTENSION).put(PlexusClosableWrapper.class, new PlexusClosableWrapper(container)); |
144 | 161 |
|
145 | 162 | return container; |
146 | 163 | } |
@@ -175,11 +192,7 @@ protected void customizeContext(Context context) {} |
175 | 192 |
|
176 | 193 | @Override |
177 | 194 | 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 |
183 | 196 | } |
184 | 197 |
|
185 | 198 | /** |
@@ -211,12 +224,12 @@ protected void setTestBasedir(String testBasedir, ExtensionContext context) { |
211 | 224 | } |
212 | 225 |
|
213 | 226 | 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); |
216 | 229 | if (container == null) { |
217 | 230 | return setupContainer(context); |
218 | 231 | } |
219 | | - return container; |
| 232 | + return container.get(); |
220 | 233 | } |
221 | 234 |
|
222 | 235 | protected String getCustomConfigurationName() { |
|
0 commit comments