Speeded up script parser

This commit is contained in:
Clisprail
2014-04-27 00:40:53 +02:00
parent e061c8a3d7
commit 144a2b271b
2 changed files with 11 additions and 17 deletions
@@ -4,13 +4,10 @@ import org.parabot.core.Directories;
import org.parabot.core.classpath.ClassPath; import org.parabot.core.classpath.ClassPath;
import org.parabot.core.desc.ScriptDescription; import org.parabot.core.desc.ScriptDescription;
import org.parabot.environment.scripts.LocalScriptExecuter; import org.parabot.environment.scripts.LocalScriptExecuter;
import org.parabot.environment.scripts.Script;
import org.parabot.environment.scripts.ScriptManifest; import org.parabot.environment.scripts.ScriptManifest;
import org.parabot.environment.scripts.loader.JavaScriptLoader; import org.parabot.environment.scripts.loader.JavaScriptLoader;
import java.lang.reflect.Constructor; import java.lang.reflect.Constructor;
import java.util.ArrayList;
import java.util.List;
/** /**
* Parses locally stored java scripts * Parses locally stored java scripts
@@ -28,12 +25,6 @@ public class LocalJavaScripts extends ScriptParser {
// init the script loader // init the script loader
final JavaScriptLoader loader = new JavaScriptLoader(path); final JavaScriptLoader loader = new JavaScriptLoader(path);
// list of scripts
final List<Script> scripts = new ArrayList<Script>();
// list of descriptions
final List<ScriptDescription> descs = new ArrayList<ScriptDescription>();
// loop through all classes which extends the 'Script' class // loop through all classes which extends the 'Script' class
for (final String className : loader.getScriptClassNames()) { for (final String className : loader.getScriptClassNames()) {
try { try {
@@ -56,16 +47,13 @@ public class LocalJavaScripts extends ScriptParser {
final ScriptManifest manifest = (ScriptManifest) annotation; final ScriptManifest manifest = (ScriptManifest) annotation;
// get constructor // get constructor
final Constructor<?> con = scriptClass.getConstructor(); final Constructor<?> con = scriptClass.getConstructor();
final Script script = (Script) con.newInstance();
scripts.add(script);
final ScriptDescription desc = new ScriptDescription( final ScriptDescription desc = new ScriptDescription(
manifest.name(), manifest.author(), manifest.category() manifest.name(), manifest.author(), manifest.category()
.toString(), manifest.version(), .toString(), manifest.version(),
manifest.description(), manifest.servers(), manifest.description(), manifest.servers(),
manifest.vip() ? "yes" : "no", manifest.vip() ? "yes" : "no",
manifest.premium() ? "yes" : "no"); manifest.premium() ? "yes" : "no");
SCRIPT_CACHE.put(desc, new LocalScriptExecuter(script)); SCRIPT_CACHE.put(desc, new LocalScriptExecuter(con));
descs.add(desc);
} catch (ClassNotFoundException ignored) { } catch (ClassNotFoundException ignored) {
} catch (NoClassDefFoundError ignored) { } catch (NoClassDefFoundError ignored) {
} catch (Throwable t) { } catch (Throwable t) {
@@ -1,5 +1,7 @@
package org.parabot.environment.scripts; package org.parabot.environment.scripts;
import java.lang.reflect.Constructor;
/** /**
* *
* Loads a locally stored script * Loads a locally stored script
@@ -8,15 +10,19 @@ package org.parabot.environment.scripts;
* *
*/ */
public class LocalScriptExecuter extends ScriptExecuter { public class LocalScriptExecuter extends ScriptExecuter {
private Script script; private Constructor<?> scriptConstructor;
public LocalScriptExecuter(final Script script) { public LocalScriptExecuter(final Constructor<?> scriptConstructor) {
this.script = script; this.scriptConstructor = scriptConstructor;
} }
@Override @Override
public void run(ThreadGroup tg) { public void run(ThreadGroup tg) {
super.finalize(tg, this.script); try {
super.finalize(tg, (Script) scriptConstructor.newInstance(new Object[] { }));
} catch (Throwable t) {
t.printStackTrace();
}
} }
} }