@SuppressWarnings("unchecked") static <T> T find(Class<T> factoryClass, String fallbackClassName) { ClassLoader classLoader = contextClassLoader(); T provider = firstByServiceLoader(factoryClass); if (provider != null) { return provider; } String factoryId = factoryClass.getName(); provider = (T) fromJDKProperties(factoryId, fallbackClassName, classLoader); if (provider != null) { return provider; } provider = (T) fromSystemProperty(factoryId, fallbackClassName, classLoader); if (provider != null) { return provider; } try { Class<T> spiClass = org.apache.karaf.specs.locator.OsgiLocator.locate(factoryClass); if (spiClass != null) { return spiClass.getConstructor().newInstance(); } } catch (Throwable t) { } if (fallbackClassName == null) { throw new WebServiceException("Provider for " + factoryId + " cannot be found", null); } return (T) newInstance(fallbackClassName, fallbackClassName, classLoader); }