Example usage for org.apache.commons.lang3 ClassUtils INNER_CLASS_SEPARATOR

List of usage examples for org.apache.commons.lang3 ClassUtils INNER_CLASS_SEPARATOR

Introduction

In this page you can find the example usage for org.apache.commons.lang3 ClassUtils INNER_CLASS_SEPARATOR.

Prototype

String INNER_CLASS_SEPARATOR

To view the source code for org.apache.commons.lang3 ClassUtils INNER_CLASS_SEPARATOR.

Click Source Link

Document

The inner class separator String: "$" .

Usage

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;
}