Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
360d392e
Commit
360d392e
authored
Jun 04, 2018
by
Madhura Bhave
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch '2.0.x'
parents
ef5301d0
60a4d67b
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
89 additions
and
5 deletions
+89
-5
TraceableHttpServletRequest.java
...ctuate/web/trace/servlet/TraceableHttpServletRequest.java
+22
-5
TraceableHttpServletRequestTests.java
...e/web/trace/servlet/TraceableHttpServletRequestTests.java
+67
-0
No files found.
spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/web/trace/servlet/TraceableHttpServletRequest.java
View file @
360d392e
...
@@ -17,6 +17,8 @@
...
@@ -17,6 +17,8 @@
package
org
.
springframework
.
boot
.
actuate
.
web
.
trace
.
servlet
;
package
org
.
springframework
.
boot
.
actuate
.
web
.
trace
.
servlet
;
import
java.net.URI
;
import
java.net.URI
;
import
java.net.URISyntaxException
;
import
java.nio.charset.StandardCharsets
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.Enumeration
;
import
java.util.Enumeration
;
import
java.util.LinkedHashMap
;
import
java.util.LinkedHashMap
;
...
@@ -27,6 +29,7 @@ import javax.servlet.http.HttpServletRequest;
...
@@ -27,6 +29,7 @@ import javax.servlet.http.HttpServletRequest;
import
org.springframework.boot.actuate.trace.http.TraceableRequest
;
import
org.springframework.boot.actuate.trace.http.TraceableRequest
;
import
org.springframework.util.StringUtils
;
import
org.springframework.util.StringUtils
;
import
org.springframework.web.util.UriUtils
;
/**
/**
* An adapter that exposes an {@link HttpServletRequest} as a {@link TraceableRequest}.
* An adapter that exposes an {@link HttpServletRequest} as a {@link TraceableRequest}.
...
@@ -48,12 +51,26 @@ final class TraceableHttpServletRequest implements TraceableRequest {
...
@@ -48,12 +51,26 @@ final class TraceableHttpServletRequest implements TraceableRequest {
@Override
@Override
public
URI
getUri
()
{
public
URI
getUri
()
{
StringBuffer
urlBuffer
=
this
.
request
.
getRequestURL
();
String
queryString
=
this
.
request
.
getQueryString
();
if
(
StringUtils
.
hasText
(
this
.
request
.
getQueryString
()))
{
if
(!
StringUtils
.
hasText
(
queryString
))
{
urlBuffer
.
append
(
"?"
);
return
URI
.
create
(
this
.
request
.
getRequestURL
().
toString
());
urlBuffer
.
append
(
this
.
request
.
getQueryString
());
}
try
{
StringBuffer
urlBuffer
=
appendQueryString
(
queryString
);
return
new
URI
(
urlBuffer
.
toString
());
}
catch
(
URISyntaxException
ex
)
{
String
encoded
=
UriUtils
.
encode
(
queryString
,
StandardCharsets
.
UTF_8
);
StringBuffer
urlBuffer
=
appendQueryString
(
encoded
);
return
URI
.
create
(
urlBuffer
.
toString
());
}
}
return
URI
.
create
(
urlBuffer
.
toString
());
}
private
StringBuffer
appendQueryString
(
String
queryString
)
{
StringBuffer
urlBuffer
=
this
.
request
.
getRequestURL
();
urlBuffer
.
append
(
"?"
);
urlBuffer
.
append
(
queryString
);
return
urlBuffer
;
}
}
@Override
@Override
...
...
spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/web/trace/servlet/TraceableHttpServletRequestTests.java
0 → 100644
View file @
360d392e
/*
* Copyright 2012-2018 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.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org
.
springframework
.
boot
.
actuate
.
web
.
trace
.
servlet
;
import
org.junit.Before
;
import
org.junit.Test
;
import
org.springframework.mock.web.MockHttpServletRequest
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
/**
* Tests for {@link TraceableHttpServletRequest}.
*
* @author Madhura Bhave
*/
public
class
TraceableHttpServletRequestTests
{
private
MockHttpServletRequest
request
;
@Before
public
void
setup
()
{
this
.
request
=
new
MockHttpServletRequest
(
"GET"
,
"/script"
);
}
@Test
public
void
getUriWithoutQueryStringShouldReturnUri
()
{
validate
(
"http://localhost/script"
);
}
@Test
public
void
getUriShouldReturnUriWithQueryString
()
{
this
.
request
.
setQueryString
(
"a=b"
);
validate
(
"http://localhost/script?a=b"
);
}
@Test
public
void
getUriWithSpecialCharactersInQueryStringShouldEncode
()
{
this
.
request
.
setQueryString
(
"a=${b}"
);
validate
(
"http://localhost/script?a%3D%24%7Bb%7D"
);
}
@Test
public
void
getUriWithSpecialCharactersEncodedShouldNotDoubleEncode
()
{
this
.
request
.
setQueryString
(
"a%3D%24%7Bb%7D"
);
validate
(
"http://localhost/script?a%3D%24%7Bb%7D"
);
}
private
void
validate
(
String
expectedUri
)
{
TraceableHttpServletRequest
trace
=
new
TraceableHttpServletRequest
(
this
.
request
);
assertThat
(
trace
.
getUri
().
toString
()).
isEqualTo
(
expectedUri
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment