-
- private <T> T getOSGiService(final Class<T> serviceInterface) {
- try {
- ServiceReference<T> serviceReference = bundleContext.getServiceReference(serviceInterface);
- if (serviceReference == null) {
- LOG.warn("{} service reference not found", serviceInterface.getSimpleName());
- return null;
- }
-
- T service = bundleContext.getService(serviceReference);
- if (service == null) {
- // This could happen on shutdown if the service was already unregistered so we log as debug.
- LOG.debug("{} service instance was not found", serviceInterface.getSimpleName());
- }
-
- return service;
- } catch (final IllegalStateException e) {
- // This is thrown if the BundleContext is no longer valid which is possible on shutdown so we
- // log as debug.
- LOG.debug("Error obtaining OSGi service {}", serviceInterface.getSimpleName(), e);
- }
-
- return null;
- }