Support Class Attributes in Annotation Template Processing

Closes gh-15721
This commit is contained in:
DingHao
2024-09-04 23:39:32 +08:00
committed by Josh Cummings
parent 820e3f5750
commit 5c20505b0e
2 changed files with 55 additions and 1 deletions

View File

@@ -998,6 +998,15 @@ public class PrePostMethodSecurityConfigurationTests {
verify(expressionHandler, times(4)).createEvaluationContext(any(Supplier.class), any());
}
// gh-15721
@Test
@WithMockUser(roles = "uid")
public void methodWhenMetaAnnotationPropertiesHasClassProperties() {
this.spring.register(MetaAnnotationPlaceholderConfig.class).autowire();
MetaAnnotationService service = this.spring.getContext().getBean(MetaAnnotationService.class);
assertThat(service.getIdPath("uid")).isEqualTo("uid");
}
private static Consumer<ConfigurableWebApplicationContext> disallowBeanOverriding() {
return (context) -> ((AnnotationConfigWebApplicationContext) context).setAllowBeanDefinitionOverriding(false);
}
@@ -1376,6 +1385,27 @@ public class PrePostMethodSecurityConfigurationTests {
return list;
}
@RestrictedAccess(entityClass = EntityClass.class)
String getIdPath(String id) {
return id;
}
}
@Retention(RetentionPolicy.RUNTIME)
@PreAuthorize("hasRole({idPath})")
@interface RestrictedAccess {
String idPath() default "#id";
Class<?> entityClass();
String[] recipes() default {};
}
static class EntityClass {
}
@Retention(RetentionPolicy.RUNTIME)