1 16 17 18 package org.apache.webapp.admin.users; 19 20 21 import java.io.IOException ; 22 import java.net.URLDecoder ; 23 import java.util.ArrayList ; 24 import java.util.Iterator ; 25 import java.util.Locale ; 26 import javax.servlet.ServletException ; 27 import javax.servlet.http.HttpServletRequest ; 28 import javax.servlet.http.HttpServletResponse ; 29 import javax.servlet.http.HttpSession ; 30 import org.apache.struts.action.Action; 31 import org.apache.struts.action.ActionErrors; 32 import org.apache.struts.action.ActionForm; 33 import org.apache.struts.action.ActionForward; 34 import org.apache.struts.action.ActionMapping; 35 import javax.management.Attribute ; 36 import javax.management.MBeanServer ; 37 import javax.management.MBeanServerFactory ; 38 import javax.management.QueryExp ; 39 import javax.management.Query ; 40 import javax.management.ObjectInstance ; 41 import javax.management.ObjectName ; 42 import javax.management.JMException ; 43 import javax.management.MBeanAttributeInfo ; 44 import javax.management.MBeanOperationInfo ; 45 import javax.management.MBeanInfo ; 46 import org.apache.struts.util.MessageResources; 47 import org.apache.webapp.admin.ApplicationServlet; 48 import org.apache.webapp.admin.TomcatTreeBuilder; 49 50 58 59 public final class SaveUserAction extends Action { 60 61 62 64 65 68 private MBeanServer mserver = null; 69 70 71 73 74 89 public ActionForward execute(ActionMapping mapping, 90 ActionForm form, 91 HttpServletRequest request, 92 HttpServletResponse response) 93 throws IOException , ServletException { 94 95 if (mserver == null) { 97 mserver = ((ApplicationServlet) getServlet()).getServer(); 98 } 99 MessageResources resources = getResources(request); 100 HttpSession session = request.getSession(); 101 Locale locale = getLocale(request); 102 103 if (isCancelled(request)) { 105 return (mapping.findForward("List Users Setup")); 106 } 107 108 if (!isTokenValid(request)) { 110 response.sendError 111 (HttpServletResponse.SC_BAD_REQUEST, 112 resources.getMessage(locale, "users.error.token")); 113 return (null); 114 } 115 116 UserForm userForm = (UserForm) form; 118 String databaseName = 119 URLDecoder.decode(userForm.getDatabaseName(),TomcatTreeBuilder.URL_ENCODING); 120 String objectName = userForm.getObjectName(); 121 122 if (objectName == null) { 124 125 String signature[] = new String [3]; 126 signature[0] = "java.lang.String"; 127 signature[1] = "java.lang.String"; 128 signature[2] = "java.lang.String"; 129 130 Object params[] = new Object [3]; 131 params[0] = userForm.getUsername(); 132 params[1] = userForm.getPassword(); 133 params[2] = userForm.getFullName(); 134 135 ObjectName oname = null; 136 137 try { 138 139 oname = new ObjectName (databaseName); 141 142 objectName = (String ) mserver.invoke(oname, "createUser", 144 params, signature); 145 146 } catch (Exception e) { 147 148 getServlet().log 149 (resources.getMessage(locale, "users.error.invoke", 150 "createUser"), e); 151 response.sendError 152 (HttpServletResponse.SC_INTERNAL_SERVER_ERROR, 153 resources.getMessage(locale, "users.error.invoke", 154 "createUser")); 155 return (null); 156 } 157 158 } 159 160 else { 162 163 ObjectName oname = null; 164 String attribute = null; 165 166 try { 167 168 oname = new ObjectName (objectName); 170 171 attribute = "fullName"; 173 mserver.setAttribute 174 (oname, 175 new Attribute (attribute, userForm.getFullName())); 176 attribute = "password"; 177 mserver.setAttribute 178 (oname, 179 new Attribute (attribute, userForm.getPassword())); 180 181 } catch (Exception e) { 182 183 getServlet().log 184 (resources.getMessage(locale, "users.error.set.attribute", 185 attribute), e); 186 response.sendError 187 (HttpServletResponse.SC_INTERNAL_SERVER_ERROR, 188 resources.getMessage(locale, "users.error.set.attribute", 189 attribute)); 190 return (null); 191 192 } 193 194 } 195 196 try { 198 199 ObjectName oname = new ObjectName (objectName); 200 mserver.invoke(oname, "removeGroups", 201 new Object [0], new String [0]); 202 String groups[] = userForm.getGroups(); 203 if (groups == null) { 204 groups = new String [0]; 205 } 206 String addsig[] = new String [1]; 207 addsig[0] = "java.lang.String"; 208 Object addpar[] = new Object [1]; 209 for (int i = 0; i < groups.length; i++) { 210 addpar[0] = 211 (new ObjectName (groups[i])).getKeyProperty("groupname"); 212 mserver.invoke(oname, "addGroup", 213 addpar, addsig); 214 } 215 216 } catch (Exception e) { 217 218 getServlet().log 219 (resources.getMessage(locale, "users.error.invoke", 220 "addGroup"), e); 221 response.sendError 222 (HttpServletResponse.SC_INTERNAL_SERVER_ERROR, 223 resources.getMessage(locale, "users.error.invoke", 224 "addGroup")); 225 return (null); 226 227 } 228 229 try { 231 232 ObjectName oname = new ObjectName (objectName); 233 mserver.invoke(oname, "removeRoles", 234 new Object [0], new String [0]); 235 String roles[] = userForm.getRoles(); 236 if (roles == null) { 237 roles = new String [0]; 238 } 239 String addsig[] = new String [1]; 240 addsig[0] = "java.lang.String"; 241 Object addpar[] = new Object [1]; 242 for (int i = 0; i < roles.length; i++) { 243 addpar[0] = 244 (new ObjectName (roles[i])).getKeyProperty("rolename"); 245 mserver.invoke(oname, "addRole", 246 addpar, addsig); 247 } 248 249 } catch (Exception e) { 250 251 getServlet().log 252 (resources.getMessage(locale, "users.error.invoke", 253 "addRole"), e); 254 response.sendError 255 (HttpServletResponse.SC_INTERNAL_SERVER_ERROR, 256 resources.getMessage(locale, "users.error.invoke", 257 "addRole")); 258 return (null); 259 260 } 261 262 try { 264 265 ObjectName dname = new ObjectName (databaseName); 266 mserver.invoke(dname, "save", 267 new Object [0], new String [0]); 268 269 } catch (Exception e) { 270 271 getServlet().log 272 (resources.getMessage(locale, "users.error.invoke", 273 "save"), e); 274 response.sendError 275 (HttpServletResponse.SC_INTERNAL_SERVER_ERROR, 276 resources.getMessage(locale, "users.error.invoke", 277 "save")); 278 return (null); 279 280 } 281 282 return (mapping.findForward("Users List Setup")); 284 285 } 286 287 288 } 289 | Popular Tags |