tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From lar...@apache.org
Subject cvs commit: jakarta-tomcat/src/share/org/apache/tomcat/util IntrospectionUtils.java
Date Sun, 25 Mar 2001 21:53:18 GMT
larryi      01/03/25 13:53:18

  Modified:    src/share/org/apache/tomcat/core ContextManager.java
               src/share/org/apache/tomcat/modules/config PathSetter.java
               src/share/org/apache/tomcat/startup Main.java
                        StopTomcat.java Tomcat.java
               src/share/org/apache/tomcat/util IntrospectionUtils.java
  Log:
  Allow separate "home" and "install" directories by specifying both, "home"
  using the "tomcat.home" System property and "install" using the
  "tomcat.install" System property.  If either is not specified, it defaults to the
  other. Classloader construction now uses "install" to find the "lib" jars.
  
  Revision  Changes    Path
  1.175     +5 -1      jakarta-tomcat/src/share/org/apache/tomcat/core/ContextManager.java
  
  Index: ContextManager.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/ContextManager.java,v
  retrieving revision 1.174
  retrieving revision 1.175
  diff -u -r1.174 -r1.175
  --- ContextManager.java	2001/03/14 03:45:17	1.174
  +++ ContextManager.java	2001/03/25 21:53:13	1.175
  @@ -153,9 +153,13 @@
       
       /** System property used to set the base directory ( tomcat home ).
        *  use -DTOMCAT_HOME= in java command line or as a System.setProperty.
  -     *  XXX hack - setHome is better
        */
       public static final String TOMCAT_HOME="tomcat.home";
  +
  +    /** System property used to set the install directory ( tomcat install ).
  +     *  use -DTOMCAT_INSTALL= in java command line or as a System.setProperty.
  +     */
  +    public static final String TOMCAT_INSTALL="tomcat.install";
   
       // State
   
  
  
  
  1.6       +20 -12    jakarta-tomcat/src/share/org/apache/tomcat/modules/config/PathSetter.java
  
  Index: PathSetter.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/modules/config/PathSetter.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- PathSetter.java	2001/02/20 03:16:51	1.5
  +++ PathSetter.java	2001/03/25 21:53:14	1.6
  @@ -113,23 +113,30 @@
   	    home=System.getProperty(ContextManager.TOMCAT_HOME);
   	}
   
  +	// if "home" is not set, guess "install" and use as "home"
   	if( home==null ) {
  -	    home=IntrospectionUtils.guessHome( "tomcat.home",
  -					       "tomcat_core.jar",
  -				       "org/apache/tomcat/core/Request.class");
  +	    home=IntrospectionUtils.guessInstall(
  +				ContextManager.TOMCAT_INSTALL,
  +				ContextManager.TOMCAT_HOME,
  +				"tomcat_core.jar",
  +				"org/apache/tomcat/core/Request.class");
   	}
   
  -	if (home == null) {
  -	    System.out.println(sm.getString("tomcat.nohome"));
  -	    home = ".";
  -	    // Assume current working directory
  +	if (home != null) {
  +	    // Make it absolute
  +	    home=FileUtil.getCanonicalPath( home );
  +	    cm.setHome( home );
   	}
  -
  -	// Make it absolute
  -	home=FileUtil.getCanonicalPath( home );
  -	cm.setHome( home );
   	
   	String installDir=cm.getInstallDir();
  +	// if "install" is not set, guess "install" if not already guessed
  +	if ( installDir==null ) {
  +	    installDir=IntrospectionUtils.guessInstall(
  +				ContextManager.TOMCAT_INSTALL,
  +				ContextManager.TOMCAT_HOME,
  +				"tomcat_core.jar",
  +				"org/apache/tomcat/core/Request.class");
  +	}
   	if( installDir!= null ) {
   	    installDir=FileUtil.getCanonicalPath( installDir );
   	    cm.setInstallDir( installDir );
  @@ -157,7 +164,8 @@
   	    cm.setInstallDir( home );
   	}
   
  -	System.getProperties().put("tomcat.home", cm.getHome());
  +	System.getProperties().put(ContextManager.TOMCAT_HOME, cm.getHome());
  +	System.getProperties().put(ContextManager.TOMCAT_INSTALL, cm.getInstallDir());
       }
   
       /** After server.xml is read - make sure the workDir is absolute,
  
  
  
  1.31      +13 -9     jakarta-tomcat/src/share/org/apache/tomcat/startup/Main.java
  
  Index: Main.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/startup/Main.java,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- Main.java	2001/03/06 05:25:14	1.30
  +++ Main.java	2001/03/25 21:53:15	1.31
  @@ -1,4 +1,4 @@
  -/* $Id: Main.java,v 1.30 2001/03/06 05:25:14 larryi Exp $
  +/* $Id: Main.java,v 1.31 2001/03/25 21:53:15 larryi Exp $
    * ====================================================================
    *
    * The Apache Software License, Version 1.1
  @@ -107,7 +107,7 @@
   	@author Costin Manolache
   	@author Ignacio J. Ortega
   	@author Mel Martinez mmartinez@g1440.com
  -	@version $Revision: 1.30 $ $Date: 2001/03/06 05:25:14 $
  +	@version $Revision: 1.31 $ $Date: 2001/03/25 21:53:15 $
    */
   public class Main{
   
  @@ -231,8 +231,8 @@
           if( libBase!=null ){
               return libBase;
           }
  -        if( homeDir!=null ){
  -            libBase=checkDir( homeDir + "/lib/container");
  +        if( installDir!=null ){
  +            libBase=checkDir( installDir + "/lib/container");
           }else{
               libBase=checkDir("./lib/container");
           }
  @@ -243,8 +243,8 @@
           if( serverBase!=null ){
               return serverBase;
           }
  -        if( homeDir!=null ){
  -            serverBase=checkDir( homeDir + "/lib/apps");
  +        if( installDir!=null ){
  +            serverBase=checkDir( installDir + "/lib/apps");
           }else{
               serverBase=checkDir("./lib/apps");
           }
  @@ -255,8 +255,8 @@
           if( commonBase!=null ){
               return commonBase;
           }
  -        if( homeDir!=null ){
  -            commonBase=checkDir( homeDir + "/lib/common");
  +        if( installDir!=null ){
  +            commonBase=checkDir( installDir + "/lib/common");
           }else{
               commonBase=checkDir("./lib/common");
           }
  @@ -269,8 +269,11 @@
       protected void execute( String args[] ) throws Exception {
   
           try {
  -            homeDir=IntrospectionUtils.guessHome("tomcat.home", "tomcat.jar");
  +            installDir=IntrospectionUtils.guessInstall("tomcat.install",
  +                                "tomcat.home", "tomcat.jar");
   
  +            homeDir = System.getProperty("tomcat.home");
  +
               ClassLoader parentL=this.getClass().getClassLoader();
   
               // the server classloader loads from classes dir too and from tools.jar
  @@ -318,6 +321,7 @@
   
               IntrospectionUtils.setAttribute(proxy,"args", args );
               IntrospectionUtils.setAttribute(proxy,"home", homeDir );
  +            IntrospectionUtils.setAttribute(proxy,"install", installDir );
               IntrospectionUtils.setAttribute(proxy,"parentClassLoader",appsCl);
               IntrospectionUtils.execute(  proxy, "execute" );
               return;
  
  
  
  1.6       +6 -3      jakarta-tomcat/src/share/org/apache/tomcat/startup/StopTomcat.java
  
  Index: StopTomcat.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/startup/StopTomcat.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- StopTomcat.java	2001/02/20 03:17:57	1.5
  +++ StopTomcat.java	2001/03/25 21:53:16	1.6
  @@ -178,9 +178,11 @@
       }
       
       public String getTomcatHome() {
  +	// Try to establish install and home locations
  +	String tchome=IntrospectionUtils.guessInstall("tomcat.install",
  +				"tomcat.home","stop-tomcat.jar");
   	// Use the "tomcat.home" property to resolve the default filename
  -	String tchome=IntrospectionUtils.guessHome("tomcat.home",
  -						   "stop-tomcat.jar");
  +	tchome = System.getProperty("tomcat.home");
   	if (tchome == null) {
   	    System.out.println(sm.getString("tomcat.nohome"));
   	    tchome = ".";
  @@ -248,7 +250,8 @@
   	    if (arg.equals("-h") || arg.equals("-home")) {
   		i++;
   		if (i < args.length)
  -		    System.getProperties().put("tomcat.home", args[i]);
  +		    System.getProperties().put("tomcat.home",
  +						args[i]);
   		else
   		    return false;
   	    }
  
  
  
  1.60      +17 -1     jakarta-tomcat/src/share/org/apache/tomcat/startup/Tomcat.java
  
  Index: Tomcat.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/startup/Tomcat.java,v
  retrieving revision 1.59
  retrieving revision 1.60
  diff -u -r1.59 -r1.60
  --- Tomcat.java	2001/03/15 07:33:19	1.59
  +++ Tomcat.java	2001/03/25 21:53:16	1.60
  @@ -29,6 +29,7 @@
       private String action="start";
   
       String home=null;
  +    String install=null;
       String args[];
       ClassLoader parentClassLoader;
       boolean sandbox=false;
  @@ -48,6 +49,10 @@
   	this.home=home;
       }
       
  +    public void setInstall(String install) {
  +	this.install=install;
  +    }
  +    
       public void setArgs(String args[]) {
   	this.args=args;
       }
  @@ -161,6 +166,7 @@
   	System.out.println("    -config file (or -f file)  Use this fileinstead of server.xml");
   	System.out.println("    -help (or help)            Show this usage report");
   	System.out.println("    -home dir (or -h dir)      Use this directory as tomcat.home");
  +	System.out.println("    -install dir (or -i dir)   Use this directory as tomcat.install");
   	System.out.println("    -stop                      Shut down currently running Tomcat");
       }
   
  @@ -191,8 +197,16 @@
   		    return false;
   	    } else if (arg.equals("-h") || arg.equals("-home")) {
   		i++;
  +		if (i < args.length)
  +		    System.getProperties().put(
  +				ContextManager.TOMCAT_HOME, args[i]);
  +		else
  +		    return false;
  +	    } else if (arg.equals("-i") || arg.equals("-install")) {
  +		i++;
   		if (i < args.length)
  -		    System.getProperties().put("tomcat.home", args[i]);
  +		    System.getProperties().put(
  +				ContextManager.TOMCAT_INSTALL, args[i]);
   		else
   		    return false;
   	    }
  @@ -204,6 +218,8 @@
       public void setAttribute(String s,Object o) {
   	if( "home".equals( s ) )
   	    setHome( (String)o);
  +	if( "install".equals( s ) )
  +	    setInstall( (String)o);
   	else if("args".equals( s ) ) 
   	    setArgs((String[])o);
   	else if( "parentClassLoader".equals( s ) ) {
  
  
  
  1.7       +45 -22    jakarta-tomcat/src/share/org/apache/tomcat/util/IntrospectionUtils.java
  
  Index: IntrospectionUtils.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/util/IntrospectionUtils.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- IntrospectionUtils.java	2001/03/08 01:06:00	1.6
  +++ IntrospectionUtils.java	2001/03/25 21:53:17	1.7
  @@ -135,23 +135,42 @@
       }
   
   
  -    public static String guessHome(String systemProperty, String jarName) {
  -	return guessHome( systemProperty, jarName, null);
  +    public static String guessInstall(String installSysProp,
  +		String homeSysProp, String jarName) {
  +	return guessInstall( installSysProp, homeSysProp, jarName, null);
       }
       
  -    /** Guess a product home by analyzing the class path.
  +    /** Guess a product install/home by analyzing the class path.
        *  It works for product using the pattern: lib/executable.jar
        *  or if executable.jar is included in classpath by a shell
        *  script. ( java -jar also works )
  +     *
  +     *  Insures both "install" and "home" System properties are set.
  +     *  If either or both System properties are unset, "install" and
  +     *  "home" will be set to the same value.  This value will be
  +     *  the other System  property that is set, or the guessed value
  +     *  if neither is set.
        */
  -    public static String guessHome(String systemProperty, String jarName,
  -				   String classFile) {
  -	String h=null;
  +    public static String guessInstall(String installSysProp, String homeSysProp,
  +			String jarName,	String classFile) {
  +	String install=null;
  +	String home=null;
   	
  -	if( systemProperty != null )
  -	    h=System.getProperty( systemProperty );
  -	
  -	if( h!=null ) return h;
  +	if ( installSysProp != null )
  +	    install=System.getProperty( installSysProp );
  +
  +	if( homeSysProp != null )
  +	    home=System.getProperty( homeSysProp );
  +
  +	if ( install != null ) {
  +	    if ( home == null )
  +		System.getProperties().put( homeSysProp, install );
  +	    return install;
  +	}
  +	if ( home != null ) {
  +	    System.setProperty( installSysProp, home );
  +	    return home;
  +	}
   
   	// Find the directory where jarName.jar is located
   	
  @@ -162,14 +181,16 @@
   	    String path=st.nextToken();
   	    //	    log( "path " + path );
   	    if( path.endsWith( jarName ) ) {
  -		h=path.substring( 0, path.length() - jarName.length() );
  +		home=path.substring( 0, path.length() - jarName.length() );
   		try {
  -		    File f=new File( h );
  -		    File f1=new File ( h, "..");
  -		    h = f1.getCanonicalPath();
  -		    if( systemProperty != null )
  -			System.getProperties().put( systemProperty, h );
  -		    return h;
  +		    File f=new File( home );
  +		    File f1=new File ( f, "..");
  +		    install = f1.getCanonicalPath();
  +		    if( installSysProp != null )
  +			System.getProperties().put( installSysProp, install );
  +		    if( homeSysProp != null )
  +			System.getProperties().put( homeSysProp, install );
  +		    return install;
   		} catch( Exception ex ) {
   		    ex.printStackTrace();
   		}
  @@ -178,11 +199,13 @@
   		if( new File( fname ).exists()) {
   		    try {
   			File f=new File( path );
  -			File f1=new File ( h, "..");
  -			h = f1.getCanonicalPath();
  -			if( systemProperty != null )
  -			    System.getProperties().put( systemProperty, h );
  -			return h;
  +			File f1=new File ( f, "..");
  +			install = f1.getCanonicalPath();
  +			if( installSysProp != null )
  +			    System.getProperties().put( installSysProp, install );
  +			if( homeSysProp != null )
  +			    System.getProperties().put( homeSysProp, install );
  +			return install;
   		    } catch( Exception ex ) {
   			ex.printStackTrace();
   		    }
  
  
  

Mime
View raw message