/** * Returns the class with the given name, either for the program class pool * or from the library class pool, or <code>null</code> if it can't be found. */ private Clazz findClass(String name) { // First look for the class in the program class pool. Clazz clazz = programClassPool.getClass(name); // Otherwise look for the class in the library class pool. if (clazz == null) { clazz = libraryClassPool.getClass(name); } return clazz; } }
/** * Returns the class with the given name, either for the program class pool * or from the library class pool, or <code>null</code> if it can't be found. */ private Clazz findClass(String name) { // First look for the class in the program class pool. Clazz clazz = programClassPool.getClass(name); // Otherwise look for the class in the library class pool. if (clazz == null) { clazz = libraryClassPool.getClass(name); } return clazz; } }
/** * Returns the class with the given name, either for the program class pool * or from the library class pool, or <code>null</code> if it can't be found. */ private Clazz findClass(String name) { // First look for the class in the program class pool. Clazz clazz = programClassPool.getClass(name); // Otherwise look for the class in the library class pool. if (clazz == null) { clazz = libraryClassPool.getClass(name); } return clazz; } }
/** * Returns the class with the given name, either for the program class pool * or from the library class pool, or <code>null</code> if it can't be found. */ private Clazz findClass(String name) { // First look for the class in the program class pool. Clazz clazz = programClassPool.getClass(name); // Otherwise look for the class in the library class pool. if (clazz == null) { clazz = libraryClassPool.getClass(name); } return clazz; } }
/** * Returns the appropriate <code>ClassVisitor</code>. */ private ClassVisitor classFileVisitor(Clazz clazz) { return classPool.getClass(clazz.getName()) != null ? presentClassVisitor : missingClassVisitor; } }
/** * Returns the appropriate <code>ClassVisitor</code>. */ private ClassVisitor classFileVisitor(Clazz clazz) { return classPool.getClass(clazz.getName()) != null ? presentClassVisitor : missingClassVisitor; } }
/** * Applies the given ClassVisitor to the class with the given name, * if it is present in the class pool. */ public void classAccept(String className, ClassVisitor classVisitor) { Clazz clazz = getClass(className); if (clazz != null) { clazz.accept(classVisitor); } } }
/** * Returns the appropriate <code>ClassVisitor</code>. */ private ClassVisitor classFileVisitor(Clazz clazz) { return classPool.getClass(clazz.getName()) != null ? presentClassVisitor : missingClassVisitor; } }
/** * Returns the appropriate <code>ClassVisitor</code>. */ private ClassVisitor classFileVisitor(Clazz clazz) { return classPool.getClass(clazz.getName()) != null ? presentClassVisitor : missingClassVisitor; } }
/** * Applies the given ClassVisitor to the class with the given name, * if it is present in the class pool. */ public void classAccept(String className, ClassVisitor classVisitor) { Clazz clazz = getClass(className); if (clazz != null) { clazz.accept(classVisitor); } } }
/** * Applies the given ClassVisitor to the class with the given name, * if it is present in the class pool. */ public void classAccept(String className, ClassVisitor classVisitor) { Clazz clazz = getClass(className); if (clazz != null) { clazz.accept(classVisitor); } } }
/** * Applies the given ClassVisitor to the class with the given name, * if it is present in the class pool. */ public void classAccept(String className, ClassVisitor classVisitor) { Clazz clazz = getClass(className); if (clazz != null) { clazz.accept(classVisitor); } } }
private void writeClassMap(PrintWriter writer, ClassPool classPool) { Iterator iterator = classPool.classNames(); while (iterator.hasNext()) { String className = (String)iterator.next(); StringBuilder builder = new StringBuilder(); builder.append(ClassUtil.externalClassName(className)); builder.append(","); ProgramClass clazz = (ProgramClass)classPool.getClass(className); builder.append(ClassUtil.externalClassName(clazz.getName())); builder.append(","); boolean hasRemovedMethods = (clazz.u2accessFlags & ClassConstants.ACC_REMOVED_METHODS) != 0; builder.append(hasRemovedMethods || hasObfuscatedMethods(clazz) ? 1 : 0); builder.append(","); boolean hasRemovedFields = (clazz.u2accessFlags & ClassConstants.ACC_REMOVED_FIELDS) != 0; builder.append(hasRemovedFields || hasObfuscatedFields(clazz) ? 1 : 0); writer.println(builder.toString()); } }
private void writeClassMap(PrintWriter writer, ClassPool classPool) { Iterator iterator = classPool.classNames(); while (iterator.hasNext()) { String className = (String)iterator.next(); StringBuilder builder = new StringBuilder(); builder.append(ClassUtil.externalClassName(className)); builder.append(","); ProgramClass clazz = (ProgramClass)classPool.getClass(className); builder.append(ClassUtil.externalClassName(clazz.getName())); builder.append(","); boolean hasRemovedMethods = (clazz.u2accessFlags & ClassConstants.ACC_REMOVED_METHODS) != 0; builder.append(hasRemovedMethods || hasObfuscatedMethods(clazz) ? 1 : 0); builder.append(","); boolean hasRemovedFields = (clazz.u2accessFlags & ClassConstants.ACC_REMOVED_FIELDS) != 0; builder.append(hasRemovedFields || hasObfuscatedFields(clazz) ? 1 : 0); writer.println(builder.toString()); } }
private void writeClassMap(PrintWriter writer, ClassPool classPool) { Iterator iterator = classPool.classNames(); while (iterator.hasNext()) { String className = (String)iterator.next(); StringBuilder builder = new StringBuilder(); builder.append(ClassUtil.externalClassName(className)); builder.append(","); ProgramClass clazz = (ProgramClass)classPool.getClass(className); builder.append(ClassUtil.externalClassName(clazz.getName())); builder.append(","); boolean hasRemovedMethods = (clazz.u2accessFlags & ClassConstants.ACC_REMOVED_METHODS) != 0; builder.append(hasRemovedMethods || hasObfuscatedMethods(clazz) ? 1 : 0); builder.append(","); boolean hasRemovedFields = (clazz.u2accessFlags & ClassConstants.ACC_REMOVED_FIELDS) != 0; builder.append(hasRemovedFields || hasObfuscatedFields(clazz) ? 1 : 0); writer.println(builder.toString()); } }
/** * Creates a map of old package prefixes to new package prefixes, based on * the given class pool. */ private static Map createPackagePrefixMap(ClassPool classPool) { Map PackagePrefixMap = new HashMap(); Iterator iterator = classPool.classNames(); while (iterator.hasNext()) { String className = (String)iterator.next(); String PackagePrefix = ClassUtil.internalPackagePrefix(className); String mappedNewPackagePrefix = (String)PackagePrefixMap.get(PackagePrefix); if (mappedNewPackagePrefix == null || !mappedNewPackagePrefix.equals(PackagePrefix)) { String newClassName = classPool.getClass(className).getName(); String newPackagePrefix = ClassUtil.internalPackagePrefix(newClassName); PackagePrefixMap.put(PackagePrefix, newPackagePrefix); } } return PackagePrefixMap; } }
/** * Creates a map of old package prefixes to new package prefixes, based on * the given class pool. */ private static Map createPackagePrefixMap(ClassPool classPool) { Map packagePrefixMap = new HashMap(); Iterator iterator = classPool.classNames(); while (iterator.hasNext()) { String className = (String)iterator.next(); String packagePrefix = ClassUtil.internalPackagePrefix(className); String mappedNewPackagePrefix = (String)packagePrefixMap.get(packagePrefix); if (mappedNewPackagePrefix == null || !mappedNewPackagePrefix.equals(packagePrefix)) { String newClassName = classPool.getClass(className).getName(); String newPackagePrefix = ClassUtil.internalPackagePrefix(newClassName); packagePrefixMap.put(packagePrefix, newPackagePrefix); } } return packagePrefixMap; } }
/** * Creates a map of old package prefixes to new package prefixes, based on * the given class pool. */ private static Map createPackagePrefixMap(ClassPool classPool) { Map packagePrefixMap = new HashMap(); Iterator iterator = classPool.classNames(); while (iterator.hasNext()) { String className = (String)iterator.next(); String packagePrefix = ClassUtil.internalPackagePrefix(className); String mappedNewPackagePrefix = (String)packagePrefixMap.get(packagePrefix); if (mappedNewPackagePrefix == null || !mappedNewPackagePrefix.equals(packagePrefix)) { String newClassName = classPool.getClass(className).getName(); String newPackagePrefix = ClassUtil.internalPackagePrefix(newClassName); packagePrefixMap.put(packagePrefix, newPackagePrefix); } } return packagePrefixMap; } }
public void read(DataEntry dataEntry) throws IOException { String inputName = dataEntry.getName(); String className = inputName.substring(0, inputName.length() - ClassConstants.CLASS_FILE_EXTENSION.length()); // Find the modified class corrsponding to the input entry. ProgramClass programClass = (ProgramClass)classPool.getClass(className); if (programClass != null) { // Rename the data entry if necessary. String newClassName = programClass.getName(); if (!className.equals(newClassName)) { dataEntry = new RenamedDataEntry(dataEntry, newClassName + ClassConstants.CLASS_FILE_EXTENSION); } // Get the output entry corresponding to this input entry. OutputStream outputStream = dataEntryWriter.getOutputStream(dataEntry); if (outputStream != null) { // Write the class to the output entry. DataOutputStream classOutputStream = new DataOutputStream(outputStream); new ProgramClassWriter(classOutputStream).visitProgramClass(programClass); classOutputStream.flush(); } } } }
/** * Checks the specified class (if any), * printing notes if necessary. */ private void checkClassName(String className) { if (className != null && !containsWildCards(className) && programClassPool.getClass(className) == null && libraryClassPool.getClass(className) == null && notePrinter.accepts(className)) { notePrinter.print(className, "Note: the configuration refers to the unknown class '" + ClassUtil.externalClassName(className) + "'"); String fullyQualifiedClassName = "**" + ClassConstants.INTERNAL_PACKAGE_SEPARATOR + className.substring(className.lastIndexOf(ClassConstants.INTERNAL_PACKAGE_SEPARATOR)+1); ClassNameFilter classNameFilter = new ClassNameFilter(fullyQualifiedClassName, this); programClassPool.classesAccept(classNameFilter); libraryClassPool.classesAccept(classNameFilter); } }