diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/ExternalPluginManager.java b/runelite-client/src/main/java/net/runelite/client/plugins/ExternalPluginManager.java index 2f62888910..58ae48d894 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/ExternalPluginManager.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/ExternalPluginManager.java @@ -506,6 +506,7 @@ public class ExternalPluginManager { if (!tryLoadNewFormat()) { + log.debug("Load new format failed."); loadOldFormat(); } @@ -517,11 +518,14 @@ public class ExternalPluginManager { try { + duplicateCheck(); + log.debug("Trying to load new format: {}", openOSRSConfig.getExternalRepositories()); for (String keyval : openOSRSConfig.getExternalRepositories().split(";")) { String[] split = keyval.split("\\|"); if (split.length != 2) { + log.debug("Split length invalid."); repositories.clear(); return false; } @@ -548,6 +552,7 @@ public class ExternalPluginManager } catch (ArrayIndexOutOfBoundsException | MalformedURLException e) { + log.error("Error in new format", e); repositories.clear(); return false; } @@ -558,14 +563,18 @@ public class ExternalPluginManager { try { + log.debug("Loading old format."); repositories.clear(); for (String keyval : openOSRSConfig.getExternalRepositories().split(";")) { + log.debug("KeyVal: {}", keyval); String id = keyval.substring(0, keyval.lastIndexOf(":https")); String url = keyval.substring(keyval.lastIndexOf("https")); - repositories.add(new DefaultUpdateRepository(id, new URL(url))); + DefaultUpdateRepository defaultRepo = new DefaultUpdateRepository(id, new URL(url)); + repositories.add(defaultRepo); + log.debug("Added Repo: {}", defaultRepo.getUrl()); } } catch (MalformedURLException e) @@ -620,10 +629,60 @@ public class ExternalPluginManager config.append(";"); } config.deleteCharAt(config.lastIndexOf(";")); - openOSRSConfig.setExternalRepositories(config.toString()); } + + /** + * This method is a fail safe to ensure that no duplicate + * repositories end up getting saved to the config. + *
+ * Configs that had duplicate repos prior to this should
+ * be updated and set correctly.
+ */
+ private void duplicateCheck()
+ {
+ String[] split = openOSRSConfig.getExternalRepositories().split(";");
+
+ if (split.length <= 0)
+ {
+ return;
+ }
+
+ Set