Merge branch '3.3.x'

This commit is contained in:
Phillip Webb 2024-12-04 15:04:22 -08:00
commit 916efb632c
17 changed files with 68 additions and 50 deletions

View File

@ -32,7 +32,7 @@ import org.apache.commons.logging.LogFactory;
import org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy; import org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy;
import org.hibernate.boot.model.naming.ImplicitNamingStrategy; import org.hibernate.boot.model.naming.ImplicitNamingStrategy;
import org.hibernate.boot.model.naming.PhysicalNamingStrategy; import org.hibernate.boot.model.naming.PhysicalNamingStrategy;
import org.hibernate.cfg.AvailableSettings; import org.hibernate.cfg.ManagedBeanSettings;
import org.springframework.aot.hint.MemberCategory; import org.springframework.aot.hint.MemberCategory;
import org.springframework.aot.hint.RuntimeHints; import org.springframework.aot.hint.RuntimeHints;
@ -121,7 +121,7 @@ class HibernateJpaConfiguration extends JpaBaseConfiguration {
List<HibernatePropertiesCustomizer> customizers = new ArrayList<>(); List<HibernatePropertiesCustomizer> customizers = new ArrayList<>();
if (ClassUtils.isPresent("org.hibernate.resource.beans.container.spi.BeanContainer", if (ClassUtils.isPresent("org.hibernate.resource.beans.container.spi.BeanContainer",
getClass().getClassLoader())) { getClass().getClassLoader())) {
customizers.add((properties) -> properties.put(AvailableSettings.BEAN_CONTAINER, customizers.add((properties) -> properties.put(ManagedBeanSettings.BEAN_CONTAINER,
new SpringBeanContainer(beanFactory))); new SpringBeanContainer(beanFactory)));
} }
if (physicalNamingStrategy != null || implicitNamingStrategy != null) { if (physicalNamingStrategy != null || implicitNamingStrategy != null) {

View File

@ -22,7 +22,9 @@ import java.util.Map;
import java.util.function.Supplier; import java.util.function.Supplier;
import org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy; import org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy;
import org.hibernate.cfg.AvailableSettings; import org.hibernate.cfg.MappingSettings;
import org.hibernate.cfg.PersistenceSettings;
import org.hibernate.cfg.SchemaToolingSettings;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy; import org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy;
@ -86,10 +88,10 @@ public class HibernateProperties {
getNaming().applyNamingStrategies(result); getNaming().applyNamingStrategies(result);
String ddlAuto = determineDdlAuto(existing, settings::getDdlAuto); String ddlAuto = determineDdlAuto(existing, settings::getDdlAuto);
if (StringUtils.hasText(ddlAuto) && !"none".equals(ddlAuto)) { if (StringUtils.hasText(ddlAuto) && !"none".equals(ddlAuto)) {
result.put(AvailableSettings.HBM2DDL_AUTO, ddlAuto); result.put(SchemaToolingSettings.HBM2DDL_AUTO, ddlAuto);
} }
else { else {
result.remove(AvailableSettings.HBM2DDL_AUTO); result.remove(SchemaToolingSettings.HBM2DDL_AUTO);
} }
Collection<HibernatePropertiesCustomizer> customizers = settings.getHibernatePropertiesCustomizers(); Collection<HibernatePropertiesCustomizer> customizers = settings.getHibernatePropertiesCustomizers();
if (!ObjectUtils.isEmpty(customizers)) { if (!ObjectUtils.isEmpty(customizers)) {
@ -99,20 +101,20 @@ public class HibernateProperties {
} }
private void applyScanner(Map<String, Object> result) { private void applyScanner(Map<String, Object> result) {
if (!result.containsKey(AvailableSettings.SCANNER) && ClassUtils.isPresent(DISABLED_SCANNER_CLASS, null)) { if (!result.containsKey(PersistenceSettings.SCANNER) && ClassUtils.isPresent(DISABLED_SCANNER_CLASS, null)) {
result.put(AvailableSettings.SCANNER, DISABLED_SCANNER_CLASS); result.put(PersistenceSettings.SCANNER, DISABLED_SCANNER_CLASS);
} }
} }
private String determineDdlAuto(Map<String, String> existing, Supplier<String> defaultDdlAuto) { private String determineDdlAuto(Map<String, String> existing, Supplier<String> defaultDdlAuto) {
String ddlAuto = existing.get(AvailableSettings.HBM2DDL_AUTO); String ddlAuto = existing.get(SchemaToolingSettings.HBM2DDL_AUTO);
if (ddlAuto != null) { if (ddlAuto != null) {
return ddlAuto; return ddlAuto;
} }
if (this.ddlAuto != null) { if (this.ddlAuto != null) {
return this.ddlAuto; return this.ddlAuto;
} }
if (existing.get(AvailableSettings.JAKARTA_HBM2DDL_DATABASE_ACTION) != null) { if (existing.get(SchemaToolingSettings.JAKARTA_HBM2DDL_DATABASE_ACTION) != null) {
return null; return null;
} }
return defaultDdlAuto.get(); return defaultDdlAuto.get();
@ -147,9 +149,9 @@ public class HibernateProperties {
} }
private void applyNamingStrategies(Map<String, Object> properties) { private void applyNamingStrategies(Map<String, Object> properties) {
applyNamingStrategy(properties, AvailableSettings.IMPLICIT_NAMING_STRATEGY, this.implicitStrategy, applyNamingStrategy(properties, MappingSettings.IMPLICIT_NAMING_STRATEGY, this.implicitStrategy,
SpringImplicitNamingStrategy.class::getName); SpringImplicitNamingStrategy.class::getName);
applyNamingStrategy(properties, AvailableSettings.PHYSICAL_NAMING_STRATEGY, this.physicalStrategy, applyNamingStrategy(properties, MappingSettings.PHYSICAL_NAMING_STRATEGY, this.physicalStrategy,
CamelCaseToUnderscoresNamingStrategy.class::getName); CamelCaseToUnderscoresNamingStrategy.class::getName);
} }

View File

@ -115,13 +115,20 @@ class ReactiveOAuth2ResourceServerJwkConfiguration {
List<OAuth2TokenValidator<Jwt>> validators = new ArrayList<>(); List<OAuth2TokenValidator<Jwt>> validators = new ArrayList<>();
validators.add(defaultValidator); validators.add(defaultValidator);
if (!CollectionUtils.isEmpty(audiences)) { if (!CollectionUtils.isEmpty(audiences)) {
validators.add(new JwtClaimValidator<List<String>>(JwtClaimNames.AUD, validators.add(audValidator(audiences));
(aud) -> aud != null && !Collections.disjoint(aud, audiences)));
} }
validators.addAll(this.additionalValidators); validators.addAll(this.additionalValidators);
return new DelegatingOAuth2TokenValidator<>(validators); return new DelegatingOAuth2TokenValidator<>(validators);
} }
private JwtClaimValidator<List<String>> audValidator(List<String> audiences) {
return new JwtClaimValidator<>(JwtClaimNames.AUD, (aud) -> nullSafeDisjoint(aud, audiences));
}
private boolean nullSafeDisjoint(List<String> c1, List<String> c2) {
return c1 != null && !Collections.disjoint(c1, c2);
}
@Bean @Bean
@Conditional(KeyValueCondition.class) @Conditional(KeyValueCondition.class)
NimbusReactiveJwtDecoder jwtDecoderByPublicKeyValue() throws Exception { NimbusReactiveJwtDecoder jwtDecoderByPublicKeyValue() throws Exception {

View File

@ -114,13 +114,20 @@ class OAuth2ResourceServerJwtConfiguration {
List<OAuth2TokenValidator<Jwt>> validators = new ArrayList<>(); List<OAuth2TokenValidator<Jwt>> validators = new ArrayList<>();
validators.add(defaultValidator); validators.add(defaultValidator);
if (!CollectionUtils.isEmpty(audiences)) { if (!CollectionUtils.isEmpty(audiences)) {
validators.add(new JwtClaimValidator<List<String>>(JwtClaimNames.AUD, validators.add(audValidator(audiences));
(aud) -> aud != null && !Collections.disjoint(aud, audiences)));
} }
validators.addAll(this.additionalValidators); validators.addAll(this.additionalValidators);
return new DelegatingOAuth2TokenValidator<>(validators); return new DelegatingOAuth2TokenValidator<>(validators);
} }
private JwtClaimValidator<List<String>> audValidator(List<String> audiences) {
return new JwtClaimValidator<>(JwtClaimNames.AUD, (aud) -> nullSafeDisjoint(aud, audiences));
}
private boolean nullSafeDisjoint(List<String> c1, List<String> c2) {
return c1 != null && !Collections.disjoint(c1, c2);
}
@Bean @Bean
@Conditional(KeyValueCondition.class) @Conditional(KeyValueCondition.class)
JwtDecoder jwtDecoderByPublicKeyValue() throws Exception { JwtDecoder jwtDecoderByPublicKeyValue() throws Exception {

View File

@ -162,7 +162,7 @@ class GroovyTemplateAutoConfigurationTests {
MarkupTemplateEngine engine = config.getTemplateEngine(); MarkupTemplateEngine engine = config.getTemplateEngine();
Writer writer = new StringWriter(); Writer writer = new StringWriter();
engine.createTemplate(new ClassPathResource("templates/message.tpl").getFile()) engine.createTemplate(new ClassPathResource("templates/message.tpl").getFile())
.make(new HashMap<String, Object>(Collections.singletonMap("greeting", "Hello World"))) .make(new HashMap<>(Collections.singletonMap("greeting", "Hello World")))
.writeTo(writer); .writeTo(writer);
assertThat(writer.toString()).contains("Hello World"); assertThat(writer.toString()).contains("Hello World");
} }

View File

@ -21,7 +21,9 @@ import java.util.function.Consumer;
import java.util.function.Supplier; import java.util.function.Supplier;
import org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy; import org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy;
import org.hibernate.cfg.AvailableSettings; import org.hibernate.cfg.MappingSettings;
import org.hibernate.cfg.PersistenceSettings;
import org.hibernate.cfg.SchemaToolingSettings;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock; import org.mockito.Mock;
@ -59,9 +61,9 @@ class HibernatePropertiesTests {
void noCustomNamingStrategy() { void noCustomNamingStrategy() {
this.contextRunner.run(assertHibernateProperties((hibernateProperties) -> { this.contextRunner.run(assertHibernateProperties((hibernateProperties) -> {
assertThat(hibernateProperties).doesNotContainKeys("hibernate.ejb.naming_strategy"); assertThat(hibernateProperties).doesNotContainKeys("hibernate.ejb.naming_strategy");
assertThat(hibernateProperties).containsEntry(AvailableSettings.PHYSICAL_NAMING_STRATEGY, assertThat(hibernateProperties).containsEntry(MappingSettings.PHYSICAL_NAMING_STRATEGY,
CamelCaseToUnderscoresNamingStrategy.class.getName()); CamelCaseToUnderscoresNamingStrategy.class.getName());
assertThat(hibernateProperties).containsEntry(AvailableSettings.IMPLICIT_NAMING_STRATEGY, assertThat(hibernateProperties).containsEntry(MappingSettings.IMPLICIT_NAMING_STRATEGY,
SpringImplicitNamingStrategy.class.getName()); SpringImplicitNamingStrategy.class.getName());
})); }));
} }
@ -73,8 +75,8 @@ class HibernatePropertiesTests {
"spring.jpa.hibernate.naming.physical-strategy:com.example.Physical") "spring.jpa.hibernate.naming.physical-strategy:com.example.Physical")
.run(assertHibernateProperties((hibernateProperties) -> { .run(assertHibernateProperties((hibernateProperties) -> {
assertThat(hibernateProperties).contains( assertThat(hibernateProperties).contains(
entry(AvailableSettings.IMPLICIT_NAMING_STRATEGY, "com.example.Implicit"), entry(MappingSettings.IMPLICIT_NAMING_STRATEGY, "com.example.Implicit"),
entry(AvailableSettings.PHYSICAL_NAMING_STRATEGY, "com.example.Physical")); entry(MappingSettings.PHYSICAL_NAMING_STRATEGY, "com.example.Physical"));
assertThat(hibernateProperties).doesNotContainKeys("hibernate.ejb.naming_strategy"); assertThat(hibernateProperties).doesNotContainKeys("hibernate.ejb.naming_strategy");
})); }));
} }
@ -87,8 +89,8 @@ class HibernatePropertiesTests {
.run(assertHibernateProperties((hibernateProperties) -> { .run(assertHibernateProperties((hibernateProperties) -> {
// You can override them as we don't provide any default // You can override them as we don't provide any default
assertThat(hibernateProperties).contains( assertThat(hibernateProperties).contains(
entry(AvailableSettings.IMPLICIT_NAMING_STRATEGY, "com.example.Implicit"), entry(MappingSettings.IMPLICIT_NAMING_STRATEGY, "com.example.Implicit"),
entry(AvailableSettings.PHYSICAL_NAMING_STRATEGY, "com.example.Physical")); entry(MappingSettings.PHYSICAL_NAMING_STRATEGY, "com.example.Physical"));
assertThat(hibernateProperties).doesNotContainKeys("hibernate.ejb.naming_strategy"); assertThat(hibernateProperties).doesNotContainKeys("hibernate.ejb.naming_strategy");
})); }));
} }
@ -96,15 +98,15 @@ class HibernatePropertiesTests {
@Test @Test
void scannerUsesDisabledScannerByDefault() { void scannerUsesDisabledScannerByDefault() {
this.contextRunner.run(assertHibernateProperties((hibernateProperties) -> assertThat(hibernateProperties) this.contextRunner.run(assertHibernateProperties((hibernateProperties) -> assertThat(hibernateProperties)
.containsEntry(AvailableSettings.SCANNER, "org.hibernate.boot.archive.scan.internal.DisabledScanner"))); .containsEntry(PersistenceSettings.SCANNER, "org.hibernate.boot.archive.scan.internal.DisabledScanner")));
} }
@Test @Test
void scannerCanBeCustomized() { void scannerCanBeCustomized() {
this.contextRunner.withPropertyValues( this.contextRunner.withPropertyValues(
"spring.jpa.properties.hibernate.archive.scanner:org.hibernate.boot.archive.scan.internal.StandardScanner") "spring.jpa.properties.hibernate.archive.scanner:org.hibernate.boot.archive.scan.internal.StandardScanner")
.run(assertHibernateProperties((hibernateProperties) -> assertThat(hibernateProperties) .run(assertHibernateProperties((hibernateProperties) -> assertThat(hibernateProperties).containsEntry(
.containsEntry(AvailableSettings.SCANNER, "org.hibernate.boot.archive.scan.internal.StandardScanner"))); PersistenceSettings.SCANNER, "org.hibernate.boot.archive.scan.internal.StandardScanner")));
} }
@Test @Test
@ -125,8 +127,8 @@ class HibernatePropertiesTests {
.withPropertyValues( .withPropertyValues(
"spring.jpa.properties.jakarta.persistence.schema-generation.database.action=drop-and-create") "spring.jpa.properties.jakarta.persistence.schema-generation.database.action=drop-and-create")
.run(assertHibernateProperties((hibernateProperties) -> { .run(assertHibernateProperties((hibernateProperties) -> {
assertThat(hibernateProperties).doesNotContainKey(AvailableSettings.HBM2DDL_AUTO); assertThat(hibernateProperties).doesNotContainKey(SchemaToolingSettings.HBM2DDL_AUTO);
assertThat(hibernateProperties).containsEntry(AvailableSettings.JAKARTA_HBM2DDL_DATABASE_ACTION, assertThat(hibernateProperties).containsEntry(SchemaToolingSettings.JAKARTA_HBM2DDL_DATABASE_ACTION,
"drop-and-create"); "drop-and-create");
then(this.ddlAutoSupplier).should(never()).get(); then(this.ddlAutoSupplier).should(never()).get();
})); }));
@ -134,7 +136,7 @@ class HibernatePropertiesTests {
private ContextConsumer<AssertableApplicationContext> assertDefaultDdlAutoNotInvoked(String expectedDdlAuto) { private ContextConsumer<AssertableApplicationContext> assertDefaultDdlAutoNotInvoked(String expectedDdlAuto) {
return assertHibernateProperties((hibernateProperties) -> { return assertHibernateProperties((hibernateProperties) -> {
assertThat(hibernateProperties).containsEntry(AvailableSettings.HBM2DDL_AUTO, expectedDdlAuto); assertThat(hibernateProperties).containsEntry(SchemaToolingSettings.HBM2DDL_AUTO, expectedDdlAuto);
then(this.ddlAutoSupplier).should(never()).get(); then(this.ddlAutoSupplier).should(never()).get();
}); });
} }

View File

@ -34,8 +34,8 @@ import org.assertj.core.api.InstanceOfAssertFactory;
import org.assertj.core.api.MapAssert; import org.assertj.core.api.MapAssert;
import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.mockito.ArgumentMatchers;
import org.mockito.InOrder; import org.mockito.InOrder;
import org.mockito.Mockito;
import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.test.context.TestConfiguration; import org.springframework.boot.test.context.TestConfiguration;
@ -153,7 +153,7 @@ class PulsarConfigurationTests {
.getField(clientFactory, "customizer"); .getField(clientFactory, "customizer");
customizeAction.accept(pulsarClientBuilderCustomizer, target); customizeAction.accept(pulsarClientBuilderCustomizer, target);
InOrder ordered = inOrder(target); InOrder ordered = inOrder(target);
ordered.verify(target).serviceUrlProvider(Mockito.any(AutoClusterFailover.class)); ordered.verify(target).serviceUrlProvider(ArgumentMatchers.any(AutoClusterFailover.class));
assertThat(pulsarProperties.getClient().getFailover().getDelay()).isEqualTo(Duration.ofSeconds(15)); assertThat(pulsarProperties.getClient().getFailover().getDelay()).isEqualTo(Duration.ofSeconds(15));
assertThat(pulsarProperties.getClient().getFailover().getSwitchBackDelay()) assertThat(pulsarProperties.getClient().getFailover().getSwitchBackDelay())
.isEqualTo(Duration.ofSeconds(30)); .isEqualTo(Duration.ofSeconds(30));

View File

@ -56,7 +56,7 @@ class ValidatorAdapterTests {
this.contextRunner.withUserConfiguration(LocalValidatorFactoryBeanConfig.class).run((context) -> { this.contextRunner.withUserConfiguration(LocalValidatorFactoryBeanConfig.class).run((context) -> {
ValidatorAdapter wrapper = context.getBean(ValidatorAdapter.class); ValidatorAdapter wrapper = context.getBean(ValidatorAdapter.class);
assertThat(wrapper.supports(SampleData.class)).isTrue(); assertThat(wrapper.supports(SampleData.class)).isTrue();
MapBindingResult errors = new MapBindingResult(new HashMap<String, Object>(), "test"); MapBindingResult errors = new MapBindingResult(new HashMap<>(), "test");
wrapper.validate(new SampleData(40), errors); wrapper.validate(new SampleData(40), errors);
assertThat(errors.getErrorCount()).isOne(); assertThat(errors.getErrorCount()).isOne();
}); });

View File

@ -270,13 +270,13 @@ class TestRestTemplateTests {
@Test @Test
void exchangeWithRequestEntityAndClassHandlesRelativeUris() throws IOException { void exchangeWithRequestEntityAndClassHandlesRelativeUris() throws IOException {
verifyRelativeUriHandling((testRestTemplate, relativeUri) -> testRestTemplate verifyRelativeUriHandling((testRestTemplate, relativeUri) -> testRestTemplate
.exchange(new RequestEntity<String>(HttpMethod.GET, relativeUri), String.class)); .exchange(new RequestEntity<>(HttpMethod.GET, relativeUri), String.class));
} }
@Test @Test
void exchangeWithRequestEntityAndParameterizedTypeReferenceHandlesRelativeUris() throws IOException { void exchangeWithRequestEntityAndParameterizedTypeReferenceHandlesRelativeUris() throws IOException {
verifyRelativeUriHandling((testRestTemplate, relativeUri) -> testRestTemplate verifyRelativeUriHandling((testRestTemplate, relativeUri) -> testRestTemplate
.exchange(new RequestEntity<String>(HttpMethod.GET, relativeUri), new ParameterizedTypeReference<String>() { .exchange(new RequestEntity<>(HttpMethod.GET, relativeUri), new ParameterizedTypeReference<String>() {
})); }));
} }

View File

@ -76,6 +76,7 @@ final class StringSequence implements CharSequence {
* Returns {@code true} if the sequence is empty. Public to be compatible with JDK 15. * Returns {@code true} if the sequence is empty. Public to be compatible with JDK 15.
* @return {@code true} if {@link #length()} is {@code 0}, otherwise {@code false} * @return {@code true} if {@link #length()} is {@code 0}, otherwise {@code false}
*/ */
@Override
public boolean isEmpty() { public boolean isEmpty() {
return length() == 0; return length() == 0;
} }

View File

@ -369,7 +369,7 @@ public class UndertowServletWebServerFactory extends AbstractServletWebServerFac
ServletContextInitializer[] mergedInitializers = mergeInitializers(initializers); ServletContextInitializer[] mergedInitializers = mergeInitializers(initializers);
Initializer initializer = new Initializer(mergedInitializers); Initializer initializer = new Initializer(mergedInitializers);
deployment.addServletContainerInitializer(new ServletContainerInitializerInfo(Initializer.class, deployment.addServletContainerInitializer(new ServletContainerInitializerInfo(Initializer.class,
new ImmediateInstanceFactory<ServletContainerInitializer>(initializer), NO_CLASSES)); new ImmediateInstanceFactory<>(initializer), NO_CLASSES));
} }
private ClassLoader getServletClassLoader() { private ClassLoader getServletClassLoader() {

View File

@ -139,8 +139,7 @@ abstract class AbstractFilterRegistrationBeanTests {
void setServletRegistrationBeanReplacesValue() throws Exception { void setServletRegistrationBeanReplacesValue() throws Exception {
given(this.servletContext.addFilter(anyString(), any(Filter.class))).willReturn(this.registration); given(this.servletContext.addFilter(anyString(), any(Filter.class))).willReturn(this.registration);
AbstractFilterRegistrationBean<?> bean = createFilterRegistrationBean(mockServletRegistration("a")); AbstractFilterRegistrationBean<?> bean = createFilterRegistrationBean(mockServletRegistration("a"));
bean.setServletRegistrationBeans( bean.setServletRegistrationBeans(new LinkedHashSet<>(Collections.singletonList(mockServletRegistration("b"))));
new LinkedHashSet<ServletRegistrationBean<?>>(Collections.singletonList(mockServletRegistration("b"))));
bean.onStartup(this.servletContext); bean.onStartup(this.servletContext);
then(this.registration).should().addMappingForServletNames(EnumSet.of(DispatcherType.REQUEST), false, "b"); then(this.registration).should().addMappingForServletNames(EnumSet.of(DispatcherType.REQUEST), false, "b");
} }

View File

@ -50,7 +50,7 @@ class SampleActuatorUiApplicationTests {
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
headers.setAccept(Arrays.asList(MediaType.TEXT_HTML)); headers.setAccept(Arrays.asList(MediaType.TEXT_HTML));
ResponseEntity<String> entity = this.restTemplate.withBasicAuth("user", getPassword()) ResponseEntity<String> entity = this.restTemplate.withBasicAuth("user", getPassword())
.exchange("/", HttpMethod.GET, new HttpEntity<Void>(headers), String.class); .exchange("/", HttpMethod.GET, new HttpEntity<>(headers), String.class);
assertThat(entity.getStatusCode()).isEqualTo(HttpStatus.OK); assertThat(entity.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(entity.getBody()).contains("<title>Hello"); assertThat(entity.getBody()).contains("<title>Hello");
} }
@ -74,7 +74,7 @@ class SampleActuatorUiApplicationTests {
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
headers.setAccept(Arrays.asList(MediaType.TEXT_HTML)); headers.setAccept(Arrays.asList(MediaType.TEXT_HTML));
ResponseEntity<String> entity = this.restTemplate.withBasicAuth("user", getPassword()) ResponseEntity<String> entity = this.restTemplate.withBasicAuth("user", getPassword())
.exchange("/error", HttpMethod.GET, new HttpEntity<Void>(headers), String.class); .exchange("/error", HttpMethod.GET, new HttpEntity<>(headers), String.class);
assertThat(entity.getStatusCode()).isEqualTo(HttpStatus.INTERNAL_SERVER_ERROR); assertThat(entity.getStatusCode()).isEqualTo(HttpStatus.INTERNAL_SERVER_ERROR);
assertThat(entity.getBody()).contains("<html>") assertThat(entity.getBody()).contains("<html>")
.contains("<body>") .contains("<body>")

View File

@ -48,7 +48,7 @@ class SampleServletApplicationTests {
void testHomeIsSecure() { void testHomeIsSecure() {
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
ResponseEntity<String> entity = this.restTemplate.exchange("/", HttpMethod.GET, new HttpEntity<Void>(headers), ResponseEntity<String> entity = this.restTemplate.exchange("/", HttpMethod.GET, new HttpEntity<>(headers),
String.class); String.class);
assertThat(entity.getStatusCode()).isEqualTo(HttpStatus.UNAUTHORIZED); assertThat(entity.getStatusCode()).isEqualTo(HttpStatus.UNAUTHORIZED);
} }

View File

@ -55,7 +55,7 @@ class SampleWebSecureCustomApplicationTests {
void testHome() { void testHome() {
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
headers.setAccept(Collections.singletonList(MediaType.TEXT_HTML)); headers.setAccept(Collections.singletonList(MediaType.TEXT_HTML));
ResponseEntity<String> entity = this.restTemplate.exchange("/", HttpMethod.GET, new HttpEntity<Void>(headers), ResponseEntity<String> entity = this.restTemplate.exchange("/", HttpMethod.GET, new HttpEntity<>(headers),
String.class); String.class);
assertThat(entity.getStatusCode()).isEqualTo(HttpStatus.FOUND); assertThat(entity.getStatusCode()).isEqualTo(HttpStatus.FOUND);
assertThat(entity.getHeaders().getLocation().toString()).endsWith(this.port + "/login"); assertThat(entity.getHeaders().getLocation().toString()).endsWith(this.port + "/login");
@ -65,8 +65,8 @@ class SampleWebSecureCustomApplicationTests {
void testLoginPage() { void testLoginPage() {
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
headers.setAccept(Collections.singletonList(MediaType.TEXT_HTML)); headers.setAccept(Collections.singletonList(MediaType.TEXT_HTML));
ResponseEntity<String> entity = this.restTemplate.exchange("/login", HttpMethod.GET, ResponseEntity<String> entity = this.restTemplate.exchange("/login", HttpMethod.GET, new HttpEntity<>(headers),
new HttpEntity<Void>(headers), String.class); String.class);
assertThat(entity.getStatusCode()).isEqualTo(HttpStatus.OK); assertThat(entity.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(entity.getBody()).contains("<title>Login</title>"); assertThat(entity.getBody()).contains("<title>Login</title>");
} }

View File

@ -55,7 +55,7 @@ class SampleWebSecureJdbcApplicationTests {
void testHome() { void testHome() {
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
headers.setAccept(Collections.singletonList(MediaType.TEXT_HTML)); headers.setAccept(Collections.singletonList(MediaType.TEXT_HTML));
ResponseEntity<String> entity = this.restTemplate.exchange("/", HttpMethod.GET, new HttpEntity<Void>(headers), ResponseEntity<String> entity = this.restTemplate.exchange("/", HttpMethod.GET, new HttpEntity<>(headers),
String.class); String.class);
assertThat(entity.getStatusCode()).isEqualTo(HttpStatus.FOUND); assertThat(entity.getStatusCode()).isEqualTo(HttpStatus.FOUND);
assertThat(entity.getHeaders().getLocation().toString()).endsWith(this.port + "/login"); assertThat(entity.getHeaders().getLocation().toString()).endsWith(this.port + "/login");
@ -65,8 +65,8 @@ class SampleWebSecureJdbcApplicationTests {
void testLoginPage() { void testLoginPage() {
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
headers.setAccept(Collections.singletonList(MediaType.TEXT_HTML)); headers.setAccept(Collections.singletonList(MediaType.TEXT_HTML));
ResponseEntity<String> entity = this.restTemplate.exchange("/login", HttpMethod.GET, ResponseEntity<String> entity = this.restTemplate.exchange("/login", HttpMethod.GET, new HttpEntity<>(headers),
new HttpEntity<Void>(headers), String.class); String.class);
assertThat(entity.getStatusCode()).isEqualTo(HttpStatus.OK); assertThat(entity.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(entity.getBody()).contains("<title>Login</title>"); assertThat(entity.getBody()).contains("<title>Login</title>");
} }

View File

@ -62,8 +62,8 @@ class SampleWebSecureApplicationTests {
void testHome() { void testHome() {
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
headers.setAccept(Collections.singletonList(MediaType.TEXT_HTML)); headers.setAccept(Collections.singletonList(MediaType.TEXT_HTML));
ResponseEntity<String> entity = this.restTemplate.exchange("/home", HttpMethod.GET, ResponseEntity<String> entity = this.restTemplate.exchange("/home", HttpMethod.GET, new HttpEntity<>(headers),
new HttpEntity<Void>(headers), String.class); String.class);
assertThat(entity.getStatusCode()).isEqualTo(HttpStatus.FOUND); assertThat(entity.getStatusCode()).isEqualTo(HttpStatus.FOUND);
assertThat(entity.getHeaders().getLocation().toString()).endsWith(this.port + "/login"); assertThat(entity.getHeaders().getLocation().toString()).endsWith(this.port + "/login");
} }
@ -72,8 +72,8 @@ class SampleWebSecureApplicationTests {
void testLoginPage() { void testLoginPage() {
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
headers.setAccept(Collections.singletonList(MediaType.TEXT_HTML)); headers.setAccept(Collections.singletonList(MediaType.TEXT_HTML));
ResponseEntity<String> entity = this.restTemplate.exchange("/login", HttpMethod.GET, ResponseEntity<String> entity = this.restTemplate.exchange("/login", HttpMethod.GET, new HttpEntity<>(headers),
new HttpEntity<Void>(headers), String.class); String.class);
assertThat(entity.getStatusCode()).isEqualTo(HttpStatus.OK); assertThat(entity.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(entity.getBody()).contains("<title>Login</title>"); assertThat(entity.getBody()).contains("<title>Login</title>");
} }