mirror of
https://github.com/2006-Scape/Parabot.git
synced 2026-07-06 16:50:39 +00:00
Speeded up script parser
This commit is contained in:
@@ -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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user