KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > eclipse > equinox > http > registry > internal > Activator


1 /*******************************************************************************
2  * Copyright (c) 2005-2007 Cognos Incorporated, IBM Corporation and others
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the terms of the Eclipse Public License v1.0
5  * which accompanies this distribution, and is available at
6  * http://www.eclipse.org/legal/epl-v10.html
7  *
8  * Contributors:
9  * Cognos Incorporated - initial API and implementation
10  * IBM Corporation - bug fixes and enhancements
11  *******************************************************************************/

12
13 package org.eclipse.equinox.http.registry.internal;
14
15 import org.eclipse.core.runtime.IExtensionRegistry;
16 import org.osgi.framework.*;
17 import org.osgi.service.packageadmin.PackageAdmin;
18 import org.osgi.util.tracker.ServiceTracker;
19 import org.osgi.util.tracker.ServiceTrackerCustomizer;
20
21 public class Activator implements BundleActivator, ServiceTrackerCustomizer {
22
23     private ServiceTracker httpServiceTracker;
24     private ServiceTracker packageAdminTracker;
25     private ServiceTracker registryTracker;
26
27     private PackageAdmin packageAdmin;
28     private IExtensionRegistry registry;
29     private BundleContext context;
30
31     public void start(BundleContext context) throws Exception JavaDoc {
32         this.context = context;
33         packageAdminTracker = new ServiceTracker(context, PackageAdmin.class.getName(), this);
34         packageAdminTracker.open();
35
36         registryTracker = new ServiceTracker(context, IExtensionRegistry.class.getName(), this);
37         registryTracker.open();
38     }
39
40     public void stop(BundleContext context) throws Exception JavaDoc {
41         packageAdminTracker.close();
42         packageAdminTracker = null;
43         registryTracker.close();
44         registryTracker = null;
45         this.context = null;
46     }
47
48     public Object JavaDoc addingService(ServiceReference reference) {
49         Object JavaDoc service = context.getService(reference);
50
51         if (service instanceof PackageAdmin && packageAdmin == null)
52             packageAdmin = (PackageAdmin) service;
53
54         if (service instanceof IExtensionRegistry && registry == null)
55             registry = (IExtensionRegistry) service;
56
57         if (packageAdmin != null && registry != null) {
58             httpServiceTracker = new HttpServiceTracker(context, packageAdmin, registry);
59             httpServiceTracker.open();
60         }
61
62         return service;
63     }
64
65     public void modifiedService(ServiceReference reference, Object JavaDoc service) {
66         // ignore
67
}
68
69     public void removedService(ServiceReference reference, Object JavaDoc service) {
70         if (service == packageAdmin)
71             packageAdmin = null;
72
73         if (service == registry)
74             registry = null;
75
76         if (packageAdmin == null || registry == null) {
77             if (httpServiceTracker != null) {
78                 httpServiceTracker.close();
79                 httpServiceTracker = null;
80             }
81         }
82         context.ungetService(reference);
83     }
84
85 }
86
Popular Tags