|  | 
| 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