public static boolean isJCacheAvailable(ClassLoader classLoader, ILogger logger) {
        ClassLoader backupClassLoader = AccessController.doPrivileged(new PrivilegedAction<ClassLoader>() {
            @Override
            public ClassLoader run() {
                return JCacheDetector.class.getClassLoader();
            }
        });
        // try the class loader that loaded Hazelcast/JCacheDetector class
        // if the thread-context class loader is too narrowly defined and doesn't contain JCache
        return isJCacheAvailableInternal(classLoader, logger) || isJCacheAvailableInternal(backupClassLoader, logger);
    }
public static boolean isJCacheAvailable ( ClassLoader classLoader , ILogger logger ) { ClassLoader backupClassLoader = AccessController . doPrivileged ( new PrivilegedAction < ClassLoader > ( ) { @ Override public ClassLoader run ( ) { return JCacheDetector . class . getClassLoader ( ) ; } } ) ; return isJCacheAvailableInternal ( classLoader , logger ) || isJCacheAvailableInternal ( backupClassLoader , logger ) ; }
@param classLoader the class loader to use, when attempting to load JCache API classes.
@param logger      if not null and a pre-v1.0.0 JCache JAR is detected on the classpath,
logs a warning against using this version.
@return {@code true} if JCache 1.0.0 is located in the classpath, otherwise {@code false}.