1 19 20 package edu.umd.cs.findbugs.classfile; 21 22 import java.io.Serializable ; 23 24 import edu.umd.cs.findbugs.util.ClassName; 25 26 31 public class ClassDescriptor implements Comparable <ClassDescriptor>, Serializable { 32 private static final long serialVersionUID = 1L; 33 private final String className; 34 35 40 public ClassDescriptor(String className) { 41 if (className.indexOf('.') >= 0) { 42 throw new IllegalArgumentException ("Class name " + className + " not in VM format"); 43 } 44 if (!ClassName.isValidClassName(className)) { 45 throw new IllegalArgumentException ("Invalid class name " + className); 46 } 47 this.className = className; 48 } 49 50 53 public String getClassName() { 54 return className; 55 } 56 57 60 public int compareTo(ClassDescriptor o) { 61 return className.compareTo(o.className); 62 } 63 64 70 public String toResourceName() { 71 return className + ".class"; 72 } 73 74 79 public String toDottedClassName() { 80 return ClassName.toDottedClassName(className); 81 } 82 83 89 public static ClassDescriptor fromResourceName(String resourceName) { 90 if (!isClassResource(resourceName)) { 91 throw new IllegalArgumentException ("Resource " + resourceName + " is not a class"); 92 } 93 return new ClassDescriptor(resourceName.substring(0, resourceName.length() - 6)); 94 } 95 96 102 public static boolean isClassResource(String resourceName) { 103 return resourceName.endsWith(".class"); 105 } 106 107 110 @Override 111 public String toString() { 112 return className; 113 } 114 115 118 @Override 119 public boolean equals(Object obj) { 120 if (obj == null || obj.getClass() != this.getClass()) { 121 return false; 122 } 123 ClassDescriptor other = (ClassDescriptor) obj; 124 return this.className.equals(other.className); 125 } 126 127 130 @Override 131 public int hashCode() { 132 return className.hashCode(); 133 } 134 } 135 | Popular Tags |