/** * @param name Class name. * @param resolve Resolve class. * @return Class. * @throws ClassNotFoundException If failed. */ private Class<?> loadClassExplicitly(String name, boolean resolve) throws ClassNotFoundException { synchronized (getClassLoadingLock(name)) { // First, check if the class has already been loaded Class c = findLoadedClass(name); if (c == null) c = findClass(name); if (resolve) resolveClass(c); return c; } }
/** * Load a class replacing it with our own implementation. * * @param originalName Name. * @param replaceName Replacement. * @return Class. */ private Class<?> loadReplace(final String originalName, final String replaceName) { synchronized (getClassLoadingLock(originalName)) { // First, check if the class has already been loaded Class c = findLoadedClass(originalName); if (c != null) return c; byte[] bytes = bytesCache.get(originalName); if (bytes == null) { InputStream in = helper.loadClassBytes(this, replaceName); if (in == null) throw new IgniteException("Failed to replace class [originalName=" + originalName + ", replaceName=" + replaceName + ']'); bytes = helper.loadReplace(in, originalName, replaceName); bytesCache.put(originalName, bytes); } return defineClass(originalName, bytes, 0, bytes.length); } }
/** * @param name Class name. * @param resolve Resolve class. * @return Class. * @throws ClassNotFoundException If failed. */ private Class<?> loadClassExplicitly(String name, boolean resolve) throws ClassNotFoundException { synchronized (getClassLoadingLock(name)) { // First, check if the class has already been loaded Class c = findLoadedClass(name); if (c == null) c = findClass(name); if (resolve) resolveClass(c); return c; } }
/** * Load a class replacing it with our own implementation. * * @param originalName Name. * @param replaceName Replacement. * @return Class. */ private Class<?> loadReplace(final String originalName, final String replaceName) { synchronized (getClassLoadingLock(originalName)) { // First, check if the class has already been loaded Class c = findLoadedClass(originalName); if (c != null) return c; byte[] bytes = bytesCache.get(originalName); if (bytes == null) { InputStream in = helper.loadClassBytes(this, replaceName); if (in == null) throw new IgniteException("Failed to replace class [originalName=" + originalName + ", replaceName=" + replaceName + ']'); bytes = helper.loadReplace(in, originalName, replaceName); bytesCache.put(originalName, bytes); } return defineClass(originalName, bytes, 0, bytes.length); } }