public void reload() { ServiceLoader<S> serviceLoaderTmp = load(service, loader); this.serviceClassNames = serviceLoaderTmp.serviceClassNames; }
public static <S> ServiceLoader<S> load(Class<S> service) { return load(service, Thread.currentThread().getContextClassLoader()); }
public static synchronized Platform initInstance(ClassLoader platformClassLoader) { if (instance != null) throw new IllegalStateException("Platform already loaded"); if (platformClassLoader == null) platformClassLoader = Thread.currentThread().getContextClassLoader(); ServiceLoader<Platform> platformLoader = ServiceLoader.load(Platform.class, platformClassLoader); Iterator<Platform> platforms = null; try { platforms = platformLoader.iterator(); if (platforms.hasNext()) instance = platforms.next(); if (platforms.hasNext()) throw new PlatformConfigurationError("Multiple Platform services: " + instance + " / " + platforms.next()); } catch (PlatformConfigurationError e) { throw e; } catch (Throwable t) { throw new PlatformConfigurationError("Could not load Platform service", t); } return instance; }
public static Logger getLogger(String name, LoggingFormatter formatter) { String loggerImplClass = System.getProperty(LOGGER_IMPL_SYSTEM_PROPERTY); if (loggerImplClass != null) { try { Class<? extends Logger> clazz = TypeUtil.forName(loggerImplClass, Logger.class); Constructor<? extends Logger> constructor = clazz.getConstructor(String.class, LoggingFormatter.class); return constructor.newInstance(name, formatter); } catch (Exception e) { throw new RuntimeException( "Could not create instance of: " + loggerImplClass + " (" + LOGGER_IMPL_SYSTEM_PROPERTY + " system property)", e); } } ServiceLoader<Logger> loader = ServiceLoader.load(Logger.class); loader.setConstructorParameters(new Class<?>[]{String.class, LoggingFormatter.class}, new Object[]{name, formatter}); for (Logger logger : loader) return logger; return log4jAvailable ? new Log4jLogger(name, formatter) : new JdkLogger(name, formatter); }