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
3444ebbc
Commit
3444ebbc
authored
Sep 11, 2015
by
Phillip Webb
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch '1.2.x'
parents
93700d00
11d59df3
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
118 additions
and
7 deletions
+118
-7
MyException.java
...mcat-jsp/src/main/java/sample/tomcat/jsp/MyException.java
+25
-0
MyRestResponse.java
...t-jsp/src/main/java/sample/tomcat/jsp/MyRestResponse.java
+31
-0
WelcomeController.java
...sp/src/main/java/sample/tomcat/jsp/WelcomeController.java
+20
-0
ErrorPageFilter.java
...org/springframework/boot/context/web/ErrorPageFilter.java
+7
-4
SpringBootServletInitializer.java
...mework/boot/context/web/SpringBootServletInitializer.java
+15
-1
SpringBootServletInitializerTests.java
...k/boot/context/web/SpringBootServletInitializerTests.java
+20
-2
No files found.
spring-boot-samples/spring-boot-sample-tomcat-jsp/src/main/java/sample/tomcat/jsp/MyException.java
0 → 100644
View file @
3444ebbc
/*
* Copyright 2012-2015 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
sample
.
tomcat
.
jsp
;
public
class
MyException
extends
RuntimeException
{
public
MyException
(
String
message
)
{
super
(
message
);
}
}
spring-boot-samples/spring-boot-sample-tomcat-jsp/src/main/java/sample/tomcat/jsp/MyRestResponse.java
0 → 100644
View file @
3444ebbc
/*
* Copyright 2012-2015 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
sample
.
tomcat
.
jsp
;
public
class
MyRestResponse
{
private
String
message
;
public
MyRestResponse
(
String
message
)
{
this
.
message
=
message
;
}
public
String
getMessage
()
{
return
this
.
message
;
}
}
spring-boot-samples/spring-boot-sample-tomcat-jsp/src/main/java/sample/tomcat/jsp/WelcomeController.java
View file @
3444ebbc
...
...
@@ -20,8 +20,12 @@ import java.util.Date;
import
java.util.Map
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.web.bind.annotation.ExceptionHandler
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
org.springframework.web.bind.annotation.ResponseStatus
;
@Controller
public
class
WelcomeController
{
...
...
@@ -36,4 +40,20 @@ public class WelcomeController {
return
"welcome"
;
}
@RequestMapping
(
"/fail"
)
public
String
fail
()
{
throw
new
MyException
(
"Oh dear!"
);
}
@RequestMapping
(
"/fail2"
)
public
String
fail2
()
{
throw
new
IllegalStateException
();
}
@ExceptionHandler
(
MyException
.
class
)
@ResponseStatus
(
HttpStatus
.
BAD_REQUEST
)
public
@ResponseBody
MyRestResponse
handleMyRuntimeException
(
MyException
exception
)
{
return
new
MyRestResponse
(
"Some data I want to send back to the client."
);
}
}
spring-boot/src/main/java/org/springframework/boot/context/web/ErrorPageFilter.java
View file @
3444ebbc
...
...
@@ -117,9 +117,9 @@ public class ErrorPageFilter extends AbstractConfigurableEmbeddedServletContaine
ErrorWrapperResponse
wrapped
=
new
ErrorWrapperResponse
(
response
);
try
{
chain
.
doFilter
(
request
,
wrapped
);
i
nt
status
=
wrapped
.
getStatus
();
if
(
status
>=
400
)
{
handleErrorStatus
(
request
,
response
,
status
,
wrapped
.
getMessage
());
i
f
(
wrapped
.
hasErrorToSend
())
{
handleErrorStatus
(
request
,
response
,
wrapped
.
getStatus
(),
wrapped
.
getMessage
());
response
.
flushBuffer
();
}
else
if
(!
request
.
isAsyncStarted
()
&&
!
response
.
isCommitted
())
{
...
...
@@ -143,7 +143,6 @@ public class ErrorPageFilter extends AbstractConfigurableEmbeddedServletContaine
handleCommittedResponse
(
request
,
null
);
return
;
}
String
errorPath
=
getErrorPath
(
this
.
statuses
,
status
);
if
(
errorPath
==
null
)
{
response
.
sendError
(
status
,
message
);
...
...
@@ -324,6 +323,10 @@ public class ErrorPageFilter extends AbstractConfigurableEmbeddedServletContaine
return
this
.
message
;
}
public
boolean
hasErrorToSend
()
{
return
this
.
hasErrorToSend
;
}
}
}
spring-boot/src/main/java/org/springframework/boot/context/web/SpringBootServletInitializer.java
View file @
3444ebbc
...
...
@@ -64,6 +64,18 @@ public abstract class SpringBootServletInitializer implements WebApplicationInit
protected
final
Log
logger
=
LogFactory
.
getLog
(
getClass
());
private
boolean
registerErrorPageFilter
=
true
;
/**
* Set if the {@link ErrorPageFilter} should be registered. Set to {@code false} if
* error page mappings should be handled via the Servlet container and not Spring
* Boot.
* @param registerErrorPageFilter if the {@link ErrorPageFilter} should be registered.
*/
protected
final
void
setRegisterErrorPageFilter
(
boolean
registerErrorPageFilter
)
{
this
.
registerErrorPageFilter
=
registerErrorPageFilter
;
}
@Override
public
void
onStartup
(
ServletContext
servletContext
)
throws
ServletException
{
WebApplicationContext
rootAppContext
=
createRootApplicationContext
(
servletContext
);
...
...
@@ -106,7 +118,9 @@ public abstract class SpringBootServletInitializer implements WebApplicationInit
"No SpringApplication sources have been defined. Either override the "
+
"configure method or add an @Configuration annotation"
);
// Ensure error pages are registered
application
.
getSources
().
add
(
ErrorPageFilter
.
class
);
if
(
this
.
registerErrorPageFilter
)
{
application
.
getSources
().
add
(
ErrorPageFilter
.
class
);
}
return
run
(
application
);
}
...
...
spring-boot/src/test/java/org/springframework/boot/context/web/SpringBootServletInitializerTests.java
View file @
3444ebbc
...
...
@@ -38,7 +38,7 @@ import static org.hamcrest.Matchers.is;
import
static
org
.
junit
.
Assert
.
assertThat
;
/**
* Tests for {@link SpringBootServletInitializer
Tests
}.
* Tests for {@link SpringBootServletInitializer}.
*
* @author Phillip Webb
* @author Andy Wilkinson
...
...
@@ -82,8 +82,8 @@ public class SpringBootServletInitializerTests {
assertThat
(
servletInitializer
.
applicationBuilder
.
built
,
equalTo
(
true
));
}
@SuppressWarnings
(
"rawtypes"
)
@Test
@SuppressWarnings
(
"rawtypes"
)
public
void
mainClassHasSensibleDefault
()
throws
Exception
{
new
WithConfigurationAnnotation
()
.
createRootApplicationContext
(
this
.
servletContext
);
...
...
@@ -93,6 +93,14 @@ public class SpringBootServletInitializerTests {
is
(
equalTo
((
Class
)
WithConfigurationAnnotation
.
class
)));
}
@Test
public
void
withErrorPageFilterNotRegistered
()
throws
Exception
{
new
WithErrorPageFilterNotRegistered
()
.
createRootApplicationContext
(
this
.
servletContext
);
assertThat
(
this
.
application
.
getSources
(),
equalToSet
(
WithErrorPageFilterNotRegistered
.
class
));
}
private
Matcher
<?
super
Set
<
Object
>>
equalToSet
(
Object
...
items
)
{
Set
<
Object
>
set
=
new
LinkedHashSet
<
Object
>();
Collections
.
addAll
(
set
,
items
);
...
...
@@ -138,6 +146,16 @@ public class SpringBootServletInitializerTests {
}
@Configuration
public
class
WithErrorPageFilterNotRegistered
extends
MockSpringBootServletInitializer
{
public
WithErrorPageFilterNotRegistered
()
{
setRegisterErrorPageFilter
(
false
);
}
}
@Configuration
public
static
class
Config
{
...
...
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