// -*- java -*-
// FILE: "C:\tmp\org\apache\tools\ant\MyExec.java" {{{
// LAST MODIFICATION: "Tue, 17 Apr 2001 16:32:02 Eastern Daylight Time ()"
// (C) 2001 by Salman Halim, <salman@bluestone.com>
// $Id:$ }}}

package org.apache.tools.ant;

import java.io.File;
import org.apache.tools.ant.types.Environment;
import org.apache.tools.ant.types.Commandline;

public class MyExec extends Task
{
  protected String      executable;
  protected File        dir;
  protected Environment env  = new Environment ();
  protected Commandline cmdl = new Commandline ();

  public void setExecutable (String val)
  {
    executable = val;
    System.out.println ("-=-=-=-=-=-=-=-=-=-= MyExec setExecutable executable:  " + executable);  // remove
  }

  public void setDir (File val)
  {
    dir = val;
    System.out.println ("-=-=-=-=-=-=-=-=-=-= MyExec setDir dir:  " + dir);  // remove
  }

  public void addEnv (Environment.Variable var)
  {
    env.addVariable (var);
    System.out.println ("-=-=-=-=-=-=-=-=-=-= MyExec addEnv var:  " + var);  // remove
  }

  public Commandline.Argument createArg ()
  {
    System.out.println ("-=-=-=-=-=-=-=-=-=-= MyExec createArg:  ");  // remove
    return cmdl.createArgument ();
  }

  public void execute ()
      throws BuildException
  {
    System.out.println ("-=-=-=-=-=-=-=-=-=-= MyExec execute env:  " + env);  // remove
    System.out.println ("-=-=-=-=-=-=-=-=-=-= MyExec execute cmdl:  " + cmdl);  // remove
    BGRunner runner = new BGRunner ();
    Thread t = new Thread (runner);

    runner.setExec (this);
    t.start ();
    System.out.println ("-=-=-=-=-=-=-=-=-=-= MyExec execute it's running!:  ");  // remove
    /*
    try
    {
      Thread.sleep (10000);
    }
    catch (Exception e)
    {
    }
     */
  }
}

class BGRunner extends Thread
{
  protected MyExec exec;
  protected boolean running = false;

  public BGRunner ()
  {
  }

  public void run ()
  {
    if (running)
      return;
    running = true;
    System.out.println ("-=-=-=-=-=-=-=-=-=-= MyExec BGRunner:  ");  // remove
    int i = 0;
    while (i < 1000)
      System.out.println (i++);  // remove
  }

  public void setExec (MyExec e)
  {
    exec = e;
  }
}
