@SuppressWarnings("unchecked") static <T extends Exception> ClassLoader contextClassLoader(ExceptionHandler<T> exceptionHandler) throws T { final SecurityManager sm = System.getSecurityManager(); if (sm == null) { try { return Thread.currentThread().getContextClassLoader(); } catch (Exception x) { throw exceptionHandler.createException(x, x.toString()); } } try { return AccessController.doPrivileged(new PrivilegedExceptionAction<ClassLoader>() { @Override public ClassLoader run() throws T { try { return Thread.currentThread().getContextClassLoader(); } catch (Exception x) { throw exceptionHandler.createException(x, x.toString()); } } }); } catch (PrivilegedActionException e) { throw (T)e.getException(); } }
static <P, T extends Exception> P firstByServiceLoader(Class<P> spiClass, Logger logger, ExceptionHandler<T> handler) throws T { logger.log(Level.FINE, "Using java.util.ServiceLoader to find {0}", spiClass.getName()); // service discovery try { ServiceLoader<P> serviceLoader = ServiceLoader.load(spiClass); for (P impl : serviceLoader) { logger.fine("ServiceProvider loading Facility used; returning object [" + impl.getClass().getName() + "]"); return impl; } } catch (Throwable t) { throw handler.createException(t, "Error while searching for service [" + spiClass.getName() + "]"); } return null; }
static <P, T extends Exception> P firstByServiceLoader(Class<P> spiClass, Logger logger, ExceptionHandler<T> handler) throws T { logger.log(Level.FINE, "Using java.util.ServiceLoader to find {0}", spiClass.getName()); // service discovery try { ServiceLoader<P> serviceLoader = ServiceLoader.load(spiClass); for (P impl : serviceLoader) { logger.fine("ServiceProvider loading Facility used; returning object [" + impl.getClass().getName() + "]"); return impl; } } catch (Throwable t) { throw handler.createException(t, "Error while searching for service [" + spiClass.getName() + "]"); } return null; }
static <P, T extends Exception> P firstByServiceLoader(Class<P> spiClass, Logger logger, ExceptionHandler<T> handler) throws T { logger.log(Level.FINE, "Using java.util.ServiceLoader to find {0}", spiClass.getName()); // service discovery try { ServiceLoader<P> serviceLoader = ServiceLoader.load(spiClass); for (P impl : serviceLoader) { logger.fine("ServiceProvider loading Facility used; returning object [" + impl.getClass().getName() + "]"); return impl; } } catch (Throwable t) { throw handler.createException(t, "Error while searching for service [" + spiClass.getName() + "]"); } return null; }
static <P, T extends Exception> P firstByServiceLoader(Class<P> spiClass, Logger logger, ExceptionHandler<T> handler) throws T { logger.log(Level.FINE, "Using java.util.ServiceLoader to find {0}", spiClass.getName()); // service discovery try { ServiceLoader<P> serviceLoader = ServiceLoader.load(spiClass); for (P impl : serviceLoader) { logger.fine("ServiceProvider loading Facility used; returning object [" + impl.getClass().getName() + "]"); return impl; } } catch (Throwable t) { throw handler.createException(t, "Error while searching for service [" + spiClass.getName() + "]"); } return null; }
@Override public ClassLoader run() throws T { try { return Thread.currentThread().getContextClassLoader(); } catch (Exception x) { throw exceptionHandler.createException(x, x.toString()); } } });
static <T extends Exception> Object newInstance(String className, String defaultImplClassName, ClassLoader classLoader, final ExceptionHandler<T> handler) throws T { try { return safeLoadClass(className, defaultImplClassName, classLoader).newInstance(); } catch (ClassNotFoundException x) { throw handler.createException(x, "Provider " + className + " not found"); } catch (Exception x) { throw handler.createException(x, "Provider " + className + " could not be instantiated: " + x); } }
static <T extends Exception> ClassLoader contextClassLoader(ExceptionHandler<T> exceptionHandler) throws T { try { return Thread.currentThread().getContextClassLoader(); } catch (Exception x) { throw exceptionHandler.createException(x, x.toString()); } }
static <T extends Exception> Object newInstance(String className, String defaultImplClassName, ClassLoader classLoader, final ExceptionHandler<T> handler) throws T { try { return safeLoadClass(className, defaultImplClassName, classLoader).newInstance(); } catch (ClassNotFoundException x) { throw handler.createException(x, "Provider " + className + " not found"); } catch (Exception x) { throw handler.createException(x, "Provider " + className + " could not be instantiated: " + x); } }
static <T extends Exception> Object newInstance(String className, String defaultImplClassName, ClassLoader classLoader, final ExceptionHandler<T> handler) throws T { try { return safeLoadClass(className, defaultImplClassName, classLoader).newInstance(); } catch (ClassNotFoundException x) { throw handler.createException(x, "Provider " + className + " not found"); } catch (Exception x) { throw handler.createException(x, "Provider " + className + " could not be instantiated: " + x); } }
static <T extends Exception> ClassLoader contextClassLoader(ExceptionHandler<T> exceptionHandler) throws T { try { return Thread.currentThread().getContextClassLoader(); } catch (Exception x) { throw exceptionHandler.createException(x, x.toString()); } }
static <T extends Exception> ClassLoader contextClassLoader(ExceptionHandler<T> exceptionHandler) throws T { try { return Thread.currentThread().getContextClassLoader(); } catch (Exception x) { throw exceptionHandler.createException(x, x.toString()); } }
static <T extends Exception> Object newInstance(String className, String defaultImplClassName, ClassLoader classLoader, final ExceptionHandler<T> handler) throws T { try { return safeLoadClass(className, defaultImplClassName, classLoader).newInstance(); } catch (ClassNotFoundException x) { throw handler.createException(x, "Provider " + className + " not found"); } catch (Exception x) { throw handler.createException(x, "Provider " + className + " could not be instantiated: " + x); } }