|
|
|
|
@ -1,5 +1,5 @@
@@ -1,5 +1,5 @@
|
|
|
|
|
/* |
|
|
|
|
* Copyright 2002-2018 the original author or authors. |
|
|
|
|
* Copyright 2002-2022 the original author or authors. |
|
|
|
|
* |
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
|
|
* you may not use this file except in compliance with the License. |
|
|
|
|
@ -19,28 +19,42 @@ package org.springframework.test.web.servlet.htmlunit;
@@ -19,28 +19,42 @@ package org.springframework.test.web.servlet.htmlunit;
|
|
|
|
|
import org.springframework.mock.web.MockHttpServletRequest; |
|
|
|
|
import org.springframework.test.web.servlet.request.RequestPostProcessor; |
|
|
|
|
import org.springframework.util.Assert; |
|
|
|
|
import org.springframework.util.StringUtils; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* {@link RequestPostProcessor} for forward requests. |
|
|
|
|
* {@link RequestPostProcessor} to update the request for a forwarded dispatch. |
|
|
|
|
* |
|
|
|
|
* @author Rob Winch |
|
|
|
|
* @author Sam Brannen |
|
|
|
|
* @author Rossen Stoyanchev |
|
|
|
|
* @since 4.2 |
|
|
|
|
*/ |
|
|
|
|
final class ForwardRequestPostProcessor implements RequestPostProcessor { |
|
|
|
|
|
|
|
|
|
private final String forwardUrl; |
|
|
|
|
private final String forwardedUrl; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public ForwardRequestPostProcessor(String forwardUrl) { |
|
|
|
|
Assert.hasText(forwardUrl, "Forward URL must not be null or empty"); |
|
|
|
|
this.forwardUrl = forwardUrl; |
|
|
|
|
public ForwardRequestPostProcessor(String forwardedUrl) { |
|
|
|
|
Assert.hasText(forwardedUrl, "Forwarded URL must not be null or empty"); |
|
|
|
|
this.forwardedUrl = forwardedUrl; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public MockHttpServletRequest postProcessRequest(MockHttpServletRequest request) { |
|
|
|
|
request.setServletPath(this.forwardUrl); |
|
|
|
|
request.setRequestURI(this.forwardedUrl); |
|
|
|
|
request.setServletPath(initServletPath(request.getContextPath())); |
|
|
|
|
return request; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private String initServletPath(String contextPath) { |
|
|
|
|
if (StringUtils.hasText(contextPath)) { |
|
|
|
|
Assert.state(this.forwardedUrl.startsWith(contextPath), "Forward supported to same contextPath only"); |
|
|
|
|
return (this.forwardedUrl.length() > contextPath.length() ? |
|
|
|
|
this.forwardedUrl.substring(contextPath.length()) : ""); |
|
|
|
|
} |
|
|
|
|
else { |
|
|
|
|
return this.forwardedUrl; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|