Skip to content

Commit df85d8d

Browse files
committed
Converted base page to JSP with only enabled elements.
1 parent b87edf8 commit df85d8d

4 files changed

Lines changed: 53 additions & 34 deletions

File tree

FROST-Server.HTTP.Common/src/main/java/de/fraunhofer/iosb/ilt/frostserver/http/common/HttpRequestDecoder.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -105,12 +105,11 @@ public ServiceRequest serviceRequestFromHttpRequest(HttpServletRequest request)
105105
final String requestURI = request.getRequestURI();
106106
final String contextPath = request.getContextPath();
107107
final String servletPath = request.getServletPath();
108-
final String basePath = contextPath + servletPath;
109108
final String pathInfo;
110-
if (requestURI.startsWith(basePath)) {
111-
pathInfo = StringHelper.urlDecode(requestURI.substring(basePath.length()));
109+
if (requestURI.startsWith(contextPath)) {
110+
pathInfo = StringHelper.urlDecode(requestURI.substring(contextPath.length()));
112111
} else {
113-
pathInfo = request.getPathInfo();
112+
pathInfo = servletPath;
114113
}
115114
final int idxSlash2 = pathInfo.indexOf('/', 1);
116115
final String path;
@@ -129,7 +128,7 @@ public ServiceRequest serviceRequestFromHttpRequest(HttpServletRequest request)
129128

130129
QueryDefaults queryDefaults = coreSettings.getQueryDefaults().copy();
131130
if (autodetectRootUrl) {
132-
String detectedRootUrl = generateRootUrl(request, version, basePath);
131+
String detectedRootUrl = generateRootUrl(request, version, contextPath);
133132
LOGGER.debug("Detected serviceRootURL: {}", detectedRootUrl);
134133
queryDefaults.setServiceRootUrl(detectedRootUrl);
135134
}

FROST-Server.HTTP.Common/src/main/java/de/fraunhofer/iosb/ilt/frostserver/http/common/ServletMain.java

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import static de.fraunhofer.iosb.ilt.frostserver.http.common.HttpRequestDecoder.serviceRequestFromHttpRequest;
2121
import static de.fraunhofer.iosb.ilt.frostserver.settings.CoreSettings.TAG_CORE_SETTINGS;
2222
import static de.fraunhofer.iosb.ilt.frostserver.util.Constants.CONTENT_TYPE_APPLICATION_JSON;
23-
import static de.fraunhofer.iosb.ilt.frostserver.util.Constants.CONTENT_TYPE_TEXT_HTML;
2423

2524
import de.fraunhofer.iosb.ilt.frostserver.service.PluginService;
2625
import de.fraunhofer.iosb.ilt.frostserver.service.Service;
@@ -33,15 +32,13 @@
3332
import io.prometheus.metrics.core.metrics.Histogram;
3433
import io.prometheus.metrics.model.snapshots.Unit;
3534
import jakarta.servlet.ServletException;
36-
import jakarta.servlet.ServletOutputStream;
3735
import jakarta.servlet.annotation.MultipartConfig;
3836
import jakarta.servlet.annotation.WebInitParam;
3937
import jakarta.servlet.annotation.WebServlet;
4038
import jakarta.servlet.http.HttpServlet;
4139
import jakarta.servlet.http.HttpServletRequest;
4240
import jakarta.servlet.http.HttpServletResponse;
4341
import java.io.IOException;
44-
import java.io.InputStream;
4542
import java.nio.charset.StandardCharsets;
4643
import org.slf4j.Logger;
4744
import org.slf4j.LoggerFactory;
@@ -51,7 +48,7 @@
5148
*/
5249
@WebServlet(
5350
name = "CoreServlet",
54-
urlPatterns = {"/*"},
51+
urlPatterns = {"/"},
5552
initParams = {
5653
@WebInitParam(name = "readonly", value = "false")
5754
})
@@ -82,9 +79,9 @@ private void processRequest(HttpServletRequest request, HttpServletResponse resp
8279

8380
private void executeRequest(HttpServletRequest request, HttpServletResponse response) {
8481
response.setCharacterEncoding(StandardCharsets.UTF_8.name());
85-
String pathInfo = request.getPathInfo();
82+
String servletPath = request.getServletPath();
8683
final CoreSettings coreSettings = (CoreSettings) request.getServletContext().getAttribute(TAG_CORE_SETTINGS);
87-
if (StringHelper.isNullOrEmpty(pathInfo)) {
84+
if (StringHelper.isNullOrEmpty(servletPath)) {
8885
try {
8986
response.sendRedirect(coreSettings.getQueryDefaults().getServiceRootUrl() + "/");
9087
return;
@@ -93,16 +90,8 @@ private void executeRequest(HttpServletRequest request, HttpServletResponse resp
9390
return;
9491
}
9592
}
96-
if (pathInfo.equals("/")) {
97-
try (InputStream in = getServletContext().getResourceAsStream("/index.html")) {
98-
response.setContentType(CONTENT_TYPE_TEXT_HTML);
99-
ServletOutputStream out = response.getOutputStream();
100-
in.transferTo(out);
101-
return;
102-
} catch (IOException exc) {
103-
sendResponse(Service.errorResponse(null, 500, NOT_FOUND), response);
104-
return;
105-
}
93+
if (servletPath.equals("/")) {
94+
return;
10695
}
10796
response.setContentType(CONTENT_TYPE_APPLICATION_JSON);
10897
try {

FROST-Server.HTTP/src/main/webapp/index.html renamed to FROST-Server.HTTP/src/main/webapp/index.jsp

Lines changed: 43 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,18 @@
1+
<%@page import="de.fraunhofer.iosb.ilt.frostserver.plugin.odata.PluginOData"%>
2+
<%@page import="de.fraunhofer.iosb.ilt.frostserver.plugin.coremodelv2.PluginCoreServiceV2"%>
3+
<%@page import="de.fraunhofer.iosb.ilt.frostserver.plugin.coremodel.PluginCoreService"%>
4+
<%@page import="de.fraunhofer.iosb.ilt.frostserver.plugin.openapi.PluginOpenApi"%>
5+
<%@page import="de.fraunhofer.iosb.ilt.frostserver.service.PluginManager"%>
6+
<%@page import="de.fraunhofer.iosb.ilt.frostserver.settings.CoreSettings"%>
7+
<%@page contentType="text/html" pageEncoding="UTF-8"%>
8+
<%
9+
CoreSettings coreSettings = (CoreSettings) pageContext.getServletContext().getAttribute(CoreSettings.TAG_CORE_SETTINGS);
10+
PluginManager pm = coreSettings.getPluginManager();
11+
boolean hasOpenApi = pm.isPluginEnabled(PluginOpenApi.class);
12+
boolean hasV1 = pm.isPluginEnabled(PluginCoreService.class);
13+
boolean hasV2 = pm.isPluginEnabled(PluginCoreServiceV2.class);
14+
boolean hasOData = pm.isPluginEnabled(PluginOData.class);
15+
%>
116
<!DOCTYPE html>
217
<html lang="en">
318
<head>
@@ -32,10 +47,10 @@
3247
location = "";
3348
try {
3449
var data = JSON.parse(request.responseText);
35-
document.getElementById('result').innerHTML = 'Done:<br><pre>' + JSON.stringify(data,null,' ') + '</pre>' + location;
50+
document.getElementById('result').innerHTML = 'Done:<br><pre>' + JSON.stringify(data, null, ' ') + '</pre>' + location;
3651
} catch (err) {
3752
document.getElementById('result').innerHTML = 'Done: ' + request.responseText + "<br>"
38-
+ location;
53+
+ location;
3954
}
4055
} else {
4156
document.getElementById('result').innerHTML = 'Error ' + request.status + ": " + request.responseText + "";
@@ -57,17 +72,33 @@ <h1>FROST-Server</h1>
5772

5873
<h2>Some Links</h2>
5974
<table>
60-
<caption>Relevant links</caption>
6175
<tr><th>Link</th><th>Description</th></tr>
62-
<tr><td><a href="v1.0">v1.0/</a></td><td>SensorThingsApi v1.0</td></tr>
63-
<tr><td><a href="v1.1">v1.1/</a></td><td>SensorThingsApi v1.1</td></tr>
64-
<tr><td><a href="v1.1/api">v1.1/api</a></td><td>OpenAPI definition for SensorThingsApi v1.1 (If OpenAPI plugin is enabled)</td></tr>
65-
<tr><td><a href="ODATA_4.01">ODATA_4.01/</a></td><td>OData version 4.01 (If OData plugin is enabled)</td></tr>
66-
<tr><td><a href="ODATA_4.01/api">ODATA_4.01/api</a></td><td>OpenAPI definition for OData version 4.01 (If OpenAPI plugin is enabled)</td></tr>
67-
<tr><td><a href="ODATA_4.01/$metadata?$format=json">ODATA_4.01/$metadata</a></td><td>OData version 4.01 Data Model Metadata</td></tr>
68-
<tr><td><a href="ODATA_4.0">ODATA_4.0</a></td><td>OData version 4.0 (If OData plugin is enabled)</td></tr>
69-
<tr><td><a href="ODATA_4.0/api">ODATA_4.0/api</a></td><td>OpenAPI definition for OData version 4.0 (If OpenAPI plugin is enabled)</td></tr>
70-
<tr><td><a href="ODATA_4.0/$metadata?$format=json">ODATA_4.0/$metadata</a></td><td>OData version 4.0 Data Model Metadata</td></tr>
76+
<% if (hasV1) { %>
77+
<tr><td><a href="v1.0">v1.0/</a></td><td>SensorThingsApi v1.0</td></tr>
78+
<tr><td><a href="v1.1">v1.1/</a></td><td>SensorThingsApi v1.1</td></tr>
79+
<% if (hasOpenApi) { %>
80+
<tr><td><a href="v1.1/api">v1.1/api</a></td><td>OpenAPI definition for SensorThingsApi v1.1</td></tr>
81+
<% } %>
82+
<% } %>
83+
<% if (hasV2) { %>
84+
<tr><td><a href="v2.0">v2.0/</a></td><td>SensorThingsApi v2.0</td></tr>
85+
<tr><td><a href="v2.0/$metadata?$format=json">v2.0/$metadata</a></td><td>SensorThingsApi v2.0 Data Model Metadata</td></tr>
86+
<% if (hasOpenApi) { %>
87+
<tr><td><a href="v2.0/api">v2.0/api</a></td><td>OpenAPI definition for SensorThingsApi v2.0</td></tr>
88+
<% } %>
89+
<% } %>
90+
<% if (hasOData) { %>
91+
<tr><td><a href="ODATA_4.01">ODATA_4.01/</a></td><td>OData version 4.01</td></tr>
92+
<tr><td><a href="ODATA_4.01/$metadata?$format=json">ODATA_4.01/$metadata</a></td><td>OData version 4.01 Data Model Metadata</td></tr>
93+
<% if (hasOpenApi) { %>
94+
<tr><td><a href="ODATA_4.01/api">ODATA_4.01/api</a></td><td>OpenAPI definition for OData version 4.01</td></tr>
95+
<% } %>
96+
<tr><td><a href="ODATA_4.0">ODATA_4.0</a></td><td>OData version 4.0</td></tr>
97+
<tr><td><a href="ODATA_4.0/$metadata?$format=json">ODATA_4.0/$metadata</a></td><td>OData version 4.0 Data Model Metadata</td></tr>
98+
<% if (hasOpenApi) { %>
99+
<tr><td><a href="ODATA_4.0/api">ODATA_4.0/api</a></td><td>OpenAPI definition for OData version 4.0</td></tr>
100+
<% } %>
101+
<% } %>
71102
<tr><td><a href="DatabaseStatus">DatabaseStatus</a></td><td>Database Status and Update</td></tr>
72103
</table>
73104
<a href="https://github.com/FraunhoferIOSB/FROST-Server">FROST-Server on GitHub</a>

FROST-Server.Tests/src/test/java/de/fraunhofer/iosb/ilt/statests/TestSuite.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -401,7 +401,7 @@ private void startHttpServer(int key, Map<String, String> parameters) {
401401

402402
handler.addEventListener(new HttpContextListener());
403403
handler.addServlet(DatabaseStatus.class, "/DatabaseStatus");
404-
handler.addServlet(ServletMain.class, "/*");
404+
handler.addServlet(ServletMain.class, "/");
405405
contextHandlerCollection.addHandler(handler);
406406
try {
407407
handler.start();

0 commit comments

Comments
 (0)