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 }