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