ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sbaill...@apache.org
Subject cvs commit: jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/metamata MParse.java
Date Sun, 23 Jun 2002 19:57:43 GMT
sbailliez    2002/06/23 12:57:43

  Modified:    src/main/org/apache/tools/ant/taskdefs/optional/metamata
                        MParse.java
  Log:
  MParse refactoring
  PR: 10160
  Submitted by: jesse@cryptocard.com (Jesse)
  
  Revision  Changes    Path
  1.12      +40 -89    jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/metamata/MParse.java
  
  Index: MParse.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/metamata/MParse.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- MParse.java	25 Apr 2002 12:14:50 -0000	1.11
  +++ MParse.java	23 Jun 2002 19:57:43 -0000	1.12
  @@ -56,12 +56,10 @@
   
   import org.apache.tools.ant.BuildException;
   import org.apache.tools.ant.Project;
  -import org.apache.tools.ant.Task;
   import org.apache.tools.ant.taskdefs.ExecuteStreamHandler;
   import org.apache.tools.ant.taskdefs.LogStreamHandler;
   import org.apache.tools.ant.taskdefs.Execute;
   import org.apache.tools.ant.types.Commandline;
  -import org.apache.tools.ant.types.CommandlineJava;
   import org.apache.tools.ant.types.Path;
   
   import java.io.File;
  @@ -69,56 +67,29 @@
   import java.io.FileWriter;
   import java.io.PrintWriter;
   import java.util.Vector;
  -import java.util.Random;
   
   /**
    * Simple Metamata MParse task based on the original written by
    * <a href="mailto:thomas.haas@softwired-inc.com">Thomas Haas</a>.
  - * 
  + *
    * This version was written for Metamata 2.0 available at
    * <a href="http://www.metamata.com">http://www.metamata.com</a>
    *
    * @author <a href="mailto:sbailliez@imediation.com">Stephane Bailliez</a>
    */
  -public class MParse extends Task {
  +public class MParse extends AbstractMetamataTask {
   
  -    private Path classpath = null;
  -    private Path sourcepath = null;
  -    private File metahome = null;
       private File target = null;
       private boolean verbose = false;
       private boolean debugparser = false;
  -    private boolean debugscanner = false;    
  +    private boolean debugscanner = false;
       private boolean cleanup = false;
  -    private CommandlineJava cmdl = new CommandlineJava();
  -    private File optionsFile = null;
  -
  -    /** location of metamata dev environment */
  -    public void setMetamatahome(File metamatahome) {
  -        this.metahome = metamatahome;
  -    }
   
       /** the .jj file to process */
       public void setTarget(File target) {
           this.target = target;
       }
   
  -    /** create a classpath entry */
  -    public Path createClasspath() {
  -        if (classpath == null) {
  -            classpath = new Path(project);
  -        }        
  -        return classpath;
  -    }
  -
  -    /** creates a sourcepath entry */
  -    public Path createSourcepath() {
  -        if (sourcepath == null) {
  -            sourcepath = new Path(project);
  -        }        
  -        return sourcepath;
  -    }
  -
       /** set verbose mode */
       public void setVerbose(boolean flag){
           verbose = flag;
  @@ -139,22 +110,12 @@
           cleanup = value;
       }
   
  -    /** Creates a nested jvmarg element. */
  -    public Commandline.Argument createJvmarg() {
  -        return cmdl.createVmArgument();
  -    }
  -
  -    /**  -mx or -Xmx depending on VM version */
  -    public void setMaxmemory(String max){
  -        cmdl.setMaxmemory(max);
  -    }
  -
       public MParse() {
           cmdl.setVm("java");
           cmdl.setClassname("com.metamata.jj.MParse");
       }
   
  -   
  +
       /** execute the command line */
       public void execute() throws BuildException {
           try {
  @@ -165,12 +126,12 @@
               cleanUp();
           }
       }
  -    
  +
       /** return the default stream handler for this task */
       protected ExecuteStreamHandler createStreamHandler(){
           return new LogStreamHandler(this, Project.MSG_INFO, Project.MSG_INFO);
       }
  -    
  +
       /**
        * check the options and build the command line
        */
  @@ -186,18 +147,21 @@
   
           // set the metamata.home property
           final Commandline.Argument vmArgs = cmdl.createVmArgument();
  -        vmArgs.setValue("-Dmetamata.home=" + metahome.getAbsolutePath());
  +        vmArgs.setValue("-Dmetamata.home=" + metamataHome.getAbsolutePath());
   
   
           // write all the options to a temp file and use it ro run the process
  -        String[] options = getOptions();
  +        Vector opts = getOptions();
  +        String[] options = new String[ opts.size() ];
  +        opts.copyInto(options);
  +
           optionsFile = createTmpFile();
           generateOptionsFile(optionsFile, options);
           Commandline.Argument args = cmdl.createArgument();
           args.setLine("-arguments " + optionsFile.getAbsolutePath());
  -    }    
  +    }
  +
   
  -    
       /** execute the process with a specific handler */
       protected void _execute(ExecuteStreamHandler handler) throws BuildException {
           // target has been checked as a .jj, see if there is a matching
  @@ -210,7 +174,7 @@
               project.log("Target is already build - skipping (" + target + ")");
               return;
           }
  -        
  +
           final Execute process = new Execute(handler);
           log(cmdl.describeCommand(), Project.MSG_VERBOSE);
           process.setCommandline(cmdl.getCommandline());
  @@ -219,10 +183,10 @@
                   throw new BuildException("Metamata task failed.");
               }
           } catch (IOException e){
  -            throw new BuildException("Failed to launch Metamata task: " + e);
  +            throw new BuildException("Failed to launch Metamata task: ", e);
           }
  -    }    
  -    
  +    }
  +
       /** clean up all the mess that we did with temporary objects */
       protected void cleanUp(){
           if (optionsFile != null){
  @@ -240,7 +204,7 @@
               }
           }
       }
  -    
  +
       /**
        * return an array of files containing the path to the needed
        * libraries to run metamata. The file are not checked for
  @@ -250,48 +214,47 @@
        */
       protected File[] getMetamataLibs(){
           Vector files = new Vector();
  -        files.addElement(new File(metahome, "lib/metamata.jar"));
  -        files.addElement(new File(metahome, "bin/lib/JavaCC.zip"));
  -        
  +        files.addElement(new File(metamataHome, "lib/metamata.jar"));
  +        files.addElement(new File(metamataHome, "bin/lib/JavaCC.zip"));
  +
           File[] array = new File[ files.size() ];
           files.copyInto(array);
           return array;
       }
  -    
  -    
  +
  +
       /**
        * validate options set and resolve files and paths
        * @throws BuildException thrown if an option has an incorrect state.
        */
  -    protected void checkOptions() throws BuildException {       
  +    protected void checkOptions() throws BuildException {
           // check that the home is ok.
  -        if (metahome == null || !metahome.exists()){
  +        if (metamataHome == null || !metamataHome.exists()){
               throw new BuildException("'metamatahome' must point to Metamata home directory.");
           }
  -        metahome = project.resolveFile(metahome.getPath());
  -        
  +        metamataHome = project.resolveFile(metamataHome.getPath());
  +
           // check that the needed jar exists.
           File[] jars = getMetamataLibs();
           for (int i = 0; i < jars.length; i++){
               if (!jars[i].exists()){
  -                throw new BuildException(jars[i] 
  +                throw new BuildException(jars[i]
                       + " does not exist. Check your metamata installation.");
  -            }           
  +            }
           }
  -        
  +
           // check that the target is ok and resolve it.
  -        if (target == null || !target.isFile() 
  +        if (target == null || !target.isFile()
               || !target.getName().endsWith(".jj")) {
               throw new BuildException("Invalid target: " + target);
           }
           target = project.resolveFile(target.getPath());
  -    }    
  -    
  +    }
  +
       /**
        * return all options of the command line as string elements
  -     * @param an array of options corresponding to the setted options.
        */
  -    protected String[] getOptions(){
  +    protected Vector getOptions() {
           Vector options = new Vector();
           if (verbose){
               options.addElement("-verbose");
  @@ -302,21 +265,18 @@
           if (debugparser){
               options.addElement("-dp");
           }
  -        if (classpath != null){
  +        if (classPath != null){
               options.addElement("-classpath");
  -            options.addElement(classpath.toString());
  +            options.addElement(classPath.toString());
           }
  -        if (sourcepath != null){
  +        if (sourcePath != null){
               options.addElement("-sourcepath");
  -            options.addElement(sourcepath.toString());
  +            options.addElement(sourcePath.toString());
           }
           options.addElement(target.getAbsolutePath());
  -        
  -        String[] array = new String[options.size()];
  -        options.copyInto(array);
  -        return array;
  +        return options;
       }
  -    
  +
       /**
        * write all options to a file with one option / line
        * @param tofile the file to write the options to.
  @@ -343,13 +303,4 @@
               }
           }
       }
  -    
  -    /** create a temporary file in the current directory */
  -    protected static final File createTmpFile(){
  -        // must be compatible with JDK 1.1 !!!!
  -        final long rand = (new Random(System.currentTimeMillis())).nextLong();
  -        File file = new File("metamata" + rand + ".tmp");
  -        return file;
  -    }
  -
   }
  
  
  

--
To unsubscribe, e-mail:   <mailto:ant-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:ant-dev-help@jakarta.apache.org>


Mime
View raw message