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; package org.parabot.core.parsers.servers;
import java.lang.reflect.Constructor;
import java.util.ArrayList;
import org.parabot.core.Directories; import org.parabot.core.Directories;
import org.parabot.core.classpath.ClassPath; import org.parabot.core.classpath.ClassPath;
import org.parabot.core.desc.ServerDescription; import org.parabot.core.desc.ServerDescription;
import org.parabot.environment.servers.LocalServerExecuter; import org.parabot.environment.servers.LocalServerExecuter;
import org.parabot.environment.servers.ServerManifest; import org.parabot.environment.servers.ServerManifest;
import org.parabot.environment.servers.ServerProvider;
import org.parabot.environment.servers.loader.ServerLoader; 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 * Parses local server providers located in the servers directory
* *
@@ -53,13 +52,11 @@ public class LocalServers extends ServerParser {
// get constructor // get constructor
final Constructor<?> con = serverProviderClass final Constructor<?> con = serverProviderClass
.getConstructor(); .getConstructor();
final ServerProvider serverProvider = (ServerProvider) con
.newInstance();
SERVER_CACHE.put( SERVER_CACHE.put(
new ServerDescription(manifest.name(), manifest new ServerDescription(manifest.name(), manifest
.author(), manifest.version()), .author(), manifest.version()),
new LocalServerExecuter(serverProvider, path, new LocalServerExecuter(con, path,
manifest.name())); manifest.name()));
} catch (Throwable t) { } catch (Throwable t) {
t.printStackTrace(); t.printStackTrace();
@@ -1,5 +1,6 @@
package org.parabot.environment.servers; package org.parabot.environment.servers;
import java.lang.reflect.Constructor;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import org.parabot.core.Core; import org.parabot.core.Core;
@@ -15,13 +16,13 @@ import org.parabot.core.classpath.ClassPath;
* *
*/ */
public class LocalServerExecuter extends ServerExecuter { public class LocalServerExecuter extends ServerExecuter {
private final ServerProvider serverProvider; private final Constructor<?> serverProviderConstructor;
private ClassPath classPath; private ClassPath classPath;
private String serverName; private String serverName;
public LocalServerExecuter(ServerProvider serverProvider, public LocalServerExecuter(Constructor<?> serverProviderConstructor,
ClassPath classPath, final String serverName) { ClassPath classPath, final String serverName) {
this.serverProvider = serverProvider; this.serverProviderConstructor = serverProviderConstructor;
this.classPath = classPath; this.classPath = classPath;
this.serverName = serverName; this.serverName = serverName;
} }
@@ -43,7 +44,11 @@ public class LocalServerExecuter extends ServerExecuter {
} }
} }
// finalize // finalize
super.finalize(this.serverProvider, this.serverName); try {
super.finalize((ServerProvider) serverProviderConstructor.newInstance(), this.serverName);
} catch (Throwable t) {
t.printStackTrace();
}
} }
} }