View Javadoc

1   /**
2    * - Digitalis Internal Framework v2.0 -
3    *
4    * (C) 2007, Digitalis Informatica. 
5    * 
6    * Distribuicao e Gestao de Informatica, Lda.
7    * Estrada de Paco de Arcos num.9 - Piso -1
8    * 2780-666 Paco de Arcos
9    * Telefone: (351) 21 4408990
10   * Fax: (351) 21 4408999
11   * http://www.digitalis.pt 
12   */
13  package pt.digitalis.dif.dem.annotations.metaannotations;
14  
15  import java.lang.annotation.ElementType;
16  import java.lang.annotation.Retention;
17  import java.lang.annotation.RetentionPolicy;
18  import java.lang.annotation.Target;
19  
20  /**
21   * Marks a DEM Annotation as a primary annotation.
22   * 
23   * A primary annotation must be the only one of it's type to annotate an element
24   * and excludes all the other primary annotations.
25   * 
26   * Primary annotations can have one of two types: <b>pure primary</b> and
27   * <b>non-pure primary</b>. Non-pure primary annotations might be used as
28   * non-primary annotations on some contexts. To define these contexts the
29   * programmer must supply a list of annotations to whom the annotation yields
30   * its primariness.
31   * 
32   * @author Pedro Viegas <a
33   *         href="mailto:pviegas@digitalis.pt">pviegas@digitalis.pt</a>
34   * @author Rodrigo Gonçalves <a
35   *         href="mailto:rgoncalves@digitalis.pt">rgoncalves@digitalis.pt</a>
36   * @created Aug 29, 2007
37   */
38  @Target(ElementType.ANNOTATION_TYPE)
39  @Retention(RetentionPolicy.RUNTIME)
40  public @interface Primary {
41  	/**
42  	 * The list of annotations that force the primariness yielding.
43  	 * 
44  	 * TODO: Should allow for simple class names, defaulting to the current
45  	 * package. Also allow the use of:
46  	 *  - "#BasePackage#.entities.ApplicationDefinition
47  	 *  - "#BasePackage#.Application
48  	 *  - "#Entities#.ApplicationDefinition
49  	 *  - "#Parameter#.Parameter
50  	 *  - "#Stage#.ErrorView
51  	 *
52       * TO Rodrigo: see note on pt.digitalis.dif.dem.annotations.metaannotations.BindToPrimary#value()
53  	 */
54      
55  	String yieldTo() default "Pure primary";
56  }