Merge branch '2.4.x'
Closes gh-25073
This commit is contained in:
@@ -84,6 +84,7 @@ dependencies {
|
||||
testImplementation("org.testcontainers:mongodb")
|
||||
testImplementation("org.testcontainers:neo4j")
|
||||
testImplementation("org.testcontainers:testcontainers")
|
||||
testImplementation("org.thymeleaf:thymeleaf")
|
||||
|
||||
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 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.
|
||||
@@ -21,14 +21,13 @@ import java.util.Collections;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import com.fasterxml.jackson.databind.Module;
|
||||
|
||||
import org.springframework.boot.context.TypeExcludeFilter;
|
||||
import org.springframework.boot.jackson.JsonComponent;
|
||||
import org.springframework.boot.test.autoconfigure.filter.StandardAnnotationCustomizableTypeExcludeFilter;
|
||||
import org.springframework.core.convert.converter.Converter;
|
||||
import org.springframework.core.convert.converter.GenericConverter;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.util.ClassUtils;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
import org.springframework.web.bind.annotation.ControllerAdvice;
|
||||
import org.springframework.web.reactive.config.WebFluxConfigurer;
|
||||
@@ -45,6 +44,9 @@ public final class WebFluxTypeExcludeFilter extends StandardAnnotationCustomizab
|
||||
|
||||
private static final Class<?>[] NO_CONTROLLERS = {};
|
||||
|
||||
private static final String[] OPTIONAL_INCLUDES = { "com.fasterxml.jackson.databind.Module",
|
||||
"org.thymeleaf.dialect.IDialect" };
|
||||
|
||||
private static final Set<Class<?>> DEFAULT_INCLUDES;
|
||||
|
||||
static {
|
||||
@@ -56,10 +58,13 @@ public final class WebFluxTypeExcludeFilter extends StandardAnnotationCustomizab
|
||||
includes.add(GenericConverter.class);
|
||||
includes.add(WebExceptionHandler.class);
|
||||
includes.add(WebFilter.class);
|
||||
try {
|
||||
includes.add(Module.class);
|
||||
}
|
||||
catch (Throwable ex) {
|
||||
for (String optionalInclude : OPTIONAL_INCLUDES) {
|
||||
try {
|
||||
includes.add(ClassUtils.forName(optionalInclude, null));
|
||||
}
|
||||
catch (Exception ex) {
|
||||
// Ignore
|
||||
}
|
||||
}
|
||||
DEFAULT_INCLUDES = Collections.unmodifiableSet(includes);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 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.
|
||||
@@ -21,8 +21,6 @@ import java.util.Collections;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import com.fasterxml.jackson.databind.Module;
|
||||
|
||||
import org.springframework.boot.context.TypeExcludeFilter;
|
||||
import org.springframework.boot.jackson.JsonComponent;
|
||||
import org.springframework.boot.test.autoconfigure.filter.StandardAnnotationCustomizableTypeExcludeFilter;
|
||||
@@ -51,9 +49,9 @@ public final class WebMvcTypeExcludeFilter extends StandardAnnotationCustomizabl
|
||||
|
||||
private static final Class<?>[] NO_CONTROLLERS = {};
|
||||
|
||||
private static final String[] OPTIONAL_INCLUDES = {
|
||||
private static final String[] OPTIONAL_INCLUDES = { "com.fasterxml.jackson.databind.Module",
|
||||
"org.springframework.security.config.annotation.web.WebSecurityConfigurer",
|
||||
"org.springframework.security.web.SecurityFilterChain" };
|
||||
"org.springframework.security.web.SecurityFilterChain", "org.thymeleaf.dialect.IDialect" };
|
||||
|
||||
private static final Set<Class<?>> DEFAULT_INCLUDES;
|
||||
|
||||
@@ -71,11 +69,6 @@ public final class WebMvcTypeExcludeFilter extends StandardAnnotationCustomizabl
|
||||
includes.add(Converter.class);
|
||||
includes.add(GenericConverter.class);
|
||||
includes.add(HandlerInterceptor.class);
|
||||
try {
|
||||
includes.add(Module.class);
|
||||
}
|
||||
catch (Throwable ex) {
|
||||
}
|
||||
for (String optionalInclude : OPTIONAL_INCLUDES) {
|
||||
try {
|
||||
includes.add(ClassUtils.forName(optionalInclude, null));
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 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.
|
||||
@@ -20,6 +20,7 @@ import java.io.IOException;
|
||||
|
||||
import com.fasterxml.jackson.databind.module.SimpleModule;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.thymeleaf.dialect.IDialect;
|
||||
import reactor.core.publisher.Mono;
|
||||
|
||||
import org.springframework.context.annotation.ComponentScan.Filter;
|
||||
@@ -59,6 +60,7 @@ class WebFluxTypeExcludeFilterTests {
|
||||
assertThat(excludes(filter, ExampleRepository.class)).isTrue();
|
||||
assertThat(excludes(filter, ExampleWebFilter.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleModule.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleDialect.class)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -72,6 +74,7 @@ class WebFluxTypeExcludeFilterTests {
|
||||
assertThat(excludes(filter, ExampleRepository.class)).isTrue();
|
||||
assertThat(excludes(filter, ExampleWebFilter.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleModule.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleDialect.class)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -85,6 +88,7 @@ class WebFluxTypeExcludeFilterTests {
|
||||
assertThat(excludes(filter, ExampleRepository.class)).isTrue();
|
||||
assertThat(excludes(filter, ExampleWebFilter.class)).isTrue();
|
||||
assertThat(excludes(filter, ExampleModule.class)).isTrue();
|
||||
assertThat(excludes(filter, ExampleDialect.class)).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -98,6 +102,7 @@ class WebFluxTypeExcludeFilterTests {
|
||||
assertThat(excludes(filter, ExampleRepository.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleWebFilter.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleModule.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleDialect.class)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -111,6 +116,7 @@ class WebFluxTypeExcludeFilterTests {
|
||||
assertThat(excludes(filter, ExampleRepository.class)).isTrue();
|
||||
assertThat(excludes(filter, ExampleWebFilter.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleModule.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleDialect.class)).isFalse();
|
||||
}
|
||||
|
||||
private boolean excludes(WebFluxTypeExcludeFilter filter, Class<?> type) throws IOException {
|
||||
@@ -185,4 +191,13 @@ class WebFluxTypeExcludeFilterTests {
|
||||
|
||||
}
|
||||
|
||||
static class ExampleDialect implements IDialect {
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "example";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 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.
|
||||
@@ -20,6 +20,7 @@ import java.io.IOException;
|
||||
|
||||
import com.fasterxml.jackson.databind.module.SimpleModule;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.thymeleaf.dialect.IDialect;
|
||||
|
||||
import org.springframework.context.annotation.ComponentScan.Filter;
|
||||
import org.springframework.context.annotation.FilterType;
|
||||
@@ -61,6 +62,7 @@ class WebMvcTypeExcludeFilterTests {
|
||||
assertThat(excludes(filter, SecurityFilterChain.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleHandlerInterceptor.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleModule.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleDialect.class)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -77,6 +79,7 @@ class WebMvcTypeExcludeFilterTests {
|
||||
assertThat(excludes(filter, SecurityFilterChain.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleHandlerInterceptor.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleModule.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleDialect.class)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -93,6 +96,7 @@ class WebMvcTypeExcludeFilterTests {
|
||||
assertThat(excludes(filter, SecurityFilterChain.class)).isTrue();
|
||||
assertThat(excludes(filter, ExampleHandlerInterceptor.class)).isTrue();
|
||||
assertThat(excludes(filter, ExampleModule.class)).isTrue();
|
||||
assertThat(excludes(filter, ExampleDialect.class)).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -107,6 +111,7 @@ class WebMvcTypeExcludeFilterTests {
|
||||
assertThat(excludes(filter, ExampleRepository.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleHandlerInterceptor.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleModule.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleDialect.class)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -123,6 +128,7 @@ class WebMvcTypeExcludeFilterTests {
|
||||
assertThat(excludes(filter, SecurityFilterChain.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleHandlerInterceptor.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleModule.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleDialect.class)).isFalse();
|
||||
}
|
||||
|
||||
private boolean excludes(WebMvcTypeExcludeFilter filter, Class<?> type) throws IOException {
|
||||
@@ -200,4 +206,13 @@ class WebMvcTypeExcludeFilterTests {
|
||||
|
||||
}
|
||||
|
||||
static class ExampleDialect implements IDialect {
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "example";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user