我正在努力了解休息拦截器注释如何添加稍后在过滤器中可见的不同值.鉴于下面的代码,我希望在过滤器中,权限值将包含foo和bar,但它们是空的.任何帮助将不胜感激.
注解
package edu.psu.swe.fortress.poc.interceptor;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import javax.enterprise.util.Nonbinding;
import javax.ws.rs.NameBinding;
@NameBinding
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(value=RetentionPolicy.RUNTIME)
public @interface FortressProtected
{
@Nonbinding String[] permissions() default {};
}
Run Code Online (Sandbox Code Playgroud)
过滤
package edu.psu.swe.fortress.poc.interceptor;
import java.io.IOException;
import java.lang.annotation.Annotation;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.ext.Provider;
@Provider
@FortressProtected
public class FortressAuthorizer implements ContainerRequestFilter
{
@Override
public void filter(ContainerRequestContext requestContext) throws IOException
{
System.out.println("In the interceptor");
Class<?> clazz = this.getClass();
FortressProtected annotation = clazz.getAnnotation(edu.psu.swe.fortress.poc.interceptor.FortressProtected.class);
System.out.println("Annotation? " + clazz.isAnnotation());
for (Annotation a : clazz.getAnnotations())
{ …Run Code Online (Sandbox Code Playgroud) 我的问题与此问题基本相同:我如何在Jersey ContainerResponseFilter中获取资源注释.
但是我使用Java Jersey 2.4并且找不到ResourceFilterFactory或ResourceFilter类的任何标志.文档也没有提到它们.他们被弃用了还是真的被隐藏了?如果他们已被弃用,我可以使用什么呢?现在有一种方法可以使用Jersey 2.4和2.5从ContainerRequestFilter获取资源注释吗?
谢谢