Add FieldMode for field hints and ensure that it cannot be downgraded

Add a `FieldMode` enum analogous to `ExecutableHint` and update
`FieldHint` to ensure that registration cannot downgrade `WRITE`
to `READ`.

Fixes gh-29055
This commit is contained in:
Phillip Webb
2022-09-01 14:37:23 -07:00
parent 0bd923b0a7
commit da1005cd66
13 changed files with 188 additions and 30 deletions

View File

@@ -32,6 +32,7 @@ import org.assertj.core.api.InstanceOfAssertFactories;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.aot.hint.FieldMode;
import org.springframework.aot.hint.TypeReference;
import org.springframework.aot.test.generator.compile.CompileWithTargetClassAccess;
import org.springframework.aot.test.generator.compile.Compiled;
@@ -132,7 +133,7 @@ class PersistenceAnnotationBeanPostProcessorAotContributionTests {
.satisfies(fieldHint -> {
assertThat(fieldHint.getName())
.isEqualTo("entityManager");
assertThat(fieldHint.isAllowWrite()).isTrue();
assertThat(fieldHint.getMode()).isEqualTo(FieldMode.WRITE);
assertThat(fieldHint.isAllowUnsafeAccess()).isFalse();
});
});