From 0a5a42368e6234c830ddb3ca09e09e6b91485283 Mon Sep 17 00:00:00 2001 From: hduelme Date: Sat, 11 Feb 2023 21:45:12 +0100 Subject: [PATCH] Remove unnecessary boxing for integers. Resolves #1334. --- .../http/LocationTransformerObjectSupport.java | 12 ++++++++++-- .../adapter/DefaultMethodEndpointAdapterTest.java | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/spring-ws-core/src/main/java/org/springframework/ws/transport/http/LocationTransformerObjectSupport.java b/spring-ws-core/src/main/java/org/springframework/ws/transport/http/LocationTransformerObjectSupport.java index 2c9e23ce..8a5026f0 100644 --- a/spring-ws-core/src/main/java/org/springframework/ws/transport/http/LocationTransformerObjectSupport.java +++ b/spring-ws-core/src/main/java/org/springframework/ws/transport/http/LocationTransformerObjectSupport.java @@ -87,8 +87,16 @@ public abstract class LocationTransformerObjectSupport extends TransformerObject * This method is only called when the {@code transformLocations} property is true. */ protected String transformLocation(String location, HttpServletRequest request) { - StringBuilder url = new StringBuilder(request.getScheme()); - url.append("://").append(request.getServerName()).append(':').append(request.getServerPort()); + String xForwardedProto = request.getHeader("X-Forwarded-Proto"); + String xForwardedHost = request.getHeader("X-Forwarded-Host"); + String xForwardedPort = request.getHeader("X-Forwarded-Port"); + + String scheme = StringUtils.hasText(xForwardedProto) ? xForwardedProto : request.getScheme(); + String serverName = StringUtils.hasText(xForwardedHost) ? xForwardedHost : request.getServerName(); + int serverPort = StringUtils.hasText(xForwardedPort) ? Integer.parseInt(xForwardedPort) : request.getServerPort(); + + StringBuilder url = new StringBuilder(scheme); + url.append("://").append(serverName).append(':').append(serverPort); if (location.startsWith("/")) { // a relative path, prepend the context path url.append(request.getContextPath()).append(location); diff --git a/spring-ws-core/src/test/java/org/springframework/ws/server/endpoint/adapter/DefaultMethodEndpointAdapterTest.java b/spring-ws-core/src/test/java/org/springframework/ws/server/endpoint/adapter/DefaultMethodEndpointAdapterTest.java index 12e343e9..3aef155c 100644 --- a/spring-ws-core/src/test/java/org/springframework/ws/server/endpoint/adapter/DefaultMethodEndpointAdapterTest.java +++ b/spring-ws-core/src/test/java/org/springframework/ws/server/endpoint/adapter/DefaultMethodEndpointAdapterTest.java @@ -142,7 +142,7 @@ public class DefaultMethodEndpointAdapterTest { expect(argumentResolver1.supportsParameter(isA(MethodParameter.class))).andReturn(false); expect(argumentResolver2.supportsParameter(isA(MethodParameter.class))).andReturn(true); expect(argumentResolver2.resolveArgument(eq(messageContext), isA(MethodParameter.class))) - .andReturn(new Integer(42)); + .andReturn(42); expect(returnValueHandler.supportsReturnType(isA(MethodParameter.class))).andReturn(true); returnValueHandler.handleReturnValue(eq(messageContext), isA(MethodParameter.class), eq(value));