You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by co...@apache.org on 2002/04/03 17:02:48 UTC

cvs commit: jakarta-ant/proposal/mutant/src/java/start/org/apache/ant/start Main.java

conor       02/04/03 07:02:48

  Modified:    proposal/mutant build.xml
               proposal/mutant/src/java/bootstrap/org/apache/ant/builder
                        MutantBuilder.java
               proposal/mutant/src/java/init/org/apache/ant/init
                        InitConfig.java
               proposal/mutant/src/java/start/org/apache/ant/start
                        Main.java
  Log:
  reorg of mutant's frontend
  
  Revision  Changes    Path
  1.17      +3 -3      jakarta-ant/proposal/mutant/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/proposal/mutant/build.xml,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -w -u -r1.16 -r1.17
  --- build.xml	25 Mar 2002 05:40:33 -0000	1.16
  +++ build.xml	3 Apr 2002 15:02:47 -0000	1.17
  @@ -77,14 +77,14 @@
   
     <target name="cli" depends="antcore, start">
       <mkdir dir="${bin.dir}/cli"/>
  -    <mkdir dir="${distlib.dir}/cli"/>
  +    <mkdir dir="${distlib.dir}/frontend"/>
       <depend destdir="${bin.dir}/cli" srcdir="${java.dir}/cli">
         <classpath refid="classpath.cli"/>
       </depend>
       <javac destdir="${bin.dir}/cli" srcdir="${java.dir}/cli" debug="${debug}">
         <classpath refid="classpath.cli"/>
       </javac>
  -    <jar basedir="${bin.dir}/cli" jarfile="${distlib.dir}/cli/cli.jar"/>
  +    <jar basedir="${bin.dir}/cli" jarfile="${distlib.dir}/frontend/cli.jar"/>
     </target>
   
     <target name="start" depends="init">
  @@ -199,7 +199,7 @@
       <mkdir dir="${javadocs.dir}"/>
       <javadoc packagenames="org.apache.*"
                useexternalfile="yes"
  -             sourcepath="${java.dir}/antcore:${java.dir}/init:${java.dir}/common:${java.dir}/cli:${java.dir}/start"
  +             sourcepath="${java.dir}/antcore:${java.dir}/init:${java.dir}/common:${java.dir}/frontend:${java.dir}/start"
                destdir="${javadocs.dir}"
                author="true" 
                private ="true"
  
  
  
  1.4       +2 -2      jakarta-ant/proposal/mutant/src/java/bootstrap/org/apache/ant/builder/MutantBuilder.java
  
  Index: MutantBuilder.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/proposal/mutant/src/java/bootstrap/org/apache/ant/builder/MutantBuilder.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -w -u -r1.3 -r1.4
  --- MutantBuilder.java	6 Mar 2002 08:17:07 -0000	1.3
  +++ MutantBuilder.java	3 Apr 2002 15:02:47 -0000	1.4
  @@ -51,9 +51,9 @@
       }
       protected void cli(BuildHelper helper) {
           helper.mkdir("${bin.dir}/cli");
  -        helper.mkdir("${distlib.dir}/cli");
  +        helper.mkdir("${distlib.dir}/frontend");
           helper.javac("${java.dir}/cli", "${bin.dir}/cli", "classpath.cli");
  -        helper.jar("${bin.dir}/cli", "${distlib.dir}/cli/cli.jar",
  +        helper.jar("${bin.dir}/cli", "${distlib.dir}/frontend/cli.jar",
                      null, null);
       }
       protected void start(BuildHelper helper) {
  
  
  
  1.5       +79 -1     jakarta-ant/proposal/mutant/src/java/init/org/apache/ant/init/InitConfig.java
  
  Index: InitConfig.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/proposal/mutant/src/java/init/org/apache/ant/init/InitConfig.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -w -u -r1.4 -r1.5
  --- InitConfig.java	18 Mar 2002 02:44:28 -0000	1.4
  +++ InitConfig.java	3 Apr 2002 15:02:47 -0000	1.5
  @@ -52,9 +52,11 @@
    * <http://www.apache.org/>.
    */
   package org.apache.ant.init;
  +import java.io.File;
   
  +import java.net.MalformedURLException;
   import java.net.URL;
  -import java.io.File;
  +import java.net.URLClassLoader;
   
   /**
    * InitConfig is the initialization configuration created to start Ant. This
  @@ -64,6 +66,10 @@
    * @created 9 January 2002
    */
   public class InitConfig {
  +
  +    /** The default name of the jar containing the XML parser */
  +    public static final String DEFAULT_PARSER_JAR = "crimson.jar";
  +
       /** The system classloader */
       private ClassLoader systemLoader;
   
  @@ -108,6 +114,59 @@
       private File userConfigArea;
   
       /**
  +     * XXX Constructor for the InitConfig object
  +     *
  +     * @exception InitException XXX Description of Exception
  +     */
  +    public InitConfig() throws InitException {
  +        try {
  +            URL antLibURL = getAntLibURL();
  +            setLibraryURL(antLibURL);
  +
  +            URL antHome = new URL(antLibURL, "..");
  +            setAntHome(antHome);
  +            if (antHome.getProtocol().equals("file")) {
  +                File systemConfigArea = new File(antHome.getFile(), "conf");
  +                setSystemConfigArea(systemConfigArea);
  +            }
  +            File userConfigArea
  +                 = new File(System.getProperty("user.home"), ".ant/conf");
  +            setUserConfigArea(userConfigArea);
  +
  +            // set up the class loaders that will be used when running Ant
  +            ClassLoader systemLoader = getClass().getClassLoader();
  +            setSystemLoader(systemLoader);
  +            URL toolsJarURL = ClassLocator.getToolsJarURL();
  +            setToolsJarURL(toolsJarURL);
  +
  +            URL commonJarLib = new URL(libraryURL, "common/");
  +            ClassLoader commonLoader
  +                 = new URLClassLoader(LoaderUtils.getLocationURLs(commonJarLib,
  +                "common.jar"), systemLoader);
  +            setCommonLoader(commonLoader);
  +
  +            // core needs XML parser for parsing various XML components.
  +            URL parserBase = new URL(libraryURL, "parser/");
  +            URL[] parserURLs
  +                 = LoaderUtils.getLocationURLs(parserBase, DEFAULT_PARSER_JAR);
  +            setParserURLs(parserURLs);
  +
  +            URL[] coreURLs
  +                 = LoaderUtils.getLocationURLs(new URL(libraryURL, "antcore/"),
  +                "antcore.jar");
  +            URL[] combinedURLs = new URL[parserURLs.length + coreURLs.length];
  +            System.arraycopy(coreURLs, 0, combinedURLs, 0, coreURLs.length);
  +            System.arraycopy(parserURLs, 0, combinedURLs, coreURLs.length,
  +                parserURLs.length);
  +            ClassLoader coreLoader = new URLClassLoader(combinedURLs,
  +                commonLoader);
  +            setCoreLoader(coreLoader);
  +        } catch (MalformedURLException e) {
  +            throw new InitException(e);
  +        }
  +    }
  +
  +    /**
        * Sets the location of the user configuration files
        *
        * @param userConfigArea the new user config area
  @@ -267,6 +326,25 @@
        */
       public URL getLibraryURL() {
           return libraryURL;
  +    }
  +
  +    /**
  +     * Get a URL to the Ant Library directory.
  +     *
  +     * @return the URL for the Ant library directory
  +     * @throws MalformedURLException if there is a problem constructing the 
  +     *      library URL
  +     */
  +    private URL getAntLibURL() throws MalformedURLException {
  +        URL initClassURL = ClassLocator.getClassLocationURL(getClass());
  +
  +        String initURLString = initClassURL.toString();
  +        int index = initURLString.lastIndexOf("/");
  +        if (index != -1) {
  +            initURLString = initURLString.substring(0, index + 1);
  +        }
  +
  +        return  new URL(initURLString);
       }
   }
   
  
  
  
  1.8       +14 -122   jakarta-ant/proposal/mutant/src/java/start/org/apache/ant/start/Main.java
  
  Index: Main.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/proposal/mutant/src/java/start/org/apache/ant/start/Main.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -w -u -r1.7 -r1.8
  --- Main.java	18 Mar 2002 02:44:28 -0000	1.7
  +++ Main.java	3 Apr 2002 15:02:48 -0000	1.8
  @@ -53,16 +53,10 @@
    */
   package org.apache.ant.start;
   
  -import java.io.File;
   import java.lang.reflect.Method;
  -import java.net.MalformedURLException;
   import java.net.URL;
   import java.net.URLClassLoader;
  -import org.apache.ant.init.ClassLocator;
  -import org.apache.ant.init.InitUtils;
   import org.apache.ant.init.InitConfig;
  -import org.apache.ant.init.InitException;
  -import org.apache.ant.init.LoaderUtils;
   
   /**
    * This is the main startup class for the command line interface of Ant. It
  @@ -77,44 +71,8 @@
            = "org.apache.ant.cli.Commandline";
   
   
  -    /**
  -     * Get a URL to the Ant Library directory.
  -     *
  -     * @return the URL for the Ant library directory
  -     * @throws InitException if there is a problem constructing the library
  -     *      URL
  -     */
  -    public static URL getLibraryURL()
  -         throws InitException {
  -        try {
  -            URL cliURL = ClassLocator.getClassLocationURL(Main.class);
  -
  -            if (cliURL.getProtocol().equals("file")
  -                 && cliURL.getFile().endsWith("/")) {
  -                // we are running from a set of classes. This should only
  -                // happen in an Ant build situation. We use some embedded
  -                // knowledge to locate the lib directory
  -                File classesDirectory = new File(cliURL.getFile());
  -                File libDirectory = new File(classesDirectory.getParent(),
  -                    "lib");
  -                if (!libDirectory.exists()) {
  -                    throw new RuntimeException("Ant library directory "
  -                         + libDirectory + " does not exist");
  -                }
  -                return InitUtils.getFileURL(libDirectory);
  -            } else {
  -                String cliURLString = cliURL.toString();
  -                int index = cliURLString.lastIndexOf("/");
  -                if (index != -1) {
  -                    cliURLString = cliURLString.substring(0, index + 1);
  -                }
  -                return new URL(cliURLString);
  -            }
  -        } catch (MalformedURLException e) {
  -            throw new InitException(e);
  -        }
  -    }
  -
  +    /** The default front end name */
  +    public static final String DEFAULT_FRONTEND = "cli";
   
       /**
        * Entry point for starting command line Ant
  @@ -123,90 +81,25 @@
        */
       public static void main(String[] args) {
           Main main = new Main();
  -        main.start(args);
  -    }
  -
  -
  -
  -    /**
  -     * Get the location of AntHome
  -     *
  -     * @return the URL containing AntHome.
  -     * @throws InitException if Ant's home cannot be determined or properly
  -     *      contructed.
  -     */
  -    private URL getAntHome()
  -         throws InitException {
  -        try {
  -            URL libraryURL = getLibraryURL();
  -            if (libraryURL != null) {
  -                return new URL(libraryURL, "..");
  -            }
  -        } catch (MalformedURLException e) {
  -            throw new InitException(e);
  +        main.start(DEFAULT_FRONTEND, args);
           }
  -        throw new InitException("Unable to determine Ant Home");
  -    }
  -
   
       /**
        * Internal start method used to initialise front end
        *
  +     * @param frontend the frontend jar to launch
        * @param args commandline arguments
        */
  -    private void start(String[] args) {
  +    public void start(String frontend, String[] args) {
           try {
               InitConfig config = new InitConfig();
   
  -            URL libraryURL = getLibraryURL();
  -            config.setLibraryURL(libraryURL);
  -
  -            URL antHome = getAntHome();
  -            config.setAntHome(antHome);
  -            if (antHome.getProtocol().equals("file")) {
  -                File systemConfigArea = new File(antHome.getFile(), "conf");
  -                config.setSystemConfigArea(systemConfigArea);
  -            }
  -            File userConfigArea
  -                 = new File(System.getProperty("user.home"), ".ant/conf");
  -            config.setUserConfigArea(userConfigArea);
  -
  -            // set up the class loaders that will be used when running Ant
  -            ClassLoader systemLoader = getClass().getClassLoader();
  -            config.setSystemLoader(systemLoader);
  -            URL toolsJarURL = ClassLocator.getToolsJarURL();
  -            config.setToolsJarURL(toolsJarURL);
  -
  -            URL commonJarLib = new URL(libraryURL, "common/");
  -            ClassLoader commonLoader
  -                 = new URLClassLoader(LoaderUtils.getLocationURLs(commonJarLib,
  -                "common.jar"), systemLoader);
  -            config.setCommonLoader(commonLoader);
  -
  -            // core needs XML parser for parsing various XML components.
  -            URL[] parserURLs
  -                 = LoaderUtils.getLocationURLs(new URL(libraryURL, "parser/"),
  -                "crimson.jar");
  -            config.setParserURLs(parserURLs);
  -
  -            URL[] coreURLs
  -                 = LoaderUtils.getLocationURLs(new URL(libraryURL, "antcore/"),
  -                "antcore.jar");
  -            URL[] combinedURLs = new URL[parserURLs.length + coreURLs.length];
  -            System.arraycopy(coreURLs, 0, combinedURLs, 0, coreURLs.length);
  -            System.arraycopy(parserURLs, 0, combinedURLs, coreURLs.length,
  -                parserURLs.length);
  -            ClassLoader coreLoader = new URLClassLoader(combinedURLs,
  -                commonLoader);
  -            config.setCoreLoader(coreLoader);
  -
  -            URL cliJarLib = new URL(libraryURL, "cli/");
  +            URL frontendJar = new URL(config.getLibraryURL(), 
  +                "frontend/" + frontend + ".jar");
  +            URL[] frontendJars = new URL[]{frontendJar};
               ClassLoader frontEndLoader
  -                 = new URLClassLoader(LoaderUtils.getLocationURLs(cliJarLib,
  -                "cli.jar"), coreLoader);
  +                = new URLClassLoader(frontendJars, config.getCoreLoader());
   
  -            //System.out.println("System Loader config");                
  -            //LoaderUtils.dumpLoader(System.out, systemLoader);
               // System.out.println("Front End Loader config");
               // LoaderUtils.dumpLoader(System.out, frontEndLoader);
   
  @@ -220,7 +113,6 @@
                    = commandLineClass.getMethod("start", param);
               final Object[] argument = {args, config};
               startMethod.invoke(null, argument);
  -
           } catch (Exception e) {
               e.printStackTrace();
           }
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>