001 package edu.rice.cs.cunit.threadCheck.subAnnot.predicates;
002
003 import edu.rice.cs.cunit.threadCheck.subAnnot.PredicateLink;
004 import edu.rice.cs.cunit.threadCheck.subAnnot.Predicates;
005 import edu.rice.cs.cunit.threadCheck.subAnnot.InvariantAnnotation;
006
007 import java.lang.annotation.ElementType;
008 import java.lang.annotation.Retention;
009 import java.lang.annotation.RetentionPolicy;
010 import java.lang.annotation.Target;
011
012 /**
013 * An annotation used to designate methods that are only allowed to be run by the event thread.
014 * @author Mathias Ricken
015 */
016 @Retention(RetentionPolicy.RUNTIME)
017 @Target({ElementType.CONSTRUCTOR,ElementType.METHOD,ElementType.TYPE})
018
019 @PredicateLink(value = Predicates.class, method = "checkEventThread")
020 public @interface EventThread extends InvariantAnnotation {
021
022 //
023 // nested interfaces
024 //
025
026 /**
027 * An annotation used to designate methods that are only allowed to be run by the event thread
028 * after the component has been realized. Before that, any thread is allowed.
029 * @author Mathias Ricken
030 */
031 @Retention(RetentionPolicy.RUNTIME)
032 @Target({ElementType.CONSTRUCTOR,ElementType.METHOD,ElementType.TYPE})
033
034 @PredicateLink(value = Predicates.class, method = "checkEventThreadAfterRealized")
035 public @interface AfterRealized extends InvariantAnnotation {
036 }
037 }