Hi,

Comments:
==========
Added Context viewing/editing functionality. Values read/written to
corresponding Context mBean.

New files to be added:
================

context.jsp -> jakarta-tomcat-4.0/webapps/admin
ContextAction, ContextForm, SetUpContextAction.java -->
jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin

Please commit my patch to the head branch.

thanks,
Manveen

Attachment: context.jsp
Description: application/unknown-content-type-jspfile

/*
 * $Header:Exp $
 * $Revision: $
 * $Date: $
 *
 * ====================================================================
 *
 * The Apache Software License, Version 1.1
 *
 * Copyright (c) 2001 The Apache Software Foundation.  All rights
 * reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in
 *    the documentation and/or other materials provided with the
 *    distribution.
 *
 * 3. The end-user documentation included with the redistribution, if
 *    any, must include the following acknowlegement:
 *       "This product includes software developed by the
 *        Apache Software Foundation (http://www.apache.org/)."
 *    Alternately, this acknowlegement may appear in the software itself,
 *    if and wherever such third-party acknowlegements normally appear.
 *
 * 4. The names "The Jakarta Project", "Struts", and "Apache Software
 *    Foundation" must not be used to endorse or promote products derived
 *    from this software without prior written permission. For written
 *    permission, please contact [EMAIL PROTECTED]
 *
 * 5. Products derived from this software may not be called "Apache"
 *    nor may "Apache" appear in their names without prior written
 *    permission of the Apache Group.
 *
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 * ====================================================================
 *
 * This software consists of voluntary contributions made by many
 * individuals on behalf of the Apache Software Foundation.  For more
 * information on the Apache Software Foundation, please see
 * <http://www.apache.org/>.
 *
 */


package org.apache.webapp.admin;

import java.util.Iterator;
import java.util.Locale;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import javax.management.Attribute;
import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
import javax.management.QueryExp;
import javax.management.Query;
import javax.management.ObjectInstance;
import javax.management.ObjectName;
import javax.management.JMException;
import javax.management.MBeanAttributeInfo;
import javax.management.MBeanOperationInfo;
import javax.management.MBeanInfo;
import org.apache.struts.util.MessageResources;

/**
 * Implementation of <strong>Action</strong> that validates
 * actions on a Context.
 *
 * @author Manveen Kaur
 * @version $Revision: $ $Date: $
 */

public final class ContextAction extends Action {
    
    private static MBeanServer mBServer = null;
    
    // --------------------------------------------------------- Public Methods
    
    
    /**
     * Process the specified HTTP request, and create the corresponding HTTP
     * response (or forward to another web component that will create it).
     * Return an <code>ActionForward</code> instance describing where and how
     * control should be forwarded, or <code>null</code> if the response has
     * already been completed.
     *
     * @param mapping The ActionMapping used to select this instance
     * @param actionForm The optional ActionForm bean for this request (if any)
     * @param request The HTTP request we are processing
     * @param response The HTTP response we are creating
     *
     * @exception IOException if an input/output error occurs
     * @exception ServletException if a servlet exception occurs
     */
    public ActionForward perform(ActionMapping mapping,
    ActionForm form,
    HttpServletRequest request,
    HttpServletResponse response)
    throws IOException, ServletException {
        
        try{
            
            // front end validation and checking.
            // ===================================================
            MessageResources messages = getResources();
            Locale locale = 
(Locale)request.getSession().getAttribute(Action.LOCALE_KEY);
            
            // Validate the request parameters specified by the user
            ActionErrors errors = new ActionErrors();
            
            // Report any errors we have discovered back to the original form
            if (!errors.empty()) {
                saveErrors(request, errors);
                return (new ActionForward(mapping.getInput()));
            }
            
            if(mBServer == null) {
                ApplicationServlet servlet = (ApplicationServlet)getServlet();
                mBServer = servlet.getServer();
            }
            
            /**
             * Get the context Name from the form.
             * This is used to lookup the MBeanServer and
             * retrieve this context's MBean.
             */
            String contextName = request.getParameter("contextName");
            
            Iterator contextItr =
            mBServer.queryMBeans(new
            ObjectName(contextName), null).iterator();
            
            ObjectInstance objInstance = (ObjectInstance)contextItr.next();
            ObjectName contextObjName = (objInstance).getObjectName();
            
            /**
             * Extracting the values from the form and
             * updating the MBean with the new values.
             */
            
            String cookiesText = request.getParameter("cookies");
            if(cookiesText != null) {
                Boolean cookies = Boolean.valueOf(cookiesText);
                mBServer.setAttribute(contextObjName,
                new Attribute(SetUpContextAction.COOKIES_PROP_NAME,
                cookies));
            }
            
            String crossContextText = request.getParameter("crossContext");
            if(crossContextText != null) {
                Boolean crossContext = Boolean.valueOf(crossContextText);
                mBServer.setAttribute(contextObjName,
                new Attribute(SetUpContextAction.CROSS_CONTEXT_PROP_NAME,
                crossContext));
            }
            
            String debugLvlText = request.getParameter("debugLvl");
            if(debugLvlText != null) {
                Integer debugLvl = new Integer(debugLvlText);
                mBServer.setAttribute(contextObjName,
                new Attribute(SetUpContextAction.DEBUG_PROP_NAME,
                debugLvl));
            }            
            
            String docBase = request.getParameter("docBase");
            if(docBase != null) {
                mBServer.setAttribute(contextObjName,
                new Attribute(SetUpContextAction.DOC_BASE_PROP_NAME,
                docBase));
            }
            
            String overrideText = request.getParameter("override");
            if(overrideText != null) {
                Boolean override = Boolean.valueOf(overrideText);
                mBServer.setAttribute(contextObjName,
                new Attribute(SetUpContextAction.OVERRIDE_PROP_NAME,
                override));
            }
                        
            String path = request.getParameter("path");
            if(path != null) {
                mBServer.setAttribute(contextObjName,
                new Attribute(SetUpContextAction.PATH_PROP_NAME,
                path));
            }            
            
            String reloadableText = request.getParameter("reloadable");
            if(reloadableText != null) {
                Boolean reloadable = Boolean.valueOf(reloadableText);
                mBServer.setAttribute(contextObjName,
                new Attribute(SetUpContextAction.RELOADABLE_PROP_NAME,
                reloadable));
            }
            
            String useNamingText = request.getParameter("useNaming");
            if(useNamingText != null) {
                Boolean useNaming = Boolean.valueOf(useNamingText);
                mBServer.setAttribute(contextObjName,
                new Attribute(SetUpContextAction.USENAMING_PROP_NAME,
                useNaming));
            }
                       
            String workDir = request.getParameter("workDir");
            if(workDir != null) {
                mBServer.setAttribute(contextObjName,
                new Attribute(SetUpContextAction.WORKDIR_PROP_NAME,
                workDir));
            }
            
            // FIXME
            // Need to write loader and session mgr properties back
            // once their mBeans are available through code!
            
        }catch(Throwable t){
            t.printStackTrace(System.out);
            //forward to error page
        }
        if (servlet.getDebug() >= 1)
            servlet.log(" Forwarding to success page");
        // Forward back to the test page
        return (mapping.findForward("Save Successful"));
        
    }
    
}
/*
 * $Header: Exp $
 * $Revision:  $
 * $Date: $
 *
 * ====================================================================
 *
 * The Apache Software License, Version 1.1
 *
 * Copyright (c) 2001 The Apache Software Foundation.  All rights
 * reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in
 *    the documentation and/or other materials provided with the
 *    distribution.
 *
 * 3. The end-user documentation included with the redistribution, if
 *    any, must include the following acknowlegement:
 *       "This product includes software developed by the
 *        Apache Software Foundation (http://www.apache.org/)."
 *    Alternately, this acknowlegement may appear in the software itself,
 *    if and wherever such third-party acknowlegements normally appear.
 *
 * 4. The names "The Jakarta Project", "Struts", and "Apache Software
 *    Foundation" must not be used to endorse or promote products derived
 *    from this software without prior written permission. For written
 *    permission, please contact [EMAIL PROTECTED]
 *
 * 5. Products derived from this software may not be called "Apache"
 *    nor may "Apache" appear in their names without prior written
 *    permission of the Apache Group.
 *
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 * ====================================================================
 *
 * This software consists of voluntary contributions made by many
 * individuals on behalf of the Apache Software Foundation.  For more
 * information on the Apache Software Foundation, please see
 * <http://www.apache.org/>.
 *
 */


package org.apache.webapp.admin;

import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import java.net.InetAddress;
import java.util.ArrayList;

/**
 * Form bean for the context page.
 *
 * @author Manveen Kaur
 * @version $Revision:  $ $Date: $
 */

public final class ContextForm extends ActionForm {
    
    // ----------------------------------------------------- Instance Variables
    
    /**
     * The text for the scheme.
     */
    //private String scheme = null;
    
    /**
     * The text for the node label.
     */
    private String nodeLabel = null;
    
    /**
     * The value of cookies.
     */
    private String cookies = "false";
    
    /**
     * The value of cross context.
     */
    private String crossContext = "false";
    
    /**
     * The text for the debug level.
     */
    private String debugLvl = "0";
    
    /**
     * The text for the document Base.
     */
    private String docBase = null;
    
    /**
     * The text for override boolean.
     */
    private String override = "false";
    
    /**
     * The text for the context path for this context.
     */
    private String path = null;
    
    /**
     * The text for reloadable boolean.
     */
    private String reloadable = "false";
    
    /**
     * The text for use naming boolean.
     */
    private String useNaming = "false";
    
    /**
     * The text for the working directory for this context.
     */
    private String workDir = null;
    
    /**
     * The text for the loader check interval.
     */
    private String ldrCheckInterval = "0";
    
    /**
     * The text for the loader Debug level.
     */
    private String ldrDebugLvl = "0";
    
    /**
     * The text for the boolean value of loader reloadable.
     */
    private String ldrReloadable = "false";
    
    /**
     * The text for the session manager check interval.
     */
    private String mgrCheckInterval = "0";
    
    /**
     * The text for the session manager Debug level.
     */
    private String mgrDebugLvl = "0";
    
    /**
     * The text for the session mgr session ID initializer.
     */
    private String mgrSessionIDInit = "0";
    
    /**
     * The text for the session mgr max active sessions.
     */
    private String mgrMaxSessions = "0";
    
    /**
     * The text for the contextName.
     */
    private String contextName = null;
    
    /**
     * Set of valid values for debug level.
     */
    private ArrayList debugLvlVals = null;
    
    /*
     * Represent boolean (true, false) values for cookies etc.
     */
    private ArrayList booleanVals = null;
    
    // ------------------------------------------------------------- Properties
    
    /**
     * Return the label of the node that was clicked.
     */
    public String getNodeLabel() {
        
        return this.nodeLabel;
        
    }
    
    /**
     * Set the node label.
     */
    public void setNodeLabel(String nodeLabel) {
        
        this.nodeLabel = nodeLabel;
        
    }
    
    
    /**
     * Return the debugVals.
     */
    public ArrayList getDebugLvlVals() {
        
        return this.debugLvlVals;
        
    }
    
    /**
     * Set the debugVals.
     */
    public void setDebugLvlVals(ArrayList debugLvlVals) {
        
        this.debugLvlVals = debugLvlVals;
        
    }
    
    /**
     * Return the booleanVals.
     */
    public ArrayList getBooleanVals() {
        
        return this.booleanVals;
        
    }
    
    /**
     * Set the debugVals.
     */
    public void setBooleanVals(ArrayList booleanVals) {
        
        this.booleanVals = booleanVals;
        
    }
    
    
    /**
     * Return the Cookies.
     */
    
    public String getCookies() {
        
        return this.cookies;
        
    }
    
    /**
     * Set the Cookies.
     */
    public void setCookies(String cookies) {
        
        this.cookies = cookies;
        
    }
    
    /**
     * Return the Cross Context.
     */
    
    public String getCrossContext() {
        
        return this.crossContext;
        
    }
    
    /**
     * Set the Cross Context.
     */
    public void setCrossContext(String crossContext) {
        
        this.crossContext = crossContext;
        
    }
    
    
    /**
     * Return the Debug Level Text.
     */
    
    public String getDebugLvl() {
        
        return this.debugLvl;
        
    }
    
    /**
     * Set the Debug Level Text.
     */
    public void setDebugLvl(String debugLvl) {
        
        this.debugLvl = debugLvl;
        
    }
    
    
    /**
     * Return the Document Base Text.
     */
    
    public String getDocBase() {
        
        return this.docBase;
        
    }
    
    /**
     * Set the document Base text.
     */
    public void setDocBase(String docBase) {
        
        this.docBase = docBase;
        
    }
    
    
    /**
     * Return the Override boolean value.
     */
    
    public String getOverride() {
        
        return this.override;
        
    }
    
    /**
     * Set the override value.
     */
    public void setOverride(String override) {
        
        this.override = override;
        
    }
    
    
    /**
     * Return the context path.
     */
    
    public String getPath() {
        
        return this.path;
        
    }
    
    /**
     * Set the context path text.
     */
    public void setPath(String path) {
        
        this.path = path;
        
    }
    
    
    /**
     * Return the reloadable boolean value.
     */
    
    public String getReloadable() {
        
        return this.reloadable;
        
    }
    
    /**
     * Set the reloadable value.
     */
    public void setReloadable(String reloadable) {
        
        this.reloadable = reloadable;
        
    }
    
    /**
     * Return the use naming boolean value.
     */
    
    public String getUseNaming() {
        
        return this.useNaming;
        
    }
    
    /**
     * Set the useNaming value.
     */
    public void setUseNaming(String useNaming) {
        
        this.useNaming = useNaming;
        
    }
    
    /**
     * Return the Working Directory.
     */
    public String getWorkDir() {
        
        return this.workDir;
        
    }
    
    /**
     * Set the working directory.
     */
    public void setWorkDir(String workDir) {
        
        this.workDir = workDir;
        
    }
    
    
    /**
     * Return the loader check interval.
     */
    public String getLdrCheckInterval() {
        
        return this.ldrCheckInterval;
        
    }
    
    /**
     * Set the loader Check Interval.
     */
    public void setLdrCheckInterval(String ldrCheckInterval) {
        
        this.ldrCheckInterval = ldrCheckInterval;
        
    }
    
    /**
     * Return the Loader Debug Level Text.
     */
    
    public String getLdrDebugLvl() {
        
        return this.ldrDebugLvl;
        
    }
    
    /**
     * Set the Loader Debug Level Text.
     */
    public void setLdrDebugLvl(String ldrDebugLvl) {
        
        this.ldrDebugLvl = ldrDebugLvl;
        
    }
    
    /**
     * Return the loader reloadable boolean value.
     */
    public String getLdrReloadable() {
        
        return this.ldrReloadable;
        
    }
    
    /**
     * Set the loader reloadable value.
     */
    public void setLdrReloadable(String ldrReloadable) {
        
        this.ldrReloadable = ldrReloadable;
        
    }
    
    /**
     * Return the session manager check interval.
     */
    public String getMgrCheckInterval() {
        
        return this.mgrCheckInterval;
        
    }
    
    /**
     * Set the session manager Check Interval.
     */
    public void setMgrCheckInterval(String mgrCheckInterval) {
        
        this.mgrCheckInterval = mgrCheckInterval;
        
    }
    
    /**
     * Return the session mgr Debug Level Text.
     */
    
    public String getMgrDebugLvl() {
        
        return this.mgrDebugLvl;
        
    }
    
    /**
     * Set the session mgr Debug Level Text.
     */
    public void setMgrDebugLvl(String mgrDebugLvl) {
        
        this.mgrDebugLvl = mgrDebugLvl;
        
    }
    
    /**
     * Return the session ID initializer.
     */
    public String getMgrSessionIDInit() {
        
        return this.mgrSessionIDInit;
        
    }
    
    /**
     * Set the mgr Session ID Initizializer.
     */
    public void setMgrSessionIDInit(String mgrSessionIDInit) {
        
        this.mgrSessionIDInit = mgrSessionIDInit;
        
    }
    
    /**
     * Return the Session mgr maximum active sessions.
     */
    
    public String getMgrMaxSessions() {
        
        return this.mgrMaxSessions;
        
    }
    
    /**
     * Set the Session mgr maximum active sessions.
     */
    public void setMgrMaxSessions(String mgrMaxSessions) {
        
        this.mgrMaxSessions = mgrMaxSessions;
        
    }
    
    /**
     * Return the Context Name.
     */
    public String getContextName() {
        
        return this.contextName;
        
    }
    
    /**
     * Set the Context Name.
     */
    public void setContextName(String contextName) {
        
        this.contextName = contextName;
        
    }
    
    // --------------------------------------------------------- Public Methods
    
    /**
     * Reset all properties to their default values.
     *
     * @param mapping The mapping used to select this instance
     * @param request The servlet request we are processing
     */
    public void reset(ActionMapping mapping, HttpServletRequest request) {
        
        // context properties
        this.cookies = "false";
        this.crossContext = "false";
        this.debugLvl = "0";
        this.docBase = null;
        this.override= "false";
        this.path = null;
        this.reloadable = "false";
        
        // loader properties
        this.ldrCheckInterval = "0";
        this.ldrDebugLvl = "0";
        this.ldrReloadable = "true";
        
        // session manager properties
        this.mgrCheckInterval = "0";
        this.mgrDebugLvl = "0";
        this.mgrSessionIDInit = "0";
        this.mgrMaxSessions = "-1";
    }
    
    /**
     * Validate the properties that have been set from this HTTP request,
     * and return an <code>ActionErrors</code> object that encapsulates any
     * validation errors that have been found.  If no errors are found, return
     * <code>null</code> or an <code>ActionErrors</code> object with no
     * recorded error messages.
     *
     * @param mapping The mapping used to select this instance
     * @param request The servlet request we are processing
     */
    
    private ActionErrors errors;
    
    public ActionErrors validate(ActionMapping mapping,
    HttpServletRequest request) {
        
        errors = new ActionErrors();
        
        String submit = request.getParameter("submit");
        
        // front end validation when save is clicked.
        if (submit != null) {
            
            // docBase cannot be null
            if ((docBase == null) || (docBase.length() < 1)) {
                errors.add("docBase", new ActionError("error.docBase.required"));
            }
            
            if ((path == null) || (path.length() < 1)) {
                errors.add("path", new ActionError("error.path.required"));
            }
            
            if ((workDir == null) || (workDir.length() < 1)) {
                errors.add("workDir", new ActionError("error.workDir.required"));
            }
            
            // loader properties
            // FIXME-- verify if these ranges are ok.
            numberCheck("ldrCheckInterval", ldrCheckInterval  , true, 0, 10000);
            
            // session manager properties
            numberCheck("mgrCheckInterval",  mgrCheckInterval, true, 0, 10000);
            numberCheck("mgrSessionIDInit",  mgrSessionIDInit, false, 0, 65535);
            numberCheck("mgrMaxSessions",  mgrMaxSessions, false, -1, 100);
            
        }
        
        return errors;
    }
    
    /*
     * Helper method to check that it is a required number and
     * is a valid integer within the given range. (min, max).
     *
     * @param  field  The field name in the form for which this error occured.
     * @param  numText  The string representation of the number.
     * @param rangeCheck  Boolean value set to true of reange check should be 
performed.
     *
     * @param  min  The lower limit of the range
     * @param  max  The upper limit of the range
     *
     */
    
    private void numberCheck(String field, String numText, boolean rangeCheck,
    int min, int max) {
        
        // Check for 'is required'
        if ((numText == null) || (numText.length() < 1)) {
            errors.add(field, new ActionError("error."+field+".required"));
        } else {
            
            // check for 'must be a number' in the 'valid range'
            try {
                int num = Integer.parseInt(numText);
                // perform range check only if required
                if (rangeCheck) {
                    if ((num < min) || (num > max ))
                        errors.add( field,
                        new ActionError("error."+ field +".range"));
                }
            } catch (NumberFormatException e) {
                errors.add(field,
                new ActionError("error."+ field + ".format"));
            }
        }
    }
    
}
Index: host.jsp
===================================================================
RCS file: /home/cvspublic/jakarta-tomcat-4.0/webapps/admin/host.jsp,v
retrieving revision 1.1
diff -u -r1.1 host.jsp
--- host.jsp    10 Jan 2002 03:41:13 -0000      1.1
+++ host.jsp    17 Jan 2002 23:24:26 -0000
@@ -51,7 +51,7 @@
             <controls:action url="">  <bean:message key="actions.valve.create"/> 
</controls:action>
             <controls:action url="">  <bean:message key="actions.valve.delete"/> 
</controls:action>
             <controls:action> ------------------------------------- </controls:action>
-            <controls:action url="">  <bean:message key="actions.host.delete"/> 
</controls:action>
+            <controls:action url="">  <bean:message key="actions.thishost.delete"/> 
+</controls:action>
         </controls:actions>
           </div>
       </td>
cvs server: Diffing WEB-INF
Index: WEB-INF/struts-config.xml
===================================================================
RCS file: /home/cvspublic/jakarta-tomcat-4.0/webapps/admin/WEB-INF/struts-config.xml,v
retrieving revision 1.14
diff -u -r1.14 struts-config.xml
--- WEB-INF/struts-config.xml   10 Jan 2002 03:41:13 -0000      1.14
+++ WEB-INF/struts-config.xml   17 Jan 2002 23:24:27 -0000
@@ -31,6 +31,10 @@
     <form-bean      name="hostForm"
                     type="org.apache.webapp.admin.HostForm"/>
 
+    <!-- Context form bean -->
+    <form-bean      name="contextForm"
+                    type="org.apache.webapp.admin.ContextForm"/>
+
     <!-- Set Locale form bean -->
     <form-bean      name="setLocaleForm"
                     type="org.apache.webapp.admin.SetLocaleForm"/>
@@ -73,7 +77,11 @@
     <forward        name="Host"
                     path="/host.jsp"
                 redirect="false"/>
-                        
+       
+    <forward        name="Context"
+                    path="/context.jsp"
+                redirect="false"/>
+                   
     <forward        name="Save Successful"
                     path="/saved.jsp"
                 redirect="false"/>
@@ -142,6 +150,16 @@
                   redirect="true"/>
     </action>
     
+      <!-- Set up Context datastructure -->
+    <action    path="/setUpContext"
+               type="org.apache.webapp.admin.SetUpContextAction"
+               name="contextForm"
+               scope="session">
+      <forward        name="SetUpContext"
+                      path="/context.jsp"
+                  redirect="true"/>
+    </action>
+    
     <!-- Log out of the application -->
     <action    path="/logOut"
                type="org.apache.webapp.admin.LogOutAction">
@@ -180,6 +198,14 @@
                name="hostForm"
               scope="session"
               input="/host.jsp">
+    </action>
+    
+     <!-- Process a context change -->
+    <action    path="/context"
+               type="org.apache.webapp.admin.ContextAction"
+               name="contextForm"
+              scope="session"
+              input="/context.jsp">
     </action>
     
     <!-- Process a set-locale action -->
cvs server: Diffing WEB-INF/classes
cvs server: Diffing WEB-INF/classes/org
cvs server: Diffing WEB-INF/classes/org/apache
cvs server: Diffing WEB-INF/classes/org/apache/webapp
cvs server: Diffing WEB-INF/classes/org/apache/webapp/admin
Index: WEB-INF/classes/org/apache/webapp/admin/ApplicationResources_en.properties
===================================================================
RCS file: 
/home/cvspublic/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/ApplicationResources_en.properties,v
retrieving revision 1.12
diff -u -r1.12 ApplicationResources_en.properties
--- WEB-INF/classes/org/apache/webapp/admin/ApplicationResources_en.properties  10 Jan 
2002 03:41:13 -0000      1.12
+++ WEB-INF/classes/org/apache/webapp/admin/ApplicationResources_en.properties  17 Jan 
+2002 23:24:28 -0000
@@ -83,7 +83,8 @@
 actions.thisconnector.delete=Delete This connector
 actions.alias.create=Create New Aliases
 actions.alias.delete=Delete Aliases
-actions.host.delete=Delete This Host
+actions.thishost.delete=Delete This Host
+actions.thiscontext.delete=Delete This Context
 connector.type=Type
 connector.accept.count=Accept Count
 connector.connection.timeout=Connection Timeout
@@ -101,3 +102,32 @@
 host.wars=Unpack WARs
 host.aliases=Aliases
 host.alias.name=Alias Name
+context.properties=Context Properties
+context.cookies=Cookies
+context.cross.context=Cross Context
+context.docBase=Document Base
+context.override=Override
+context.path=Path
+context.reloadable=Reloadable
+context.usenaming=Use Naming
+context.workdir=Working Directory
+context.loader.properties=Loader Properties
+context.sessionmgr.properties=Session Manager Properties
+context.checkInterval=Check interval
+context.sessionId=Session ID Initializer
+context.max.sessions=Maximum Active Sessions
+error.docBase.required=<li>Document base cannot be null</li>
+error.path.required=<li>Path cannot be null</li>
+error.workDir.required=<li>Working directory cannot be null</li>
+error.ldrCheckInterval.required=<li>Loader check interval cannot be empty</li>
+error.ldrCheckInterval.format=<li>Loader check interval not a valid integer!</li>
+error.ldrCheckInterval.range=<li>Loader check interval seems out of range. Valid 
+range is 1-1000. </li>
+error.mgrCheckInterval.required=<li>Manager check interval cannot be empty</li>
+error.mgrCheckInterval.format=<li>Manager check interval not a valid integer!</li>
+error.mgrCheckInterval.range=<li>Manager check interval seems out of range. Valid 
+range is 1-1000. </li>
+error.mgrSessionIDInit.required=<li>Session Manager Initialization ID cannot be 
+empty</li>
+error.mgrSessionIDInit.format=<li>Session Manager Initialization ID  not a valid 
+integer!</li>
+error.mgrSessionIDInit.range=<li>Session Manager Initialization ID seems out of 
+range. Valid range is 1-1000. </li>
+error.mgrMaxSessions.required=<li>Maximum sessions cannot be empty</li>
+error.mgrMaxSessions.format=<li>Maximum sessions not a valid integer!</li>
+error.mgrMaxSessions.range=<li>Maximum sessions seems out of range. Valid range is -1 
+to 100. </li>
Index: WEB-INF/classes/org/apache/webapp/admin/ApplicationResources_es.properties
===================================================================
RCS file: 
/home/cvspublic/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/ApplicationResources_es.properties,v
retrieving revision 1.15
diff -u -r1.15 ApplicationResources_es.properties
--- WEB-INF/classes/org/apache/webapp/admin/ApplicationResources_es.properties  10 Jan 
2002 03:41:13 -0000      1.15
+++ WEB-INF/classes/org/apache/webapp/admin/ApplicationResources_es.properties  17 Jan 
+2002 23:24:30 -0000
@@ -83,7 +83,8 @@
 actions.thisconnector.delete=Eliminar este conector
 actions.alias.create=Cree Los Nuevos Pseudonimos
 actions.alias.delete=Pseudonimos De la Cancelacion
-actions.host.delete=Suprima Este Ordenador principal
+actions.thishost.delete=Suprima Este Ordenador principal
+actions.thiscontext.delete=Suprima Este Contexto
 connector.type=Tipo
 connector.accept.count=Valide La Cuenta
 connector.connection.timeout=Descanso De la Conexi\u00f3n
@@ -95,9 +96,38 @@
 connector.max=Maximo
 connector.proxy.name=Nombre del Proxy
 connector.proxy.portnumber=Numero de Puerto del Proxy
-host.properties=Caracteristicas Del Ordenador principal
+host.properties=Propiedades del ordenador principal
 host.name=Nombre
 host.base=Base De la Aplicacion
 host.wars=Desempaquete WARs
 host.aliases=Pseudonimos
 host.alias.name=Alias Nombre
+context.properties=Propiedades del contexto
+context.cookies=Cookies
+context.cross.context=Cross Context
+context.docBase=Base Del Documento
+context.override=Invalidacion
+context.path=Camino
+context.reloadable=Reloadable
+context.usenaming=Utilice El Nombramiento
+context.workdir=Directorio De Funcionamiento
+context.loader.properties=Propiedades del cargador
+context.sessionmgr.properties=Propiedades del encargado de la Sesion
+context.checkInterval=Controle el intervalo
+context.sessionId=Inicializador De la Identificacion De la Sesion
+context.max.sessions=Sesiones Activas Del Maximo
+error.docBase.required=<li>La base del documento no puede ser nula</li>
+error.path.required=<li>El camino no puede ser nulo</li>
+error.workDir.required=<li>El directorio de funcionamiento no puede ser nulo</li>
+error.ldrCheckInterval.required=<li>El intervalo del cheque del cargador no puede ser 
+vacio</li>
+error.ldrCheckInterval.format=<li>Intervalo del cheque del cargador no un numero 
+entero valido!</li>
+error.ldrCheckInterval.range=<li>El intervalo del cheque del cargador se parece fuera 
+de rango. El rango valido es 1-1000.</li>
+error.mgrCheckInterval.required=<li>El intervalo del cheque del encargado no puede 
+ser vacio</li>
+error.mgrCheckInterval.format=<li>Intervalo del cheque del encargado no un numero 
+entero valido!</li>
+error.mgrCheckInterval.range=<li>El intervalo del cheque del encargado se parece 
+fuera de rango. El rango validoes 1-1000.</li>
+error.mgrSessionIDInit.required=<li>La identificacion de la inicializacion del 
+encargado de la sesion no puede servica</li>
+error.mgrSessionIDInit.format=<li>Identificacion de la inicializacion del encargado 
+de la sesion no un numero entero valido!</li>
+error.mgrSessionIDInit.range=<li>La identificacion de la inicializacion del encargado 
+de la sesion se parece fuera de rango. El rango valido es 1-1000. </li>
+error.mgrMaxSessions.required=<li>Las sesiones maximas no pueden ser vacias</li>
+error.mgrMaxSessions.format=<li>Sesiones maximas no un numero entero valido!</li>
+error.mgrMaxSessions.range=<li>Las sesiones maximas se parecen fuera de rango. El 
+rango valido es -1 a 100.</li>
Index: WEB-INF/classes/org/apache/webapp/admin/TomcatTreeBuilder.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/TomcatTreeBuilder.java,v
retrieving revision 1.6
diff -u -r1.6 TomcatTreeBuilder.java
--- WEB-INF/classes/org/apache/webapp/admin/TomcatTreeBuilder.java      10 Jan 2002 
20:34:04 -0000      1.6
+++ WEB-INF/classes/org/apache/webapp/admin/TomcatTreeBuilder.java      17 Jan 2002 
+23:24:42 -0000
@@ -105,6 +105,10 @@
     public final static String ENGINE_TYPE = "Catalina:type=Engine";
     public final static String CONNECTOR_TYPE = "Catalina:type=Connector";
     public final static String HOST_TYPE = "Catalina:type=Host";
+    public final static String CONTEXT_TYPE = "Catalina:type=Context";
+    public final static String LOADER_TYPE = "Catalina:type=WebappLoader";
+    public final static String MANAGER_TYPE = "Catalina:type=StandardManager";
+
     public final static String WILDCARD = ",*";
     
     private static MBeanServer mBServer = null;
@@ -178,7 +182,7 @@
             
             String nodeLabel = "Service (" + serviceName + ")";
             String encodedNodeLabel =  URLEncoder.encode(nodeLabel);
-        
+            
             TreeControlNode serviceNode =
             new TreeControlNode(service.getObjectName().toString(),
             "folder_16_pad.gif",
@@ -225,7 +229,7 @@
             if (!"warp".equalsIgnoreCase(connectorName)) {
                 connectorNode =
                 new TreeControlNode(connectorObj.getObjectName().toString(),
-                "folder_16_pad.gif", 
+                "folder_16_pad.gif",
                 nodeLabel,
                 "setUpConnector.do?select=" + encodedConnectorName
                 + "&nodeLabel="+ encodedNodeLabel,
@@ -239,18 +243,7 @@
     
     public void getHosts(TreeControlNode serviceNode, String serviceName)
     throws JMException{
-        
-        /*
-        System.out.println("** There are " + mBServer.getMBeanCount().intValue() +
-        " registered MBeans **");
-        Iterator instances = mBServer.queryMBeans(null, null).iterator();
-        while (instances.hasNext()) {
-            ObjectInstance instance = (ObjectInstance) instances.next();
-            System.out.println("  objectName=" + instance.getObjectName() +
-            ", className=" + instance.getClassName());
-        }
-        */
-        
+ 
         Iterator HostItr =
         (mBServer.queryMBeans(new ObjectName(HOST_TYPE + WILDCARD +
         ",service=" + serviceName), null)).iterator();
@@ -270,7 +263,7 @@
             
             String nodeLabel="Host (" + hostName + ")";
             String encodedNodeLabel =  URLEncoder.encode(nodeLabel);
-
+            
             hostNode =
             new TreeControlNode(hostObj.getObjectName().toString(),
             "folder_16_pad.gif",
@@ -280,6 +273,57 @@
             "content", true);
             
             serviceNode.addChild(hostNode);
-        }        
+            
+            getContexts(hostNode, hostName, serviceName);
+        }
+        
+    }
+    
+    public void getContexts(TreeControlNode hostNode, String hostName, String 
+serviceName)
+    throws JMException{
+
+        /*
+        System.out.println("** There are " + mBServer.getMBeanCount().intValue() +
+        " registered MBeans **");
+        Iterator instances = mBServer.queryMBeans(null, null).iterator();
+        while (instances.hasNext()) {
+            ObjectInstance instance = (ObjectInstance) instances.next();
+            System.out.println("  objectName=" + instance.getObjectName() +
+            ", className=" + instance.getClassName());
+        }
+        */
+    
+        Iterator contextItr =
+        (mBServer.queryMBeans(new ObjectName(CONTEXT_TYPE + WILDCARD +
+        ",host=" + hostName + ",service=" + serviceName), null)).iterator();
+        
+        TreeControlNode contextNode = null;
+        String encodedContextName;
+        
+        while(contextItr.hasNext()){
+            
+            ObjectInstance contextObj = (ObjectInstance)contextItr.next();
+            
+            String contextName =
+            (String)mBServer.getAttribute(contextObj.getObjectName(),
+            "name");
+            
+            encodedContextName =  
+URLEncoder.encode(contextObj.getObjectName().toString());
+            
+            String nodeLabel="Context (" + contextName + ")";
+            String encodedNodeLabel =  URLEncoder.encode(nodeLabel);
+            
+            contextNode =
+            new TreeControlNode(contextObj.getObjectName().toString(),
+            "folder_16_pad.gif",
+            nodeLabel,
+            "setUpContext.do?select=" + encodedContextName
+            +"&nodeLabel="+ encodedNodeLabel,
+            "content", true);
+            
+            hostNode.addChild(contextNode);
+            
+        }
+        
     }
 }
/*
 * $Header:  Exp $
 * $Revision: $
 * $Date: $
 *
 * ====================================================================
 *
 * The Apache Software License, Version 1.1
 *
 * Copyright (c) 2001 The Apache Software Foundation.  All rights
 * reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in
 *    the documentation and/or other materials provided with the
 *    distribution.
 *
 * 3. The end-user documentation included with the redistribution, if
 *    any, must include the following acknowlegement:
 *       "This product includes software developed by the
 *        Apache Software Foundation (http://www.apache.org/)."
 *    Alternately, this acknowlegement may appear in the software itself,
 *    if and wherever such third-party acknowlegements normally appear.
 *
 * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
 *    Foundation" must not be used to endorse or promote products derived
 *    from this software without prior written permission. For written
 *    permission, please contact [EMAIL PROTECTED]
 *
 * 5. Products derived from this software may not be called "Apache"
 *    nor may "Apache" appear in their names without prior written
 *    permission of the Apache Group.
 *
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR contextS; LOSS OF
 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 * ====================================================================
 *
 * This software consists of voluntary contributions made by many
 * individuals on behalf of the Apache Software Foundation.  For more
 * information on the Apache Software Foundation, please see
 * <http://www.apache.org/>.
 *
 */


package org.apache.webapp.admin;


import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
import javax.management.QueryExp;
import javax.management.Query;
import javax.management.ObjectInstance;
import javax.management.ObjectName;
import javax.management.JMException;
import javax.management.MBeanAttributeInfo;
import javax.management.MBeanOperationInfo;
import javax.management.MBeanInfo;

import javax.management.modelmbean.ModelMBean;
import javax.management.modelmbean.ModelMBeanInfo;

import org.apache.struts.util.MessageResources;

/**
 * Test <code>Action</code> that handles events from the tree control when
 * a context is chosen.
 *
 * @author Manveen Kaur
 * @version $Revision:  $ $Date: $
 */

public class SetUpContextAction extends Action {
    
    private static MBeanServer mBServer = null;
    
    // ---- Context Properties ----
    public final static String COOKIES_PROP_NAME = "cookies";
    public final static String CROSS_CONTEXT_PROP_NAME = "crossContext";
    public final static String DEBUG_PROP_NAME = "debug";
    public final static String DOC_BASE_PROP_NAME = "docBase";
    public final static String OVERRIDE_PROP_NAME = "override";
    public final static String PATH_PROP_NAME = "name";
    public final static String RELOADABLE_PROP_NAME = "reloadable";
    public final static String USENAMING_PROP_NAME = "useNaming";
    public final static String WORKDIR_PROP_NAME = "workDir";
    
    // -- Loader properties --
    public final static String CHECKINTERVAL_PROP_NAME = "checkInterval";
    
    // -- Session manager properties --
    public final static String SESSIONID_INIT_PROP_NAME = "sessionID";
    public final static String MAXACTIVE_SESSIONS_PROP_NAME = "maxActiveSessions";
    
    private ArrayList debugLvlList = null;
    private ArrayList booleanList = null;
    
    // --------------------------------------------------------- Public Methods
    
    /**
     * Process the specified HTTP request, and create the corresponding HTTP
     * response (or forward to another web component that will create it).
     * Return an <code>ActionForward</code> instance describing where and how
     * control should be forwarded, or <code>null</code> if the response has
     * already been completed.
     *
     * @param mapping The ActionMapping used to select this instance
     * @param actionForm The optional ActionForm bean for this request (if any)
     * @param request The HTTP request we are processing
     * @param response The HTTP response we are creating
     *
     * @exception IOException if an input/output error occurs
     * @exception ServletException if a servlet exception occurs
     */
    public ActionForward perform(ActionMapping mapping,
    ActionForm form,
    HttpServletRequest request,
    HttpServletResponse response)
    throws IOException, ServletException {
        
        HttpSession session = request.getSession();
        
        if (form == null) {
            getServlet().log(" Creating new ContextForm bean under key "
            + mapping.getAttribute());
            form = new ContextForm();
            
            if ("request".equals(mapping.getScope()))
                request.setAttribute(mapping.getAttribute(), form);
            else
                session.setAttribute(mapping.getAttribute(), form);
            
        }
        
        String selectedName = request.getParameter("select");
        // label of the node that was clicked on.
        String nodeLabel = request.getParameter("nodeLabel");
        
        ContextForm contextFm = (ContextForm) form;
        
        if(debugLvlList == null) {
            debugLvlList = new ArrayList();
            debugLvlList.add(new LabelValueBean("0", "0"));
            debugLvlList.add(new LabelValueBean("1", "1"));
            debugLvlList.add(new LabelValueBean("2", "2"));
            debugLvlList.add(new LabelValueBean("3", "3"));
            debugLvlList.add(new LabelValueBean("4", "4"));
            debugLvlList.add(new LabelValueBean("5", "5"));
            debugLvlList.add(new LabelValueBean("6", "6"));
            debugLvlList.add(new LabelValueBean("7", "7"));
            debugLvlList.add(new LabelValueBean("8", "8"));
            debugLvlList.add(new LabelValueBean("9", "9"));
            
        }
        
        /* Boolean (true.false) list for cookies */
        if(booleanList == null) {
            booleanList = new ArrayList();
            booleanList.add(new LabelValueBean("True", "true"));
            booleanList.add(new LabelValueBean("False", "false"));
        }
        
        String contextName = null;
        
        // context properties
        Boolean cookies = null;
        Boolean crossContext = null;
        Integer debug = null;
        String docBase = null;
        Boolean override = null;
        String path = null;
        Boolean reloadable = null;
        Boolean useNaming = null;
        String workDir = null;
        
        // loader properties
        Integer ldrCheckInterval = null;
        Integer ldrDebug = null;
        Boolean ldrReloadable = null;
        
        // session properties
        Integer mgrCheckInterval = null;
        Integer mgrDebug = null;
        Integer mgrSessionIDInit = null;
        Integer mgrMaxSessions = null; 
       
        try{
            
            if(mBServer == null) {
                ApplicationServlet servlet = (ApplicationServlet)getServlet();
                mBServer = servlet.getServer();
            }
            
            Iterator contextItr =
            mBServer.queryMBeans(new
            ObjectName(selectedName), null).iterator();
            
            ObjectInstance objInstance = (ObjectInstance)contextItr.next();
            ObjectName contextObjName = (objInstance).getObjectName();
            
            // Extracting the attribute values for the Context from the MBean
            
            cookies = (Boolean) mBServer.getAttribute(contextObjName,
            COOKIES_PROP_NAME);
            
            crossContext = (Boolean) mBServer.getAttribute(contextObjName,
            CROSS_CONTEXT_PROP_NAME);
            
            debug = (Integer) mBServer.getAttribute(contextObjName,
            DEBUG_PROP_NAME);
            
            docBase = (String) mBServer.getAttribute(contextObjName,
            DOC_BASE_PROP_NAME);
            
            override = (Boolean) mBServer.getAttribute(contextObjName,
            OVERRIDE_PROP_NAME);
            
            path = (String) mBServer.getAttribute(contextObjName,
            PATH_PROP_NAME);
            
            reloadable = (Boolean) mBServer.getAttribute(contextObjName,
            RELOADABLE_PROP_NAME);
            
            useNaming = (Boolean) mBServer.getAttribute(contextObjName,
            USENAMING_PROP_NAME);
            
            workDir = (String) mBServer.getAttribute(contextObjName,
            WORKDIR_PROP_NAME);
            
            // Loader properties
            // FIXME -- will update these to read from the Loader mBean 
            // after code that allows access to this mBean has been checked in.
            ldrCheckInterval = Integer.valueOf("15");            
            ldrDebug = Integer.valueOf("0");            
            ldrReloadable = Boolean.valueOf("true");            
            
            // Session manager properties
            // FIXME -- will update this later, after code that allows access to
            // SessionManager mBean has been checked in.
            mgrCheckInterval = Integer.valueOf("60");            
            mgrDebug = Integer.valueOf("0");            
            mgrSessionIDInit = Integer.valueOf("0");            
            mgrMaxSessions = Integer.valueOf("-1");
            
        } catch(Throwable t){
            t.printStackTrace(System.out);
            //forward to error page
        }
        
        //setting values obtained from the mBean to be displayed in the form.
        
        contextFm.setNodeLabel(nodeLabel);
        contextFm.setContextName(selectedName);
        
        contextFm.setDebugLvlVals(debugLvlList);
        contextFm.setBooleanVals(booleanList);
        
        // -- Context Properties --
        contextFm.setCookies(cookies.toString());
        contextFm.setCrossContext(crossContext.toString());
        contextFm.setDebugLvl(debug.toString());
        contextFm.setDocBase(docBase);
        contextFm.setOverride(override.toString());
        contextFm.setPath(path);
        contextFm.setReloadable(reloadable.toString());
        contextFm.setUseNaming(useNaming.toString());
        contextFm.setWorkDir(workDir);
        
        // -- Loader properties --
        contextFm.setLdrCheckInterval(ldrCheckInterval.toString());
        contextFm.setLdrDebugLvl(ldrDebug.toString());
        contextFm.setLdrReloadable(ldrReloadable.toString());
        
        // Session manager properties --
        contextFm.setMgrCheckInterval(mgrCheckInterval.toString());
        contextFm.setMgrDebugLvl(mgrDebug.toString());
        contextFm.setMgrSessionIDInit(mgrSessionIDInit.toString());
        contextFm.setMgrMaxSessions(mgrMaxSessions.toString());
       
        // Forward back to the test page
        return (mapping.findForward("Context"));
    }
}


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to