/** * 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); } }
/** * 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); } }