List of usage examples for org.apache.commons.lang3 ClassUtils INNER_CLASS_SEPARATOR
String INNER_CLASS_SEPARATOR
To view the source code for org.apache.commons.lang3 ClassUtils INNER_CLASS_SEPARATOR.
Click Source Link
From source file:lineage2.gameserver.scripts.Scripts.java
/** * Method load.// w w w . ja va 2 s.com */ private void load() { _log.info("Scripts: Loading..."); List<Class<?>> classes = new ArrayList<>(); boolean result = false; File f = new File("../libs/lineage2-scripts.jar"); if (f.exists()) { JarInputStream stream = null; try { stream = new JarInputStream(new FileInputStream(f)); JarEntry entry = null; while ((entry = stream.getNextJarEntry()) != null) { if (entry.getName().contains(ClassUtils.INNER_CLASS_SEPARATOR) || !entry.getName().endsWith(".class")) { continue; } String name = entry.getName().replace(".class", "").replace("/", "."); Class<?> clazz = Class.forName(name); if (Modifier.isAbstract(clazz.getModifiers())) { continue; } classes.add(clazz); } result = true; } catch (Exception e) { _log.error("Fail to load scripts.jar!", e); classes.clear(); } finally { IOUtils.closeQuietly(stream); } } if (!result) { result = load(classes, ""); } if (!result) { _log.error("Scripts: Failed loading scripts!"); Runtime.getRuntime().exit(0); return; } _log.info("Scripts: Loaded " + classes.size() + " classes."); Class<?> clazz; for (int i = 0; i < classes.size(); i++) { clazz = classes.get(i); _classes.put(clazz.getName(), clazz); } }
From source file:lineage2.gameserver.scripts.Scripts.java
/** * Method load./*from w w w .j a v a 2 s. c om*/ * @param classes List<Class<?>> * @param target String * @return boolean */ private boolean load(List<Class<?>> classes, String target) { Collection<File> scriptFiles = Collections.emptyList(); File file = new File(Config.DATAPACK_ROOT, "data/scripts/" + target.replace(".", "/") + ".java"); if (file.isFile()) { scriptFiles = new ArrayList<>(1); scriptFiles.add(file); } else { file = new File(Config.DATAPACK_ROOT, "data/scripts/" + target); if (file.isDirectory()) { scriptFiles = FileUtils.listFiles(file, FileFilterUtils.suffixFileFilter(".java"), FileFilterUtils.directoryFileFilter()); } } if (scriptFiles.isEmpty()) { return false; } Class<?> clazz; boolean success = compiler.compile(scriptFiles); if (success) { MemoryClassLoader classLoader = compiler.getClassLoader(); for (String name : classLoader.getLoadedClasses()) { if (name.contains(ClassUtils.INNER_CLASS_SEPARATOR)) { continue; } try { clazz = classLoader.loadClass(name); if (Modifier.isAbstract(clazz.getModifiers())) { continue; } classes.add(clazz); } catch (ClassNotFoundException e) { success = false; _log.error("Scripts: Can't load script class: " + name, e); } } classLoader.clear(); } return success; }