Search in sources :

Example 1 with ScrInfo

use of org.apache.felix.scr.ScrInfo in project felix by apache.

the class Activator method start.

public void start(final BundleContext context) throws Exception {
    this.runtimeTracker = new ServiceTracker<ServiceComponentRuntime, ServiceComponentRuntime>(context, ServiceComponentRuntime.class, new ServiceTrackerCustomizer<ServiceComponentRuntime, ServiceComponentRuntime>() {

        public ServiceComponentRuntime addingService(final ServiceReference<ServiceComponentRuntime> reference) {
            final ServiceComponentRuntime runtime = context.getService(reference);
            if (runtime != null) {
                final Dictionary<String, Object> props = new Hashtable<String, Object>();
                props.put(Constants.SERVICE_DESCRIPTION, "Apache Felix Compat ScrService");
                props.put(Constants.SERVICE_VENDOR, "The Apache Software Foundation");
                final ScrService service = new ScrServiceImpl(context, runtime);
                scrServiceRegMap.put((Long) reference.getProperty(Constants.SERVICE_ID), context.registerService(ScrService.class, service, props));
            }
            return runtime;
        }

        public void modifiedService(final ServiceReference<ServiceComponentRuntime> reference, final ServiceComponentRuntime service) {
        // nothing to do
        }

        public void removedService(final ServiceReference<ServiceComponentRuntime> reference, final ServiceComponentRuntime service) {
            final ServiceRegistration<ScrService> reg = scrServiceRegMap.remove(reference.getProperty(Constants.SERVICE_ID));
            if (reg != null) {
                reg.unregister();
            }
            context.ungetService(reference);
        }
    });
    this.runtimeTracker.open();
    this.infoTracker = new ServiceTracker<org.apache.felix.scr.info.ScrInfo, org.apache.felix.scr.info.ScrInfo>(context, org.apache.felix.scr.info.ScrInfo.class, new ServiceTrackerCustomizer<org.apache.felix.scr.info.ScrInfo, org.apache.felix.scr.info.ScrInfo>() {

        public org.apache.felix.scr.info.ScrInfo addingService(final ServiceReference<org.apache.felix.scr.info.ScrInfo> reference) {
            final org.apache.felix.scr.info.ScrInfo runtime = context.getService(reference);
            if (runtime != null) {
                final Dictionary<String, Object> props = new Hashtable<String, Object>();
                props.put(Constants.SERVICE_DESCRIPTION, "Apache Felix Compat SCR Info service");
                props.put(Constants.SERVICE_VENDOR, "The Apache Software Foundation");
                final ScrInfo info = new ScrCommand(runtime);
                scrCommandRegMap.put((Long) reference.getProperty(Constants.SERVICE_ID), context.registerService(ScrInfo.class, info, props));
            }
            return runtime;
        }

        public void modifiedService(final ServiceReference<org.apache.felix.scr.info.ScrInfo> reference, final org.apache.felix.scr.info.ScrInfo service) {
        // nothing to do
        }

        public void removedService(final ServiceReference<org.apache.felix.scr.info.ScrInfo> reference, final org.apache.felix.scr.info.ScrInfo service) {
            final ServiceRegistration<ScrInfo> reg = scrCommandRegMap.remove(reference.getProperty(Constants.SERVICE_ID));
            if (reg != null) {
                reg.unregister();
            }
            context.ungetService(reference);
        }
    });
    this.infoTracker.open();
}
Also used : ServiceTrackerCustomizer(org.osgi.util.tracker.ServiceTrackerCustomizer) Hashtable(java.util.Hashtable) ScrInfo(org.apache.felix.scr.ScrInfo) ServiceReference(org.osgi.framework.ServiceReference) ScrService(org.apache.felix.scr.ScrService) ServiceComponentRuntime(org.osgi.service.component.runtime.ServiceComponentRuntime)

Aggregations

Hashtable (java.util.Hashtable)1 ScrInfo (org.apache.felix.scr.ScrInfo)1 ScrService (org.apache.felix.scr.ScrService)1 ServiceReference (org.osgi.framework.ServiceReference)1 ServiceComponentRuntime (org.osgi.service.component.runtime.ServiceComponentRuntime)1 ServiceTrackerCustomizer (org.osgi.util.tracker.ServiceTrackerCustomizer)1