tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From cos...@apache.org
Subject cvs commit: jakarta-tomcat/src/share/org/apache/tomcat/core Context.java ContextManager.java
Date Fri, 17 Aug 2001 03:59:48 GMT
costin      01/08/16 20:59:48

  Modified:    src/share/org/apache/tomcat/core Context.java
                        ContextManager.java
  Log:
  Small changes ( but the diff is big ). I tried to put in order all the
  package/protected/final stuff.
  
  Having final methods and classes hava a tiny impact on performance but may
  affect our ability to do "hot fixes" via add-on modules, and to extend
  tomcat or tune it for special configurations.
  
  Let me know if this creates a problem for anyone - I believe removing the final
  doesn't affect in any way the code stability but provides a lot of flexibility.
  
  I also added few factory methods in CM, to completely allow specialized
  extensions to control the whole thing.
  
  Revision  Changes    Path
  1.148     +111 -98   jakarta-tomcat/src/share/org/apache/tomcat/core/Context.java
  
  Index: Context.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/Context.java,v
  retrieving revision 1.147
  retrieving revision 1.148
  diff -u -r1.147 -r1.148
  --- Context.java	2001/08/16 04:50:30	1.147
  +++ Context.java	2001/08/17 03:59:48	1.148
  @@ -97,7 +97,7 @@
    * @author costin@dnt.ro
    * @author Gal Shachor shachor@il.ibm.com
    */
  -public final class Context {
  +public class Context {
       // -------------------- Constants --------------------
       
       // Proprietary attribute names for contexts - defined
  @@ -147,6 +147,8 @@
       public static final int STATE_READY=3;
       
       // -------------------- internal properties
  +    private String name;
  +    
       // context "id"
       private String path = "";
   
  @@ -278,7 +280,7 @@
       /** Add a new container. Container define special properties for
   	a set of urls.
       */
  -    public final void addContainer( Container ct )
  +    public void addContainer( Container ct )
   	throws TomcatException
       {
   	// Notify interceptors that a new container is added
  @@ -300,7 +302,7 @@
        * mapping.
        * @deprecated Use addContainer
        */
  -    public final  void addServletMapping(String path, String servletName)
  +    public void addServletMapping(String path, String servletName)
   	throws TomcatException
       {
   	if( mappings.get( path )!= null) {
  @@ -314,7 +316,7 @@
   	// set it 
           Handler sw = getServletByName(servletName);
   	
  -	Container map=new Container();
  +	Container map=contextM.createContainer();
   	map.setContext( this );
   	map.setHandlerName( servletName );
   	map.setHandler( sw );
  @@ -352,12 +354,12 @@
   	the request will have to pass the security constraints.
   	@deprecated Use addContainer
       */
  -    public final  void addSecurityConstraint( String path[], String methods[],
  +    public void addSecurityConstraint( String path[], String methods[],
   				       String roles[], String transport)
   	throws TomcatException
       {
   	for( int i=0; i< path.length; i++ ) {
  -	    Container ct=new Container();
  +	    Container ct=contextM.createContainer();
   	    ct.setContext( this );
   	    ct.setTransport( transport );
   	    ct.setRoles( roles );
  @@ -380,7 +382,7 @@
        *   user application. Only trusted apps can get 
        *   access to the implementation object.
        */
  -    public final  boolean allowAttribute( String name ) {
  +    public boolean allowAttribute( String name ) {
   	// check if we can access this attribute.
   	if( isTrusted() ) return true;
   	log( "Attempt to access internal attribute in untrusted app",
  @@ -399,11 +401,11 @@
   	type of the facade, as a Context can be associated with a 2.2 ...
   	ServletContext.
        */
  -    public final  Object getFacade() {
  +    public Object getFacade() {
   	return contextFacade;
       }
   
  -    public final  void setFacade(Object obj) {
  +    public void setFacade(Object obj) {
           if(contextFacade!=null ) {
   	    log( "Changing facade " + contextFacade + " " +obj);
   	}
  @@ -424,21 +426,30 @@
   	depend on the ContextManager, and will be adjusted
   	by interceptors ( DefaultCMSetter )
       */
  -    public final  void setContextManager(ContextManager cm) {
  +    public void setContextManager(ContextManager cm) {
   	if( contextM != null ) return;
   	contextM=cm;
  +	if( defaultContainer==null ) {
  +	    defaultContainer=contextM.createContainer();
  +	    defaultContainer.setContext( this );
  +	    defaultContainer.setPath( null ); // default container
  +	}
   	try {
   	    attributeInfo=cm.getNoteId(ContextManager.REQUEST_NOTE,
   				       "req.attribute");
   	} catch( TomcatException ex ) {
   	    ex.printStackTrace();
   	}
  -
       }
   
  +    protected void setContextManager1(ContextManager cm) {
  +	contextM=cm;
  +    }
  +	    
  +    
       /** Default container for this context.
        */
  -    public final  Container getContainer() {
  +    public Container getContainer() {
   	return defaultContainer;
       }
   
  @@ -450,7 +461,7 @@
   	Can be called only from tomcat.core.ContextManager.
   	( package access )
       */
  -    void setState( int state )
  +    public void setState( int state )
   	throws TomcatException
       {
   	// call state callback
  @@ -489,6 +500,10 @@
   	this.state=state;
       }
   
  +    protected void setState1( int state ) {
  +	this.state=state;
  +    }
  +
       /**
        * Initializes this context to be able to accept requests. This action
        * will cause the context to load it's configuration information
  @@ -505,7 +520,7 @@
        * @exception if any interceptor throws an exception the error
        *   will prevent the context from becoming READY
        */
  -    public final void init() throws TomcatException {
  +    public void init() throws TomcatException {
   	if( state==STATE_READY ) {
   	    log( "Already initialized " );
   	    return;
  @@ -557,8 +572,6 @@
   
       
       // -------------------- Basic properties --------------------
  -    String name;
  -    
       /** Return a name ( id ) for this context. Currently it's composed
   	from the virtual host and path, or set explicitely by the app.
       */
  @@ -575,13 +588,13 @@
       
       /** Base URL for this context
        */
  -    public final  String getPath() {
  +    public String getPath() {
   	return path;
       }
   
       /** Base URL for this context
        */
  -    public final  void setPath(String path) {
  +    public void setPath(String path) {
   	// config believes that the root path is called "/",
   	//
   	if( "/".equals(path) )
  @@ -596,7 +609,7 @@
        *  Make this context visible as part of a virtual host.
        *  The host is the "default" name, it may also have aliases.
        */
  -    public final  void setHost( String h ) {
  +    public void setHost( String h ) {
   	vhost=h;
   	name=null;
       }
  @@ -605,7 +618,7 @@
        * Return the virtual host name, or null if we are in the
        * default context
        */
  -    public final  String getHost() {
  +    public String getHost() {
   	return vhost;
       }
   
  @@ -633,18 +646,18 @@
        *  "Basic" tomcat treats it as a file ( either absolute or relative to
        *  the CM home ).
        */
  -    public final  void setDocBase( String docB ) {
  +    public void setDocBase( String docB ) {
   	this.docBase=docB;
       }
   
  -    public final  String getDocBase() {
  +    public String getDocBase() {
   	return docBase;
       }
   
       /** Return the absolute path for the docBase, if we are file-system
        *  based, null otherwise.
       */
  -    public final  String getAbsolutePath() {
  +    public String getAbsolutePath() {
   	return absPath;
       }
   
  @@ -653,7 +666,7 @@
        *  or relative to "home" ( cm.getHome() ).
        *  DefaultCMSetter will "fix" the path.
        */
  -    public final  void setAbsolutePath(String s) {
  +    public void setAbsolutePath(String s) {
   	absPath=s;
       }
   
  @@ -667,13 +680,13 @@
       
       // -------------------- Tomcat specific properties --------------------
       
  -    public final  void setReloadable( boolean b ) {
  +    public void setReloadable( boolean b ) {
   	reloadable=b;
       }
   
       /** Should we reload servlets ?
        */
  -    public final  boolean getReloadable() {
  +    public boolean getReloadable() {
   	return reloadable;
       }
   
  @@ -682,7 +695,7 @@
       /** The servlet API variant that will be used for requests in this
        *  context
        */ 
  -    public final  void setServletAPI( String s ) {
  +    public void setServletAPI( String s ) {
   	if( s==null ) return;
   	if( s.endsWith("23") || s.endsWith("2.3")) {
   	    apiLevel="2.3";
  @@ -693,7 +706,7 @@
   	}
       }
   
  -    public final  String getServletAPI() {
  +    public String getServletAPI() {
   	return apiLevel;
       }
       
  @@ -702,7 +715,7 @@
       /** Return welcome files defined in web.xml or the
        *  defaults, if user doesn't define any
        */
  -    public final  String[] getWelcomeFiles() {
  +    public String[] getWelcomeFiles() {
   	if( welcomeFiles==null ) {
   	    welcomeFiles=new String[ welcomeFilesV.size() ];
   	    for( int i=0; i< welcomeFiles.length; i++ ) {
  @@ -714,7 +727,7 @@
   
       /** Add an welcome file. 
        */
  -    public final  void addWelcomeFile( String s) {
  +    public void addWelcomeFile( String s) {
   	if (s == null ) return;
   	s=s.trim();
   	if(s.length() == 0)
  @@ -725,15 +738,15 @@
   
       // -------------------- Init parameters --------------------
       
  -    public final  String getInitParameter(String name) {
  +    public String getInitParameter(String name) {
           return (String)initializationParameters.get(name);
       }
   
  -    public final  void addInitParameter( String name, String value ) {
  +    public void addInitParameter( String name, String value ) {
   	initializationParameters.put(name, value );
       }
   
  -    public final  Enumeration getInitParameterNames() {
  +    public Enumeration getInitParameterNames() {
           return initializationParameters.keys();
       }
   
  @@ -745,7 +758,7 @@
        *  are computed
        * 
        */
  -    public final  Object getAttribute(String name) {
  +    public Object getAttribute(String name) {
   	Object o=attributes.get( name );
   	if( o!=null ) return o;
   	if(name.equals(ATTRIB_REAL_CONTEXT)) {
  @@ -767,18 +780,18 @@
   	return o;    
       }
   
  -    public final  Enumeration getAttributeNames() {
  +    public Enumeration getAttributeNames() {
           return attributes.keys();
       }
   
       /**
        *  XXX Use callbacks !!
        */
  -    public final  void setAttribute(String name, Object object) {
  +    public void setAttribute(String name, Object object) {
           attributes.put(name, object);
       }
   
  -    public final  void removeAttribute(String name) {
  +    public void removeAttribute(String name) {
           attributes.remove(name);
       }
   
  @@ -787,21 +800,21 @@
   
       /** Add a taglib declaration for this context
        */
  -    public final  void addTaglib( String uri, String location ) {
  +    public void addTaglib( String uri, String location ) {
   	tagLibs.put( uri, location );
       }
   
  -    public final  String getTaglibLocation( String uri ) {
  +    public String getTaglibLocation( String uri ) {
   	return (String)tagLibs.get(uri );
       }
   
  -    public final  Enumeration getTaglibs() {
  +    public Enumeration getTaglibs() {
   	return tagLibs.keys();
       }
   
       /** Add Env-entry to this context
        */
  -    public final  void addEnvEntry( String name,String type, String value, String description
) {
  +    public void addEnvEntry( String name,String type, String value, String description
) {
   	log("Add env-entry " + name + "  " + type + " " + value + " " +description );
   	if( name==null || type==null) throw new IllegalArgumentException();
   	envEntryTypes.put( name, type );
  @@ -809,68 +822,68 @@
   	    envEntryValues.put( name, value );
       }
   
  -    public final  String getEnvEntryType(String name) {
  +    public String getEnvEntryType(String name) {
   	return (String)envEntryTypes.get(name);
       }
   
  -    public final  String getEnvEntryValue(String name) {
  +    public String getEnvEntryValue(String name) {
   	return (String)envEntryValues.get(name);
       }
   
  -    public final  Enumeration getEnvEntries() {
  +    public Enumeration getEnvEntries() {
   	return envEntryTypes.keys();
       }
   
       
  -    public final  String getDescription() {
  +    public String getDescription() {
           return this.description;
       }
   
  -    public final  void setDescription(String description) {
  +    public void setDescription(String description) {
           this.description = description;
       }
   
  -    public final  void setIcon( String icon ) {
  +    public void setIcon( String icon ) {
   	this.icon=icon;
       }
   
  -    public final  boolean isDistributable() {
  +    public boolean isDistributable() {
           return this.isDistributable;
       }
   
  -    public final  void setDistributable(boolean isDistributable) {
  +    public void setDistributable(boolean isDistributable) {
           this.isDistributable = isDistributable;
       }
   
  -    public final  int getSessionTimeOut() {
  +    public int getSessionTimeOut() {
           return this.sessionTimeOut;
       }
   
  -    public final  void setSessionTimeOut(int sessionTimeOut) {
  +    public void setSessionTimeOut(int sessionTimeOut) {
           this.sessionTimeOut = sessionTimeOut;
       }
   
       // -------------------- Mime types --------------------
   
  -    public final  FileNameMap getMimeMap() {
  +    public FileNameMap getMimeMap() {
           return mimeTypes;
       }
   
  -    public final  void addContentType( String ext, String type) {
  +    public void addContentType( String ext, String type) {
   	mimeTypes.addContentType( ext, type );
       }
       
       // -------------------- Error pages --------------------
   
  -    public final  String getErrorPage(int errorCode) {
  +    public String getErrorPage(int errorCode) {
           return getErrorPage(String.valueOf(errorCode));
       }
   
  -    public final  void addErrorPage( String errorType, String value ) {
  +    public void addErrorPage( String errorType, String value ) {
   	this.errorPages.put( errorType, value );
       }
   
  -    public final  String getErrorPage(String errorCode) {
  +    public String getErrorPage(String errorCode) {
           return (String)errorPages.get(errorCode);
       }
   
  @@ -879,33 +892,33 @@
       
       /** Authentication method, if any specified
        */
  -    public final  String getAuthMethod() {
  +    public String getAuthMethod() {
   	return authMethod;
       }
   
       /** Realm to be used
        */
  -    public final  String getRealmName() {
  +    public String getRealmName() {
   	return realmName;
       }
   
  -    public final  String getFormLoginPage() {
  +    public String getFormLoginPage() {
   	return formLoginPage;
       }
   
  -    public final  String getFormErrorPage() {
  +    public String getFormErrorPage() {
   	return formErrorPage;
       }
   
  -    public final  void setFormLoginPage( String page ) {
  +    public void setFormLoginPage( String page ) {
   	formLoginPage=page;
       }
       
  -    public final  void setFormErrorPage( String page ) {
  +    public void setFormErrorPage( String page ) {
   	formErrorPage=page;
       }
   
  -    public final  void setLoginConfig( String authMethod, String realmName,
  +    public void setLoginConfig( String authMethod, String realmName,
   				String formLoginPage, String formErrorPage)
       {
   	this.authMethod=authMethod;
  @@ -916,7 +929,7 @@
   
       // -------------------- Mappings --------------------
   
  -    public final  Enumeration getContainers() {
  +    public Enumeration getContainers() {
   	return containers.elements();
       }
   
  @@ -924,20 +937,20 @@
        *  all URLs ( relative to this context ) having
        *	associated properties ( handlers, security, etc)
        */
  -    public final  Enumeration getContainerLocations() {
  +    public Enumeration getContainerLocations() {
   	return containers.keys();
       }
   
       /** Return the container ( properties ) associated
        *  with a path ( relative to this context )
        */
  -    public final  Container getContainer( String path ) {
  +    public Container getContainer( String path ) {
   	return (Container)containers.get(path);
       }
   
       /** Remove a container
        */
  -    public final  void removeContainer( Container ct )
  +    public void removeContainer( Container ct )
   	throws TomcatException
       {
   	containers.remove(ct.getPath());
  @@ -956,7 +969,7 @@
        * servlets, that can be used for mappings.
        * @deprecated. Use addHandler() 
        */
  -    public final  void addServlet(Handler wrapper)
  +    public void addServlet(Handler wrapper)
       	throws TomcatException
       {
   	addHandler( wrapper );
  @@ -968,7 +981,7 @@
        * servlets, that can be used for mappings.
        * @deprecated. Use addHandler() 
        */
  -    public final  void addHandler(Handler wrapper)
  +    public void addHandler(Handler wrapper)
       	throws TomcatException
       {
   	//	wrapper.setContext( this );
  @@ -1006,7 +1019,7 @@
   
       /** Remove the servlet with a specific name
        */
  -    public final  void removeServletByName(String servletName)
  +    public void removeServletByName(String servletName)
   	throws TomcatException
       {
   	Handler h=getServletByName( servletName );
  @@ -1016,7 +1029,7 @@
       /**
        *  
        */
  -    public final  Handler getServletByName(String servletName) {
  +    public Handler getServletByName(String servletName) {
   	return (Handler)servlets.get(servletName);
       }
   
  @@ -1025,7 +1038,7 @@
       /** Return all servlets registered with this Context
        *  The elements will be of type Handler ( or sub-types ) 
        */
  -    public final  Enumeration getServletNames() {
  +    public Enumeration getServletNames() {
   	return servlets.keys();
       }
   
  @@ -1034,17 +1047,17 @@
       /** The current class loader. This value may change if reload
        *  is used, you shouldn't cache the result
        */
  -    public final ClassLoader getClassLoader() {
  +    public ClassLoader getClassLoader() {
   	return classLoader;
       }
   
  -    public final void setClassLoader(ClassLoader cl ) {
  +    public void setClassLoader(ClassLoader cl ) {
   	classLoader=cl;
       }
   
       // -------------------- ClassPath --------------------
       
  -    public final  void addClassPath( URL url ) {
  +    public void addClassPath( URL url ) {
   	classPath.addElement( url);
       }
   
  @@ -1052,7 +1065,7 @@
   	of ContextManager classpath and locally specified
   	class path
       */
  -    public final  URL[] getClassPath() {
  +    public URL[] getClassPath() {
   	if( classPath==null ) return new URL[0];
   	URL serverCP[]=new URL[0]; //contextM.getServerClassPath();
   	URL urls[]=new URL[classPath.size() + serverCP.length];
  @@ -1067,41 +1080,41 @@
       }
   
       /* -------------------- Utils  -------------------- */
  -    public final  void setDebug( int level ) {
  +    public void setDebug( int level ) {
   	if (level!=debug)
   	    log( "Setting debug to " + level );
   	debug=level;
       }
   
  -    public final  int getDebug( ) {
  +    public int getDebug( ) {
   	return debug;
       }
   
  -    public final  String toString() {
  +    public String toString() {
   	return getName();
       }
   
       // ------------------- Logging ---------------
   
  -    public final  String getId() {
  +    public String getId() {
   	return ((vhost==null) ? "" : vhost + ":" )  +  path;
       }
       
       /** Internal log method
        */
  -    public final void log(String msg) {
  +    public void log(String msg) {
   	loghelper.log(msg);
       }
   
       /** Internal log method
        */
  -    public final  void log(String msg, Throwable t) {
  +    public void log(String msg, Throwable t) {
   	loghelper.log(msg, t);
       }
   
       /** Internal log method
        */
  -    public final  void log(String msg, Throwable t, int level) {
  +    public void log(String msg, Throwable t, int level) {
   	loghelper.log(msg, t, level);
       }
   
  @@ -1110,7 +1123,7 @@
        *  tomcat core ( internals ) and one is used by 
        *  servlets
        */
  -    public final  void logServlet( String msg , Throwable t ) {
  +    public void logServlet( String msg , Throwable t ) {
   	if (loghelperServlet == null) {
   	    loghelperServlet = loghelper;
   	}
  @@ -1120,19 +1133,19 @@
   	    loghelperServlet.log(msg, t); // uses level ERROR
       }
   
  -    public final  void setLog(Log logger) {
  +    public void setLog(Log logger) {
   	loghelper=logger;
       }
   
  -    public final  void setServletLog(Log logger) {
  +    public void setServletLog(Log logger) {
   	loghelperServlet=logger;
       }
   
  -    public final  Log getLog() {
  +    public Log getLog() {
   	return loghelper;
       }
   
  -    public final  Log getServletLog() {
  +    public Log getServletLog() {
   	return loghelperServlet;
       }
   
  @@ -1143,13 +1156,13 @@
        *   a facade interceptor.
        *   XXX Do we want to allow user to customize it ?
        */
  -    public final  void setEngineHeader(String s) {
  +    public void setEngineHeader(String s) {
           engineHeader=s;
       }
   
       /**  
        */
  -    public final  String getEngineHeader() {
  +    public String getEngineHeader() {
   	return engineHeader;
       }
   
  @@ -1159,19 +1172,19 @@
        *  Work dir is a place where servlets are allowed
        *  to write
        */
  -    public final  void setWorkDir(String workDir) {
  +    public void setWorkDir(String workDir) {
   	this.workDir = new File(workDir);
       }
   
       /**  
        */
  -    public final  File getWorkDir() {
  +    public File getWorkDir() {
   	return workDir;
       }
   
       /**  
        */
  -    public final  void setWorkDir(File workDir) {
  +    public void setWorkDir(File workDir) {
   	this.workDir = workDir;
       }
   
  @@ -1181,11 +1194,11 @@
        *  a virtual host with the specified name. You should
        *  set all the aliases. XXX Not implemented
        */
  -    public final  void addHostAlias( String alias ) {
  +    public void addHostAlias( String alias ) {
   	vhostAliases.addElement( alias );
       }
   
  -    public final  Enumeration getHostAliases() {
  +    public Enumeration getHostAliases() {
   	return vhostAliases.elements();
       }
       // -------------------- Security - trusted code -------------------- 
  @@ -1193,11 +1206,11 @@
       /** Mark the webapplication as trusted, i.e. it can
        *  access internal objects and manipulate tomcat core
        */
  -    public final  void setTrusted( boolean t ) {
  +    public void setTrusted( boolean t ) {
   	trusted=t;
       }
   
  -    public final  boolean isTrusted() {
  +    public boolean isTrusted() {
   	return trusted;
       }
   
  @@ -1212,7 +1225,7 @@
        *  takes place before the context is added ( since contextM
        *  may be unknown ).
        */
  -    public final  void addInterceptor( BaseInterceptor ri )
  +    public void addInterceptor( BaseInterceptor ri )
   	throws TomcatException
       {
   	ri.setContext( this );
  
  
  
  1.188     +88 -49    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.187
  retrieving revision 1.188
  diff -u -r1.187 -r1.188
  --- ContextManager.java	2001/08/03 02:45:01	1.187
  +++ ContextManager.java	2001/08/17 03:59:48	1.188
  @@ -145,7 +145,7 @@
     @author Costin Manolache
     @author Hans Bergsten [hans@gefionsoftware.com]
    */
  -public final class ContextManager {
  +public class ContextManager {
       /** Official name and version
        */
       public static final String TOMCAT_VERSION = "3.3 Beta 1";
  @@ -229,7 +229,7 @@
        * Construct a new ContextManager instance with default values.
        */
       public ContextManager() {
  -        defaultContainer=new Container();
  +        defaultContainer=createContainer();
           defaultContainer.setContext( null );
   	defaultContainer.setContextManager( this );
           defaultContainer.setPath( null ); // default container
  @@ -248,11 +248,11 @@
        *  The "tomcat.home" system property is used if no explicit
        *  value is set. XXX
        */
  -    public final void setHome(String home) {
  +    public void setHome(String home) {
   	this.home=home;
       }
   
  -    public final String getHome() {
  +    public String getHome() {
   	return home;
       }
   
  @@ -264,30 +264,30 @@
        *  is used as default.
        * 
        */
  -    public final String getInstallDir() {
  +    public String getInstallDir() {
   	return installDir;
       }
   
  -    public final void setInstallDir( String tH ) {
  +    public void setInstallDir( String tH ) {
   	installDir=tH;
       }
   
       /**
        * WorkDir property - where all working files will be created
        */
  -    public final void setWorkDir( String wd ) {
  +    public void setWorkDir( String wd ) {
   	if(debug>0) log("set work dir " + wd);
   	this.workDir=wd;
       }
   
  -    public final String getWorkDir() {
  +    public String getWorkDir() {
   	return workDir;
       }
   
   
       /** Debug level
        */
  -    public final void setDebug( int level ) {
  +    public void setDebug( int level ) {
   	if( level != debug )
   	    log( "Setting debug level to " + level);
   	debug=level;
  @@ -329,7 +329,7 @@
        *  Any error will be propagated - the server will not change the
        *  state and should fail if any module can't handle that.
        */
  -    public final void setState( int state )
  +    public void setState( int state )
   	throws TomcatException
       {
   	BaseInterceptor existingI[]=defaultContainer.getInterceptors();
  @@ -338,6 +338,10 @@
   	}
   	this.state=state;
       }
  +
  +    protected void setState1( int state ) {
  +	this.state=state;
  +    }
       
       /**
        *  Parent loader is the "base" class loader of the
  @@ -364,35 +368,35 @@
        *                -> webapp.loaders
        *  </pre>
        */
  -    public final void setParentLoader( ClassLoader cl ) {
  +    public void setParentLoader( ClassLoader cl ) {
   	parentLoader=cl;
       }
   
  -    public final ClassLoader getParentLoader() {
  +    public ClassLoader getParentLoader() {
   	return parentLoader;
       }
   
  -    public final void setCommonLoader( ClassLoader cl ) {
  +    public void setCommonLoader( ClassLoader cl ) {
   	commonLoader=cl;
       }
   
  -    public final ClassLoader getCommonLoader() {
  +    public ClassLoader getCommonLoader() {
   	return commonLoader;
       }
   
  -    public final void setContainerLoader( ClassLoader cl ) {
  +    public void setContainerLoader( ClassLoader cl ) {
   	containerLoader=cl;
       }
   
  -    public final ClassLoader getContainerLoader() {
  +    public ClassLoader getContainerLoader() {
   	return containerLoader;
       }
   
  -    public final void setAppsLoader( ClassLoader cl ) {
  +    public void setAppsLoader( ClassLoader cl ) {
   	appsLoader=cl;
       }
   
  -    public final ClassLoader getAppsLoader() {
  +    public ClassLoader getAppsLoader() {
   	return appsLoader;
       }
   
  @@ -400,11 +404,11 @@
   	be called for all requests, and it will be associated with
   	invalid requests ( where context can't be found ).
        */
  -    public final Container getContainer() {
  +    public Container getContainer() {
           return defaultContainer;
       }
   
  -    public final void setContainer(Container newDefaultContainer) {
  +    public void setContainer(Container newDefaultContainer) {
           defaultContainer = newDefaultContainer;
       }
   
  @@ -416,7 +420,7 @@
        *  If the module is added after STATE_START, the engineStart hooks will
        *  be called.
        */
  -    public final void addInterceptor( BaseInterceptor ri )
  +    public void addInterceptor( BaseInterceptor ri )
   	throws TomcatException
       {
   	ri.setContextManager( this );
  @@ -476,7 +480,7 @@
       /** Remove a module. Hooks will be called to allow the module to
        *  free the resources. 
        */
  -    public final void removeInterceptor( BaseInterceptor ri )
  +    public void removeInterceptor( BaseInterceptor ri )
   	throws TomcatException
       {
   	
  @@ -528,7 +532,7 @@
        *  move to state= INIT
        * 
        */
  -    public final void init()  throws TomcatException {
  +    public void init()  throws TomcatException {
   	if( state >= STATE_CONFIG  ) // already initialized
   	    return;
   	
  @@ -622,7 +626,7 @@
       /** Will start the connectors and begin serving requests.
        *  It must be called after init.
        */
  -    public final void start() throws TomcatException {
  +    public void start() throws TomcatException {
   	if( state==STATE_NEW ) {
   	    init();
   	}
  @@ -638,7 +642,7 @@
   
       /** Will stop all connectors
        */
  -    public final void stop() throws TomcatException {
  +    public void stop() throws TomcatException {
   	setState(STATE_INIT); // initialized, but not accepting connections
   	
   	BaseInterceptor cI[]=defaultContainer.getInterceptors();
  @@ -651,7 +655,7 @@
        *  - call removeContext ( that will call Interceptor.removeContext hooks )
        *  - call Interceptor.engineShutdown() hooks.
        */
  -    public final void shutdown() throws TomcatException {
  +    public void shutdown() throws TomcatException {
           if( state==STATE_START ) stop();
   
   	Enumeration enum = getContexts();
  @@ -707,11 +711,11 @@
        *  Modules can use the information in context ( when addContext
        *  hook is called ) and prepare mapping tables.
        */
  -    public final Enumeration getContexts() {
  +    public Enumeration getContexts() {
   	return contextsV.elements();
       }
   
  -    public final Enumeration getContextNames() {
  +    public Enumeration getContextNames() {
   	return contexts.keys();
       }
   
  @@ -728,7 +732,7 @@
        *
        * @param ctx context to be added.
        */
  -    public final void addContext( Context ctx ) throws TomcatException {
  +    public void addContext( Context ctx ) throws TomcatException {
   	// Make sure context knows about its manager.
   	// this will also initialized all context-specific modules.
   	ctx.setContextManager( this );
  @@ -759,7 +763,7 @@
   
       /** Shut down and removes a context from service.
        */
  -    public final void removeContext( Context context ) throws TomcatException {
  +    public void removeContext( Context context ) throws TomcatException {
   	if( context==null ) return;
   
   	log( "Removing context " + context.toString());
  @@ -801,7 +805,7 @@
        *  ( for example in a connector, or when an internal sub-request is
        *  created )
        */
  -    public final void initRequest( Request req, Response resp ) {
  +    public void initRequest( Request req, Response resp ) {
   	// We may add other special calls here.
   	resp.setRequest( req );
   	req.setResponse( resp );
  @@ -813,7 +817,7 @@
        *  component able to generate Request/Response implementations ) will
        *  call this method to get it processed.
        */
  -    public final void service( Request req, Response res ) {
  +    public void service( Request req, Response res ) {
   	if( state!=STATE_START ) {
   	    // A request was received before all components are
   	    // in started state. Than can happen if the adapter was
  @@ -850,7 +854,7 @@
       }
   
       // Request processing steps and behavior
  -    private final void internalService( Request req, Response res ) {
  +    private void internalService( Request req, Response res ) {
   	try {
   	    /* assert req/res are set up
   	       corectly - have cm, and one-one relation
  @@ -924,7 +928,7 @@
        *  This method will only map the request, it'll not do authorization
        *  or authentication.
        */
  -    public final int processRequest( Request req ) {
  +    public int processRequest( Request req ) {
   	if(debug>9) log("Before processRequest(): "+req.toString());
   
   	int status=0;
  @@ -980,7 +984,7 @@
        *
        *  Note that session and all stuff will still be computed.
        */
  -    public final Request createRequest( Context ctx, String urlPath ) {
  +    public Request createRequest( Context ctx, String urlPath ) {
   	// assert urlPath!=null
   
   	// deal with paths with parameters in it
  @@ -1007,7 +1011,7 @@
   
       /** Create a new sub-request, deal with query string
        */
  -    private final Request createSubRequest( String host, String urlPath ) {
  +    private Request createSubRequest( String host, String urlPath ) {
   	String queryString=null;
   	int i = urlPath.indexOf("?");
   	int len=urlPath.length();
  @@ -1017,8 +1021,8 @@
   	    urlPath = urlPath.substring(0, i);
   	}
   
  -	Request lr = new Request();
  -	Response res = new Response();
  +	Request lr = createRequest();
  +	Response res = createResponse(lr);
   	lr.setContextManager( this );
   	lr.setResponse( res );
   	res.setRequest( lr );
  @@ -1038,7 +1042,7 @@
        *   The new context will be in the same virtual host as base.
        *
        */
  -    public final  Context getContext(Context base, String path) {
  +    public  Context getContext(Context base, String path) {
   	// XXX Servlet checks should be done in facade
   	if (! path.startsWith("/")) {
   	    return null; // according to spec, null is returned
  @@ -1056,7 +1060,7 @@
   
       /** Called for error-codes. Will call the error hook with a status code.
        */
  -    public final void handleStatus( Request req, Response res, int code ) {
  +    public void handleStatus( Request req, Response res, int code ) {
   	if( code!=0 )
   	    res.setStatus( code );
   	
  @@ -1077,7 +1081,7 @@
       /**
        *  Call error hook with an exception code.
        */
  -    public final void handleError( Request req, Response res , Throwable t  ) {
  +    public void handleError( Request req, Response res , Throwable t  ) {
   	BaseInterceptor ri[];
   	int status;
   	if( req.getContext() == null )
  @@ -1136,7 +1140,7 @@
        *   container or request.
        *  @param name the name of the note.
        */
  -    public final synchronized int getNoteId( int noteType, String name )
  +    public synchronized int getNoteId( int noteType, String name )
   	throws TomcatException
       {
   	// find if we already have a note with this name
  @@ -1156,7 +1160,7 @@
   	return noteId[noteType]++;
       }
   
  -    public final String getNoteName( int noteType, int noteId ) {
  +    public String getNoteName( int noteType, int noteId ) {
   	return noteName[noteType][noteId];
       }
   
  @@ -1190,27 +1194,62 @@
        * So other classes can piggyback on the context manager's log
        * stream.
        **/
  -    public final Log getLog() {
  +    public Log getLog() {
   	return loghelper;
       }
   
  -    public final void setLog(Log log) {
  +    public void setLog(Log log) {
   	loghelper=log;
       }
    
  -    public final void log(String msg) {
  +    public void log(String msg) {
   	loghelper.log(msg);
       }
   
  -    public final void log(String msg, Throwable t) {
  +    public void log(String msg, Throwable t) {
           loghelper.log(msg, t);
       }
   
  -    public final void log(String msg, int level) {
  +    public void log(String msg, int level) {
           loghelper.log(msg, level);
       }
   
  -    public final void log(String msg, Throwable t, int level) {
  +    public void log(String msg, Throwable t, int level) {
           loghelper.log(msg, t, level);
  +    }
  +
  +    // -------------------- Factories --------------------
  +
  +    public Context createContext() {
  +	return new Context();
  +    }
  +
  +    public Request createRequest() {
  +	Request req=new Request();
  +	//Response res=new Response();
  +	//initRequest( req, res );
  +	return req;
  +	
  +    }
  +
  +    public Response createResponse(Request req) {
  +	//return req.getResponse();
  +	return new Response();
  +    }
  +
  +    public Container createContainer() {
  +	return new Container();
  +    }
  +
  +    public OutputBuffer createOutputBuffer() {
  +	return new OutputBuffer();
  +    }
  +
  +    public OutputBuffer createOutputBuffer(int size) {
  +	return new OutputBuffer(size);
  +    }
  +
  +    public ServerSession createServerSession() {
  +	return new ServerSession();
       }
   }
  
  
  

Mime
View raw message