KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > webapp > admin > users > SetUpUserAction


1 /*
2  * Copyright 2002,2004 The Apache Software Foundation.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16
17
18 package org.apache.webapp.admin.users;
19
20
21 import java.io.IOException JavaDoc;
22 import java.net.URLDecoder JavaDoc;
23 import java.util.Iterator JavaDoc;
24 import java.util.Locale JavaDoc;
25 import javax.management.Attribute JavaDoc;
26 import javax.management.MBeanServer JavaDoc;
27 import javax.management.MBeanServerFactory JavaDoc;
28 import javax.management.QueryExp JavaDoc;
29 import javax.management.Query JavaDoc;
30 import javax.management.ObjectInstance JavaDoc;
31 import javax.management.ObjectName JavaDoc;
32 import javax.management.JMException JavaDoc;
33 import javax.management.MBeanAttributeInfo JavaDoc;
34 import javax.management.MBeanOperationInfo JavaDoc;
35 import javax.management.MBeanInfo JavaDoc;
36 import javax.servlet.ServletException JavaDoc;
37 import javax.servlet.http.HttpServletRequest JavaDoc;
38 import javax.servlet.http.HttpServletResponse JavaDoc;
39 import javax.servlet.http.HttpSession JavaDoc;
40 import org.apache.struts.action.Action;
41 import org.apache.struts.action.ActionErrors;
42 import org.apache.struts.action.ActionForm;
43 import org.apache.struts.action.ActionForward;
44 import org.apache.struts.action.ActionMapping;
45 import org.apache.struts.util.MessageResources;
46 import org.apache.webapp.admin.ApplicationServlet;
47 import org.apache.webapp.admin.TomcatTreeBuilder;
48
49 /**
50  * <p>Implementation of <strong>Action</strong> that sets up and stashes
51  * a <code>UserForm</code> bean in request scope. The form bean will have
52  * a null <code>objectName</code> property if this form represents a user
53  * being added, or a non-null value for an existing user.</p>
54  *
55  * @author Craig R. McClanahan
56  * @version $Revision: 1.4 $ $Date: 2004/10/18 06:37:55 $
57  * @since 4.1
58  */

59
60 public final class SetUpUserAction extends Action {
61
62
63     // ----------------------------------------------------- Instance Variables
64

65
66     /**
67      * The MBeanServer we will be interacting with.
68      */

69     private MBeanServer JavaDoc mserver = null;
70
71
72     // --------------------------------------------------------- Public Methods
73

74
75     /**
76      * Process the specified HTTP request, and create the corresponding HTTP
77      * response (or forward to another web component that will create it).
78      * Return an <code>ActionForward</code> instance describing where and how
79      * control should be forwarded, or <code>null</code> if the response has
80      * already been completed.
81      *
82      * @param mapping The ActionMapping used to select this instance
83      * @param actionForm The optional ActionForm bean for this request (if any)
84      * @param request The HTTP request we are processing
85      * @param response The HTTP response we are creating
86      *
87      * @exception IOException if an input/output error occurs
88      * @exception ServletException if a servlet exception occurs
89      */

90     public ActionForward execute(ActionMapping mapping,
91                                  ActionForm form,
92                                  HttpServletRequest JavaDoc request,
93                                  HttpServletResponse JavaDoc response)
94         throws IOException JavaDoc, ServletException JavaDoc {
95
96         // Look up the components we will be using as needed
97
if (mserver == null) {
98             mserver = ((ApplicationServlet) getServlet()).getServer();
99         }
100         MessageResources resources = getResources(request);
101         HttpSession JavaDoc session = request.getSession();
102         Locale JavaDoc locale = getLocale(request);
103
104         // Set up beans containing all possible groups and roles
105
String JavaDoc databaseName =
106             URLDecoder.decode(request.getParameter("databaseName"),TomcatTreeBuilder.URL_ENCODING);
107         try {
108             request.setAttribute("groupsForm",
109                                  UserUtils.getGroupsForm(mserver,
110                                                          databaseName));
111         } catch (Exception JavaDoc e) {
112             getServlet().log
113                 (resources.getMessage(locale,
114                                       "users.error.attribute.get",
115                                       "groups"), e);
116             response.sendError
117                 (HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
118                  resources.getMessage
119                  (locale, "users.error.attribute.get", "groups"));
120             return (null);
121         }
122         try {
123             request.setAttribute("rolesForm",
124                                  UserUtils.getRolesForm(mserver,
125                                                         databaseName));
126         } catch (Exception JavaDoc e) {
127             getServlet().log
128                 (resources.getMessage(locale,
129                                       "users.error.attribute.get",
130                                       "roles"), e);
131             response.sendError
132                 (HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
133                  resources.getMessage
134                  (locale, "users.error.attribute.get", "roles"));
135             return (null);
136         }
137
138         // Set up the form bean based on the creating or editing state
139
String JavaDoc objectName = request.getParameter("objectName");
140         UserForm userForm = new UserForm();
141         if (objectName == null) {
142             userForm.setNodeLabel
143                 (resources.getMessage(locale, "users.user.newUser"));
144             userForm.setObjectName(null);
145         } else {
146             userForm.setNodeLabel
147                 (resources.getMessage(locale, "users.user.oldUser"));
148             userForm.setObjectName(objectName);
149             String JavaDoc attribute = null;
150             try {
151                 ObjectName JavaDoc oname = new ObjectName JavaDoc(objectName);
152                 attribute = "username";
153                 userForm.setUsername
154                     ((String JavaDoc) mserver.getAttribute(oname, attribute));
155                 attribute = "password";
156                 userForm.setPassword
157                     ((String JavaDoc) mserver.getAttribute(oname, attribute));
158                 attribute = "fullName";
159                 userForm.setFullName
160                     ((String JavaDoc) mserver.getAttribute(oname, attribute));
161                 attribute = "groups";
162                 userForm.setGroups
163                     ((String JavaDoc[]) mserver.getAttribute(oname, attribute));
164                 attribute = "roles";
165                 userForm.setRoles
166                     ((String JavaDoc[]) mserver.getAttribute(oname, attribute));
167             } catch (Exception JavaDoc e) {
168                 getServlet().log
169                     (resources.getMessage(locale,
170                         "users.error.attribute.get", attribute), e);
171                 response.sendError
172                     (HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
173                      resources.getMessage
174                          (locale, "users.error.attribute.get", attribute));
175                 return (null);
176             }
177         }
178         userForm.setDatabaseName(databaseName);
179
180         // Stash the form bean and forward to the display page
181
saveToken(request);
182         request.setAttribute("userForm", userForm);
183         return (mapping.findForward("User"));
184
185     }
186
187 }
188
Popular Tags