Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 308194
Collapse All | Expand All

(-)src/org/eclipse/e4/core/internal/contexts/ContextObjectSupplier.java (-9 / +13 lines)
Lines 28-43 Link Here
28
		final private String[] keys;
28
		final private String[] keys;
29
		final private IInjector injector;
29
		final private IInjector injector;
30
		final private IRequestor requestor;
30
		final private IRequestor requestor;
31
		final private AbstractObjectSupplier supplier;
32
		final private IEclipseContext context;
31
		final private IEclipseContext context;
33
32
34
		public ContextInjectionListener(IEclipseContext context, Object[] result, String[] keys,
33
		public ContextInjectionListener(IEclipseContext context, Object[] result, String[] keys,
35
				IInjector injector, IRequestor requestor, AbstractObjectSupplier supplier) {
34
				IInjector injector, IRequestor requestor) {
36
			this.result = result;
35
			this.result = result;
37
			this.keys = keys;
36
			this.keys = keys;
38
			this.injector = injector;
37
			this.injector = injector;
39
			this.requestor = requestor;
38
			this.requestor = requestor;
40
			this.supplier = supplier;
41
			this.context = context;
39
			this.context = context;
42
		}
40
		}
43
41
Lines 53-66 Link Here
53
						result[i] = IInjector.NOT_A_VALUE; // TBD make sure this still creates
51
						result[i] = IInjector.NOT_A_VALUE; // TBD make sure this still creates
54
															// dependency on the key
52
															// dependency on the key
55
				}
53
				}
56
			} else if (event.getEventType() == ContextChangeEvent.DISPOSE) {
54
				return true;
57
				injector.disposed(supplier);
55
			}
56
57
			IEclipseContext originatingContext = event.getContext();
58
			ContextObjectSupplier originatingSupplier = getObjectSupplier(originatingContext, injector);
59
			if (event.getEventType() == ContextChangeEvent.DISPOSE) {
60
				injector.disposed(originatingSupplier);
58
				return false;
61
				return false;
59
			} else if (event.getEventType() == ContextChangeEvent.UNINJECTED) {
62
			} else if (event.getEventType() == ContextChangeEvent.UNINJECTED) {
60
				injector.uninject(event.getArguments()[0], supplier);
63
				injector.uninject(event.getArguments()[0], originatingSupplier);
61
				return false;
64
				return false;
62
			} else
65
			} else {
63
				injector.update(new IRequestor[] { requestor }, supplier);
66
				injector.update(new IRequestor[] { requestor }, originatingSupplier);
67
			}
64
			return true;
68
			return true;
65
		}
69
		}
66
70
Lines 150-156 Link Here
150
154
151
		if (requestor != null && requestor.shouldTrack()) { // only track if requested
155
		if (requestor != null && requestor.shouldTrack()) { // only track if requested
152
			IRunAndTrack trackable = new ContextInjectionListener(context, result, keys, injector,
156
			IRunAndTrack trackable = new ContextInjectionListener(context, result, keys, injector,
153
					requestor, this);
157
					requestor);
154
			context.runAndTrack(trackable, null);
158
			context.runAndTrack(trackable, null);
155
		} else {
159
		} else {
156
			for (int i = 0; i < descriptors.length; i++) {
160
			for (int i = 0; i < descriptors.length; i++) {

Return to bug 308194