All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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;
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy