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 SaveGroupAction 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 Roles 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 GroupForm groupForm = (GroupForm) form; 118 String databaseName = 119 URLDecoder.decode(groupForm.getDatabaseName(),TomcatTreeBuilder.URL_ENCODING); 120 String objectName = groupForm.getObjectName(); 121 122 if (objectName == null) { 124 125 String signature[] = new String [2]; 126 signature[0] = "java.lang.String"; 127 signature[1] = "java.lang.String"; 128 129 Object params[] = new Object [2]; 130 params[0] = groupForm.getGroupname(); 131 params[1] = groupForm.getDescription(); 132 133 ObjectName oname = null; 134 135 try { 136 137 oname = new ObjectName (databaseName); 139 140 objectName = (String ) mserver.invoke(oname, "createGroup", 142 params, signature); 143 144 } catch (Exception e) { 145 146 getServlet().log 147 (resources.getMessage(locale, "users.error.invoke", 148 "createGroup"), e); 149 response.sendError 150 (HttpServletResponse.SC_INTERNAL_SERVER_ERROR, 151 resources.getMessage(locale, "users.error.invoke", 152 "createGroup")); 153 return (null); 154 } 155 156 } 157 158 else { 160 161 ObjectName oname = null; 162 String attribute = null; 163 164 try { 165 166 oname = new ObjectName (objectName); 168 169 attribute = "description"; 171 mserver.setAttribute 172 (oname, 173 new Attribute (attribute, groupForm.getDescription())); 174 175 } catch (Exception e) { 176 177 getServlet().log 178 (resources.getMessage(locale, "users.error.set.attribute", 179 attribute), e); 180 response.sendError 181 (HttpServletResponse.SC_INTERNAL_SERVER_ERROR, 182 resources.getMessage(locale, "users.error.set.attribute", 183 attribute)); 184 return (null); 185 186 } 187 188 } 189 190 191 try { 193 194 ObjectName oname = new ObjectName (objectName); 195 mserver.invoke(oname, "removeRoles", 196 new Object [0], new String [0]); 197 String roles[] = groupForm.getRoles(); 198 if (roles == null) { 199 roles = new String [0]; 200 } 201 String addsig[] = new String [1]; 202 addsig[0] = "java.lang.String"; 203 Object addpar[] = new Object [1]; 204 for (int i = 0; i < roles.length; i++) { 205 addpar[0] = 206 (new ObjectName (roles[i])).getKeyProperty("rolename"); 207 mserver.invoke(oname, "addRole", 208 addpar, addsig); 209 } 210 211 } catch (Exception e) { 212 213 getServlet().log 214 (resources.getMessage(locale, "users.error.invoke", 215 "addRole"), e); 216 response.sendError 217 (HttpServletResponse.SC_INTERNAL_SERVER_ERROR, 218 resources.getMessage(locale, "users.error.invoke", 219 "addRole")); 220 return (null); 221 222 } 223 224 try { 226 227 ObjectName dname = new ObjectName (databaseName); 228 mserver.invoke(dname, "save", 229 new Object [0], new String [0]); 230 231 } catch (Exception e) { 232 233 getServlet().log 234 (resources.getMessage(locale, "users.error.invoke", 235 "save"), e); 236 response.sendError 237 (HttpServletResponse.SC_INTERNAL_SERVER_ERROR, 238 resources.getMessage(locale, "users.error.invoke", 239 "save")); 240 return (null); 241 242 } 243 244 return (mapping.findForward("Groups List Setup")); 246 247 } 248 249 250 } 251 | Popular Tags |