1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | package Torello.JavaDoc; import java.lang.annotation.*; // @StaticFunctional Annotation // // EXPORTS: // public Excuse[] excuses() default {}; // public String[] excused() default {}; // // // * Torello.JavaDoc.StaticFunctional // This is the actual User-Annotation that is part of the API. A user may place the // @StaticFunctional Annotation on a Type / CIET (Class, Interface, Enum, Annotation or Rec) // And the "StatelessClass" Simple-Feature will run. // // * Torello.JDUInternal.SimpleFeatures.StatelessClasses // This class is the "Work-Horse" for the Static-Function JDU-API User-Annotation. This class // does the actual work of inserting an HTML-Message into a Java-Doc '.html'-File which // explains that the User wants to inform his/her user's that a particular class/type does not // maintain any state. // // * Torello.JDUInternal.Annotations.TypeAnnotations.Processor.StaticFunctionalProcessor // This is Annotation-Processsor that is / can-be invoked by the 'javac' (Java-Compiler) at // Compile-Time. Of all of the Annotation-Processors that are used by the Java-Doc Upgrader, // this one does THE MOST Error-Checking. Most of them do nothing. // // * Torello.JDUInternal.Annotations.TypeAnnotations.Mirror.SFMirror // After the JDU Detects that a CIET / Type has had the @StaticFunctional Annotation placed // upon it, this class extracts the relevant information out of the Annotation using the AST // Library in 'com.sun.source.tree' and all of it's helper classes. It stores the data into // two lists. /** * <B STYLE='color:darkred;'>Java-Annotation:</B> * * A Java-Annotation for marking classes as 'Stateless Classes' - used to insert 'The Spaghetti * Report' into Java Doc Pages. * * <EMBED CLASS='external-html' DATA-FILE-ID=STATICFUNC> */ @Retention(RetentionPolicy.SOURCE) @Target(ElementType.TYPE) @JDHeaderBackgroundImg public @interface StaticFunctional { /** * This must contain the names of fields in this {@code class} or {@code interface} that * have been declared {@code static}, but have not been declared {@code final}. * * <BR /><BR /><B STYLE='color: red;'>NOTE:</B> The values in the {@code 'Excused'} array * must be parallel to the values in the {@code 'Excuses'} array. */ String[] Excused() default { }; /** * This must contain instances of the Enumerated-Type {@code 'Excuses'}. These excuses * should explain the reason why the named field has not been declared {@code 'final'} in any * {@code class} or {@code interface} that has been marked with the {@code @StaticFunction} * annotation. * * <BR /><BR /><B STYLE='color: red;'>NOTE:</B> The values in the {@code 'Excuses'} array * must be parallel to the values in the {@code 'Excused'} array. */ Excuse[] Excuses() default { }; } |