From 74173834daf4b665dd5cb89dafd4a22af10b6a4c Mon Sep 17 00:00:00 2001 From: Adam Date: Sun, 24 Apr 2016 17:34:22 -0400 Subject: [PATCH] Add a hard dependency on injected client instead of using artifact resolver --- pom.xml | 47 +++---- .../net/runelite/client/ArtifactResolver.java | 119 ------------------ .../net/runelite/client/ClientLoader.java | 50 +------- 3 files changed, 18 insertions(+), 198 deletions(-) delete mode 100644 src/main/java/net/runelite/client/ArtifactResolver.java diff --git a/pom.xml b/pom.xml index b7d45b4bd0..aac069cc65 100644 --- a/pom.xml +++ b/pom.xml @@ -11,9 +11,9 @@ 1.8 1.8 + 113-SNAPSHOT + 1.7.12 - 1.1.0 - 3.1.0 @@ -23,6 +23,14 @@ + + + runelite + RuneLite + http://repo.runelite.net + + + org.slf4j @@ -34,36 +42,6 @@ slf4j-simple ${slf4j.version} - - org.eclipse.aether - aether-api - ${aether.version} - - - org.eclipse.aether - aether-impl - ${aether.version} - - - org.eclipse.aether - aether-connector-basic - ${aether.version} - - - org.eclipse.aether - aether-transport-http - ${aether.version} - - - org.apache.maven - maven-aether-provider - ${maven.version} - - - com.google.code.gson - gson - 2.4 - net.sf.jopt-simple jopt-simple @@ -75,6 +53,11 @@ api 1.0.0-SNAPSHOT + + net.runelite.rs + client + ${rs.version} + junit diff --git a/src/main/java/net/runelite/client/ArtifactResolver.java b/src/main/java/net/runelite/client/ArtifactResolver.java deleted file mode 100644 index 47a4927cf8..0000000000 --- a/src/main/java/net/runelite/client/ArtifactResolver.java +++ /dev/null @@ -1,119 +0,0 @@ -package net.runelite.client; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; -import org.apache.maven.repository.internal.MavenRepositorySystemUtils; -import org.eclipse.aether.DefaultRepositorySystemSession; -import org.eclipse.aether.RepositorySystem; -import org.eclipse.aether.RepositorySystemSession; -import org.eclipse.aether.artifact.Artifact; -import org.eclipse.aether.collection.CollectRequest; -import org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory; -import org.eclipse.aether.graph.Dependency; -import org.eclipse.aether.graph.DependencyFilter; -import org.eclipse.aether.impl.DefaultServiceLocator; -import org.eclipse.aether.repository.LocalRepository; -import org.eclipse.aether.repository.RemoteRepository; -import org.eclipse.aether.repository.RepositoryPolicy; -import org.eclipse.aether.resolution.ArtifactResult; -import org.eclipse.aether.resolution.DependencyRequest; -import org.eclipse.aether.resolution.DependencyResolutionException; -import org.eclipse.aether.spi.connector.RepositoryConnectorFactory; -import org.eclipse.aether.spi.connector.transport.TransporterFactory; -import org.eclipse.aether.transport.http.HttpTransporterFactory; -import org.eclipse.aether.util.artifact.JavaScopes; -import org.eclipse.aether.util.filter.DependencyFilterUtils; - -public class ArtifactResolver -{ - private final File repositoryCache; - private final List repositories = new ArrayList<>(); - - public ArtifactResolver(File repositoryCache) - { - this.repositoryCache = repositoryCache; - } - - public List resolveArtifacts(Artifact artifact) throws DependencyResolutionException - { - RepositorySystem system = newRepositorySystem(); - - RepositorySystemSession session = newRepositorySystemSession(system); - - DependencyFilter classpathFlter = DependencyFilterUtils.classpathFilter(JavaScopes.COMPILE); - - CollectRequest collectRequest = new CollectRequest(); - collectRequest.setRoot(new Dependency(artifact, JavaScopes.COMPILE)); - collectRequest.setRepositories(repositories); - - DependencyRequest dependencyRequest = new DependencyRequest(collectRequest, classpathFlter); - - List results = system.resolveDependencies(session, dependencyRequest).getArtifactResults(); - validate(results); - return results; - } - - public DefaultRepositorySystemSession newRepositorySystemSession(RepositorySystem system) - { - DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession(); - - LocalRepository localRepo = new LocalRepository(repositoryCache.getAbsolutePath()); - session.setLocalRepositoryManager(system.newLocalRepositoryManager(session, localRepo)); - - //session.setTransferListener(new ConsoleTransferListener()); - //session.setRepositoryListener(new ConsoleRepositoryListener()); - - return session; - } - - public RepositorySystem newRepositorySystem() - { - DefaultServiceLocator locator = MavenRepositorySystemUtils.newServiceLocator(); - locator.addService(RepositoryConnectorFactory.class, BasicRepositoryConnectorFactory.class); - locator.addService(TransporterFactory.class, HttpTransporterFactory.class); - - locator.setErrorHandler(new DefaultServiceLocator.ErrorHandler() - { - @Override - public void serviceCreationFailed(Class type, Class impl, Throwable exception) - { - exception.printStackTrace(); - } - }); - - return locator.getService(RepositorySystem.class); - } - - public void addRepositories() - { - repositories.add(this.newCentralRepository()); - repositories.add(this.newRuneliteRepository()); - } - - private RemoteRepository newCentralRepository() - { - return new RemoteRepository.Builder("central", "default", "http://central.maven.org/maven2/").build(); - } - - public RemoteRepository newRuneliteRepository() - { - return new RemoteRepository.Builder("runelite", "default", "http://repo.runelite.net/") - .setPolicy(new RepositoryPolicy(true, RepositoryPolicy.UPDATE_POLICY_ALWAYS, RepositoryPolicy.CHECKSUM_POLICY_FAIL)) - .build(); - } - - private void validate(List artifacts) - { - for (ArtifactResult ar : artifacts) - { - Artifact a = ar.getArtifact(); - - if (!a.getGroupId().startsWith("net.runelite")) - continue; - - if (ar.getRepository() instanceof RemoteRepository && !ar.getRepository().equals(newRuneliteRepository())) - throw new RuntimeException(); - } - } -} diff --git a/src/main/java/net/runelite/client/ClientLoader.java b/src/main/java/net/runelite/client/ClientLoader.java index 082bbdb155..09e1ea8b36 100644 --- a/src/main/java/net/runelite/client/ClientLoader.java +++ b/src/main/java/net/runelite/client/ClientLoader.java @@ -1,20 +1,8 @@ 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.net.URLConnection; -import java.util.List; -import org.eclipse.aether.artifact.Artifact; -import org.eclipse.aether.artifact.DefaultArtifact; -import org.eclipse.aether.resolution.ArtifactResult; -import org.eclipse.aether.resolution.DependencyResolutionException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -22,51 +10,19 @@ public class ClientLoader { private static final Logger logger = LoggerFactory.getLogger(ClientLoader.class); - private static final String CLIENT_ARTIFACT_URL = "https://static.runelite.net/client.json"; - - public Applet load() throws MalformedURLException, ClassNotFoundException, IOException, InstantiationException, IllegalAccessException, DependencyResolutionException + public Applet load() throws MalformedURLException, ClassNotFoundException, IOException, InstantiationException, IllegalAccessException { ConfigLoader config = new ConfigLoader(); config.fetch(); - - ArtifactResolver resolver; - if (!RuneLite.getOptions().has("developer-mode")) - { - resolver = new ArtifactResolver(RuneLite.REPO_DIR); - resolver.addRepositories(); - } - else - { - resolver = new ArtifactResolver(new File(System.getProperty("user.home"), ".m2/repository")); - - logger.info("In developer mode, not fetching updates for client"); - } - - 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); - + Class clientClass = this.getClass().getClassLoader().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); - URLConnection conn = u.openConnection(); - conn.setRequestProperty("User-Agent", "Mozilla/5.0"); - try (InputStream i = conn.getInputStream()) - { - Gson g = new Gson(); - return g.fromJson(new InputStreamReader(i), DefaultArtifact.class); - } - } }