From da1a50bfebe89ebacf1205cc01b13a2a11207368 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Sun, 10 Jan 2010 16:42:21 +0000 Subject: [PATCH] * VersionComparator: Move from TrustedUpdate.java to util --- .../src/net/i2p/router/web/NetDbRenderer.java | 3 +- .../src/net/i2p/crypto/TrustedUpdate.java | 60 +---------------- .../src/net/i2p/util/VersionComparator.java | 66 +++++++++++++++++++ 3 files changed, 69 insertions(+), 60 deletions(-) create mode 100644 core/java/src/net/i2p/util/VersionComparator.java diff --git a/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java index 61e156e051..715d92c749 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java @@ -28,6 +28,7 @@ import net.i2p.data.RouterInfo; import net.i2p.router.RouterContext; import net.i2p.router.TunnelPoolSettings; import net.i2p.util.ObjectCounter; +import net.i2p.util.VersionComparator; public class NetDbRenderer { private RouterContext _context; @@ -185,7 +186,7 @@ public class NetDbRenderer { // versions table List<String> versionList = new ArrayList(versions.objects()); if (versionList.size() > 0) { - Collections.sort(versionList, Collections.reverseOrder(new TrustedUpdate.VersionComparator())); + Collections.sort(versionList, Collections.reverseOrder(new VersionComparator())); buf.append("<table>\n"); buf.append("<tr><th>" + _("Version") + "</th><th>" + _("Count") + "</th></tr>\n"); for (String routerVersion : versionList) { diff --git a/core/java/src/net/i2p/crypto/TrustedUpdate.java b/core/java/src/net/i2p/crypto/TrustedUpdate.java index 8729f128f8..0a5466cea7 100644 --- a/core/java/src/net/i2p/crypto/TrustedUpdate.java +++ b/core/java/src/net/i2p/crypto/TrustedUpdate.java @@ -8,7 +8,6 @@ import java.io.IOException; import java.io.SequenceInputStream; import java.io.UnsupportedEncodingException; import java.util.ArrayList; -import java.util.Comparator; import java.util.StringTokenizer; import net.i2p.CoreVersion; @@ -19,6 +18,7 @@ import net.i2p.data.Signature; import net.i2p.data.SigningPrivateKey; import net.i2p.data.SigningPublicKey; import net.i2p.util.Log; +import net.i2p.util.VersionComparator; /** * <p>Handles DSA signing and verification of update files. @@ -101,7 +101,6 @@ D8usM7Dxp5yrDrCYZ5AIijc= -----END PGP SIGNATURE----- */ - private static final String VALID_VERSION_CHARS = "0123456789."; private static final int VERSION_BYTES = 16; private static final int HEADER_BYTES = Signature.SIGNATURE_BYTES + VERSION_BYTES; private static final String PROP_TRUSTED_KEYS = "router.trustedUpdateKeys"; @@ -187,50 +186,6 @@ D8usM7Dxp5yrDrCYZ5AIijc= return (new VersionComparator()).compare(currentVersion, newVersion) < 0; } - /** - * Compares versions. - * Characters other than [0-9.] are ignored. - */ - public static class VersionComparator implements Comparator<String> { - /** l and r non-null */ - public int compare(String l, String r) { - // try it the easy way first - if (l.equals(r)) - return 0; - StringTokenizer lTokens = new StringTokenizer(sanitize(l), "."); - StringTokenizer rTokens = new StringTokenizer(sanitize(r), "."); - - while (lTokens.hasMoreTokens() && rTokens.hasMoreTokens()) { - String lNumber = lTokens.nextToken(); - String rNumber = rTokens.nextToken(); - int diff = intCompare(lNumber, rNumber); - if (diff != 0) - return diff; - } - - if (lTokens.hasMoreTokens() && !rTokens.hasMoreTokens()) - return 1; - if (rTokens.hasMoreTokens() && !lTokens.hasMoreTokens()) - return -1; - return 0; - } - - private static final int intCompare(String lop, String rop) { - int left, right; - try { - left = Integer.parseInt(lop); - } catch (NumberFormatException nfe) { - return -1; - } - try { - right = Integer.parseInt(rop); - } catch (NumberFormatException nfe) { - return 1; - } - return left - right; - } - } - private static final void genKeysCLI(String publicKeyFile, String privateKeyFile) { FileOutputStream fileOutputStream = null; @@ -263,19 +218,6 @@ D8usM7Dxp5yrDrCYZ5AIijc= } } - private static final String sanitize(String versionString) { - StringBuilder versionStringBuilder = new StringBuilder(versionString); - - for (int i = 0; i < versionStringBuilder.length(); i++) { - if (VALID_VERSION_CHARS.indexOf(versionStringBuilder.charAt(i)) == -1) { - versionStringBuilder.deleteCharAt(i); - i--; - } - } - - return versionStringBuilder.toString(); - } - private static final void showUsageCLI() { System.err.println("Usage: TrustedUpdate keygen publicKeyFile privateKeyFile"); System.err.println(" TrustedUpdate showversion signedFile"); diff --git a/core/java/src/net/i2p/util/VersionComparator.java b/core/java/src/net/i2p/util/VersionComparator.java new file mode 100644 index 0000000000..3b643442ef --- /dev/null +++ b/core/java/src/net/i2p/util/VersionComparator.java @@ -0,0 +1,66 @@ +package net.i2p.util; + +import java.util.Comparator; +import java.util.StringTokenizer; + +/** + * Compares versions. + * Characters other than [0-9.] are ignored. + * Moved from TrustedUpdate.java + * @since 0.7.10 + */ +public class VersionComparator implements Comparator<String> { + /** l and r non-null */ + public int compare(String l, String r) { + // try it the easy way first + if (l.equals(r)) + return 0; + StringTokenizer lTokens = new StringTokenizer(sanitize(l), "."); + StringTokenizer rTokens = new StringTokenizer(sanitize(r), "."); + + while (lTokens.hasMoreTokens() && rTokens.hasMoreTokens()) { + String lNumber = lTokens.nextToken(); + String rNumber = rTokens.nextToken(); + int diff = intCompare(lNumber, rNumber); + if (diff != 0) + return diff; + } + + if (lTokens.hasMoreTokens() && !rTokens.hasMoreTokens()) + return 1; + if (rTokens.hasMoreTokens() && !lTokens.hasMoreTokens()) + return -1; + return 0; + } + + private static final int intCompare(String lop, String rop) { + int left, right; + try { + left = Integer.parseInt(lop); + } catch (NumberFormatException nfe) { + return -1; + } + try { + right = Integer.parseInt(rop); + } catch (NumberFormatException nfe) { + return 1; + } + return left - right; + } + + private static final String VALID_VERSION_CHARS = "0123456789."; + + private static final String sanitize(String versionString) { + StringBuilder versionStringBuilder = new StringBuilder(versionString); + + for (int i = 0; i < versionStringBuilder.length(); i++) { + if (VALID_VERSION_CHARS.indexOf(versionStringBuilder.charAt(i)) == -1) { + versionStringBuilder.deleteCharAt(i); + i--; + } + } + + return versionStringBuilder.toString(); + } +} + -- GitLab