1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.hadoop.hbase.rest.model;
21
22 import java.io.IOException;
23 import java.io.Serializable;
24
25 import javax.servlet.ServletContext;
26 import javax.xml.bind.annotation.XmlAttribute;
27 import javax.xml.bind.annotation.XmlRootElement;
28
29 import org.apache.hadoop.hbase.classification.InterfaceAudience;
30 import org.apache.hadoop.hbase.protobuf.ProtobufUtil;
31 import org.apache.hadoop.hbase.rest.ProtobufMessageHandler;
32 import org.apache.hadoop.hbase.rest.RESTServlet;
33 import org.apache.hadoop.hbase.rest.protobuf.generated.VersionMessage.Version;
34
35 import com.sun.jersey.spi.container.servlet.ServletContainer;
36
37
38
39
40
41
42
43
44
45
46
47
48 @XmlRootElement(name="Version")
49 @InterfaceAudience.Private
50 public class VersionModel implements Serializable, ProtobufMessageHandler {
51
52 private static final long serialVersionUID = 1L;
53
54 private String restVersion;
55 private String jvmVersion;
56 private String osVersion;
57 private String serverVersion;
58 private String jerseyVersion;
59
60
61
62
63 public VersionModel() {}
64
65
66
67
68
69 public VersionModel(ServletContext context) {
70 restVersion = RESTServlet.VERSION_STRING;
71 jvmVersion = System.getProperty("java.vm.vendor") + ' ' +
72 System.getProperty("java.version") + '-' +
73 System.getProperty("java.vm.version");
74 osVersion = System.getProperty("os.name") + ' ' +
75 System.getProperty("os.version") + ' ' +
76 System.getProperty("os.arch");
77 serverVersion = context.getServerInfo();
78 jerseyVersion = ServletContainer.class.getPackage()
79 .getImplementationVersion();
80 }
81
82
83
84
85 @XmlAttribute(name="REST")
86 public String getRESTVersion() {
87 return restVersion;
88 }
89
90
91
92
93 @XmlAttribute(name="JVM")
94 public String getJVMVersion() {
95 return jvmVersion;
96 }
97
98
99
100
101 @XmlAttribute(name="OS")
102 public String getOSVersion() {
103 return osVersion;
104 }
105
106
107
108
109 @XmlAttribute(name="Server")
110 public String getServerVersion() {
111 return serverVersion;
112 }
113
114
115
116
117 @XmlAttribute(name="Jersey")
118 public String getJerseyVersion() {
119 return jerseyVersion;
120 }
121
122
123
124
125 public void setRESTVersion(String version) {
126 this.restVersion = version;
127 }
128
129
130
131
132 public void setOSVersion(String version) {
133 this.osVersion = version;
134 }
135
136
137
138
139 public void setJVMVersion(String version) {
140 this.jvmVersion = version;
141 }
142
143
144
145
146 public void setServerVersion(String version) {
147 this.serverVersion = version;
148 }
149
150
151
152
153 public void setJerseyVersion(String version) {
154 this.jerseyVersion = version;
155 }
156
157
158
159
160 @Override
161 public String toString() {
162 StringBuilder sb = new StringBuilder();
163 sb.append("rest ");
164 sb.append(restVersion);
165 sb.append(" [JVM: ");
166 sb.append(jvmVersion);
167 sb.append("] [OS: ");
168 sb.append(osVersion);
169 sb.append("] [Server: ");
170 sb.append(serverVersion);
171 sb.append("] [Jersey: ");
172 sb.append(jerseyVersion);
173 sb.append("]\n");
174 return sb.toString();
175 }
176
177 @Override
178 public byte[] createProtobufOutput() {
179 Version.Builder builder = Version.newBuilder();
180 builder.setRestVersion(restVersion);
181 builder.setJvmVersion(jvmVersion);
182 builder.setOsVersion(osVersion);
183 builder.setServerVersion(serverVersion);
184 builder.setJerseyVersion(jerseyVersion);
185 return builder.build().toByteArray();
186 }
187
188 @Override
189 public ProtobufMessageHandler getObjectFromMessage(byte[] message)
190 throws IOException {
191 Version.Builder builder = Version.newBuilder();
192 ProtobufUtil.mergeFrom(builder, message);
193 if (builder.hasRestVersion()) {
194 restVersion = builder.getRestVersion();
195 }
196 if (builder.hasJvmVersion()) {
197 jvmVersion = builder.getJvmVersion();
198 }
199 if (builder.hasOsVersion()) {
200 osVersion = builder.getOsVersion();
201 }
202 if (builder.hasServerVersion()) {
203 serverVersion = builder.getServerVersion();
204 }
205 if (builder.hasJerseyVersion()) {
206 jerseyVersion = builder.getJerseyVersion();
207 }
208 return this;
209 }
210 }