com.linkare.zas.aspectj.NotAccessControlInjector.aj Maven / Gradle / Ivy
package com.linkare.zas.aspectj;
import com.linkare.zas.annotation.*;
import com.linkare.zas.api.ZasInitializer;
import com.linkare.zas.aspectj.utils.BaseZas;
/**
* This aspect enables the injection of access control annotations in a given
* client project. The aspect is abstract so that this feature is optional and
* hence, managed by the developer who uses Zás.
*
* @author Paulo Zenida
* @see NotAccessControlled
*/
@SuppressWarnings("unchecked")
public aspect NotAccessControlInjector extends BaseZas {
// ========================== Constructors ==========================
@ZasInitializer
protected NotAccessControlInjector() {
}
/**
* It injects the annotation NotAccessControlled
in all
* constructors of types having that annotation, which are not neither
* AccessControlled
nor NotAccessControlled
.
*/
declare @constructor :
!@AccessControlled !@NotAccessControlled (@NotAccessControlled *..*.*+).new(..) :
@NotAccessControlled;
/**
* It injects the annotation NotAccessControlled
in all
* methods of types having that annotation, which are not neither
* AccessControlled
nor NotAccessControlled
.
*/
declare @method :
!@AccessControlled !@NotAccessControlled * (@NotAccessControlled *..*+).*(..) :
@NotAccessControlled;
/**
* It injects the annotation NotAccessControlled
in all
* fields of types having that annotation, which are not neither
* AccessControlled
nor NotAccessControlled
.
*/
declare @field :
!@AccessControlled !@NotAccessControlled * (@NotAccessControlled *..*+).* :
@NotAccessControlled;
}