remm        01/01/14 11:58:30

  Modified:    catalina/src/share/org/apache/catalina/core
                        ApplicationContext.java StandardContext.java
  Log:
  - Fix the binding of the resources in the servlet context.
  - Fix ServletContext.getRealPath().
  - The AppContext cannot accurately generate the base path by itself
    anymore, as the new resources do not expose that information. Instead, it's
    passed as a parameter in the constructor.
  
  Revision  Changes    Path
  1.12      +13 -6     
jakarta-tomcat-4.1/catalina/src/share/org/apache/catalina/core/ApplicationContext.java
  
  Index: ApplicationContext.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.1/catalina/src/share/org/apache/catalina/core/ApplicationContext.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- ApplicationContext.java   2001/01/13 05:22:40     1.11
  +++ ApplicationContext.java   2001/01/14 19:58:30     1.12
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.1/catalina/src/share/org/apache/catalina/core/ApplicationContext.java,v
 1.11 2001/01/13 05:22:40 remm Exp $
  - * $Revision: 1.11 $
  - * $Date: 2001/01/13 05:22:40 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.1/catalina/src/share/org/apache/catalina/core/ApplicationContext.java,v
 1.12 2001/01/14 19:58:30 remm Exp $
  + * $Revision: 1.12 $
  + * $Date: 2001/01/14 19:58:30 $
    *
    * ====================================================================
    *
  @@ -105,7 +105,7 @@
    *
    * @author Craig R. McClanahan
    * @author Remy Maucherat
  - * @version $Revision: 1.11 $ $Date: 2001/01/13 05:22:40 $
  + * @version $Revision: 1.12 $ $Date: 2001/01/14 19:58:30 $
    */
   
   public final class ApplicationContext
  @@ -121,10 +121,11 @@
        *
        * @param context The associated Context instance
        */
  -    public ApplicationContext(StandardContext context) {
  +    public ApplicationContext(String basePath, StandardContext context) {
   
        super();
        this.context = context;
  +        this.basePath = basePath;
   
       }
   
  @@ -164,6 +165,12 @@
         StringManager.getManager(Constants.Package);
   
   
  +    /**
  +     * Base path.
  +     */
  +    private String basePath = null;
  +
  +
       // --------------------------------------------------------- Public Methods
   
   
  @@ -353,7 +360,7 @@
       public String getRealPath(String path) {
   
           // Here, we return a fake path
  -        File file = new File(context.getDocBase(), path);
  +        File file = new File(basePath, path);
           return (file.getAbsolutePath());
   
       }
  
  
  
  1.36      +46 -31    
jakarta-tomcat-4.1/catalina/src/share/org/apache/catalina/core/StandardContext.java
  
  Index: StandardContext.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.1/catalina/src/share/org/apache/catalina/core/StandardContext.java,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- StandardContext.java      2001/01/13 05:20:49     1.35
  +++ StandardContext.java      2001/01/14 19:58:30     1.36
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.1/catalina/src/share/org/apache/catalina/core/StandardContext.java,v
 1.35 2001/01/13 05:20:49 remm Exp $
  - * $Revision: 1.35 $
  - * $Date: 2001/01/13 05:20:49 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.1/catalina/src/share/org/apache/catalina/core/StandardContext.java,v
 1.36 2001/01/14 19:58:30 remm Exp $
  + * $Revision: 1.36 $
  + * $Date: 2001/01/14 19:58:30 $
    *
    * ====================================================================
    *
  @@ -136,7 +136,7 @@
    *
    * @author Craig R. McClanahan
    * @author Remy Maucherat
  - * @version $Revision: 1.35 $ $Date: 2001/01/13 05:20:49 $
  + * @version $Revision: 1.36 $ $Date: 2001/01/14 19:58:30 $
    */
   
   public class StandardContext
  @@ -845,7 +845,7 @@
       public synchronized ServletContext getServletContext() {
   
        if (context == null)
  -         context = new ApplicationContext(this);
  +         context = new ApplicationContext(getBasePath(), this);
        return (context);
   
       }
  @@ -912,33 +912,14 @@
       public synchronized void setResources(DirContext resources) {
   
           if (resources instanceof BaseDirContext) {
  -            String docBase = null;
  -            Container container = this;
  -            while (container != null) {
  -                if (container instanceof Host)
  -                    break;
  -                container = container.getParent();
  -            }
  -            if (container == null) {
  -                docBase = (new File(engineBase(), getDocBase())).getPath();
  -            } else {
  -                File file = new File(getDocBase());
  -                if (!file.isAbsolute()) {
  -                    // Use the "appBase" property of this container
  -                    String appBase = ((Host) container).getAppBase();
  -                    file = new File(appBase);
  -                    if (!file.isAbsolute())
  -                        file = new File(engineBase(), appBase);
  -                    docBase = (new File(file, getDocBase())).getPath();
  -                } else {
  -                    docBase = file.getPath();
  -                }
  -            }
  -            ((BaseDirContext) resources).setDocBase(docBase);
  +            if (resources instanceof BaseDirContext)
  +                ((BaseDirContext) resources).setDocBase(getBasePath());
           }
           super.setResources(resources);
  -        // We put the resources into the servlet context
  -        getServletContext().setAttribute(Globals.RESOURCES_ATTR, resources);
  +        if (started)
  +            // We put the resources into the servlet context
  +            getServletContext().setAttribute
  +                (Globals.RESOURCES_ATTR, getResources());
   
       }
   
  @@ -2968,6 +2949,10 @@
               }
           }
   
  +        // We put the resources into the servlet context
  +        getServletContext().setAttribute
  +            (Globals.RESOURCES_ATTR, getResources());
  +
           // Configure and call application event listeners and filters
           listenerStart();
           filterStart();
  @@ -3158,6 +3143,36 @@
   
   
       /**
  +     * Get base path.
  +     */
  +    private String getBasePath() {
  +        String docBase = null;
  +        Container container = this;
  +        while (container != null) {
  +            if (container instanceof Host)
  +                break;
  +            container = container.getParent();
  +        }
  +        if (container == null) {
  +            docBase = (new File(engineBase(), getDocBase())).getPath();
  +        } else {
  +            File file = new File(getDocBase());
  +            if (!file.isAbsolute()) {
  +                // Use the "appBase" property of this container
  +                String appBase = ((Host) container).getAppBase();
  +                file = new File(appBase);
  +                if (!file.isAbsolute())
  +                    file = new File(engineBase(), appBase);
  +                docBase = (new File(file, getDocBase())).getPath();
  +            } else {
  +                docBase = file.getPath();
  +            }
  +        }
  +        return docBase;
  +    }
  +
  +
  +    /**
        * Create and initialize the JNDI naming context.
        */
       private void createNamingContext()
  @@ -3297,7 +3312,7 @@
   
           // Binding the resources directory context
           try {
  -            compCtx.bind("Resources", resources);
  +            compCtx.bind("Resources", getResources());
           } catch (NamingException e) {
               log(sm.getString("standardContext.bindFailed", e));
           }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to