diff --git a/org.eclipse.xtext.testing/src/org/eclipse/xtext/testing/smoketest/internal/WrappingInjectorProvider.java b/org.eclipse.xtext.testing/src/org/eclipse/xtext/testing/smoketest/internal/WrappingInjectorProvider.java index b6fddb2bf..3604f9218 100644 --- a/org.eclipse.xtext.testing/src/org/eclipse/xtext/testing/smoketest/internal/WrappingInjectorProvider.java +++ b/org.eclipse.xtext.testing/src/org/eclipse/xtext/testing/smoketest/internal/WrappingInjectorProvider.java @@ -38,7 +38,7 @@ public class WrappingInjectorProvider implements IInjectorProvider, IRegistryCon private final IInjectorProvider delegate; private final Injector injector; - private final GlobalStateMemento stateBeforeInjectorCreation; + private GlobalStateMemento stateBeforeInjectorCreation; private final GlobalStateMemento stateAfterInjectorCreation; public WrappingInjectorProvider(IInjectorProvider delegate) { @@ -53,6 +53,7 @@ public class WrappingInjectorProvider implements IInjectorProvider, IRegistryCon if (delegate instanceof IRegistryConfigurator) { ((IRegistryConfigurator) delegate).restoreRegistry(); } + stateBeforeInjectorCreation.restoreGlobalState(); } private void registerFactory(Injector injector) { @@ -94,10 +95,12 @@ public class WrappingInjectorProvider implements IInjectorProvider, IRegistryCon @Override public void restoreRegistry() { stateBeforeInjectorCreation.restoreGlobalState(); + stateBeforeInjectorCreation = null; } @Override public void setupRegistry() { + stateBeforeInjectorCreation = GlobalRegistries.makeCopyOfGlobalState(); stateAfterInjectorCreation.restoreGlobalState(); }