Skip to content

Commit 580ebc8

Browse files
authored
Merge pull request #1242 from rootvector2/swagger-ui-url-escape
make buildOpenApiUrl return a URI
2 parents 8468a1d + 212440b commit 580ebc8

1 file changed

Lines changed: 10 additions & 12 deletions

File tree

modules/openapi/src/main/java/org/apache/axis2/openapi/SwaggerUIHandler.java

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import java.io.PrintWriter;
3030
import java.io.InputStream;
3131
import java.io.ByteArrayOutputStream;
32+
import java.net.URI;
3233
import java.nio.charset.StandardCharsets;
3334
import java.util.Map;
3435

@@ -109,7 +110,7 @@ public void handleSwaggerUIRequest(HttpServletRequest request, HttpServletRespon
109110
addSecurityHeaders(response);
110111

111112
// Build OpenAPI specification URL from configuration
112-
String openApiUrl = buildOpenApiUrl(request);
113+
URI openApiUrl = buildOpenApiUrl(request);
113114

114115
// Generate customized Swagger UI HTML
115116
String swaggerHtml = generateSwaggerUIHtml(openApiUrl, request);
@@ -227,26 +228,23 @@ public void handleMcpCatalogRequest(HttpServletRequest request, HttpServletRespo
227228
/**
228229
* Build the URL for the OpenAPI specification endpoint using configuration.
229230
*/
230-
private String buildOpenApiUrl(HttpServletRequest request) {
231+
private URI buildOpenApiUrl(HttpServletRequest request) {
231232
// Check if URL is configured in SwaggerUiConfig
232233
if (swaggerUiConfig != null && swaggerUiConfig.getUrl() != null) {
233234
String configuredUrl = swaggerUiConfig.getUrl();
234235
if (configuredUrl.startsWith("http")) {
235-
return configuredUrl; // Absolute URL
236+
return URI.create(configuredUrl); // Absolute URL
236237
} else if (configuredUrl.startsWith("/")) {
237238
// Relative URL - build full URL
238-
return buildBaseUrl(request) + configuredUrl;
239+
return URI.create(buildBaseUrl(request) + configuredUrl);
239240
} else {
240241
// Relative path - append to current path
241-
return buildBaseUrl(request) + "/" + configuredUrl;
242+
return URI.create(buildBaseUrl(request) + "/" + configuredUrl);
242243
}
243244
}
244245

245246
// Build default URL
246-
StringBuilder url = new StringBuilder();
247-
url.append(buildBaseUrl(request));
248-
url.append("/openapi.json");
249-
return url.toString();
247+
return URI.create(buildBaseUrl(request) + "/openapi.json");
250248
}
251249

252250
/**
@@ -273,7 +271,7 @@ private String buildBaseUrl(HttpServletRequest request) {
273271
/**
274272
* Generate HTML for Swagger UI page with configuration-driven customization.
275273
*/
276-
private String generateSwaggerUIHtml(String openApiUrl, HttpServletRequest request) {
274+
private String generateSwaggerUIHtml(URI openApiUrl, HttpServletRequest request) {
277275
String swaggerUiVersion = configuration.getSwaggerUiVersion() != null ?
278276
configuration.getSwaggerUiVersion() : DEFAULT_SWAGGER_UI_VERSION;
279277

@@ -384,15 +382,15 @@ private String generateHeader() {
384382
/**
385383
* Generate Swagger UI initialization script with configuration.
386384
*/
387-
private String generateSwaggerUIScript(String openApiUrl) {
385+
private String generateSwaggerUIScript(URI openApiUrl) {
388386
String configJs = swaggerUiConfig.toJavaScriptConfig();
389387

390388
StringBuilder script = new StringBuilder();
391389
script.append(" <script>\n")
392390
.append(" window.onload = function() {\n")
393391
.append(" const ui = SwaggerUIBundle(Object.assign(")
394392
.append(configJs).append(", {\n")
395-
.append(" url: '").append(openApiUrl).append("',\n")
393+
.append(" url: '").append(openApiUrl.toString()).append("',\n")
396394
.append(" dom_id: '#swagger-ui',\n")
397395
.append(" presets: [\n")
398396
.append(" SwaggerUIBundle.presets.apis,\n")

0 commit comments

Comments
 (0)