Bug 309698 Disposing parent context does not cause objects injected by a child context to be destroyed
The test below fails. static class Target { int pc = 0; int pd = 0; @Inject @Named("o") Object o; @PostConstruct void pc() { pc++; } @PreDestroy void pd() { pd++; } } public void testV() { IEclipseContext context = EclipseContextFactory.create(); IEclipseContext child = EclipseContextFactory.create(context, null); child.set("o", new Object()); Target target = (Target) ContextInjectionFactory.make(Target.class, child); assertEquals(1, target.pc); ((IDisposable) context).dispose(); assertEquals(1, target.pd); }
bundles/org.eclipse.e4.ui.workbench.swt/src/org/eclipse/e4/ui/workbench/swt/internal/E4Application.java
private String[] args;
	private ResourceHandler handler;
	private Display display = null;
	public Display getApplicationDisplay() {
		if (display == null) {
			display = Display.getDefault();
		}
		return display;
	}
	public Object start(IApplicationContext applicationContext)
			throws Exception {
		Display display = getApplicationDisplay();
		E4Workbench workbench = createE4Workbench(applicationContext);
		
		workbench.createAndRunUI(workbench.getApplication());
		
		saveModel();
		workbench.close();
		return 0;
	}
	public void saveModel() {
		try {
			handler.save();