Speed up server provider parser

This commit is contained in:
Clisprail
2014-04-27 00:47:43 +02:00
parent 318cbffbdc
commit 8341a02ae3
2 changed files with 13 additions and 11 deletions
@@ -1,16 +1,15 @@
package org.parabot.core.parsers.servers;
import java.lang.reflect.Constructor;
import java.util.ArrayList;
import org.parabot.core.Directories;
import org.parabot.core.classpath.ClassPath;
import org.parabot.core.desc.ServerDescription;
import org.parabot.environment.servers.LocalServerExecuter;
import org.parabot.environment.servers.ServerManifest;
import org.parabot.environment.servers.ServerProvider;
import org.parabot.environment.servers.loader.ServerLoader;
import java.lang.reflect.Constructor;
import java.util.ArrayList;
/**
* Parses local server providers located in the servers directory
*
@@ -53,13 +52,11 @@ public class LocalServers extends ServerParser {
// get constructor
final Constructor<?> con = serverProviderClass
.getConstructor();
final ServerProvider serverProvider = (ServerProvider) con
.newInstance();
SERVER_CACHE.put(
new ServerDescription(manifest.name(), manifest
.author(), manifest.version()),
new LocalServerExecuter(serverProvider, path,
new LocalServerExecuter(con, path,
manifest.name()));
} catch (Throwable t) {
t.printStackTrace();
@@ -1,5 +1,6 @@
package org.parabot.environment.servers;
import java.lang.reflect.Constructor;
import java.net.MalformedURLException;
import org.parabot.core.Core;
@@ -15,13 +16,13 @@ import org.parabot.core.classpath.ClassPath;
*
*/
public class LocalServerExecuter extends ServerExecuter {
private final ServerProvider serverProvider;
private final Constructor<?> serverProviderConstructor;
private ClassPath classPath;
private String serverName;
public LocalServerExecuter(ServerProvider serverProvider,
public LocalServerExecuter(Constructor<?> serverProviderConstructor,
ClassPath classPath, final String serverName) {
this.serverProvider = serverProvider;
this.serverProviderConstructor = serverProviderConstructor;
this.classPath = classPath;
this.serverName = serverName;
}
@@ -43,7 +44,11 @@ public class LocalServerExecuter extends ServerExecuter {
}
}
// finalize
super.finalize(this.serverProvider, this.serverName);
try {
super.finalize((ServerProvider) serverProviderConstructor.newInstance(), this.serverName);
} catch (Throwable t) {
t.printStackTrace();
}
}
}