I would like to understand of this issue
public class DogController extends FeedCommonController<DogModel extends CommonAnimalModel, FARMER_1_AUTH> {
  // something
 // This is working - but there is duplication
  @Security.Authenticated(FARMER_1_AUTH.class)
  public boolean feed_it() {
    // nothing special
    DogModel.getRandom().feed_it();
  }
}
public class CatController extends FeedCommonController<CatModel extends CommonAnimalModel, FARMER_2_AUTH> {
  // something
  // This is working - but there is duplication 
  @Security.Authenticated(FARMER_2_AUTH.class)
  public boolean feed_it() {
    // nothing special
     CatModel.getRandom().feed_it();
  }
}
And I want to simplify the code and remove the duplicate methods, but I cannot put Class type to annotation.
public abstract class CommonAnimalController< T extends CommonAnimalModel, XXXXXX> {
   @Security.Authenticated(XXXXXX.class) // <-- Here is a problem with declaration 
   public boolean feed_it() {
      T.getRandom().feed_it();
   }
} 
/**
Get Token From HTTP Request from Actual Thread
*/
public class Security {
  @With(AuthenticatedAction.class)
  @Target({ElementType.TYPE, ElementType.METHOD})
  @Retention(RetentionPolicy.RUNTIME)
  public @interface Authenticated {
    Class<? extends Authenticator> value() default Authenticator.class;
  }
}
Concept with Annotation is already created and implemented on hundred classes. So its not possible make huge changes. But Its some Elegant way how to solved this?
 
    