title: Get resource class annotation values inside ContainerRequestFilter
body: <p>I'm struggling a bit with understanding how rest interceptor annotations can add different values that are later visible in the filter.  Given the code below I would expect that once in the filter the permissions values would have foo and bar in them, however they are empty.  Any help would be greatly appreciated.</p>
  
  <p>Annotation</p>
  
  <pre><code>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 {};
  }
  </code></pre>
  
  <p>Filter</p>
  
  <pre><code>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&lt;?&gt; 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())
      {
        System.out.println(a);
      }
  
      for (String s : annotation.permissions())
      {
        System.out.println(s);
      }
    }
  }
  </code></pre>
  
  <p>App config</p>
  
  <pre><code>package edu.psu.swe.fortress.poc.rest;
  
  import java.util.HashSet;
  import java.util.Set;
  
  import javax.ws.rs.ApplicationPath;
  import javax.ws.rs.core.Application;
  
  import edu.psu.swe.fortress.poc.interceptor.FortressAuthorizer;
  import edu.psu.swe.fortress.poc.interceptor.FortressProtected;
  
  @ApplicationPath("")
  public class FortressTestApp extends Application
  {
    private Set&lt;Class&lt;?&gt;&gt; clazzez_ = new HashSet&lt;&gt;();
    {
      clazzez_.add(ResourceImpl.class);
      clazzez_.add(FortressProtected.class);
      clazzez_.add(FortressAuthorizer.class);
    }
    public Set&lt;Class&lt;?&gt;&gt; getClasses()
    {
      return clazzez_;
    }
  }
  </code></pre>
  
  <p>Resource class</p>
  
  <pre><code>package edu.psu.swe.fortress.poc.rest;
  
  import javax.ws.rs.GET;
  import javax.ws.rs.Path;
  import javax.ws.rs.Produces;
  
  import edu.psu.swe.fortress.poc.interceptor.FortressProtected;
  
  @FortressProtected(permissions={"foo", "bar"})
  @Path("tests")
  public class ResourceImpl
  {
    @GET
    @Produces("application/text")
    public String getHello()
    {
      FortressProtected annotation = this.getClass().getAnnotation(edu.psu.swe.fortress.poc.interceptor.FortressProtected.class);
  
      System.out.println(annotation.toString());
  
      return "hello";
    }
  }
  </code></pre>
  
  <p>Log output looks like:</p>
  
  <blockquote>
    <p>15:59:55,223 INFO  [stdout] (default task-9) @edu.psu.swe.fortress.poc.interceptor.FortressProtected(permissions=[])
    15:59:55,229 INFO  [stdout] (default task-9) @edu.psu.swe.fortress.poc.interceptor.FortressProtected(permissions=[foo, bar])</p>
  </blockquote>
  
  <p>Thanks in advance.</p>