Bundle-Name: MyDebugger
Bundle-Version: 1.0.0
Debug-Provider: org.example.mydebugger.provider.MyDebuggerProvider
package org.example.mydebugger.provider;
import org.osgi.service.log.LogService;
import org.osgi.util.tracker.ServiceTracker;
import org.osgi.util.tracker.ServiceTrackerCustomizer;
import org.osgi.framework.BundleContext;
public class MyDebuggerProvider implements DebugProvider {
private LogService logService;
public MyDebuggerProvider(BundleContext context) {
ServiceTracker<LogService, LogService> logServiceTracker = new ServiceTracker<>(context, LogService.class,
new ServiceTrackerCustomizer<LogService, LogService>() {
@Override
public LogService addingService(ServiceReference<LogService> reference) {
logService = context.getService(reference);
return logService;
}
@Override
public void modifiedService(ServiceReference<LogService> reference, LogService service) {
}
@Override
public void removedService(ServiceReference<LogService> reference, LogService service) {
logService = null;
}
});
logServiceTracker.open();
}
@Override
public void debug(String message) {
logService.log(LogService.LOG_DEBUG, message);
}
}
import org.example.mydebugger.provider.MyDebuggerProvider;
import org.osgi.framework.BundleContext;
import org.osgi.framework.FrameworkUtil;
import org.osgi.framework.ServiceReference;
public class MyApp {
public static void main(String[] args) {
BundleContext context = FrameworkUtil.getBundle(MyApp.class).getBundleContext();
ServiceReference<DebugProvider> providerRef = context.getServiceReference(DebugProvider.class);
DebugProvider provider = context.getService(providerRef);
provider.debug("Debugging message");
}
}