001 package edu.rice.cs.cunit.instrumentors.threadCheck; 002 003 import edu.rice.cs.cunit.instrumentors.util.IScannerStrategy; 004 005 /** 006 * Storage class for bad predicate annotation warnings. 007 */ 008 public class BadPredicateAnnotationWarning extends RuntimeException 009 implements IScannerStrategy.IScanResult, Comparable<BadPredicateAnnotationWarning> { 010 /** 011 * Description of what was bad. 012 */ 013 public final String desc; 014 015 /** 016 * Create a new bad predicate annotation warning. 017 * @param desc description of what was bad 018 */ 019 public BadPredicateAnnotationWarning(String desc) { 020 this.desc = desc; 021 } 022 023 /** 024 * Return true if this object is equal to the other object. 025 * @param o other object 026 * @return true if equal 027 */ 028 public boolean equals(Object o) { 029 if (this == o) { 030 return true; 031 } 032 if (o == null || getClass() != o.getClass()) { 033 return false; 034 } 035 036 BadPredicateAnnotationWarning that = (BadPredicateAnnotationWarning)o; 037 038 if (desc != null ? !desc.equals(that.desc) : that.desc != null) { 039 return false; 040 } 041 042 return true; 043 } 044 045 /** 046 * Return a hash code for this object. 047 * @return hash code 048 */ 049 public int hashCode() { 050 return (desc != null ? desc.hashCode() : 0); 051 } 052 053 /** 054 * Compares this object with the specified object for order. 055 * @param o the Object to be compared. 056 * 057 * @return a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than 058 * the specified object. 059 * 060 * @throws ClassCastException if the specified object's type prevents it from being compared to this Object. 061 */ 062 public int compareTo(BadPredicateAnnotationWarning o) { 063 return desc.compareTo(o.desc); 064 } 065 066 /** 067 * Returns a string representation of the object. 068 * @return a string representation of the object 069 */ 070 public String toString() { 071 return desc; 072 } 073 074 /** 075 * Return the name of the property that was scanned for. 076 * @return property name 077 */ 078 public String getPropertyName() { 079 return "ThreadChecker Bad Predicate Annotation Warning"; 080 } 081 }