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