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