Skip to content

Commit 51ce91f

Browse files
committed
Merge branch '6.4.x'
2 parents b6c0bde + cc2cfc6 commit 51ce91f

File tree

1 file changed

+9
-12
lines changed

1 file changed

+9
-12
lines changed

config/src/test/java/org/springframework/security/SpringSecurityCoreVersionSerializableTests.java

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import java.nio.file.Paths;
3535
import java.time.Instant;
3636
import java.util.ArrayList;
37+
import java.util.Arrays;
3738
import java.util.Collection;
3839
import java.util.Date;
3940
import java.util.HashMap;
@@ -42,7 +43,6 @@
4243
import java.util.Locale;
4344
import java.util.Map;
4445
import java.util.Set;
45-
import java.util.stream.Collectors;
4646
import java.util.stream.Stream;
4747

4848
import jakarta.servlet.http.Cookie;
@@ -762,18 +762,14 @@ static Stream<Path> getFilesToDeserialize() throws IOException {
762762
}
763763

764764
@Test
765-
void listClassesMissingSerialVersion() throws Exception {
765+
void allSerializableClassesShouldHaveSerialVersionOrSuppressWarnings() throws Exception {
766766
ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(false);
767767
provider.addIncludeFilter(new AssignableTypeFilter(Serializable.class));
768768
List<Class<?>> classes = new ArrayList<>();
769769

770770
Set<BeanDefinition> components = provider.findCandidateComponents("org/springframework/security");
771771
for (BeanDefinition component : components) {
772772
Class<?> clazz = Class.forName(component.getBeanClassName());
773-
boolean isAbstract = Modifier.isAbstract(clazz.getModifiers());
774-
if (isAbstract) {
775-
continue;
776-
}
777773
if (clazz.isEnum()) {
778774
continue;
779775
}
@@ -783,15 +779,16 @@ void listClassesMissingSerialVersion() throws Exception {
783779
boolean hasSerialVersion = Stream.of(clazz.getDeclaredFields())
784780
.map(Field::getName)
785781
.anyMatch((n) -> n.equals("serialVersionUID"));
786-
if (!hasSerialVersion) {
782+
SuppressWarnings suppressWarnings = clazz.getAnnotation(SuppressWarnings.class);
783+
boolean hasSerialIgnore = suppressWarnings == null
784+
|| Arrays.asList(suppressWarnings.value()).contains("Serial");
785+
if (!hasSerialVersion && !hasSerialIgnore) {
787786
classes.add(clazz);
788787
}
789788
}
790-
if (!classes.isEmpty()) {
791-
System.out
792-
.println("Found " + classes.size() + " Serializable classes that don't declare a seriallVersionUID");
793-
System.out.println(classes.stream().map(Class::getName).collect(Collectors.joining("\r\n")));
794-
}
789+
assertThat(classes)
790+
.describedAs("Found Serializable classes that are either missing a serialVersionUID or a @SuppressWarnings")
791+
.isEmpty();
795792
}
796793

797794
static Stream<Class<?>> getClassesToSerialize() throws Exception {

0 commit comments

Comments
 (0)