From 1956068698f66899da7ee8d7327bb42f404cc9ef Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 8 Feb 2014 16:02:50 +0000 Subject: [PATCH] * Addressbook: - Rewrite subscriptions.txt to convert to new default URL - Static method call cleanups --- .../src/net/i2p/addressbook/ConfigParser.java | 42 ++++++++++++------- .../java/src/net/i2p/addressbook/Daemon.java | 5 ++- 2 files changed, 30 insertions(+), 17 deletions(-) diff --git a/apps/addressbook/java/src/net/i2p/addressbook/ConfigParser.java b/apps/addressbook/java/src/net/i2p/addressbook/ConfigParser.java index e6e5eefab..47e9bb0fb 100644 --- a/apps/addressbook/java/src/net/i2p/addressbook/ConfigParser.java +++ b/apps/addressbook/java/src/net/i2p/addressbook/ConfigParser.java @@ -91,7 +91,7 @@ class ConfigParser { String inputLine; inputLine = input.readLine(); while (inputLine != null) { - inputLine = ConfigParser.stripComments(inputLine); + inputLine = stripComments(inputLine); String[] splitLine = inputLine.split("="); if (splitLine.length == 2) { result.put(splitLine[0].trim().toLowerCase(Locale.US), splitLine[1].trim()); @@ -116,7 +116,7 @@ class ConfigParser { FileInputStream fileStream = new FileInputStream(file); BufferedReader input = new BufferedReader(new InputStreamReader( fileStream)); - Map rv = ConfigParser.parse(input); + Map rv = parse(input); try { fileStream.close(); } catch (IOException ioe) {} @@ -136,7 +136,7 @@ class ConfigParser { public static Map parse(String string) throws IOException { StringReader stringReader = new StringReader(string); BufferedReader input = new BufferedReader(stringReader); - return ConfigParser.parse(input); + return parse(input); } /** @@ -153,7 +153,7 @@ class ConfigParser { public static Map parse(File file, Map map) { Map result; try { - result = ConfigParser.parse(file); + result = parse(file); for (Map.Entry entry : map.entrySet()) { if (!result.containsKey(entry.getKey())) result.put(entry.getKey(), entry.getValue()); @@ -161,7 +161,7 @@ class ConfigParser { } catch (IOException exp) { result = map; try { - ConfigParser.write(result, file); + write(result, file); } catch (IOException exp2) { } } @@ -182,7 +182,7 @@ class ConfigParser { List result = new LinkedList(); String inputLine = input.readLine(); while (inputLine != null) { - inputLine = ConfigParser.stripComments(inputLine).trim(); + inputLine = stripComments(inputLine).trim(); if (inputLine.length() > 0) { result.add(inputLine); } @@ -205,7 +205,7 @@ class ConfigParser { FileInputStream fileStream = new FileInputStream(file); BufferedReader input = new BufferedReader(new InputStreamReader( fileStream)); - List rv = ConfigParser.parseSubscriptions(input); + List rv = parseSubscriptions(input); try { fileStream.close(); } catch (IOException ioe) {} @@ -224,7 +224,7 @@ class ConfigParser { public static List parseSubscriptions(String string) throws IOException { StringReader stringReader = new StringReader(string); BufferedReader input = new BufferedReader(stringReader); - return ConfigParser.parseSubscriptions(input); + return parseSubscriptions(input); } /** @@ -234,18 +234,30 @@ class ConfigParser { * * @param file * A File to attempt to parse. - * @param list list of files to parse + * @param list The default subscriptions to be saved and returned if the file cannot be read * @return A List consisting of one element for each line in file, or if * file cannot be read, list. */ public static List parseSubscriptions(File file, List list) { List result; try { - result = ConfigParser.parseSubscriptions(file); + result = parseSubscriptions(file); + // Fix up files that contain the old default + // which was changed in 0.9.11 + if (result.remove(Daemon.OLD_DEFAULT_SUB)) { + for (String sub : list) { + if (!result.contains(sub)) + result.add(sub); + } + try { + writeSubscriptions(result, file); + // TODO log + } catch (IOException ioe) {} + } } catch (IOException exp) { result = list; try { - ConfigParser.writeSubscriptions(result, file); + writeSubscriptions(result, file); } catch (IOException exp2) { } } @@ -289,8 +301,7 @@ class ConfigParser { boolean success = false; if (!isWindows) { File tmp = SecureFile.createTempFile("temp-", ".tmp", file.getAbsoluteFile().getParentFile()); - ConfigParser - .write(map, new BufferedWriter(new OutputStreamWriter(new SecureFileOutputStream(tmp), "UTF-8"))); + write(map, new BufferedWriter(new OutputStreamWriter(new SecureFileOutputStream(tmp), "UTF-8"))); success = tmp.renameTo(file); if (!success) { tmp.delete(); @@ -299,8 +310,7 @@ class ConfigParser { } if (!success) { // hmm, that didn't work, try it the old way - ConfigParser - .write(map, new BufferedWriter(new OutputStreamWriter(new SecureFileOutputStream(file), "UTF-8"))); + write(map, new BufferedWriter(new OutputStreamWriter(new SecureFileOutputStream(file), "UTF-8"))); } } @@ -337,7 +347,7 @@ class ConfigParser { */ public static void writeSubscriptions(List list, File file) throws IOException { - ConfigParser.writeSubscriptions(list, new BufferedWriter( + writeSubscriptions(list, new BufferedWriter( new OutputStreamWriter(new SecureFileOutputStream(file), "UTF-8"))); } diff --git a/apps/addressbook/java/src/net/i2p/addressbook/Daemon.java b/apps/addressbook/java/src/net/i2p/addressbook/Daemon.java index 78d3f2043..f0ed16569 100644 --- a/apps/addressbook/java/src/net/i2p/addressbook/Daemon.java +++ b/apps/addressbook/java/src/net/i2p/addressbook/Daemon.java @@ -50,6 +50,9 @@ public class Daemon { private static final Daemon _instance = new Daemon(); private volatile boolean _running; private static final boolean DEBUG = false; + private static final String DEFAULT_SUB = "http://i2p-projekt.i2p/hosts.txt"; + /** @since 0.9.12 */ + static final String OLD_DEFAULT_SUB = "http://www.i2p2.i2p/hosts.txt"; /** * Update the router and published address books using remote data from the @@ -253,7 +256,7 @@ public class Daemon { List defaultSubs = new LinkedList(); // defaultSubs.add("http://i2p/NF2RLVUxVulR3IqK0sGJR0dHQcGXAzwa6rEO4WAWYXOHw-DoZhKnlbf1nzHXwMEJoex5nFTyiNMqxJMWlY54cvU~UenZdkyQQeUSBZXyuSweflUXFqKN-y8xIoK2w9Ylq1k8IcrAFDsITyOzjUKoOPfVq34rKNDo7fYyis4kT5bAHy~2N1EVMs34pi2RFabATIOBk38Qhab57Umpa6yEoE~rbyR~suDRvD7gjBvBiIKFqhFueXsR2uSrPB-yzwAGofTXuklofK3DdKspciclTVzqbDjsk5UXfu2nTrC1agkhLyqlOfjhyqC~t1IXm-Vs2o7911k7KKLGjB4lmH508YJ7G9fLAUyjuB-wwwhejoWqvg7oWvqo4oIok8LG6ECR71C3dzCvIjY2QcrhoaazA9G4zcGMm6NKND-H4XY6tUWhpB~5GefB3YczOqMbHq4wi0O9MzBFrOJEOs3X4hwboKWANf7DT5PZKJZ5KorQPsYRSq0E3wSOsFCSsdVCKUGsAAAA/i2p/hosts.txt"); - defaultSubs.add("http://i2p-projekt.i2p/hosts.txt"); + defaultSubs.add(DEFAULT_SUB); SubscriptionList subscriptions = new SubscriptionList(subscriptionFile, etagsFile, lastModifiedFile, lastFetchedFile, delay, defaultSubs, settings