1f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project/* Copyright (C) 2003 Vladimir Roubtsov. All rights reserved.
2f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project *
3f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * This program and the accompanying materials are made available under
4f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * the terms of the Common Public License v1.0 which accompanies this distribution,
5f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * and is available at http://www.eclipse.org/legal/cpl-v10.html
6f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project *
7f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * $Id: emmajavaTask.java,v 1.1.1.1.2.2 2004/07/16 23:32:04 vlad_r Exp $
8f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project */
9f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectpackage com.vladium.emma;
10f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
11f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport java.io.File;
12f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
13f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport com.vladium.util.IProperties;
14f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport com.vladium.util.Strings;
15f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport com.vladium.emma.ant.*;
16f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport com.vladium.emma.instr.FilterCfg;
17f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport com.vladium.emma.instr.FilterCfg.filterElement;
18f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport com.vladium.emma.report.ReportCfg;
19f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport com.vladium.emma.report.IReportEnums.DepthAttribute;
20f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport com.vladium.emma.report.IReportEnums.UnitsTypeAttribute;
21f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport com.vladium.emma.report.ReportCfg.Element_HTML;
220b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstockimport com.vladium.emma.report.ReportCfg.Element_LCOV;
23f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport com.vladium.emma.report.ReportCfg.Element_TXT;
24f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport com.vladium.emma.report.ReportCfg.Element_XML;
25f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
26f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport org.apache.tools.ant.BuildException;
27f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport org.apache.tools.ant.Project;
28f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport org.apache.tools.ant.taskdefs.Java;
29f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport org.apache.tools.ant.types.Commandline;
30f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport org.apache.tools.ant.types.Path;
31f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport org.apache.tools.ant.types.Reference;
32f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
33f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// ----------------------------------------------------------------------------
34f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project/**
35f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * @author Vlad Roubtsov, (C) 2003
36f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project */
37f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectpublic
38f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectclass emmajavaTask extends Java
39f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project{
40f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // public: ................................................................
41f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
42f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
43f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public void init () throws BuildException
44f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
45f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        super.init ();
46f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
47f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_verbosityCfg = new VerbosityCfg ();
48f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_genericCfg = new GenericCfg (this);
49f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_filterCfg = new FilterCfg (this);
50f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_reportCfg = new ReportCfg (project, this);
51f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        setEnabled (true);
52f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
53f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
54f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
55f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public void execute () throws BuildException
56f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
57f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        log (IAppConstants.APP_VERBOSE_BUILD_ID, Project.MSG_VERBOSE);
58f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
59f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        if (getClasspath () == null)
60f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            throw (BuildException) SuppressableTask.newBuildException (getTaskName ()
61f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                + ": this task requires 'classpath' attribute to be set", location).fillInStackTrace ();
62f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
63f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
64f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        if (isEnabled ())
65f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        {
66f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            // fork:
67f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            if (m_forkUserOverride && ! m_fork)
68f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                log (getTaskName () + ": 'fork=\"false\"' attribute setting ignored (this task always forks)", Project.MSG_WARN);
69f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
70f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            super.setFork (true); // always fork
71f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
72f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            // add emma libs to the parent task's classpath [to support non-extdir deployment]:
73f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            final Path libClasspath = m_libClasspath;
74f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            if ((libClasspath != null) && (libClasspath.size () > 0))
75f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            {
76f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                super.createClasspath ().append (libClasspath);
77f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            }
78f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
79f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            // classname|jar (1/2):
80f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            super.setClassname ("emmarun");
81f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
82f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            // <emmajava> extensions:
83f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            {
84f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                // report types:
85f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                {
86f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    String reportTypes = Strings.toListForm (m_reportCfg.getReportTypes (), ',');
87f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    if ((reportTypes == null) || (reportTypes.length () == 0)) reportTypes = "txt";
88f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
89f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    super.createArg ().setValue ("-r");
90f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    super.createArg ().setValue (reportTypes);
91f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                }
92f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
93f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                // full classpath scan flag:
94f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                {
95f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    if (m_scanCoveragePath)
96f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    {
97f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                        super.createArg ().setValue ("-f");
98f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    }
99f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                }
100f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
101f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                // dump raw data flag and options:
102f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                {
103f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    if (m_dumpSessionData)
104f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    {
105f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                        super.createArg ().setValue ("-raw");
106f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
107f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                        if (m_outFile != null)
108f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                        {
109f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                            super.createArg ().setValue ("-out");
110f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                            super.createArg ().setValue (m_outFile.getAbsolutePath ());
111f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                        }
112f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
113f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                        if (m_outFileMerge != null)
114f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                        {
115f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                            super.createArg ().setValue ("-merge");
116f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                            super.createArg ().setValue (m_outFileMerge.booleanValue () ? "y" : "n");
117f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                        }
118f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    }
119f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    else
120f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    {
121f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                        if (m_outFile != null)
122f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                            log (getTaskName () + ": output file attribute ignored ('fullmetadata=\"true\"' not specified)", Project.MSG_WARN);
123f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
124f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                        if (m_outFileMerge != null)
125f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                            log (getTaskName () + ": merge attribute setting ignored ('fullmetadata=\"true\"' not specified)", Project.MSG_WARN);
126f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    }
127f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                }
128f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
129f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                // instr filter:
130f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                {
131f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    final String [] specs = m_filterCfg.getFilterSpecs ();
132f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    if ((specs != null) && (specs.length > 0))
133f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    {
134f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                        super.createArg ().setValue ("-ix");
135f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                        super.createArg ().setValue (Strings.toListForm (specs, ','));
136f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    }
137f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                }
138f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
139f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                // sourcepath:
140f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                {
141f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    final Path srcpath = m_reportCfg.getSourcepath ();
142f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    if (srcpath != null)
143f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    {
144f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                        super.createArg ().setValue ("-sp");
145f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                        super.createArg ().setValue (Strings.toListForm (srcpath.list (), ','));
146f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    }
147f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                }
148f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
149f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                // all other generic settings:
150f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                {
151f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    final IProperties reportSettings = m_reportCfg.getReportSettings ();
152f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    final IProperties genericSettings = m_genericCfg.getGenericSettings ();
153f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
154f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    // TODO: another options is to read this file in the forked JVM [use '-props' pass-through]
155f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    // the best option depends on how ANT resolves relative file names
156f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    final IProperties fileSettings = m_genericCfg.getFileSettings ();
157f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
158f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    // verbosity settings use dedicated attributes and hence are more specific
159f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    // than anything generic:
160f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    final IProperties verbositySettings = m_verbosityCfg.getSettings ();
161f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
162f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    // (1) file settings have lower priority than any explicitly named overrides
163f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    // (2) named report settings override generic named settings
164f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    // (3) verbosity settings use dedicated attributes (not overlapping with report
165f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    // cfg) and hence are more specific than anything generic
166f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    final IProperties settings = IProperties.Factory.combine (reportSettings,
167f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                                                 IProperties.Factory.combine (verbositySettings,
168f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                                                 IProperties.Factory.combine (genericSettings,
169f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                                                                              fileSettings)));
170f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
171f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    final String [] argForm = settings.toAppArgsForm ("-D");
172f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    if (argForm.length > 0)
173f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    {
174f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                        for (int a = 0; a < argForm.length; ++ a)
175f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                            super.createArg ().setValue (argForm [a]);
176f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    }
177f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                }
178f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            }
179f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
180f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            // [assertion: getClasspath() is not null]
181f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
182f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            // classpath:
183f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            super.createArg ().setValue ("-cp");
184f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            super.createArg ().setPath (getClasspath ());
185f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
186f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            // classname|jar (2/2):
187f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            if (getClassname () != null)
188f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                super.createArg ().setValue (getClassname ());
189f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            else if (getJar () != null)
190f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            {
191f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                super.createArg ().setValue ("-jar");
192f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                super.createArg ().setValue (getJar ().getAbsolutePath ());
193f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            }
194f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            else
195f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                throw (BuildException) SuppressableTask.newBuildException (getTaskName ()
196f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    + "either 'jar' or 'classname' attribute must be set", location).fillInStackTrace ();
197f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
198f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            // main class args:
199f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            if (m_appArgs != null)
200f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            {
201f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                final String [] args = m_appArgs.getArguments ();
202f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                for (int a = 0; a < args.length; ++ a)
203f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                {
204f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    super.createArg ().setValue (args [a]); // note: spaces etc are escaped correctly by ANT libs
205f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                }
206f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            }
207f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        }
208f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        else
209f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        {
210f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            // fork:
211f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            super.setFork (m_fork);
212f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
213f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            // [assertion: getClasspath() is not null]
214f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
215f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            // classpath:
216f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            super.createClasspath ().append (getClasspath ()); // can't use setClasspath() for obvious reasons
217f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
218f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            // classname|jar:
219f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            if (getClassname () != null)
220f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                super.setClassname (getClassname ());
221f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            else if (getJar () != null)
222f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                super.setJar (getJar ());
223f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            else
224f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                throw (BuildException) SuppressableTask.newBuildException (getTaskName ()
225f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    + "either 'jar' or 'classname' attribute must be set", location).fillInStackTrace ();
226f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
227f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            // main class args:
228f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            if (m_appArgs != null)
229f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            {
230f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                final String [] args = m_appArgs.getArguments ();
231f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                for (int a = 0; a < args.length; ++ a)
232f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                {
233f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    super.createArg ().setValue (args [a]); // note: spaces etc are escaped correctly by ANT libs
234f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                }
235f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            }
236f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        }
237f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
238f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        super.execute ();
239f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
240f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
241f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
242f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
243f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // <java> overrides [ANT 1.4]:
244f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
245f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public void setClassname (final String classname)
246f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
247f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        if (getJar () != null)
248f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            throw (BuildException) SuppressableTask.newBuildException (getTaskName ()
249f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                + "'jar' and 'classname' attributes cannot be set at the same time", location).fillInStackTrace ();
250f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
251f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_classname = classname;
252f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
253f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
254f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public void setJar (final File file)
255f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
256f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        if (getClassname () != null)
257f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            throw (BuildException) SuppressableTask.newBuildException (getTaskName ()
258f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                + "'jar' and 'classname' attributes cannot be set at the same time", location).fillInStackTrace ();
259f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
260f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_jar = file;
261f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
262f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
263f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
264f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public void setClasspath (final Path path)
265f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
266f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        if (m_classpath == null)
267f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            m_classpath = path;
268f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        else
269f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            m_classpath.append (path);
270f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
271f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
272f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public void setClasspathRef (final Reference ref)
273f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
274f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        createClasspath ().setRefid (ref);
275f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
276f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
277f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public Path createClasspath ()
278f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
279f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        if (m_classpath == null)
280f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            m_classpath = new Path (project);
281f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
282f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        return m_classpath.createPath ();
283f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
284f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
285f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    /**
286f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project     * This is already deprecated in ANT v1.4. However, it is still supported by
287f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project     * the parent task so I do likewise.
288f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project     */
289f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public void setArgs (final String args)
290f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
291f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        throw (BuildException) SuppressableTask.newBuildException (getTaskName ()
292f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            + ": disallows using <java>'s deprecated 'args' attribute", location).fillInStackTrace ();
293f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
294f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
295f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    /**
296f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project     * Not overridable.
297f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project     */
298f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public final void setFork (final boolean fork)
299f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
300f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_fork = fork;
301f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_forkUserOverride = true;
302f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
303f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
304f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    /**
305f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project     * Not overridable [due to limitations in ANT's Commandline].
306f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project     */
307f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public final Commandline.Argument createArg ()
308f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
309f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        if (m_appArgs == null)
310f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            m_appArgs = new Commandline ();
311f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
312f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        return m_appArgs.createArgument ();
313f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
314f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
315f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // <java> overrides [ANT 1.5]:
316f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
317f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // [nothing at this point]
318f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
319f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
320f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // <emmajava> extensions:
321f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
322f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public void setEnabled (final boolean enabled)
323f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
324f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_enabled = enabled;
325f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
326f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
327f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // .properties file attribute:
328f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
329f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public final void setProperties (final File file)
330f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
331f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_genericCfg.setProperties (file);
332f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
333f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
334f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // generic property element:
335f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
336f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public final PropertyElement createProperty ()
337f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
338f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        return m_genericCfg.createProperty ();
339f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
340f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
341f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // verbosity attribute:
342f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
343f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public void setVerbosity (final VerbosityCfg.VerbosityAttribute verbosity)
344f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
345f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_verbosityCfg.setVerbosity (verbosity);
346f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
347f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
348f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // verbosity class filter attribute:
349f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
350f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public void setVerbosityfilter (final String filter)
351f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
352f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_verbosityCfg.setVerbosityfilter (filter);
353f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
354f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
355f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // lib classpath attribute [to support non-extdir deployment]:
356f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
357f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public final void setLibclasspath (final Path classpath)
358f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
359f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        if (m_libClasspath == null)
360f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            m_libClasspath = classpath;
361f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        else
362f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            m_libClasspath.append (classpath);
363f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
364f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
365f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public final void setLibclasspathRef (final Reference ref)
366f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
367f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        if (m_libClasspath == null)
368f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            m_libClasspath = new Path (project);
369f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
370f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_libClasspath.createPath ().setRefid (ref);
371f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
372f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
373f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // -f flag:
374f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
375f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public void setFullmetadata (final boolean full)
376f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
377f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_scanCoveragePath = full; // defaults to false TODO: maintain the default in a central location
378f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
379f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
380f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // -raw flag:
381f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
382f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public void setDumpsessiondata (final boolean dump)
383f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
384f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_dumpSessionData = dump;
385f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
386f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
387f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // -out option:
388f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
389f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // sessiondatafile|outfile attribute:
390f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
391f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public void setSessiondatafile (final File file)
392f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
393f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        if (m_outFile != null)
394f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            throw (BuildException) SuppressableTask.newBuildException (getTaskName ()
395f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                + ": session data file attribute already set", location).fillInStackTrace ();
396f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
397f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_outFile = file;
398f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
399f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
400f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public void setOutfile (final File file)
401f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
402f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        if (m_outFile != null)
403f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            throw (BuildException) SuppressableTask.newBuildException (getTaskName ()
404f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                + ": session data file attribute already set", location).fillInStackTrace ();
405f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
406f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_outFile = file;
407f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
408f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
409f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//    public void setTofile (final File file)
410f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//    {
411f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//        if (m_outFile != null)
412f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//            throw (BuildException) SuppressableTask.newBuildException (getTaskName ()
413f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//                + ": session data file attribute already set", location).fillInStackTrace ();
414f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//
415f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//        m_outFile = file;
416f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//    }
417f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//
418f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//    public void setFile (final File file)
419f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//    {
420f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//        if (m_outFile != null)
421f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//            throw (BuildException) SuppressableTask.newBuildException (getTaskName ()
422f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//                + ": session data file attribute already set", location).fillInStackTrace ();
423f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//
424f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//        m_outFile = file;
425f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//    }
426f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
427f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
428f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // merge attribute:
429f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
430f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public void setMerge (final boolean merge)
431f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
432f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_outFileMerge = merge ? Boolean.TRUE : Boolean.FALSE;
433f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
434f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
435f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // instr filter attribute/element:
436f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
437f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public final void setFilter (final String filter)
438f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
439f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_filterCfg.setFilter (filter);
440f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
441f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
442f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public final filterElement createFilter ()
443f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
444f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        return m_filterCfg.createFilter ();
445f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
446f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
447f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
448f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // TODO: should what's below go inside <report></report> ?
449f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
450f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // sourcepath attribute/element:
451f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
452f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public final void setSourcepath (final Path path)
453f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
454f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_reportCfg.setSourcepath (path);
455f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
456f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
457f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public final void setSourcepathRef (final Reference ref)
458f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
459f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_reportCfg.setSourcepathRef (ref);
460f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
461f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
462f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public final Path createSourcepath ()
463f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
464f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        return m_reportCfg.createSourcepath ();
465f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
466f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
467f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
468f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // generator elements:
469f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
470f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public final Element_TXT createTxt ()
471f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
472f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        return m_reportCfg.createTxt ();
473f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
474f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
4750b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstock    public final Element_LCOV createLcov ()
4760b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstock    {
4770b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstock        return m_reportCfg.createLcov ();
4780b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstock    }
4790b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstock
480f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public final Element_HTML createHtml ()
481f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
482f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        return m_reportCfg.createHtml ();
483f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
484f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
485f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public final Element_XML createXml ()
486f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
487f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        return m_reportCfg.createXml ();
488f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
489f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
490f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
491f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // report properties [defaults for all report types]:
492f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
493f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public final void setUnits (final UnitsTypeAttribute units)
494f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
495f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_reportCfg.setUnits (units);
496f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
497f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
498f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public final void setDepth (final DepthAttribute depth)
499f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
500f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_reportCfg.setDepth (depth);
501f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
502f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
503f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public final void setColumns (final String columns)
504f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
505f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_reportCfg.setColumns (columns);
506f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
507f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
508f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public final void setSort (final String sort)
509f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
510f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_reportCfg.setSort (sort);
511f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
512f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
513f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public final void setMetrics (final String metrics)
514f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
515f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_reportCfg.setMetrics (metrics);
516f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
517f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
518f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // these are not supported anymore
519f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
520f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//    public final void setOutdir (final File dir)
521f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//    {
522f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//        m_reportCfg.setOutdir (dir);
523f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//    }
524f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//
525f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//    public final void setDestdir (final File dir)
526f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//    {
527f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//        m_reportCfg.setDestdir (dir);
528f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//    }
529f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
530f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project      // should be set at this level [and conflicts with raw data opts]:
531f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
532f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//    public void setOutfile (final String fileName)
533f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//    {
534f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//        m_reportCfg.setOutfile (fileName);
535f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project//    }
536f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
537f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public void setEncoding (final String encoding)
538f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
539f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_reportCfg.setEncoding (encoding);
540f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
541f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
542f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // protected: .............................................................
543f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
544f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
545f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    protected String getClassname ()
546f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
547f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        return m_classname;
548f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
549f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
550f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    protected File getJar ()
551f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
552f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        return m_jar;
553f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
554f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
555f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    protected Path getClasspath ()
556f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
557f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        return m_classpath;
558f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
559f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
560f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // extended functionality:
561f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
562f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    protected boolean isEnabled ()
563f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
564f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        return m_enabled;
565f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
566f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
567f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // package: ...............................................................
568f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
569f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // private: ...............................................................
570f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
571f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // <java> overrides:
572f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
573f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    private Path m_classpath;
574f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    private String m_classname;
575f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    private File m_jar;
576f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    private Commandline m_appArgs;
577f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    private boolean m_fork, m_forkUserOverride;
578f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
579f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // <emmajava> extensions:
580f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
581f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    private boolean m_enabled;
582f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    private Path m_libClasspath;
583f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    private /*final*/ VerbosityCfg m_verbosityCfg;
584f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    private /*final*/ GenericCfg m_genericCfg;
585f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    private /*final*/ FilterCfg m_filterCfg;
586f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    private /*final*/ ReportCfg m_reportCfg;
587f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    private boolean m_scanCoveragePath; // defaults to false
588f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    private boolean m_dumpSessionData; //defaults to false
589f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    private File m_outFile;
590f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    private Boolean m_outFileMerge;
591f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
592f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project} // end of class
5930b5519af3cd5ac3a90a29d110fea49345e8e286bTim Baverstock// ----------------------------------------------------------------------------
594