Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
spring-cloud-netflix
Project
Overview
Details
Activity
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
openSource
spring-cloud-netflix
Commits
64e5a2e0
Commit
64e5a2e0
authored
Jan 07, 2015
by
Spencer Gibb
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
protect against a null RequestDispatcher
parent
758d86e7
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
69 additions
and
1 deletion
+69
-1
SendErrorFilter.java
...work/cloud/netflix/zuul/filters/post/SendErrorFilter.java
+10
-1
SampleZuulProxyApplicationTests.java
...k/cloud/netflix/zuul/SampleZuulProxyApplicationTests.java
+8
-0
SendErrorFilterTests.java
...cloud/netflix/zuul/filters/post/SendErrorFilterTests.java
+51
-0
No files found.
spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/post/SendErrorFilter.java
View file @
64e5a2e0
...
...
@@ -6,6 +6,8 @@ import com.netflix.zuul.context.RequestContext;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Value
;
import
javax.servlet.RequestDispatcher
;
/**
* @author Spencer Gibb
*/
...
...
@@ -42,10 +44,17 @@ public class SendErrorFilter extends ZuulFilter {
ctx
.
getRequest
().
setAttribute
(
"javax.servlet.error.exception"
,
e
);
}
ctx
.
getRequest
().
setAttribute
(
"javax.servlet.error.status_code"
,
statusCode
);
ctx
.
getRequest
().
getRequestDispatcher
(
errorPath
).
forward
(
ctx
.
getRequest
(),
ctx
.
getResponse
());
RequestDispatcher
dispatcher
=
ctx
.
getRequest
().
getRequestDispatcher
(
errorPath
);
if
(
dispatcher
!=
null
)
{
dispatcher
.
forward
(
ctx
.
getRequest
(),
ctx
.
getResponse
());
}
}
catch
(
Exception
e
)
{
Throwables
.
propagate
(
e
);
}
return
null
;
}
public
void
setErrorPath
(
String
errorPath
)
{
this
.
errorPath
=
errorPath
;
}
}
spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/SampleZuulProxyApplicationTests.java
View file @
64e5a2e0
...
...
@@ -81,6 +81,14 @@ public class SampleZuulProxyApplicationTests {
assertEquals
(
"Deleted!"
,
result
.
getBody
());
}
@Test
public
void
testNotFound
()
{
ResponseEntity
<
String
>
result
=
new
TestRestTemplate
().
exchange
(
"http://localhost:"
+
port
+
"/myinvalidpath"
,
HttpMethod
.
GET
,
new
HttpEntity
<
Void
>((
Void
)
null
),
String
.
class
);
assertEquals
(
HttpStatus
.
NOT_FOUND
,
result
.
getStatusCode
());
}
}
//Don't use @SpringBootApplication because we don't want to component scan
...
...
spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/filters/post/SendErrorFilterTests.java
0 → 100644
View file @
64e5a2e0
package
org
.
springframework
.
cloud
.
netflix
.
zuul
.
filters
.
post
;
import
com.netflix.zuul.context.RequestContext
;
import
org.junit.After
;
import
org.junit.Test
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.mock.web.MockHttpServletRequest
;
import
org.springframework.mock.web.MockHttpServletResponse
;
import
javax.servlet.http.HttpServletRequest
;
import
static
org
.
junit
.
Assert
.*;
import
static
org
.
mockito
.
Mockito
.*;
/**
* @author Spencer Gibb
*/
public
class
SendErrorFilterTests
{
@After
public
void
reset
()
{
RequestContext
.
testSetCurrentContext
(
null
);
}
@Test
public
void
runsNormally
()
{
SendErrorFilter
filter
=
createSendErrorFilter
(
new
MockHttpServletRequest
());
assertTrue
(
"shouldFilter returned false"
,
filter
.
shouldFilter
());
filter
.
run
();
}
private
SendErrorFilter
createSendErrorFilter
(
HttpServletRequest
request
)
{
RequestContext
context
=
new
RequestContext
();
context
.
setRequest
(
request
);
context
.
setResponse
(
new
MockHttpServletResponse
());
context
.
set
(
"error.status_code"
,
HttpStatus
.
NOT_FOUND
.
value
());
RequestContext
.
testSetCurrentContext
(
context
);
SendErrorFilter
filter
=
new
SendErrorFilter
();
filter
.
setErrorPath
(
"/error"
);
return
filter
;
}
@Test
public
void
noRequestDispatcher
()
{
SendErrorFilter
filter
=
createSendErrorFilter
(
mock
(
HttpServletRequest
.
class
));
assertTrue
(
"shouldFilter returned false"
,
filter
.
shouldFilter
());
filter
.
run
();
}
}
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