From 40a01de73960d93a5a09be0927981cba8ec921db Mon Sep 17 00:00:00 2001 From: Adam Date: Sat, 2 Apr 2016 19:27:20 -0400 Subject: [PATCH] Client loader, pull from the repo. --- .../net/runelite/client/ClientLoader.java | 55 +++++++++++++++++++ .../net/runelite/client/ui/ClientPanel.java | 28 ++-------- 2 files changed, 59 insertions(+), 24 deletions(-) create mode 100644 src/main/java/net/runelite/client/ClientLoader.java diff --git a/src/main/java/net/runelite/client/ClientLoader.java b/src/main/java/net/runelite/client/ClientLoader.java new file mode 100644 index 0000000000..1ec22dcd36 --- /dev/null +++ b/src/main/java/net/runelite/client/ClientLoader.java @@ -0,0 +1,55 @@ +package net.runelite.client; + +import com.google.gson.Gson; +import java.applet.Applet; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLClassLoader; +import java.util.List; +import net.runelite.launcher.ArtifactResolver; +import net.runelite.launcher.Launcher; +import org.eclipse.aether.artifact.Artifact; +import org.eclipse.aether.artifact.DefaultArtifact; +import org.eclipse.aether.resolution.ArtifactResult; +import org.eclipse.aether.resolution.DependencyResolutionException; + +public class ClientLoader +{ + private static final String CLIENT_ARTIFACT_URL = "http://192.168.1.2/rs/client.json"; + + public Applet load() throws MalformedURLException, ClassNotFoundException, IOException, InstantiationException, IllegalAccessException, DependencyResolutionException + { + ConfigLoader config = new ConfigLoader(); + + config.fetch(); + + ArtifactResolver resolver = new ArtifactResolver(Launcher.REPO_DIR); + List results = resolver.resolveArtifacts(getClientArtifact()); + File client = results.get(0).getArtifact().getFile(); + + String initialClass = config.getProperty(ConfigLoader.INITIAL_CLASS).replace(".class", ""); + + URLClassLoader loader = new URLClassLoader(new URL[]{ client.toURI().toURL() }, this.getClass().getClassLoader()); + Class clientClass = loader.loadClass(initialClass); + + Applet rs = (Applet) clientClass.newInstance(); + + rs.setStub(new RSStub(config, rs)); + + return rs; + } + + private static Artifact getClientArtifact() throws MalformedURLException, IOException + { + URL u = new URL(CLIENT_ARTIFACT_URL); + try (InputStream i = u.openStream()) + { + Gson g = new Gson(); + return g.fromJson(new InputStreamReader(i), DefaultArtifact.class); + } + } +} diff --git a/src/main/java/net/runelite/client/ui/ClientPanel.java b/src/main/java/net/runelite/client/ui/ClientPanel.java index 8cf5f4bd56..5fb9788655 100644 --- a/src/main/java/net/runelite/client/ui/ClientPanel.java +++ b/src/main/java/net/runelite/client/ui/ClientPanel.java @@ -3,11 +3,8 @@ package net.runelite.client.ui; import java.applet.Applet; import java.awt.Color; import java.awt.Dimension; -import java.net.URL; -import java.net.URLClassLoader; import javax.swing.JPanel; -import net.runelite.client.ConfigLoader; -import net.runelite.client.RSStub; +import net.runelite.client.ClientLoader; final class ClientPanel extends JPanel { @@ -19,29 +16,12 @@ final class ClientPanel extends JPanel setPreferredSize(new Dimension(ClientUI.PANEL_WIDTH, ClientUI.PANEL_HEIGHT)); setBackground(Color.black); - Applet rs = dl(); + ClientLoader loader = new ClientLoader(); + + Applet rs = loader.load(); rs.setSize(this.getSize()); rs.init(); rs.start(); this.add(rs); } - - private Applet dl() throws Exception - { - ConfigLoader config = new ConfigLoader(); - - config.fetch(); - - //URL clientUrl = new URL(config.getProperty(ConfigLoader.CODEBASE) + config.getProperty(ConfigLoader.INITIAL_JAR)); - URL clientUrl = new URL("http://192.168.1.2/rs/" + config.getProperty(ConfigLoader.INITIAL_JAR)); - String initialClass = config.getProperty(ConfigLoader.INITIAL_CLASS).replace(".class", ""); - - URLClassLoader loader = new URLClassLoader(new URL[]{ clientUrl }); - Class clientClass = loader.loadClass(initialClass); - - Applet rs = (Applet) clientClass.newInstance(); - - rs.setStub(new RSStub(config, rs)); - return rs; - } } \ No newline at end of file