Return-Path: Delivered-To: apmail-jakarta-tomcat-dev-archive@apache.org Received: (qmail 87826 invoked from network); 7 Feb 2002 05:15:35 -0000 Received: from unknown (HELO nagoya.betaversion.org) (192.18.49.131) by daedalus.apache.org with SMTP; 7 Feb 2002 05:15:35 -0000 Received: (qmail 18740 invoked by uid 97); 7 Feb 2002 05:15:08 -0000 Delivered-To: qmlist-jakarta-archive-tomcat-dev@jakarta.apache.org Received: (qmail 18706 invoked by uid 97); 7 Feb 2002 05:15:07 -0000 Mailing-List: contact tomcat-dev-help@jakarta.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Help: List-Post: List-Id: "Tomcat Developers List" Reply-To: "Tomcat Developers List" Delivered-To: mailing list tomcat-dev@jakarta.apache.org Received: (qmail 10466 invoked by uid 97); 7 Feb 2002 05:07:06 -0000 Date: 7 Feb 2002 05:06:53 -0000 Message-ID: <20020207050653.82101.qmail@icarus.apache.org> From: manveen@apache.org To: jakarta-tomcat-4.0-cvs@apache.org Subject: cvs commit: jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/realm SetUpUserDBRealmAction.java UserDBRealmAction.java UserDBRealmForm.java X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N manveen 02/02/06 21:06:53 Modified: webapps/admin/WEB-INF struts-config.xml webapps/admin/WEB-INF/classes/org/apache/webapp/admin ApplicationResources_en.properties ApplicationResources_es.properties TomcatTreeBuilder.java Added: webapps/admin userDBRealm.jsp webapps/admin/WEB-INF/classes/org/apache/webapp/admin/realm SetUpUserDBRealmAction.java UserDBRealmAction.java UserDBRealmForm.java Log: Realms visible from the tree, (added to TomcatTreeBuilder). Added UserDatabase Realm screen and functionality. Revision Changes Path 1.1 jakarta-tomcat-4.0/webapps/admin/userDBRealm.jsp Index: userDBRealm.jsp =================================================================== <%@ page language="java" %> <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> <%@ taglib uri="/WEB-INF/controls.tld" prefix="controls" %> <%@ include file="header.jsp" %>
-------- ---------------------------------
<%@ include file="buttons.jsp" %>
: : :
<%@ include file="buttons.jsp" %>

 

1.23 +40 -0 jakarta-tomcat-4.0/webapps/admin/WEB-INF/struts-config.xml Index: struts-config.xml =================================================================== RCS file: /home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/struts-config.xml,v retrieving revision 1.22 retrieving revision 1.23 diff -u -r1.22 -r1.23 --- struts-config.xml 4 Feb 2002 17:59:19 -0000 1.22 +++ struts-config.xml 7 Feb 2002 05:06:52 -0000 1.23 @@ -63,6 +63,14 @@ + + + + + + @@ -142,6 +150,14 @@ path="/user.jsp" redirect="false"/> + + + + @@ -239,6 +255,16 @@ path="/logger.jsp" redirect="true"/> + + + + + + + + + + + 1.21 +2 -2 jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/ApplicationResources_en.properties Index: ApplicationResources_en.properties =================================================================== RCS file: /home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/ApplicationResources_en.properties,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- ApplicationResources_en.properties 7 Feb 2002 02:22:58 -0000 1.20 +++ ApplicationResources_en.properties 7 Feb 2002 05:06:53 -0000 1.21 @@ -166,7 +166,7 @@ error.set.attributes=
  • Error setting information properties.
  • actions.delete=Delete error.defaultHost.required=
  • Default Hostname required
  • -error.serviceName.required=
  • Service el nombre required
  • +error.serviceName.required=
  • Service Name required
  • actions.thisrealm.delete=Delete this User Realm realm.driver=Database Driver realm.passwd=Database Password @@ -178,4 +178,4 @@ realm.userRoleTable=User Role Table realm.userTable=User Table realm.resource=Resource Name -error.resource.required=
  • Resource Name is required
  • +error.resource.required=
  • Resource Name is required.
  • 1.22 +1 -1 jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/ApplicationResources_es.properties Index: ApplicationResources_es.properties =================================================================== RCS file: /home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/ApplicationResources_es.properties,v retrieving revision 1.21 retrieving revision 1.22 diff -u -r1.21 -r1.22 --- ApplicationResources_es.properties 7 Feb 2002 02:22:58 -0000 1.21 +++ ApplicationResources_es.properties 7 Feb 2002 05:06:53 -0000 1.22 @@ -178,4 +178,4 @@ realm.userRoleTable=Vector Del Papel Del Utilizador realm.userTable=Vector De Utilizador realm.resource=Nombre Del Recurso -error.resource.required=
  • Se requiere el nombre del recurso
  • +error.resource.required=
  • Se requiere el nombre del recurso.
  • 1.13 +123 -23 jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/TomcatTreeBuilder.java Index: TomcatTreeBuilder.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/TomcatTreeBuilder.java,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- TomcatTreeBuilder.java 29 Jan 2002 01:15:55 -0000 1.12 +++ TomcatTreeBuilder.java 7 Feb 2002 05:06:53 -0000 1.13 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/TomcatTreeBuilder.java,v 1.12 2002/01/29 01:15:55 manveen Exp $ - * $Revision: 1.12 $ - * $Date: 2002/01/29 01:15:55 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/TomcatTreeBuilder.java,v 1.13 2002/02/07 05:06:53 manveen Exp $ + * $Revision: 1.13 $ + * $Date: 2002/02/07 05:06:53 $ * * ==================================================================== * @@ -85,13 +85,15 @@ import javax.management.MBeanAttributeInfo; import javax.management.MBeanInfo; +import org.apache.webapp.admin.realm.SetUpUserDBRealmAction; + /** *

    Implementation of TreeBuilder interface for Tomcat Tree Controller * to build plugin components into the tree * * @author Jazmin Jonson * @author Manveen Kaur - * @version $Revision: 1.12 $ $Date: 2002/01/29 01:15:55 $ + * @version $Revision: 1.13 $ $Date: 2002/02/07 05:06:53 $ */ @@ -101,6 +103,7 @@ private final static String SERVER_LABEL = "Tomcat Server"; public final static String SERVER_TYPE = "Catalina:type=Server"; + public final static String FACTORY_TYPE = "Catalina:type=MBeanFactory"; public final static String SERVICE_TYPE = "Catalina:type=Service"; public final static String ENGINE_TYPE = "Catalina:type=Engine"; public final static String CONNECTOR_TYPE = "Catalina:type=Connector"; @@ -109,10 +112,12 @@ public final static String LOADER_TYPE = "Catalina:type=Loader"; public final static String MANAGER_TYPE = "Catalina:type=Manager"; public final static String LOGGER_TYPE = "Catalina:type=Logger"; - + public final static String REALM_TYPE = "Catalina:type=Realm"; + public final static String WILDCARD = ",*"; private static MBeanServer mBServer = null; + //private static ObjectInstance mBeanFactory = null; public void buildTree(TreeControl treeControl, ApplicationServlet servlet, @@ -129,6 +134,17 @@ } } + public static ObjectInstance getMBeanFactory() + throws JMException, ServletException { + + Iterator factoryItr = + mBServer.queryMBeans(new ObjectName(FACTORY_TYPE + WILDCARD), null).iterator(); + ObjectInstance mBeanFactory = (ObjectInstance)factoryItr.next(); + + System.out.println(" mbean factory= " + (mBeanFactory.getObjectName()).toString()); + return mBeanFactory; + } + public TreeControlNode getServer() throws JMException, ServletException { @@ -197,6 +213,7 @@ getConnectors(serviceNode, serviceName); getHosts(serviceNode, serviceName); getLoggers(serviceNode, serviceName, null, null, 0); + getRealms(serviceNode, serviceName, null, null, 0); } } @@ -225,20 +242,20 @@ String encodedNodeLabel = URLEncoder.encode(nodeLabel); connectorNode = - new TreeControlNode(connectorObj.getObjectName().toString(), - "folder_16_pad.gif", - nodeLabel, - "setUpConnector.do?select=" + encodedConnectorName - + "&nodeLabel="+ encodedNodeLabel, - "content", true); - + new TreeControlNode(connectorObj.getObjectName().toString(), + "folder_16_pad.gif", + nodeLabel, + "setUpConnector.do?select=" + encodedConnectorName + + "&nodeLabel="+ encodedNodeLabel, + "content", true); + serviceNode.addChild(connectorNode); - } + } } public void getHosts(TreeControlNode serviceNode, String serviceName) throws JMException{ - + Iterator HostItr = (mBServer.queryMBeans(new ObjectName(HOST_TYPE + WILDCARD + ",service=" + serviceName), null)).iterator(); @@ -271,13 +288,13 @@ getContexts(hostNode, hostName, serviceName); getLoggers(hostNode, serviceName, hostName, null, 1); + getRealms(hostNode, serviceName, hostName, null, 1); } - } public void getContexts(TreeControlNode hostNode, String hostName, String serviceName) throws JMException{ - + Iterator contextItr = (mBServer.queryMBeans(new ObjectName(CONTEXT_TYPE + WILDCARD + ",host=" + hostName + ",service=" + serviceName), null)).iterator(); @@ -307,12 +324,14 @@ hostNode.addChild(contextNode); //get all loggers for this context - if (contextName.length() > 0) - getLoggers(contextNode, serviceName, hostName, contextName, 2); - } + if (contextName.length() > 0) { + getLoggers(contextNode, serviceName, hostName, contextName, 2); + getRealms(contextNode, serviceName, hostName, contextName, 2); + } + } } - + /** * Add the required logger nodes to the specified node instance. * @@ -351,11 +370,11 @@ while(loggerItr.hasNext()){ ObjectInstance loggerObj = (ObjectInstance)loggerItr.next(); - ObjectName loggerObjName = loggerObj.getObjectName(); + ObjectName loggerObjName = loggerObj.getObjectName(); encodedLoggerName = URLEncoder.encode(loggerObj.getObjectName().toString()); String className = - (String)mBServer.getAttribute(loggerObj.getObjectName(), + (String)mBServer.getAttribute(loggerObj.getObjectName(), SetUpLoggerAction.CLASSNAME_PROP_NAME); String loggerType = null; @@ -379,5 +398,86 @@ node.addChild(loggerNode); } - } + } + + /** + * Add the required realm nodes to the specified node instance. + * + * @param node The TreeControlNode to which we should + * add our realm nodes. + * @param serviceName The service to which this realm belongs. + * @param hostName The host to which this realm belongs. + * @param contextName The context to which this realm belongs. + * @param type (0,1,2) Get all realms for a particular service(0), + * host(1), context (2). + */ + public void getRealms(TreeControlNode node, String serviceName, + String hostName, String contextName, int type) + throws JMException{ + + Iterator realmItr = null; + + if (type == 0) { + realmItr = + (mBServer.queryMBeans(new ObjectName(REALM_TYPE + + ",service=" + serviceName), null)).iterator(); + } else if (type == 1) { + realmItr = + (mBServer.queryMBeans(new ObjectName(REALM_TYPE + + ",host=" + hostName + ",service=" + serviceName), null)).iterator(); + } else if (type == 2) { + realmItr = + (mBServer.queryMBeans(new ObjectName(REALM_TYPE + + ",path=" + contextName + ",host=" + hostName + + ",service=" + serviceName), null)).iterator(); + } + + TreeControlNode realmNode = null; + String encodedRealmName; + + while(realmItr.hasNext()){ + + ObjectInstance realmObj = (ObjectInstance)realmItr.next(); + ObjectName realmObjName = realmObj.getObjectName(); + encodedRealmName = URLEncoder.encode(realmObj.getObjectName().toString()); + + String className = + (String)mBServer.getAttribute(realmObj.getObjectName(), + SetUpLoggerAction.CLASSNAME_PROP_NAME); + + String realmType = null; + int period = className.lastIndexOf("."); + if (period >= 0) + realmType = className.substring(period + 1); + + String setUpAction = null; + if ((SetUpUserDBRealmAction.JDBC_REALM).equalsIgnoreCase(realmType)) { + setUpAction = "setUpJDBCRealm"; + } else if ((SetUpUserDBRealmAction.JNDI_REALM).equalsIgnoreCase(realmType)) { + setUpAction = "setUpJNDIRealm"; + } else if ((SetUpUserDBRealmAction.MEMORY_REALM).equalsIgnoreCase(realmType)) { + setUpAction = "setUpMemoryRealm"; + } else { + // UserDatabaseRealm + setUpAction = "setUpUserDBRealm"; + } + + String encodedRealmType = URLEncoder.encode(realmType); + + String nodeLabel= "Realm"; + String encodedNodeLabel = URLEncoder.encode(nodeLabel); + + realmNode = + new TreeControlNode(realmObj.getObjectName().toString(), + "folder_16_pad.gif", + nodeLabel, + setUpAction +".do?select=" + encodedRealmName + +"&nodeLabel="+ encodedNodeLabel + +"&type="+ encodedRealmType, + "content", true); + + node.addChild(realmNode); + } + } + } 1.1 jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/realm/SetUpUserDBRealmAction.java Index: SetUpUserDBRealmAction.java =================================================================== /* * $Header: /home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/realm/SetUpUserDBRealmAction.java,v 1.1 2002/02/07 05:06:53 manveen Exp $ * $Revision: 1.1 $ * $Date: 2002/02/07 05:06:53 $ * * ==================================================================== * * 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 apache@apache.org. * * 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 * . * */ package org.apache.webapp.admin.realm; 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.ObjectInstance; import javax.management.ObjectName; import javax.management.JMException; import javax.management.MBeanAttributeInfo; import javax.management.MBeanOperationInfo; import javax.management.MBeanInfo; import org.apache.webapp.admin.ApplicationServlet; import org.apache.webapp.admin.LabelValueBean; import org.apache.struts.util.MessageResources; /** * Test Action that handles events from the tree control when * a UserDatabase realm is chosen. * * @author Manveen Kaur * @version $Revision: 1.1 $ $Date: 2002/02/07 05:06:53 $ */ public class SetUpUserDBRealmAction extends Action { private static MBeanServer mBServer = null; // public final static String CLASSNAME_PROP_NAME = "className"; public final static String DEBUG_PROP_NAME = "debug"; public final static String RESOURCE_PROP_NAME = "resourceName"; // the different types of realms public final static String JDBC_REALM = "JDBCRealm"; public final static String JNDI_REALM = "JNDIRealm"; public final static String MEMORY_REALM = "MemoryRealm"; public final static String USERDB_REALM = "UserDatabaseRealm"; private ArrayList debugLvlList = 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 ActionForward instance describing where and how * control should be forwarded, or null 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 RealmForm bean under key " + mapping.getAttribute()); form = new UserDBRealmForm(); } if ("request".equals(mapping.getScope())) request.setAttribute(mapping.getAttribute(), form); else session.setAttribute(mapping.getAttribute(), form); String selectedName = request.getParameter("select"); String realmType = request.getParameter("type"); String nodeLabel = request.getParameter("nodeLabel"); UserDBRealmForm realmFm = (UserDBRealmForm) 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")); } try{ if(mBServer == null) { ApplicationServlet servlet = (ApplicationServlet)getServlet(); mBServer = servlet.getServer(); } Iterator realmItr = mBServer.queryMBeans(new ObjectName(selectedName), null).iterator(); ObjectInstance objInstance = (ObjectInstance)realmItr.next(); ObjectName realmObjName = (objInstance).getObjectName(); realmFm.setRealmName(selectedName); realmFm.setRealmType(realmType); realmFm.setNodeLabel(nodeLabel); realmFm.setDebugLvlVals(debugLvlList); realmFm.setDebugLvl( ((Integer) mBServer.getAttribute(realmObjName, DEBUG_PROP_NAME)).toString()); realmFm.setResource( (String) mBServer.getAttribute(realmObjName, RESOURCE_PROP_NAME)); } catch(Throwable t){ t.printStackTrace(System.out); //forward to error page } // Stash the form bean and forward to the display page request.setAttribute("userdbRealmForm", realmFm); // Forward back to the appropriate Realm page return (mapping.findForward("UserDBRealm")); } } 1.1 jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/realm/UserDBRealmAction.java Index: UserDBRealmAction.java =================================================================== /* * $Header: /home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/realm/UserDBRealmAction.java,v 1.1 2002/02/07 05:06:53 manveen Exp $ * $Revision: 1.1 $ * $Date: 2002/02/07 05:06:53 $ * * ==================================================================== * * 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 apache@apache.org. * * 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 * . * */ package org.apache.webapp.admin.realm; 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.QueryExp; import javax.management.Query; import javax.management.ObjectInstance; import javax.management.ObjectName; import javax.management.JMException; import org.apache.struts.util.MessageResources; import org.apache.webapp.admin.ApplicationServlet; import org.apache.webapp.admin.LabelValueBean; /** * Implementation of Action that validates * actions on a user database Realm. * * @author Manveen Kaur * @version $Revision: 1.1 $ $Date: 2002/02/07 05:06:53 $ */ public final class UserDBRealmAction 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 ActionForward instance describing where and how * control should be forwarded, or null 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 realm Name from the form. * This is used to lookup the MBeanServer and * retrieve this realm's MBean. */ String realmName = request.getParameter("realmName"); Iterator realmItr = mBServer.queryMBeans(new ObjectName(realmName), null).iterator(); ObjectInstance objInstance = (ObjectInstance)realmItr.next(); ObjectName realmObjName = (objInstance).getObjectName(); /** * Extracting the values from the form and * updating the MBean with the new values. */ String debugLvlText = request.getParameter("debugLvl"); if(debugLvlText != null) { Integer debugLvl = new Integer(debugLvlText); mBServer.setAttribute(realmObjName, new Attribute(SetUpUserDBRealmAction.DEBUG_PROP_NAME, debugLvl)); } String resource = request.getParameter("resource"); if(resource != null) { mBServer.setAttribute(realmObjName, new Attribute(SetUpUserDBRealmAction.RESOURCE_PROP_NAME, resource)); } }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")); } } 1.1 jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/realm/UserDBRealmForm.java Index: UserDBRealmForm.java =================================================================== /* * $Header: /home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/realm/UserDBRealmForm.java,v 1.1 2002/02/07 05:06:53 manveen Exp $ * $Revision: 1.1 $ * $Date: 2002/02/07 05:06:53 $ * * ==================================================================== * * 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 apache@apache.org. * * 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 * . * */ package org.apache.webapp.admin.realm; 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; import org.apache.webapp.admin.ApplicationServlet; import org.apache.webapp.admin.LabelValueBean; /** * Form bean for the User Database realm page. * * @author Manveen Kaur * @version $Revision: 1.1 $ $Date: 2002/02/07 05:06:53 $ */ public final class UserDBRealmForm extends ActionForm { // ----------------------------------------------------- Instance Variables /** * The text for the debug level. */ private String debugLvl = "0"; /** * The text for the realm name, used to retrieve * the corresponding realm mBean. */ private String realmName = null; /** * The text for the realm type. * Specifies if it is a JNDI, JDBC, Userdatabase or Memory Realm. */ private String realmType = null; /** * Set of valid values for debug level. */ private ArrayList debugLvlVals = null; /** * The text for the resource name. */ private String resource = null; /** * The text for the node label. */ private String nodeLabel = null; // ------------------------------------------------------------- Properties /** * Return the Realm Name. */ public String getRealmName() { return this.realmName; } /** * Set the Realm Name. */ public void setRealmName(String realmName) { this.realmName = realmName; } /** * Return the Realm type. */ public String getRealmType() { return this.realmType; } /** * Set the Realm type. */ public void setRealmType(String realmType) { this.realmType = realmType; } /** * Return the debugVals. */ public ArrayList getDebugLvlVals() { return this.debugLvlVals; } /** * Set the debugVals. */ public void setDebugLvlVals(ArrayList debugLvlVals) { this.debugLvlVals = debugLvlVals; } /** * 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 resource Name. */ public String getResource() { return this.resource; } /** * Set the resource Name. */ public void setResource(String resource) { this.resource = resource; } /** * 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; } // --------------------------------------------------------- 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) { this.debugLvl = "0"; this.resource = null; } /** * Validate the properties that have been set from this HTTP request, * and return an ActionErrors object that encapsulates any * validation errors that have been found. If no errors are found, return * null or an ActionErrors object with no * recorded error messages. * * @param mapping The mapping used to select this instance * @param request The servlet request we are processing */ public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { ActionErrors errors = new ActionErrors(); String submit = request.getParameter("submit"); // front end validation when save is clicked. if (submit != null) { if ((resource == null) || (resource.length() < 1)) { errors.add("resource", new ActionError("error.resource.required")); } } return errors; } } -- To unsubscribe, e-mail: For additional commands, e-mail: