1b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato/* 2b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * ProGuard -- shrinking, optimization, obfuscation, and preverification 3b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * of Java bytecode. 4b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 5b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Copyright (c) 2002-2009 Eric Lafortune (eric@graphics.cornell.edu) 6b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 7b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * This program is free software; you can redistribute it and/or modify it 8b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * under the terms of the GNU General Public License as published by the Free 9b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Software Foundation; either version 2 of the License, or (at your option) 10b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * any later version. 11b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 12b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * This program is distributed in the hope that it will be useful, but WITHOUT 13b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 14b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 15b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * more details. 16b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 17b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * You should have received a copy of the GNU General Public License along 18b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * with this program; if not, write to the Free Software Foundation, Inc., 19b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 21b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratopackage proguard.ant; 22b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 23b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratoimport org.apache.tools.ant.BuildException; 24b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratoimport proguard.*; 25b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratoimport proguard.classfile.util.ClassUtil; 26b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 27b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratoimport java.io.*; 28b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratoimport java.util.ArrayList; 29b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 30b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato/** 31b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * This Task allows to configure and run ProGuard from Ant. 32b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 33b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * @author Eric Lafortune 34b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 35b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratopublic class ProGuardTask extends ConfigurationTask 36b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato{ 37b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Ant task attributes. 38b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 39b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void setConfiguration(File configurationFile) throws BuildException 40b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 41b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato try 42b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 43b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato ConfigurationParser parser = new ConfigurationParser(configurationFile); 44b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 45b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato try 46b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 47b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato parser.parse(configuration); 48b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 49b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato catch (ParseException ex) 50b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 51b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato throw new BuildException(ex.getMessage()); 52b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 53b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato finally 54b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 55b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato parser.close(); 56b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 57b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 58b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato catch (IOException ex) 59b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 60b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato throw new BuildException(ex.getMessage()); 61b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 62b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 63b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 64b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 65b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 66b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * @deprecated Use the nested outjar element instead. 67b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 68b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void setOutjar(String parameters) 69b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 70b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato throw new BuildException("Use the <outjar> nested element instead of the 'outjar' attribute"); 71b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 72b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 73b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 74b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void setSkipnonpubliclibraryclasses(boolean skipNonPublicLibraryClasses) 75b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 76b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato configuration.skipNonPublicLibraryClasses = skipNonPublicLibraryClasses; 77b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 78b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 79b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 80b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void setSkipnonpubliclibraryclassmembers(boolean skipNonPublicLibraryClassMembers) 81b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 82b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato configuration.skipNonPublicLibraryClassMembers = skipNonPublicLibraryClassMembers; 83b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 84b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 85b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 86b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void setTarget(String target) 87b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 88b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato configuration.targetClassVersion = ClassUtil.internalClassVersion(target); 89b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato if (configuration.targetClassVersion == 0) 90b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 91b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato throw new BuildException("Unsupported target '"+target+"'"); 92b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 93b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 94b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 95b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 96b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void setForceprocessing(boolean forceProcessing) 97b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 98b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato configuration.lastModified = forceProcessing ? Long.MAX_VALUE : 0; 99b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 100b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 101b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 102b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void setPrintseeds(File printSeeds) 103b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 104b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato configuration.printSeeds = optionalFile(printSeeds); 105b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 106b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 107b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 108b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void setShrink(boolean shrink) 109b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 110b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato configuration.shrink = shrink; 111b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 112b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 113b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 114b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void setPrintusage(File printUsage) 115b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 116b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato configuration.printUsage = optionalFile(printUsage); 117b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 118b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 119b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 120b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void setOptimize(boolean optimize) 121b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 122b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato configuration.optimize = optimize; 123b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 124b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 125b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 126b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void setOptimizationpasses(int optimizationPasses) 127b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 128b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato configuration.optimizationPasses = optimizationPasses; 129b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 130b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 131b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 132b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void setAllowaccessmodification(boolean allowAccessModification) 133b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 134b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato configuration.allowAccessModification = allowAccessModification; 135b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 136b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 137b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 138b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void setMergeinterfacesaggressively(boolean mergeinterfacesaggressively) 139b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 140b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato configuration.mergeInterfacesAggressively = mergeinterfacesaggressively; 141b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 142b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 143b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 144b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void setObfuscate(boolean obfuscate) 145b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 146b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato configuration.obfuscate = obfuscate; 147b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 148b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 149b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 150b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void setPrintmapping(File printMapping) 151b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 152b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato configuration.printMapping = optionalFile(printMapping); 153b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 154b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 155b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 156b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void setApplymapping(File applyMapping) 157b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 158b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato configuration.applyMapping = resolvedFile(applyMapping); 159b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 160b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 161b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 162b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void setObfuscationdictionary(File obfuscationDictionary) 163b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 164b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato configuration.obfuscationDictionary = resolvedFile(obfuscationDictionary); 165b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 166b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 167b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 168b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void setClassobfuscationdictionary(File classObfuscationDictionary) 169b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 170b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato configuration.classObfuscationDictionary = resolvedFile(classObfuscationDictionary); 171b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 172b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 173b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 174b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void setPackageobfuscationdictionary(File packageObfuscationDictionary) 175b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 176b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato configuration.packageObfuscationDictionary = resolvedFile(packageObfuscationDictionary); 177b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 178b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 179b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 180b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void setOverloadaggressively(boolean overloadAggressively) 181b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 182b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato configuration.overloadAggressively = overloadAggressively; 183b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 184b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 185b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 186b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void setUseuniqueclassmembernames(boolean useUniqueClassMemberNames) 187b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 188b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato configuration.useUniqueClassMemberNames = useUniqueClassMemberNames; 189b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 190b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 191b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 192b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void setUsemixedcaseclassnames(boolean useMixedCaseClassNames) 193b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 194b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato configuration.useMixedCaseClassNames = useMixedCaseClassNames; 195b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 196b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 197b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 198b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void setFlattenpackagehierarchy(String flattenPackageHierarchy) 199b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 200b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato configuration.flattenPackageHierarchy = ClassUtil.internalClassName(flattenPackageHierarchy); 201b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 202b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 203b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 204b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void setRepackageclasses(String repackageClasses) 205b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 206b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato configuration.repackageClasses = ClassUtil.internalClassName(repackageClasses); 207b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 208b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 209b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 210b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * @deprecated Use the repackageclasses attribute instead. 211b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 212b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void setDefaultpackage(String defaultPackage) 213b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 214b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato configuration.repackageClasses = ClassUtil.internalClassName(defaultPackage); 215b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 216b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 217b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 218b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void setRenamesourcefileattribute(String newSourceFileAttribute) 219b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 220b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato configuration.newSourceFileAttribute = newSourceFileAttribute; 221b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 222b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 223b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 224b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void setPreverify(boolean preverify) 225b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 226b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato configuration.preverify = preverify; 227b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 228b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 229b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 230b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void setMicroedition(boolean microEdition) 231b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 232b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato configuration.microEdition = microEdition; 233b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 234b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 235b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 236b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void setVerbose(boolean verbose) 237b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 238b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato configuration.verbose = verbose; 239b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 240b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 241b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 242b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void setNote(boolean note) 243b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 244b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato configuration.note = note ? null : new ArrayList(); 245b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 246b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 247b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 248b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void setWarn(boolean warn) 249b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 250b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato configuration.warn = warn ? null : new ArrayList(); 251b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 252b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 253b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 254b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void setIgnorewarnings(boolean ignoreWarnings) 255b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 256b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato configuration.ignoreWarnings = ignoreWarnings; 257b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 258b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 259b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 260b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void setPrintconfiguration(File printConfiguration) 261b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 262b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato configuration.printConfiguration = optionalFile(printConfiguration); 263b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 264b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 265b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 266b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void setDump(File dump) 267b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 268b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato configuration.dump = optionalFile(dump); 269b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 270b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 271b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 272b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Implementations for Task. 273b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 274b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void execute() throws BuildException 275b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 276b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato try 277b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 278b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato ProGuard proGuard = new ProGuard(configuration); 279b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato proGuard.execute(); 280b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 281b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato catch (IOException ex) 282b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 283b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato throw new BuildException(ex.getMessage()); 284b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 285b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 286b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 287b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 288b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Small utility methods. 289b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 290b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 291b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns a file that is properly resolved with respect to the project 292b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * directory, or <code>null</code> or empty if its name is actually a 293b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * boolean flag. 294b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 295b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato private File optionalFile(File file) 296b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 297b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato String fileName = file.getName(); 298b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 299b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return 300b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato fileName.equalsIgnoreCase("false") || 301b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato fileName.equalsIgnoreCase("no") || 302b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato fileName.equalsIgnoreCase("off") ? null : 303b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato fileName.equalsIgnoreCase("true") || 304b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato fileName.equalsIgnoreCase("yes") || 305b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato fileName.equalsIgnoreCase("on") ? new File("") : 306b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato resolvedFile(file); 307b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 308b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 309b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 310b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 311b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns a file that is properly resolved with respect to the project 312b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * directory. 313b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 314b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato private File resolvedFile(File file) 315b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato { 316b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato return file.isAbsolute() ? file : 317b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato new File(getProject().getBaseDir(), 318b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato file.getName()); 319b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato } 320b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato} 321