mirror of
https://github.com/spring-projects/spring-security.git
synced 2025-06-01 09:42:13 +00:00
Restore Method Parameter Inheritance Support
Closes gh-16177
This commit is contained in:
parent
40f8ac642a
commit
f565b23b51
@ -19,6 +19,8 @@ package org.springframework.security.messaging.context;
|
|||||||
import java.lang.annotation.Annotation;
|
import java.lang.annotation.Annotation;
|
||||||
|
|
||||||
import org.springframework.core.MethodParameter;
|
import org.springframework.core.MethodParameter;
|
||||||
|
import org.springframework.core.annotation.AnnotationUtils;
|
||||||
|
import org.springframework.core.annotation.MergedAnnotations;
|
||||||
import org.springframework.expression.Expression;
|
import org.springframework.expression.Expression;
|
||||||
import org.springframework.expression.ExpressionParser;
|
import org.springframework.expression.ExpressionParser;
|
||||||
import org.springframework.expression.spel.standard.SpelExpressionParser;
|
import org.springframework.expression.spel.standard.SpelExpressionParser;
|
||||||
@ -95,8 +97,12 @@ public final class AuthenticationPrincipalArgumentResolver implements HandlerMet
|
|||||||
|
|
||||||
private ExpressionParser parser = new SpelExpressionParser();
|
private ExpressionParser parser = new SpelExpressionParser();
|
||||||
|
|
||||||
|
private final Class<AuthenticationPrincipal> annotationType = AuthenticationPrincipal.class;
|
||||||
|
|
||||||
private SecurityAnnotationScanner<AuthenticationPrincipal> scanner = SecurityAnnotationScanners
|
private SecurityAnnotationScanner<AuthenticationPrincipal> scanner = SecurityAnnotationScanners
|
||||||
.requireUnique(AuthenticationPrincipal.class);
|
.requireUnique(this.annotationType);
|
||||||
|
|
||||||
|
private boolean useAnnotationTemplate = false;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean supportsParameter(MethodParameter parameter) {
|
public boolean supportsParameter(MethodParameter parameter) {
|
||||||
@ -149,6 +155,7 @@ public final class AuthenticationPrincipalArgumentResolver implements HandlerMet
|
|||||||
* @since 6.4
|
* @since 6.4
|
||||||
*/
|
*/
|
||||||
public void setTemplateDefaults(AnnotationTemplateExpressionDefaults templateDefaults) {
|
public void setTemplateDefaults(AnnotationTemplateExpressionDefaults templateDefaults) {
|
||||||
|
this.useAnnotationTemplate = templateDefaults != null;
|
||||||
this.scanner = SecurityAnnotationScanners.requireUnique(AuthenticationPrincipal.class, templateDefaults);
|
this.scanner = SecurityAnnotationScanners.requireUnique(AuthenticationPrincipal.class, templateDefaults);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -158,9 +165,22 @@ public final class AuthenticationPrincipalArgumentResolver implements HandlerMet
|
|||||||
* @param parameter the {@link MethodParameter} to search for an {@link Annotation}
|
* @param parameter the {@link MethodParameter} to search for an {@link Annotation}
|
||||||
* @return the {@link Annotation} that was found or null.
|
* @return the {@link Annotation} that was found or null.
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
private AuthenticationPrincipal findMethodAnnotation(MethodParameter parameter) {
|
||||||
private <T extends Annotation> T findMethodAnnotation(MethodParameter parameter) {
|
if (this.useAnnotationTemplate) {
|
||||||
return (T) this.scanner.scan(parameter.getParameter());
|
return this.scanner.scan(parameter.getParameter());
|
||||||
|
}
|
||||||
|
AuthenticationPrincipal annotation = parameter.getParameterAnnotation(this.annotationType);
|
||||||
|
if (annotation != null) {
|
||||||
|
return annotation;
|
||||||
|
}
|
||||||
|
Annotation[] annotationsToSearch = parameter.getParameterAnnotations();
|
||||||
|
for (Annotation toSearch : annotationsToSearch) {
|
||||||
|
annotation = AnnotationUtils.findAnnotation(toSearch.annotationType(), this.annotationType);
|
||||||
|
if (annotation != null) {
|
||||||
|
return MergedAnnotations.from(toSearch).get(this.annotationType).synthesize();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,8 @@ import org.springframework.core.MethodParameter;
|
|||||||
import org.springframework.core.ReactiveAdapter;
|
import org.springframework.core.ReactiveAdapter;
|
||||||
import org.springframework.core.ReactiveAdapterRegistry;
|
import org.springframework.core.ReactiveAdapterRegistry;
|
||||||
import org.springframework.core.ResolvableType;
|
import org.springframework.core.ResolvableType;
|
||||||
|
import org.springframework.core.annotation.AnnotationUtils;
|
||||||
|
import org.springframework.core.annotation.MergedAnnotations;
|
||||||
import org.springframework.expression.BeanResolver;
|
import org.springframework.expression.BeanResolver;
|
||||||
import org.springframework.expression.Expression;
|
import org.springframework.expression.Expression;
|
||||||
import org.springframework.expression.ExpressionParser;
|
import org.springframework.expression.ExpressionParser;
|
||||||
@ -99,8 +101,12 @@ public class AuthenticationPrincipalArgumentResolver implements HandlerMethodArg
|
|||||||
|
|
||||||
private ExpressionParser parser = new SpelExpressionParser();
|
private ExpressionParser parser = new SpelExpressionParser();
|
||||||
|
|
||||||
|
private final Class<AuthenticationPrincipal> annotationType = AuthenticationPrincipal.class;
|
||||||
|
|
||||||
private SecurityAnnotationScanner<AuthenticationPrincipal> scanner = SecurityAnnotationScanners
|
private SecurityAnnotationScanner<AuthenticationPrincipal> scanner = SecurityAnnotationScanners
|
||||||
.requireUnique(AuthenticationPrincipal.class);
|
.requireUnique(this.annotationType);
|
||||||
|
|
||||||
|
private boolean useAnnotationTemplate = false;
|
||||||
|
|
||||||
private BeanResolver beanResolver;
|
private BeanResolver beanResolver;
|
||||||
|
|
||||||
@ -190,6 +196,7 @@ public class AuthenticationPrincipalArgumentResolver implements HandlerMethodArg
|
|||||||
* @since 6.4
|
* @since 6.4
|
||||||
*/
|
*/
|
||||||
public void setTemplateDefaults(AnnotationTemplateExpressionDefaults templateDefaults) {
|
public void setTemplateDefaults(AnnotationTemplateExpressionDefaults templateDefaults) {
|
||||||
|
this.useAnnotationTemplate = templateDefaults != null;
|
||||||
this.scanner = SecurityAnnotationScanners.requireUnique(AuthenticationPrincipal.class, templateDefaults);
|
this.scanner = SecurityAnnotationScanners.requireUnique(AuthenticationPrincipal.class, templateDefaults);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -199,9 +206,22 @@ public class AuthenticationPrincipalArgumentResolver implements HandlerMethodArg
|
|||||||
* @param parameter the {@link MethodParameter} to search for an {@link Annotation}
|
* @param parameter the {@link MethodParameter} to search for an {@link Annotation}
|
||||||
* @return the {@link Annotation} that was found or null.
|
* @return the {@link Annotation} that was found or null.
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
private AuthenticationPrincipal findMethodAnnotation(MethodParameter parameter) {
|
||||||
private <T extends Annotation> T findMethodAnnotation(MethodParameter parameter) {
|
if (this.useAnnotationTemplate) {
|
||||||
return (T) this.scanner.scan(parameter.getParameter());
|
return this.scanner.scan(parameter.getParameter());
|
||||||
|
}
|
||||||
|
AuthenticationPrincipal annotation = parameter.getParameterAnnotation(this.annotationType);
|
||||||
|
if (annotation != null) {
|
||||||
|
return annotation;
|
||||||
|
}
|
||||||
|
Annotation[] annotationsToSearch = parameter.getParameterAnnotations();
|
||||||
|
for (Annotation toSearch : annotationsToSearch) {
|
||||||
|
annotation = AnnotationUtils.findAnnotation(toSearch.annotationType(), this.annotationType);
|
||||||
|
if (annotation != null) {
|
||||||
|
return MergedAnnotations.from(toSearch).get(this.annotationType).synthesize();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,8 @@ import org.springframework.core.MethodParameter;
|
|||||||
import org.springframework.core.ReactiveAdapter;
|
import org.springframework.core.ReactiveAdapter;
|
||||||
import org.springframework.core.ReactiveAdapterRegistry;
|
import org.springframework.core.ReactiveAdapterRegistry;
|
||||||
import org.springframework.core.ResolvableType;
|
import org.springframework.core.ResolvableType;
|
||||||
|
import org.springframework.core.annotation.AnnotationUtils;
|
||||||
|
import org.springframework.core.annotation.MergedAnnotations;
|
||||||
import org.springframework.expression.BeanResolver;
|
import org.springframework.expression.BeanResolver;
|
||||||
import org.springframework.expression.Expression;
|
import org.springframework.expression.Expression;
|
||||||
import org.springframework.expression.ExpressionParser;
|
import org.springframework.expression.ExpressionParser;
|
||||||
@ -97,8 +99,12 @@ public class CurrentSecurityContextArgumentResolver implements HandlerMethodArgu
|
|||||||
|
|
||||||
private ExpressionParser parser = new SpelExpressionParser();
|
private ExpressionParser parser = new SpelExpressionParser();
|
||||||
|
|
||||||
|
private final Class<CurrentSecurityContext> annotationType = CurrentSecurityContext.class;
|
||||||
|
|
||||||
private SecurityAnnotationScanner<CurrentSecurityContext> scanner = SecurityAnnotationScanners
|
private SecurityAnnotationScanner<CurrentSecurityContext> scanner = SecurityAnnotationScanners
|
||||||
.requireUnique(CurrentSecurityContext.class);
|
.requireUnique(this.annotationType);
|
||||||
|
|
||||||
|
private boolean useAnnotationTemplate = false;
|
||||||
|
|
||||||
private BeanResolver beanResolver;
|
private BeanResolver beanResolver;
|
||||||
|
|
||||||
@ -208,6 +214,7 @@ public class CurrentSecurityContextArgumentResolver implements HandlerMethodArgu
|
|||||||
* @since 6.4
|
* @since 6.4
|
||||||
*/
|
*/
|
||||||
public void setTemplateDefaults(AnnotationTemplateExpressionDefaults templateDefaults) {
|
public void setTemplateDefaults(AnnotationTemplateExpressionDefaults templateDefaults) {
|
||||||
|
this.useAnnotationTemplate = templateDefaults != null;
|
||||||
this.scanner = SecurityAnnotationScanners.requireUnique(CurrentSecurityContext.class, templateDefaults);
|
this.scanner = SecurityAnnotationScanners.requireUnique(CurrentSecurityContext.class, templateDefaults);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -216,9 +223,22 @@ public class CurrentSecurityContextArgumentResolver implements HandlerMethodArgu
|
|||||||
* @param parameter the {@link MethodParameter} to search for an {@link Annotation}
|
* @param parameter the {@link MethodParameter} to search for an {@link Annotation}
|
||||||
* @return the {@link Annotation} that was found or null.
|
* @return the {@link Annotation} that was found or null.
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
private CurrentSecurityContext findMethodAnnotation(MethodParameter parameter) {
|
||||||
private <T extends Annotation> T findMethodAnnotation(MethodParameter parameter) {
|
if (this.useAnnotationTemplate) {
|
||||||
return (T) this.scanner.scan(parameter.getParameter());
|
return this.scanner.scan(parameter.getParameter());
|
||||||
|
}
|
||||||
|
CurrentSecurityContext annotation = parameter.getParameterAnnotation(this.annotationType);
|
||||||
|
if (annotation != null) {
|
||||||
|
return annotation;
|
||||||
|
}
|
||||||
|
Annotation[] annotationsToSearch = parameter.getParameterAnnotations();
|
||||||
|
for (Annotation toSearch : annotationsToSearch) {
|
||||||
|
annotation = AnnotationUtils.findAnnotation(toSearch.annotationType(), this.annotationType);
|
||||||
|
if (annotation != null) {
|
||||||
|
return MergedAnnotations.from(toSearch).get(this.annotationType).synthesize();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,8 @@ package org.springframework.security.web.method.annotation;
|
|||||||
import java.lang.annotation.Annotation;
|
import java.lang.annotation.Annotation;
|
||||||
|
|
||||||
import org.springframework.core.MethodParameter;
|
import org.springframework.core.MethodParameter;
|
||||||
|
import org.springframework.core.annotation.AnnotationUtils;
|
||||||
|
import org.springframework.core.annotation.MergedAnnotations;
|
||||||
import org.springframework.expression.BeanResolver;
|
import org.springframework.expression.BeanResolver;
|
||||||
import org.springframework.expression.Expression;
|
import org.springframework.expression.Expression;
|
||||||
import org.springframework.expression.ExpressionParser;
|
import org.springframework.expression.ExpressionParser;
|
||||||
@ -84,8 +86,12 @@ public final class CurrentSecurityContextArgumentResolver implements HandlerMeth
|
|||||||
|
|
||||||
private ExpressionParser parser = new SpelExpressionParser();
|
private ExpressionParser parser = new SpelExpressionParser();
|
||||||
|
|
||||||
|
private final Class<CurrentSecurityContext> annotationType = CurrentSecurityContext.class;
|
||||||
|
|
||||||
private SecurityAnnotationScanner<CurrentSecurityContext> scanner = SecurityAnnotationScanners
|
private SecurityAnnotationScanner<CurrentSecurityContext> scanner = SecurityAnnotationScanners
|
||||||
.requireUnique(CurrentSecurityContext.class);
|
.requireUnique(this.annotationType);
|
||||||
|
|
||||||
|
private boolean useAnnotationTemplate = false;
|
||||||
|
|
||||||
private BeanResolver beanResolver;
|
private BeanResolver beanResolver;
|
||||||
|
|
||||||
@ -140,6 +146,7 @@ public final class CurrentSecurityContextArgumentResolver implements HandlerMeth
|
|||||||
* @since 6.4
|
* @since 6.4
|
||||||
*/
|
*/
|
||||||
public void setTemplateDefaults(AnnotationTemplateExpressionDefaults templateDefaults) {
|
public void setTemplateDefaults(AnnotationTemplateExpressionDefaults templateDefaults) {
|
||||||
|
this.useAnnotationTemplate = templateDefaults != null;
|
||||||
this.scanner = SecurityAnnotationScanners.requireUnique(CurrentSecurityContext.class, templateDefaults);
|
this.scanner = SecurityAnnotationScanners.requireUnique(CurrentSecurityContext.class, templateDefaults);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -171,9 +178,22 @@ public final class CurrentSecurityContextArgumentResolver implements HandlerMeth
|
|||||||
* @param parameter the {@link MethodParameter} to search for an {@link Annotation}
|
* @param parameter the {@link MethodParameter} to search for an {@link Annotation}
|
||||||
* @return the {@link Annotation} that was found or null.
|
* @return the {@link Annotation} that was found or null.
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
private CurrentSecurityContext findMethodAnnotation(MethodParameter parameter) {
|
||||||
private <T extends Annotation> T findMethodAnnotation(MethodParameter parameter) {
|
if (this.useAnnotationTemplate) {
|
||||||
return (T) this.scanner.scan(parameter.getParameter());
|
return this.scanner.scan(parameter.getParameter());
|
||||||
|
}
|
||||||
|
CurrentSecurityContext annotation = parameter.getParameterAnnotation(this.annotationType);
|
||||||
|
if (annotation != null) {
|
||||||
|
return annotation;
|
||||||
|
}
|
||||||
|
Annotation[] annotationsToSearch = parameter.getParameterAnnotations();
|
||||||
|
for (Annotation toSearch : annotationsToSearch) {
|
||||||
|
annotation = AnnotationUtils.findAnnotation(toSearch.annotationType(), this.annotationType);
|
||||||
|
if (annotation != null) {
|
||||||
|
return MergedAnnotations.from(toSearch).get(this.annotationType).synthesize();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,8 @@ import org.springframework.core.MethodParameter;
|
|||||||
import org.springframework.core.ReactiveAdapter;
|
import org.springframework.core.ReactiveAdapter;
|
||||||
import org.springframework.core.ReactiveAdapterRegistry;
|
import org.springframework.core.ReactiveAdapterRegistry;
|
||||||
import org.springframework.core.ResolvableType;
|
import org.springframework.core.ResolvableType;
|
||||||
|
import org.springframework.core.annotation.AnnotationUtils;
|
||||||
|
import org.springframework.core.annotation.MergedAnnotations;
|
||||||
import org.springframework.expression.BeanResolver;
|
import org.springframework.expression.BeanResolver;
|
||||||
import org.springframework.expression.Expression;
|
import org.springframework.expression.Expression;
|
||||||
import org.springframework.expression.ExpressionParser;
|
import org.springframework.expression.ExpressionParser;
|
||||||
@ -53,8 +55,12 @@ public class AuthenticationPrincipalArgumentResolver extends HandlerMethodArgume
|
|||||||
|
|
||||||
private ExpressionParser parser = new SpelExpressionParser();
|
private ExpressionParser parser = new SpelExpressionParser();
|
||||||
|
|
||||||
|
private final Class<AuthenticationPrincipal> annotationType = AuthenticationPrincipal.class;
|
||||||
|
|
||||||
private SecurityAnnotationScanner<AuthenticationPrincipal> scanner = SecurityAnnotationScanners
|
private SecurityAnnotationScanner<AuthenticationPrincipal> scanner = SecurityAnnotationScanners
|
||||||
.requireUnique(AuthenticationPrincipal.class);
|
.requireUnique(this.annotationType);
|
||||||
|
|
||||||
|
private boolean useAnnotationTemplate = false;
|
||||||
|
|
||||||
private BeanResolver beanResolver;
|
private BeanResolver beanResolver;
|
||||||
|
|
||||||
@ -134,6 +140,7 @@ public class AuthenticationPrincipalArgumentResolver extends HandlerMethodArgume
|
|||||||
* @since 6.4
|
* @since 6.4
|
||||||
*/
|
*/
|
||||||
public void setTemplateDefaults(AnnotationTemplateExpressionDefaults templateDefaults) {
|
public void setTemplateDefaults(AnnotationTemplateExpressionDefaults templateDefaults) {
|
||||||
|
this.useAnnotationTemplate = templateDefaults != null;
|
||||||
this.scanner = SecurityAnnotationScanners.requireUnique(AuthenticationPrincipal.class, templateDefaults);
|
this.scanner = SecurityAnnotationScanners.requireUnique(AuthenticationPrincipal.class, templateDefaults);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -143,9 +150,22 @@ public class AuthenticationPrincipalArgumentResolver extends HandlerMethodArgume
|
|||||||
* @param parameter the {@link MethodParameter} to search for an {@link Annotation}
|
* @param parameter the {@link MethodParameter} to search for an {@link Annotation}
|
||||||
* @return the {@link Annotation} that was found or null.
|
* @return the {@link Annotation} that was found or null.
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
private AuthenticationPrincipal findMethodAnnotation(MethodParameter parameter) {
|
||||||
private <T extends Annotation> T findMethodAnnotation(MethodParameter parameter) {
|
if (this.useAnnotationTemplate) {
|
||||||
return (T) this.scanner.scan(parameter.getParameter());
|
return this.scanner.scan(parameter.getParameter());
|
||||||
|
}
|
||||||
|
AuthenticationPrincipal annotation = parameter.getParameterAnnotation(this.annotationType);
|
||||||
|
if (annotation != null) {
|
||||||
|
return annotation;
|
||||||
|
}
|
||||||
|
Annotation[] annotationsToSearch = parameter.getParameterAnnotations();
|
||||||
|
for (Annotation toSearch : annotationsToSearch) {
|
||||||
|
annotation = AnnotationUtils.findAnnotation(toSearch.annotationType(), this.annotationType);
|
||||||
|
if (annotation != null) {
|
||||||
|
return MergedAnnotations.from(toSearch).get(this.annotationType).synthesize();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,8 @@ import org.springframework.core.MethodParameter;
|
|||||||
import org.springframework.core.ReactiveAdapter;
|
import org.springframework.core.ReactiveAdapter;
|
||||||
import org.springframework.core.ReactiveAdapterRegistry;
|
import org.springframework.core.ReactiveAdapterRegistry;
|
||||||
import org.springframework.core.ResolvableType;
|
import org.springframework.core.ResolvableType;
|
||||||
|
import org.springframework.core.annotation.AnnotationUtils;
|
||||||
|
import org.springframework.core.annotation.MergedAnnotations;
|
||||||
import org.springframework.expression.BeanResolver;
|
import org.springframework.expression.BeanResolver;
|
||||||
import org.springframework.expression.Expression;
|
import org.springframework.expression.Expression;
|
||||||
import org.springframework.expression.ExpressionParser;
|
import org.springframework.expression.ExpressionParser;
|
||||||
@ -53,8 +55,12 @@ public class CurrentSecurityContextArgumentResolver extends HandlerMethodArgumen
|
|||||||
|
|
||||||
private ExpressionParser parser = new SpelExpressionParser();
|
private ExpressionParser parser = new SpelExpressionParser();
|
||||||
|
|
||||||
|
private final Class<CurrentSecurityContext> annotationType = CurrentSecurityContext.class;
|
||||||
|
|
||||||
private SecurityAnnotationScanner<CurrentSecurityContext> scanner = SecurityAnnotationScanners
|
private SecurityAnnotationScanner<CurrentSecurityContext> scanner = SecurityAnnotationScanners
|
||||||
.requireUnique(CurrentSecurityContext.class);
|
.requireUnique(this.annotationType);
|
||||||
|
|
||||||
|
private boolean useAnnotationTemplate = false;
|
||||||
|
|
||||||
private BeanResolver beanResolver;
|
private BeanResolver beanResolver;
|
||||||
|
|
||||||
@ -81,6 +87,7 @@ public class CurrentSecurityContextArgumentResolver extends HandlerMethodArgumen
|
|||||||
* @since 6.4
|
* @since 6.4
|
||||||
*/
|
*/
|
||||||
public void setTemplateDefaults(AnnotationTemplateExpressionDefaults templateDefaults) {
|
public void setTemplateDefaults(AnnotationTemplateExpressionDefaults templateDefaults) {
|
||||||
|
this.useAnnotationTemplate = templateDefaults != null;
|
||||||
this.scanner = SecurityAnnotationScanners.requireUnique(CurrentSecurityContext.class, templateDefaults);
|
this.scanner = SecurityAnnotationScanners.requireUnique(CurrentSecurityContext.class, templateDefaults);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -183,9 +190,22 @@ public class CurrentSecurityContextArgumentResolver extends HandlerMethodArgumen
|
|||||||
* @param parameter the {@link MethodParameter} to search for an {@link Annotation}
|
* @param parameter the {@link MethodParameter} to search for an {@link Annotation}
|
||||||
* @return the {@link Annotation} that was found or null.
|
* @return the {@link Annotation} that was found or null.
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
private CurrentSecurityContext findMethodAnnotation(MethodParameter parameter) {
|
||||||
private <T extends Annotation> T findMethodAnnotation(MethodParameter parameter) {
|
if (this.useAnnotationTemplate) {
|
||||||
return (T) this.scanner.scan(parameter.getParameter());
|
return this.scanner.scan(parameter.getParameter());
|
||||||
|
}
|
||||||
|
CurrentSecurityContext annotation = parameter.getParameterAnnotation(this.annotationType);
|
||||||
|
if (annotation != null) {
|
||||||
|
return annotation;
|
||||||
|
}
|
||||||
|
Annotation[] annotationsToSearch = parameter.getParameterAnnotations();
|
||||||
|
for (Annotation toSearch : annotationsToSearch) {
|
||||||
|
annotation = AnnotationUtils.findAnnotation(toSearch.annotationType(), this.annotationType);
|
||||||
|
if (annotation != null) {
|
||||||
|
return MergedAnnotations.from(toSearch).get(this.annotationType).synthesize();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user