| 1 21 package proguard.classfile.visitor; 22 23 import proguard.classfile.*; 24 25 32 public class ClassPresenceFilter implements ClassVisitor 33 { 34 private ClassPool classPool; 35 private ClassVisitor presentClassVisitor; 36 private ClassVisitor missingClassVisitor; 37 38 39 48 public ClassPresenceFilter(ClassPool classPool, 49 ClassVisitor presentClassVisitor, 50 ClassVisitor missingClassVisitor) 51 { 52 this.classPool = classPool; 53 this.presentClassVisitor = presentClassVisitor; 54 this.missingClassVisitor = missingClassVisitor; 55 } 56 57 58 60 public void visitProgramClass(ProgramClass programClass) 61 { 62 ClassVisitor classFileVisitor = classFileVisitor(programClass); 63 64 if (classFileVisitor != null) 65 { 66 classFileVisitor.visitProgramClass(programClass); 67 } 68 } 69 70 71 public void visitLibraryClass(LibraryClass libraryClass) 72 { 73 ClassVisitor classFileVisitor = classFileVisitor(libraryClass); 74 75 if (classFileVisitor != null) 76 { 77 classFileVisitor.visitLibraryClass(libraryClass); 78 } 79 } 80 81 82 84 87 private ClassVisitor classFileVisitor(Clazz clazz) 88 { 89 return classPool.getClass(clazz.getName()) != null ? 90 presentClassVisitor : 91 missingClassVisitor; 92 } 93 } 94 | Popular Tags |