Include "trace" info in whitelabel error views
This commit shows the stacktrace information in default WhiteLabel error views for Spring MVC and Spring WebFlux. This information is only shown if it is present in the model map, which depends on the `server.error.include-stacktrace` configuration property. Closes gh-12838pull/14836/head
parent
30cd86bab5
commit
2c3e8de959
@ -1,61 +0,0 @@
|
||||
/*
|
||||
* Copyright 2012-2017 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.autoconfigure.web.servlet.error;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import org.springframework.util.PropertyPlaceholderHelper;
|
||||
|
||||
/**
|
||||
* {@link PropertyPlaceholderHelper} that doesn't allow recursive resolution.
|
||||
*
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
class NonRecursivePropertyPlaceholderHelper extends PropertyPlaceholderHelper {
|
||||
|
||||
NonRecursivePropertyPlaceholderHelper(String placeholderPrefix,
|
||||
String placeholderSuffix) {
|
||||
super(placeholderPrefix, placeholderSuffix);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String parseStringValue(String strVal,
|
||||
PlaceholderResolver placeholderResolver, Set<String> visitedPlaceholders) {
|
||||
return super.parseStringValue(strVal,
|
||||
new NonRecursivePlaceholderResolver(placeholderResolver),
|
||||
visitedPlaceholders);
|
||||
}
|
||||
|
||||
private static class NonRecursivePlaceholderResolver implements PlaceholderResolver {
|
||||
|
||||
private final PlaceholderResolver resolver;
|
||||
|
||||
NonRecursivePlaceholderResolver(PlaceholderResolver resolver) {
|
||||
this.resolver = resolver;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String resolvePlaceholder(String placeholderName) {
|
||||
if (this.resolver instanceof NonRecursivePlaceholderResolver) {
|
||||
return null;
|
||||
}
|
||||
return this.resolver.resolvePlaceholder(placeholderName);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -1,52 +0,0 @@
|
||||
/*
|
||||
* Copyright 2012-2017 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.autoconfigure.web.servlet.error;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
/**
|
||||
* Tests for {@link NonRecursivePropertyPlaceholderHelper}.
|
||||
*
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
public class NonRecursivePropertyPlaceholderHelperTests {
|
||||
|
||||
private final NonRecursivePropertyPlaceholderHelper helper = new NonRecursivePropertyPlaceholderHelper(
|
||||
"${", "}");
|
||||
|
||||
@Test
|
||||
public void canResolve() {
|
||||
Properties properties = new Properties();
|
||||
properties.put("a", "b");
|
||||
String result = this.helper.replacePlaceholders("${a}", properties);
|
||||
assertThat(result).isEqualTo("b");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void cannotResolveRecursive() {
|
||||
Properties properties = new Properties();
|
||||
properties.put("a", "${b}");
|
||||
properties.put("b", "c");
|
||||
String result = this.helper.replacePlaceholders("${a}", properties);
|
||||
assertThat(result).isEqualTo("${b}");
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue