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 149863 | Differences between
and this patch

Collapse All | Expand All

(-)core/framework/org/eclipse/osgi/framework/internal/core/BundleContextImpl.java (-23 / +31 lines)
Lines 92-112 Link Here
92
	protected void close() {
92
	protected void close() {
93
		valid = false; /* invalidate context */
93
		valid = false; /* invalidate context */
94
94
95
		if (serviceEvent != null) {
95
		synchronized (framework.serviceEvent) {
96
			framework.serviceEvent.removeListener(this);
96
			if (serviceEvent != null) {
97
			serviceEvent = null;
97
				framework.serviceEvent.removeListener(this);
98
		}
98
				serviceEvent = null;
99
		if (frameworkEvent != null) {
99
			}
100
			framework.frameworkEvent.removeListener(this);
100
		}
101
			frameworkEvent = null;
101
		synchronized (framework.frameworkEvent) {
102
		}
102
			if (frameworkEvent != null) {
103
		if (bundleEvent != null) {
103
				framework.frameworkEvent.removeListener(this);
104
			framework.bundleEvent.removeListener(this);
104
				frameworkEvent = null;
105
			bundleEvent = null;
105
			}
106
		}
106
		}
107
		if (bundleEventSync != null) {
107
		synchronized (framework.bundleEvent) {
108
			framework.bundleEventSync.removeListener(this);
108
			if (bundleEvent != null) {
109
			bundleEventSync = null;
109
				framework.bundleEvent.removeListener(this);
110
				bundleEvent = null;
111
			}
112
		}
113
		synchronized (framework.bundleEventSync) {
114
			if (bundleEventSync != null) {
115
				framework.bundleEventSync.removeListener(this);
116
				bundleEventSync = null;
117
			}
110
		}
118
		}
111
119
112
		/* service's registered by the bundle, if any, are unregistered. */
120
		/* service's registered by the bundle, if any, are unregistered. */
Lines 348-355 Link Here
348
			Debug.println("removeServiceListener[" + bundle + "](" + listenerName + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
356
			Debug.println("removeServiceListener[" + bundle + "](" + listenerName + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
349
		}
357
		}
350
358
351
		if (serviceEvent != null) {
359
		synchronized (framework.serviceEvent) {
352
			synchronized (framework.serviceEvent) {
360
			if (serviceEvent != null) {
353
				serviceEvent.removeListener(listener);
361
				serviceEvent.removeListener(listener);
354
			}
362
			}
355
		}
363
		}
Lines 423-436 Link Here
423
		if (listener instanceof SynchronousBundleListener) {
431
		if (listener instanceof SynchronousBundleListener) {
424
			framework.checkAdminPermission(getBundle(), AdminPermission.LISTENER);
432
			framework.checkAdminPermission(getBundle(), AdminPermission.LISTENER);
425
433
426
			if (bundleEventSync != null) {
434
			synchronized (framework.bundleEventSync) {
427
				synchronized (framework.bundleEventSync) {
435
				if (bundleEventSync != null) {
428
					bundleEventSync.removeListener(listener);
436
					bundleEventSync.removeListener(listener);
429
				}
437
				}
430
			}
438
			}
431
		} else {
439
		} else {
432
			if (bundleEvent != null) {
440
			synchronized (framework.bundleEvent) {
433
				synchronized (framework.bundleEvent) {
441
				if (bundleEvent != null) {
434
					bundleEvent.removeListener(listener);
442
					bundleEvent.removeListener(listener);
435
				}
443
				}
436
			}
444
			}
Lines 489-496 Link Here
489
			Debug.println("removeFrameworkListener[" + bundle + "](" + listenerName + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
497
			Debug.println("removeFrameworkListener[" + bundle + "](" + listenerName + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
490
		}
498
		}
491
499
492
		if (frameworkEvent != null) {
500
		synchronized (framework.frameworkEvent) {
493
			synchronized (framework.frameworkEvent) {
501
			if (frameworkEvent != null) {
494
				frameworkEvent.removeListener(listener);
502
				frameworkEvent.removeListener(listener);
495
			}
503
			}
496
		}
504
		}

Return to bug 149863