Revert "HBASE-26523 Upgrade hbase-thirdparty dependency to 4.0.0 (#3910)"
[hbase.git] / hbase-rest / src / main / java / org / apache / hadoop / hbase / rest / VersionResource.java
blobc212334153f8e6378da27b0ac1088290c1434fff
1 /*
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements. See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership. The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License. You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
20 package org.apache.hadoop.hbase.rest;
22 import java.io.IOException;
24 import javax.servlet.ServletContext;
25 import javax.ws.rs.GET;
26 import javax.ws.rs.Path;
27 import javax.ws.rs.Produces;
28 import javax.ws.rs.core.CacheControl;
29 import javax.ws.rs.core.Context;
30 import javax.ws.rs.core.Response;
31 import javax.ws.rs.core.UriInfo;
32 import javax.ws.rs.core.Response.ResponseBuilder;
34 import org.apache.yetus.audience.InterfaceAudience;
35 import org.slf4j.Logger;
36 import org.slf4j.LoggerFactory;
37 import org.apache.hadoop.hbase.rest.model.VersionModel;
39 /**
40 * Implements REST software version reporting
41 * <p>
42 * <tt>/version/rest</tt>
43 * <p>
44 * <tt>/version</tt> (alias for <tt>/version/rest</tt>)
46 @InterfaceAudience.Private
47 public class VersionResource extends ResourceBase {
49 private static final Logger LOG = LoggerFactory.getLogger(VersionResource.class);
51 static CacheControl cacheControl;
52 static {
53 cacheControl = new CacheControl();
54 cacheControl.setNoCache(true);
55 cacheControl.setNoTransform(false);
58 /**
59 * Constructor
60 * @throws IOException
62 public VersionResource() throws IOException {
63 super();
66 /**
67 * Build a response for a version request.
68 * @param context servlet context
69 * @param uriInfo (JAX-RS context variable) request URL
70 * @return a response for a version request
72 @GET
73 @Produces({MIMETYPE_TEXT, MIMETYPE_XML, MIMETYPE_JSON, MIMETYPE_PROTOBUF,
74 MIMETYPE_PROTOBUF_IETF})
75 public Response get(final @Context ServletContext context,
76 final @Context UriInfo uriInfo) {
77 if (LOG.isTraceEnabled()) {
78 LOG.trace("GET " + uriInfo.getAbsolutePath());
80 servlet.getMetrics().incrementRequests(1);
81 ResponseBuilder response = Response.ok(new VersionModel(context));
82 response.cacheControl(cacheControl);
83 servlet.getMetrics().incrementSucessfulGetRequests(1);
84 return response.build();
87 /**
88 * Dispatch to StorageClusterVersionResource
90 @Path("cluster")
91 public StorageClusterVersionResource getClusterVersionResource()
92 throws IOException {
93 return new StorageClusterVersionResource();
96 /**
97 * Dispatch <tt>/version/rest</tt> to self.
99 @Path("rest")
100 public VersionResource getVersionResource() {
101 return this;