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