Sistema de permissão avançado. VRaptor + Anotações

Pessoal, queria um sistema avançado de permissões que o super usuário pudesse controlar.

A minha ideia é:

O super usuário cria grupos e configura as permissões para CADA MÉTODO DO CONTROLLER, ou seja, para cada método do meu controller eu vou ter uma permissão específica.

Pensei em fazer isso usando enum de permissões para cada controller e usando as anotações:

[code]public interface Permission {

public String getLabel();

}
[/code]

[code]public enum GroupControllerPermission implements Permission {

GROUP_SEE("Visualizar grupos"), GROUP_SAVE("Criar/Adicionar grupos"), GROUP_UPDATE("Atulizar grupos"), GROUP_DELETE("Deletar grupos");

private final String label;

GroupControllerPermission(String label) {
	this.label = label;
}

public String getLabel() {
	return this.label;
}

}[/code]

Mas descobri que o código abaixo não compila:

[code]@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.TYPE, ElementType.METHOD })
public @interface Access {

public Collection<Permission> value();

}
[/code]

“Invalid type Collection for the annotation attribute Access.value; only primitive type, String, Class, annotation, enumeration are permitted or 1-dimensional arrays thereof”

Alguém tem uma solução melhor ? Existe uma forma mais simples de fazer isso ?
Eu posso colocar TODAS as permissões em um enum só. Mas imagina como esse enum ficaria, sabendo que cada método do controller tem uma permissão especifica.

Valeu. Abraços.

Você deve usar ARRAY… =D

E acho que não pode usar interface…

Fica assim:

@Retention(RetentionPolicy.RUNTIME)  
@Target({ ElementType.TYPE, ElementType.METHOD })  
public @interface Access {  
  
   GroupControllerPermission[] value();  
  
}  

E, para usar, basta colocar as chaves:
@Access({GroupControllerPermission.GROUP_SEE, GroupControllerPermission.GROUP_SAVE})