manveen     02/04/11 00:42:04

  Modified:    webapps/admin/WEB-INF/classes/org/apache/webapp/admin/valve
                        RemoteAddrValveForm.java SingleSignOnValveForm.java
  Added:       webapps/admin/WEB-INF/classes/org/apache/webapp/admin/valve
                        EditValveAction.java ValveForm.java ValveUtil.java
  Log:
  Added a base savevalve form.
  Implemented edit valve operation.
  
  Revision  Changes    Path
  1.2       +13 -159   
jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/valve/RemoteAddrValveForm.java
  
  Index: RemoteAddrValveForm.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/valve/RemoteAddrValveForm.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- RemoteAddrValveForm.java  10 Apr 2002 00:38:32 -0000      1.1
  +++ RemoteAddrValveForm.java  11 Apr 2002 07:42:04 -0000      1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/valve/RemoteAddrValveForm.java,v
 1.1 2002/04/10 00:38:32 manveen Exp $
  - * $Revision: 1.1 $
  - * $Date: 2002/04/10 00:38:32 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/valve/RemoteAddrValveForm.java,v
 1.2 2002/04/11 07:42:04 manveen Exp $
  + * $Revision: 1.2 $
  + * $Date: 2002/04/11 07:42:04 $
    *
    * ====================================================================
    *
  @@ -73,26 +73,16 @@
   import org.apache.webapp.admin.LabelValueBean;
   
   /**
  - * Form bean for the remote host valve page.
  + * Form bean for the remote addr valve page.
    *
    * @author Manveen Kaur
  - * @version $Revision: 1.1 $ $Date: 2002/04/10 00:38:32 $
  + * @version $Revision: 1.2 $ $Date: 2002/04/11 07:42:04 $
    */
   
  -public final class RemoteAddrValveForm extends ActionForm {
  +public final class RemoteAddrValveForm extends ValveForm {
       
       // ----------------------------------------------------- Instance Variables
       
  -   /**
  -     * The administrative action represented by this form.
  -     */
  -    private String adminAction = "Edit";
  -
  -    /**
  -     * The object name of the valve this bean refers to.
  -     */
  -    private String objectName = null;
  -
       /**
        * The text for the allow IP addresses.
        * A comma-separated list of regular expression patterns
  @@ -105,88 +95,8 @@
        */
       private String deny = "";
   
  -    /**
  -     * The text for the valve name, used to retrieve
  -     * the corresponding valve mBean.
  -     */
  -    private String valveName = null;
  -    
  -    /**
  -     * The text for the valve type.
  -     */
  -    private String valveType = null;
  -        
  -    /**
  -     * The text for the node label.
  -     */
  -    private String nodeLabel = null;
  -    
  -    /**
  -     * The object name of the parent of this valve.
  -     */
  -    private String parentObjectName = null;
  -
  -    /**
  -     * Set of valid values for valves.
  -     */
  -    private List valveTypeVals = null;
  -    
       // ------------------------------------------------------------- Properties
   
  -       /**
  -     * Return the administrative action represented by this form.
  -     */
  -    public String getAdminAction() {
  -
  -        return this.adminAction;
  -
  -    }
  -
  -    /**
  -     * Set the administrative action represented by this form.
  -     */
  -    public void setAdminAction(String adminAction) {
  -
  -        this.adminAction = adminAction;
  -
  -    }
  -
  -    /**
  -     * Return the Object Name.
  -     */
  -    public String getObjectName() {
  -        
  -        return this.objectName;
  -        
  -    }
  -    
  -    /**
  -     * Set the Object Name.
  -     */
  -    public void setObjectName(String objectName) {
  -        
  -        this.objectName = objectName;
  -        
  -    }
  -    
  -    /**
  -     * Return the valve type.
  -     */
  -    public String getValveType() {
  -        
  -        return this.valveType;
  -        
  -    }
  -    
  -    /**
  -     * Set the valve type.
  -     */
  -    public void setValveType(String valveType) {
  -        
  -        this.valveType = valveType;
  -        
  -    }
  -    
       /**
        * Return the allow hosts IP adddresses.
        */
  @@ -222,63 +132,7 @@
           this.deny = deny;
           
       }    
  -    
  -    /**
  -     * 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 parent object name of the valve this bean refers to.
  -     */
  -    public String getParentObjectName() {
   
  -        return this.parentObjectName;
  -
  -    }
  -
  -
  -    /**
  -     * Set the parent object name of the valve this bean refers to.
  -     */
  -    public void setParentObjectName(String parentObjectName) {
  -
  -        this.parentObjectName = parentObjectName;
  -
  -    }
  -    
  -        
  -   /**
  -     * Return the valveTypeVals.
  -     */
  -    public List getValveTypeVals() {
  -        
  -        return this.valveTypeVals;
  -        
  -    }
  -    
  -    /**
  -     * Set the valveTypeVals.
  -     */
  -    public void setValveTypeVals(List valveTypeVals) {
  -        
  -        this.valveTypeVals = valveTypeVals;
  -        
  -    }
  -    
       // --------------------------------------------------------- Public Methods
       
       /**
  @@ -288,8 +142,8 @@
        * @param request The servlet request we are processing
        */
       public void reset(ActionMapping mapping, HttpServletRequest request) {
  -        
  -        this.objectName = null;
  +                
  +        super.reset(mapping, request);
           this.allow = null;
           this.deny = null;
           
  @@ -301,15 +155,15 @@
       public String toString() {
   
           StringBuffer sb = new StringBuffer("RemoteAddrValveForm[adminAction=");
  -        sb.append(adminAction);
  +        sb.append(getAdminAction());
           sb.append("',valveType=");
  -        sb.append(valveType);
  +        sb.append(getValveType());
           sb.append(",allow=");
  -        sb.append(allow);
  +        sb.append(getAllow());
           sb.append(",deny=");
  -        sb.append(deny);        
  +        sb.append(getDeny());        
           sb.append("',objectName='");
  -        sb.append(objectName);
  +        sb.append(getObjectName());
           sb.append("]");
           return (sb.toString());
   
  
  
  
  1.2       +11 -157   
jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/valve/SingleSignOnValveForm.java
  
  Index: SingleSignOnValveForm.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/valve/SingleSignOnValveForm.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SingleSignOnValveForm.java        10 Apr 2002 00:38:32 -0000      1.1
  +++ SingleSignOnValveForm.java        11 Apr 2002 07:42:04 -0000      1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/valve/SingleSignOnValveForm.java,v
 1.1 2002/04/10 00:38:32 manveen Exp $
  - * $Revision: 1.1 $
  - * $Date: 2002/04/10 00:38:32 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/valve/SingleSignOnValveForm.java,v
 1.2 2002/04/11 07:42:04 manveen Exp $
  + * $Revision: 1.2 $
  + * $Date: 2002/04/11 07:42:04 $
    *
    * ====================================================================
    *
  @@ -76,114 +76,24 @@
    * Form bean for the single sign on valve page.
    *
    * @author Manveen Kaur
  - * @version $Revision: 1.1 $ $Date: 2002/04/10 00:38:32 $
  + * @version $Revision: 1.2 $ $Date: 2002/04/11 07:42:04 $
    */
   
  -public final class SingleSignOnValveForm extends ActionForm {
  +public final class SingleSignOnValveForm extends ValveForm {
       
       // ----------------------------------------------------- Instance Variables
  -    
  -   /**
  -     * The administrative action represented by this form.
  -     */
  -    private String adminAction = "Edit";
  -
  -    /**
  -     * The object name of the valve this bean refers to.
  -     */
  -    private String objectName = null;
   
       /**
        * The text for the debug level.
        */
       private String debugLvl = "0";
  -    
  -    /**
  -     * The text for the valve name, used to retrieve
  -     * the corresponding valve mBean.
  -     */
  -    private String valveName = null;
  -    
  -    /**
  -     * The text for the valve type.
  -     */
  -    private String valveType = null;
  -    
  +        
       /**
        * Set of valid values for debug level.
        */
       private List debugLvlVals = null;
       
  -    /**
  -     * The text for the node label.
  -     */
  -    private String nodeLabel = null;
  -    
  -    /**
  -     * The object name of the parent of this valve.
  -     */
  -    private String parentObjectName = null;
  -
  -    /**
  -     * Set of valid values for valves.
  -     */
  -    private List valveTypeVals = null;
  -    
       // ------------------------------------------------------------- Properties
  -
  -       /**
  -     * Return the administrative action represented by this form.
  -     */
  -    public String getAdminAction() {
  -
  -        return this.adminAction;
  -
  -    }
  -
  -    /**
  -     * Set the administrative action represented by this form.
  -     */
  -    public void setAdminAction(String adminAction) {
  -
  -        this.adminAction = adminAction;
  -
  -    }
  -
  -    /**
  -     * Return the Object Name.
  -     */
  -    public String getObjectName() {
  -        
  -        return this.objectName;
  -        
  -    }
  -    
  -    /**
  -     * Set the Object Name.
  -     */
  -    public void setObjectName(String objectName) {
  -        
  -        this.objectName = objectName;
  -        
  -    }
  -    
  -    /**
  -     * Return the valve type.
  -     */
  -    public String getValveType() {
  -        
  -        return this.valveType;
  -        
  -    }
  -    
  -    /**
  -     * Set the valve type.
  -     */
  -    public void setValveType(String valveType) {
  -        
  -        this.valveType = valveType;
  -        
  -    }
       
       /**
        * Return the debugVals.
  @@ -220,63 +130,7 @@
           this.debugLvl = debugLvl;
           
       }
  -    
  -    /**
  -     * 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 parent object name of the valve this bean refers to.
  -     */
  -    public String getParentObjectName() {
  -
  -        return this.parentObjectName;
  -
  -    }
  -
  -
  -    /**
  -     * Set the parent object name of the valve this bean refers to.
  -     */
  -    public void setParentObjectName(String parentObjectName) {
  -
  -        this.parentObjectName = parentObjectName;
  -
  -    }
  -    
  -        
  -   /**
  -     * Return the valveTypeVals.
  -     */
  -    public List getValveTypeVals() {
  -        
  -        return this.valveTypeVals;
  -        
  -    }
  -    
  -    /**
  -     * Set the valveTypeVals.
  -     */
  -    public void setValveTypeVals(List valveTypeVals) {
  -        
  -        this.valveTypeVals = valveTypeVals;
           
  -    }
  -    
       // --------------------------------------------------------- Public Methods
       
       /**
  @@ -286,8 +140,8 @@
        * @param request The servlet request we are processing
        */
       public void reset(ActionMapping mapping, HttpServletRequest request) {
  -        
  -        this.objectName = null;
  +    
  +        super.reset(mapping, request);
           this.debugLvl = "0";        
           
       }
  @@ -298,13 +152,13 @@
       public String toString() {
   
           StringBuffer sb = new StringBuffer("SingleSignOnValveForm[adminAction=");
  -        sb.append(adminAction);
  +        sb.append(getAdminAction());
           sb.append("',valveType=");
  -        sb.append(valveType);
  +        sb.append(getValveType());
           sb.append(",debugLvl=");
           sb.append(debugLvl);
           sb.append("',objectName='");
  -        sb.append(objectName);
  +        sb.append(getObjectName());
           sb.append("]");
           return (sb.toString());
   
  
  
  
  1.1                  
jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/valve/EditValveAction.java
  
  Index: EditValveAction.java
  ===================================================================
  /*
   * $Header: 
/home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/valve/EditValveAction.java,v
 1.1 2002/04/11 07:42:04 manveen Exp $
   * $Revision: 1.1 $
   * $Date: 2002/04/11 07:42:04 $
   *
   * ====================================================================
   *
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001-2002 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 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.valve;
  
  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 org.apache.struts.util.MessageResources;
  
  import javax.management.MBeanServer;
  import javax.management.ObjectInstance;
  import javax.management.ObjectName;
  import javax.management.JMException;
  
  import org.apache.webapp.admin.ApplicationServlet;
  import org.apache.webapp.admin.LabelValueBean;
  import org.apache.webapp.admin.Lists;
  import org.apache.webapp.admin.TomcatTreeBuilder;
  
  /**
   * A generic <code>Action</code> that sets up <em>Edit 
   * Valve </em> transactions, based on the type of Valve.
   *
   * @author Manveen Kaur
   * @version $Revision: 1.1 $ $Date: 2002/04/11 07:42:04 $
   */
  
  public class EditValveAction extends Action {
      
  
      /**
       * The MBeanServer we will be interacting with.
       */
      private MBeanServer mBServer = null;
      
  
      /**
       * The MessageResources we will be retrieving messages from.
       */
      private MessageResources resources = null;
      
      private HttpSession session = null;
      private Locale locale = 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 {
          
          // Acquire the resources that we need
          session = request.getSession();
          locale = (Locale) session.getAttribute(Action.LOCALE_KEY);
          if (resources == null) {
              resources = getServlet().getResources();
          }
          
          // Acquire a reference to the MBeanServer containing our MBeans
          try {
              mBServer = ((ApplicationServlet) getServlet()).getServer();
          } catch (Throwable t) {
              throw new ServletException
              ("Cannot acquire MBeanServer reference", t);
          }
          
          // Set up the object names of the MBeans we are manipulating
          ObjectName vname = null;
          StringBuffer sb = null;
          try {
              vname = new ObjectName(request.getParameter("select"));
          } catch (Exception e) {
              String message =
                  resources.getMessage("error.valveName.bad",
                                       request.getParameter("select"));
              getServlet().log(message);
              response.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
              return (null);
          }
          
         String valveType = null;
         String attribute = null;
          
         // Find what type of Valve this is
         try {    
              attribute = "className";
              String className = (String) 
                  mBServer.getAttribute(vname, attribute);
              int period = className.lastIndexOf(".");
              if (period >= 0)
                  valveType = className.substring(period + 1);
          } catch (Throwable t) {
            getServlet().log
                  (resources.getMessage(locale, "users.error.attribute.get",
                                        attribute), t);
              response.sendError
                  (HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
                   resources.getMessage(locale, "users.error.attribute.get",
                                        attribute));
              return (null); 
          }
  
          // Forward to the appropriate valve display page        
          if ("AccessLogValve".equalsIgnoreCase(valveType)) {
                 setUpAccessLogValve(vname, response);
          } else if ("RemoteAddrValve".equalsIgnoreCase(valveType)) {
                 setUpRemoteAddrValve(vname, response);
          } else if ("RemoteHostValve".equalsIgnoreCase(valveType)) {
                  setUpRemoteHostValve(vname, response);
          } else if ("RequestDumperValve".equalsIgnoreCase(valveType)) {
                 setUpRequestDumperValve(vname, response);
          } else if ("SingleSignOn".equalsIgnoreCase(valveType)) {
                 setUpSingleSignOnValve(vname, response);
          }
         
          
          return (mapping.findForward(valveType));
                  
      }
  
      private void setUpAccessLogValve(ObjectName vname,
                                          HttpServletResponse response) 
      throws IOException {
          // Fill in the form values for display and editing
          AccessLogValveForm valveFm = new AccessLogValveForm();
          session.setAttribute("accessLogValveForm", valveFm);
          valveFm.setAdminAction("Edit");
          valveFm.setObjectName(vname.toString()); 
          valveFm.setParentObjectName("");
          String valveType = "AccessLogValve";
          StringBuffer sb = new StringBuffer("Valve (");
          sb.append(valveType);
          sb.append(")");
          valveFm.setNodeLabel(sb.toString());
          valveFm.setValveType(valveType);
          valveFm.setDebugLvlVals(Lists.getDebugLevels());
          valveFm.setBooleanVals(Lists.getBooleanValues());
          String attribute = null;
          try {
              
              // Copy scalar properties
              attribute = "debug";
              valveFm.setDebugLvl
                  (((Integer) mBServer.getAttribute(vname, attribute)).toString());
              attribute = "directory";
              valveFm.setDirectory
                  ((String) mBServer.getAttribute(vname, attribute));
              attribute = "pattern";
              valveFm.setPattern
                  ((String) mBServer.getAttribute(vname, attribute));
              attribute = "prefix";
              valveFm.setPrefix
                  ((String) mBServer.getAttribute(vname, attribute));
              attribute = "suffix";
              valveFm.setSuffix
                  ((String) mBServer.getAttribute(vname, attribute));
              attribute = "resolveHosts";
              valveFm.setResolveHosts
                  (((Boolean) mBServer.getAttribute(vname, attribute)).toString());
  
          } catch (Throwable t) {
              getServlet().log
                  (resources.getMessage(locale, "users.error.attribute.get",
                                        attribute), t);
              response.sendError
                  (HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
                   resources.getMessage(locale, "users.error.attribute.get",
                                        attribute));
          }     
      }
  
      private void setUpRequestDumperValve(ObjectName vname,
                                          HttpServletResponse response) 
      throws IOException {
          // Fill in the form values for display and editing
          RequestDumperValveForm valveFm = new RequestDumperValveForm();
          session.setAttribute("requestDumperValveForm", valveFm);
          valveFm.setAdminAction("Edit");
          valveFm.setObjectName(vname.toString()); 
          valveFm.setParentObjectName("");
          String valveType = "RequestDumperValve";
          StringBuffer sb = new StringBuffer("Valve (");
          sb.append(valveType);
          sb.append(")");
          valveFm.setNodeLabel(sb.toString());
          valveFm.setValveType(valveType);
      }
  
      private void setUpSingleSignOnValve(ObjectName vname,
                                          HttpServletResponse response) 
      throws IOException {
          // Fill in the form values for display and editing
          SingleSignOnValveForm valveFm = new SingleSignOnValveForm();
          session.setAttribute("singleSignOnValveForm", valveFm);
          valveFm.setAdminAction("Edit");
          valveFm.setObjectName(vname.toString()); 
          valveFm.setParentObjectName("");
          String valveType = "SingleSignOn";
          StringBuffer sb = new StringBuffer("Valve (");
          sb.append(valveType);
          sb.append(")");
          valveFm.setNodeLabel(sb.toString());
          valveFm.setValveType(valveType);
          valveFm.setDebugLvlVals(Lists.getDebugLevels());
          String attribute = null;
          try {
              
              // Copy scalar properties
              attribute = "debug";
              valveFm.setDebugLvl
                  (((Integer) mBServer.getAttribute(vname, attribute)).toString());
          } catch (Throwable t) {
              getServlet().log
                  (resources.getMessage(locale, "users.error.attribute.get",
                                        attribute), t);
              response.sendError
                  (HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
                   resources.getMessage(locale, "users.error.attribute.get",
                                        attribute));
          }     
      }
  
  
      private void setUpRemoteAddrValve(ObjectName vname,
                                          HttpServletResponse response) 
      throws IOException {
          // Fill in the form values for display and editing
          RemoteAddrValveForm valveFm = new RemoteAddrValveForm();
          session.setAttribute("remoteAddrValveForm", valveFm);
          valveFm.setAdminAction("Edit");
          valveFm.setObjectName(vname.toString()); 
          valveFm.setParentObjectName("");
          String valveType = "RemoteAddrValve";
          StringBuffer sb = new StringBuffer("Valve (");
          sb.append(valveType);
          sb.append(")");
          valveFm.setNodeLabel(sb.toString());
          valveFm.setValveType(valveType);
          String attribute = null;
          try {
              
              // Copy scalar properties
              attribute = "allow";
              valveFm.setAllow
                  ((String) mBServer.getAttribute(vname, attribute));
              attribute = "deny";
              valveFm.setDeny
                  ((String) mBServer.getAttribute(vname, attribute));
                          
          } catch (Throwable t) {
              getServlet().log
                  (resources.getMessage(locale, "users.error.attribute.get",
                                        attribute), t);
              response.sendError
                  (HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
                   resources.getMessage(locale, "users.error.attribute.get",
                                        attribute));
          }     
      }
  
      private void setUpRemoteHostValve(ObjectName vname,
                                          HttpServletResponse response) 
      throws IOException {
          // Fill in the form values for display and editing
          RemoteHostValveForm valveFm = new RemoteHostValveForm();
          session.setAttribute("remoteHostValveForm", valveFm);
          valveFm.setAdminAction("Edit");
          valveFm.setObjectName(vname.toString()); 
          valveFm.setParentObjectName("");
          String valveType = "RemoteHostValve";
          StringBuffer sb = new StringBuffer("Valve (");
          sb.append(valveType);
          sb.append(")");
          valveFm.setNodeLabel(sb.toString());
          valveFm.setValveType(valveType);
          String attribute = null;
          try {
              
              // Copy scalar properties
              attribute = "allow";
              valveFm.setAllow
                  ((String) mBServer.getAttribute(vname, attribute));
              attribute = "deny";
              valveFm.setDeny
                  ((String) mBServer.getAttribute(vname, attribute));
                          
          } catch (Throwable t) {
              getServlet().log
                  (resources.getMessage(locale, "users.error.attribute.get",
                                        attribute), t);
              response.sendError
                  (HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
                   resources.getMessage(locale, "users.error.attribute.get",
                                        attribute));
          }     
      }
      
  }
  
  
  
  1.1                  
jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/valve/ValveForm.java
  
  Index: ValveForm.java
  ===================================================================
  /*
   * $Header: 
/home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/valve/ValveForm.java,v
 1.1 2002/04/11 07:42:04 manveen Exp $
   * $Revision: 1.1 $
   * $Date: 2002/04/11 07:42:04 $
   *
   * ====================================================================
   *
   * 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.valve;
  
  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.List;
  
  import org.apache.webapp.admin.ApplicationServlet;
  import org.apache.webapp.admin.LabelValueBean;
  
  /**
   * Form bean for the generic valve page.
   *
   * @author Manveen Kaur
   * @version $Revision: 1.1 $ $Date: 2002/04/11 07:42:04 $
   */
  
  public class ValveForm extends ActionForm {
      
      // ----------------------------------------------------- Instance Variables
      
     /**
       * The administrative action represented by this form.
       */
      private String adminAction = "Edit";
  
      /**
       * The object name of the valve this bean refers to.
       */
      private String objectName = null;
  
      /**
       * The text for the valve name, used to retrieve
       * the corresponding valve mBean.
       */
      private String valveName = null;
      
      /**
       * The text for the valve type.
       */
      private String valveType = null;
          
      /**
       * The text for the node label.
       */
      private String nodeLabel = null;
      
      /**
       * The object name of the parent of this valve.
       */
      private String parentObjectName = null;
  
      /**
       * Set of valid values for valves.
       */
      private List valveTypeVals = null;
      
      // ------------------------------------------------------------- Properties
  
         /**
       * Return the administrative action represented by this form.
       */
      public String getAdminAction() {
  
          return this.adminAction;
  
      }
  
      /**
       * Set the administrative action represented by this form.
       */
      public void setAdminAction(String adminAction) {
  
          this.adminAction = adminAction;
  
      }
  
      /**
       * Return the Object Name.
       */
      public String getObjectName() {
          
          return this.objectName;
          
      }
      
      /**
       * Set the Object Name.
       */
      public void setObjectName(String objectName) {
          
          this.objectName = objectName;
          
      }
      
      /**
       * Return the valve type.
       */
      public String getValveType() {
          
          return this.valveType;
          
      }
      
      /**
       * Set the valve type.
       */
      public void setValveType(String valveType) {
          
          this.valveType = valveType;
          
      }
      
      /**
       * 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 parent object name of the valve this bean refers to.
       */
      public String getParentObjectName() {
  
          return this.parentObjectName;
  
      }
  
  
      /**
       * Set the parent object name of the valve this bean refers to.
       */
      public void setParentObjectName(String parentObjectName) {
  
          this.parentObjectName = parentObjectName;
  
      }
      
          
     /**
       * Return the valveTypeVals.
       */
      public List getValveTypeVals() {
          
          return this.valveTypeVals;
          
      }
      
      /**
       * Set the valveTypeVals.
       */
      public void setValveTypeVals(List valveTypeVals) {
          
          this.valveTypeVals = valveTypeVals;
          
      }
      
      // --------------------------------------------------------- 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) {
          
          objectName = null;
          
      }
  
  }
  
  
  
  1.1                  
jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/valve/ValveUtil.java
  
  Index: ValveUtil.java
  ===================================================================
  /*
   * $Header: 
/home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/valve/ValveUtil.java,v
 1.1 2002/04/11 07:42:04 manveen Exp $
   * $Revision: 1.1 $
   * $Date: 2002/04/11 07:42:04 $
   *
   * ====================================================================
   *
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001-2002 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.valve;
  
  import java.net.URLEncoder;
  import java.util.Iterator;
  import java.util.Locale;
  import java.io.IOException;
  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.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.ActionError;
  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 org.apache.struts.util.MessageResources;
  import org.apache.webapp.admin.ApplicationServlet;
  import org.apache.webapp.admin.TomcatTreeBuilder;
  import org.apache.webapp.admin.TreeControl;
  import org.apache.webapp.admin.TreeControlNode;
  import org.apache.webapp.admin.logger.DeleteLoggerAction;
  
  /**
   * The <code>Action</code> that completes <em>Add Valve</em> and
   * <em>Edit Valve</em> transactions for Remote Addr valve.
   *
   * @author Manveen Kaur
   * @version $Revision: 1.1 $ $Date: 2002/04/11 07:42:04 $
   */
  
  public final class ValveUtil {
      
      
      // ----------------------------------------------------- Instance Variables
      
      /**
       * Signature for the <code>createStandardValve</code> operation.
       */
      private static String createStandardValveTypes[] =
      { "java.lang.String",     // parent
      };
      
      
      // --------------------------------------------------------- Public Methods
      
      public static ActionForward createValve(String parent, String valveType,
      HttpServletResponse response, HttpServletRequest request,
      ActionMapping mapping, ApplicationServlet servlet)
      throws IOException, ServletException {
          
          MessageResources resources = servlet.getResources();
          HttpSession session = request.getSession();
          
          MBeanServer mBServer = null;
          Locale locale = (Locale) session.getAttribute(Action.LOCALE_KEY);
          // Acquire a reference to the MBeanServer containing our MBeans
          try {
              mBServer = servlet.getServer();
          } catch (Throwable t) {
              throw new ServletException
              ("Cannot acquire MBeanServer reference", t);
          }
          
          String operation = null;
          String values[] = null;
          
          try {
              
              String objectName = DeleteLoggerAction.getObjectName(parent,
              TomcatTreeBuilder.REALM_TYPE);
              
              ObjectName pname = new ObjectName(parent);
              StringBuffer sb = new StringBuffer(pname.getDomain());
              
              // For service, create the corresponding Engine mBean
              // Parent in this case needs to be the container mBean for the service
              try {
                  if ("Service".equalsIgnoreCase(pname.getKeyProperty("type"))) {
                      sb.append(":type=Engine,service=");
                      sb.append(pname.getKeyProperty("name"));
                      parent = sb.toString();
                  }
              } catch (Exception e) {
                  String message =
                  resources.getMessage("error.engineName.bad",
                  sb.toString());
                  servlet.log(message);
                  response.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
                  return (null);
              }
              
              // Ensure that the requested user database name is unique
              ObjectName oname =
              new ObjectName(objectName);
              if (mBServer.isRegistered(oname)) {
                  ActionErrors errors = new ActionErrors();
                  errors.add("valveName",
                  new ActionError("error.valveName.exists"));
                  String message =
                  resources.getMessage("error.valveName.exists",
                  sb.toString());
                  response.sendError(HttpServletResponse.SC_BAD_REQUEST, message);     
           
                  //saveErrors(request, errors);
                  return (new ActionForward(mapping.getInput()));
              }
              
              // Look up our MBeanFactory MBean
              ObjectName fname =
              new ObjectName(TomcatTreeBuilder.FACTORY_TYPE);
              
              // Create a new StandardValve object
              values = new String[1];
              values[0] = parent;
              operation = "createValve";
              String vObjectName = (String)
              mBServer.invoke(fname, operation,
              values, createStandardValveTypes);
              
              // Add the new Valve to our tree control node
              TreeControl control = (TreeControl)
              session.getAttribute("treeControlTest");
              if (control != null) {
                  TreeControlNode parentNode = control.findNode(parent);
                  if (parentNode != null) {
                      String nodeLabel =
                      "Valve (" + valveType + ")";
                      String encodedName =
                      URLEncoder.encode(vObjectName);
                      TreeControlNode childNode =
                      new TreeControlNode(vObjectName,
                      "folder_16_pad.gif",
                      nodeLabel,
                      "EditValve.do?select=" +
                      encodedName,
                      "content",
                      true);
                      parentNode.addChild(childNode);
                      // FIXME - force a redisplay
                  } else {
                      servlet.log
                      ("Cannot find parent node '" + parent + "'");
                  }
              } else {
                  servlet.log
                  ("Cannot find TreeControlNode!");
              }
              
          } catch (Exception e) {
              
              servlet.log
              (resources.getMessage(locale, "users.error.invoke",
              operation), e);
              response.sendError
              (HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
              resources.getMessage(locale, "users.error.invoke",
              operation));
              return (null);
              
          }
          
          // Forward to the success reporting page
          session.removeAttribute(mapping.getAttribute());
          return (mapping.findForward("Save Successful"));
      }
  }
  
  
  

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

Reply via email to