1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.hadoop.hbase.client;
20
21 import org.apache.hadoop.hbase.classification.InterfaceAudience;
22 import org.apache.hadoop.hbase.ipc.RpcCallContext;
23 import org.apache.hadoop.hbase.ipc.RpcServer;
24 import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos;
25
26
27
28
29
30 @InterfaceAudience.Private
31 public final class VersionInfoUtil {
32
33 private VersionInfoUtil() {
34
35 }
36
37 public static boolean currentClientHasMinimumVersion(int major, int minor) {
38 RpcCallContext call = RpcServer.getCurrentCall();
39 HBaseProtos.VersionInfo versionInfo = call != null ? call.getClientVersionInfo() : null;
40 return hasMinimumVersion(versionInfo, major, minor);
41 }
42
43 public static boolean hasMinimumVersion(HBaseProtos.VersionInfo versionInfo,
44 int major,
45 int minor) {
46 if (versionInfo != null) {
47 if (versionInfo.hasVersionMajor() && versionInfo.hasVersionMinor()) {
48 int clientMajor = versionInfo.getVersionMajor();
49 if (clientMajor != major) {
50 return clientMajor > major;
51 }
52 int clientMinor = versionInfo.getVersionMinor();
53 return clientMinor >= minor;
54 }
55 try {
56 String[] components = versionInfo.getVersion().split("\\.");
57
58 int clientMajor = components.length > 0 ? Integer.parseInt(components[0]) : 0;
59 if (clientMajor != major) {
60 return clientMajor > major;
61 }
62
63 int clientMinor = components.length > 1 ? Integer.parseInt(components[1]) : 0;
64 return clientMinor >= minor;
65 } catch (NumberFormatException e) {
66 return false;
67 }
68 }
69 return false;
70 }
71 }