/** * Gets all direct marshallable classes. * First classes will be classes from {@code classesOrder} with same order * as ordered values. Other classes will be at the end and ordered by name * (with package prefix). * That orders need for saving {@code directType} value. * * @return Classes. * @throws Exception In case of error. */ private Collection<Class<? extends Message>> classes() throws Exception { Collection<Class<? extends Message>> col = new TreeSet<>( new Comparator<Class<? extends Message>>() { @Override public int compare(Class<? extends Message> c1, Class<? extends Message> c2) { return c1.getName().compareTo(c2.getName()); } }); ClassLoader ldr = getClass().getClassLoader(); for (URL url : IgniteUtils.classLoaderUrls(ldr)) { File file = new File(url.toURI()); int prefixLen = file.getPath().length() + 1; processFile(file, ldr, prefixLen, col); } return col; }
URL[] urls = IgniteUtils.classLoaderUrls(ldr);
/** * Cleanup class loaders resource. * * @param clsLdr Released class loader. * @param log Logger. */ static void cleanupUnit(ClassLoader clsLdr, IgniteLogger log) { assert clsLdr != null; assert log != null; assert clsLdr instanceof URLClassLoader; URLClassLoader clsLdr0 = (URLClassLoader)clsLdr; U.close(clsLdr0, log); try { URL url = IgniteUtils.classLoaderUrls(clsLdr)[0]; File dir = new File(url.toURI()); U.delete(dir); if (dir.getName().startsWith("dirzip_")) { File jarFile = new File(dir.getParentFile(), dir.getName().substring(7)); U.delete(jarFile); } } catch (Exception e) { U.error(log, "Failed to cleanup unit [clsLdr=" + clsLdr + ']', e); } }
URL[] urls = IgniteUtils.classLoaderUrls(ldr);