|
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++) { |