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();
}
Aggregations