package com.dianping.pigeon.util; public class VersionUtils { public static final String VERSION = "2.9.9-SNAPSHOT"; public static final String DP_THRIFT_VERSION = "2.8.0"; public static final String MT_THRIFT_VERSION = "mtthrift-v1.7.1"; public static final String MT_THRIFT_VERSION_BASE = "mtthrift"; public static final String PROTO_FST_VERSION = "2.4.3"; public static final String COMPACT_VERSION = "2.7.5"; public static boolean isThriftSupported(String version) { if (version.startsWith(MT_THRIFT_VERSION_BASE)) { return compareVersion(version, MT_THRIFT_VERSION) >= 0; } else { return compareVersion(version, DP_THRIFT_VERSION) >= 0; } } public static boolean isProtoFstSupported(String version) { return compareVersion(version, PROTO_FST_VERSION) >= 0; } public static boolean isCompactSupported(String version) { return compareVersion(version, COMPACT_VERSION) >= 0; } public static int compareVersion(String version1, String version2) { String[] s1 = version1.split("\\.|-"); String[] s2 = version2.split("\\.|-"); int len1 = s1.length; int len2 = s2.length; int compareCount = len1; if (len1 <= len2) { compareCount = len1; } else if (len1 > len2) { compareCount = len2; } for (int i = 0; i < compareCount; i++) { int v1 = 0; try { v1 = Integer.parseInt(s1[i]); } catch (RuntimeException e) { return s1[i].compareToIgnoreCase(s2[i]); } int v2 = 0; try { v2 = Integer.parseInt(s2[i]); } catch (RuntimeException e) { return s1[i].compareToIgnoreCase(s2[i]); } int r = v1 - v2; if (r > 0) { return 1; } if (r < 0) { return -1; } } return len2 - len1; } }