+++ /dev/null
-package org.opendaylight.controller.swaggerui;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.PrintWriter;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonParser;
-
-/**
- * Servlet implementation class BasePathModifierServlet
- */
-public class BasePathModifierServlet extends HttpServlet {
- private static final long serialVersionUID = 1L;
- private static final Logger logger = LoggerFactory
- .getLogger(BasePathModifierServlet.class);
-
- private static final String API_BASE_PATH_SUFFIX = "/swagger/apis";
- private static final String BASE_PATH_KEY = "basePath";
-
- /**
- * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
- * response)
- */
- @Override
- protected void doGet(HttpServletRequest request,
- HttpServletResponse response) throws ServletException, IOException {
- String resourcePath = request.getRequestURI().substring(
- request.getContextPath().length());
- logger.debug("Locating resource : {}.", resourcePath);
- JsonObject jsonObject = null;
- try {
-
- InputStream stream = this.getServletContext().getResourceAsStream(
- resourcePath);
- if (stream == null) {
- response.sendError(HttpServletResponse.SC_NOT_FOUND,
- "API / API Listing not found");
- return;
- }
- BufferedReader streamReader = new BufferedReader(
- new InputStreamReader(stream, "UTF-8"));
- StringBuilder responseStrBuilder = new StringBuilder();
-
- String inputStr;
- while ((inputStr = streamReader.readLine()) != null)
- responseStrBuilder.append(inputStr);
-
- JsonElement jelement = new JsonParser().parse(responseStrBuilder
- .toString());
- jsonObject = jelement.getAsJsonObject();
-
- String basePath = jsonObject.get(BASE_PATH_KEY).getAsString();
-
- // construct base path
- StringBuilder requestURL = new StringBuilder();
-
- requestURL.append(request.isSecure() ? "https://" : "http://")
- .append(request.getServerName()).append(":")
- .append(request.getServerPort());
- if (!basePath.contains(requestURL)) {
- String endPath = "";
- if (basePath.contains(API_BASE_PATH_SUFFIX)) {
- endPath = basePath.substring(basePath
- .indexOf(API_BASE_PATH_SUFFIX));
- }
- basePath = requestURL + endPath;
- logger.debug("Modified Base Path is {}", basePath);
- jsonObject.addProperty(BASE_PATH_KEY, basePath);
- }
- } catch (Exception ex) {
- logger.error("Error processing JSON data", ex);
- response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
- "Could not read API Listing or APIs");
- return;
- }
-
- try {
- response.setContentType("application/json");
- PrintWriter out = response.getWriter();
- out.print(jsonObject);
- out.flush();
- } catch (Exception ex) {
- logger.error("Error while writing response", ex);
- response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
- "Internal Error while writing resposne");
- }
- }
-
-}