-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Closed
Labels
RecordIssue related to JDK17 java.lang.Record supportIssue related to JDK17 java.lang.Record support
Description
Sorry if it's duplicate but i did not find anything like that
Describe the bug
When using custom annotation, Annotated.getAnnotation() method does not return annotation for a field marked with this annotation.
Version information
2.15.0
To Reproduce
This simple test can help:
class AnnotationIssueApplicationTests {
@Test
void mask() {
var entity = new TestEntity("Secret", "Doe");
ObjectMapper mapper = new ObjectMapper();
mapper.setAnnotationIntrospector(
AnnotationIntrospectorPair.pair(
mapper.getSerializationConfig().getAnnotationIntrospector(),
new MaskSensitiveDataAnnotationIntrospector()));
try {
assertNotNull("Should be not null", mapper.writeValueAsString(entity));
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface SensitiveField {}
private record TestEntity(
@SensitiveField String mySecretFieldPassword,
String name) {}
private static class MaskSensitiveDataAnnotationIntrospector extends NopAnnotationIntrospector {
@Override
public Object findSerializer(Annotated am) {
SensitiveField annotation = am.getAnnotation(SensitiveField.class);
//When i use jackson-core:2.14.1 the test below passes successfully
//When i use jackson-core:2.15.0 the test fails
if (am.getName().equals("mySecretFieldPassword") && annotation == null){
throw new RuntimeException("This should not happen");
};
return null;
}
}
}
Expected behavior
When i use jackson-core:2.14.1 the test below passes successfully
When i use jackson-core:2.15.0 the test fails
Additional context
This happened when i updated Spring Boot from 3.0.2 to 3.1.0
This is my graddle build
plugins {
id 'java'
id 'org.springframework.boot' version '3.1.0'
id 'io.spring.dependency-management' version '1.1.0'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
repositories {
mavenCentral()
}
dependencies {
implementation 'com.fasterxml.jackson.core:jackson-annotations'
implementation 'com.fasterxml.jackson.core:jackson-core'
//this fixes the issue implementation 'com.fasterxml.jackson.core:jackson-databind:2.14.1'
implementation 'org.springframework.boot:spring-boot-starter'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
tasks.named('test') {
useJUnitPlatform()
}
Metadata
Metadata
Assignees
Labels
RecordIssue related to JDK17 java.lang.Record supportIssue related to JDK17 java.lang.Record support