micronaut-projects / micronaut-core

Micronaut Application Framework
http://micronaut.io
Apache License 2.0
6.07k stars 1.07k forks source link

Questions about Annotation Metadata? #879

Closed chenjpu closed 5 years ago

chenjpu commented 5 years ago

demo

  //-------abstract 
   public abstract class GenericResource<T,PK>{
   .......

  @Get("/single/{id}")
  @Operation(code = Operation.READ, desc = Operation.READ_DESC)
  public T get(PK id) throws BusinessAccessException
   ........

  }

  //---------

 // ----- impl
 @Controller("/demo")
 @Resource(code = 99000, desc = "Demo Resource")
  public class Demo extends GenericResource<Demo,String>{

    ......
  }

//----micronatu SecurityRule
@Singleton
public class OperationAnnotationRule extends AbstractSecurityRule {

public SecurityRuleResult check(HttpRequest request, @Nullable RouteMatch routeMatch,
      @Nullable Map<String, Object> claims) {

    if (routeMatch instanceof MethodBasedRouteMatch) {
      MethodBasedRouteMatch methodRoute = ((MethodBasedRouteMatch) routeMatch);
      if (methodRoute.hasAnnotation(Operation.class)) {

        //how to get information about @Resource  annotation metadata ????
     }
}
jameskleeh commented 5 years ago

Github issues are for reporting potential bugs with the framework. Please ask questions in Gitter https://gitter.im/micronautfw/

The MethodBasedRouteMatch implements AnnotationMetadata. See the API documentation for how to use it https://docs.micronaut.io/latest/api/io/micronaut/core/annotation/AnnotationMetadata.html