KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > webapp > admin > service > EditServiceAction


1 /*
2  * Copyright 2001-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 package org.apache.webapp.admin.service;
18
19 import java.io.IOException JavaDoc;
20 import java.util.Iterator JavaDoc;
21 import java.util.List JavaDoc;
22 import java.util.Locale JavaDoc;
23 import java.util.ArrayList JavaDoc;
24 import javax.servlet.ServletException JavaDoc;
25 import javax.servlet.http.HttpServletRequest JavaDoc;
26 import javax.servlet.http.HttpServletResponse JavaDoc;
27 import javax.servlet.http.HttpSession JavaDoc;
28 import org.apache.struts.action.Action;
29 import org.apache.struts.action.ActionErrors;
30 import org.apache.struts.action.ActionForm;
31 import org.apache.struts.action.ActionForward;
32 import org.apache.struts.action.ActionMapping;
33 import org.apache.struts.util.MessageResources;
34
35 import javax.management.MBeanServer JavaDoc;
36 import javax.management.ObjectInstance JavaDoc;
37 import javax.management.ObjectName JavaDoc;
38 import javax.management.JMException JavaDoc;
39
40 import org.apache.webapp.admin.ApplicationServlet;
41 import org.apache.webapp.admin.LabelValueBean;
42 import org.apache.webapp.admin.Lists;
43 import org.apache.webapp.admin.TomcatTreeBuilder;
44
45 /**
46  * The <code>Action</code> that sets up <em>Edit Service</em> transactions.
47  *
48  * @author Manveen Kaur
49  * @version $Revision: 1.12 $ $Date: 2004/10/18 06:37:55 $
50  */

51
52 public class EditServiceAction extends Action {
53     
54
55     /**
56      * The MBeanServer we will be interacting with.
57      */

58     private MBeanServer JavaDoc mBServer = null;
59     
60
61     // --------------------------------------------------------- Public Methods
62

63     /**
64      * Process the specified HTTP request, and create the corresponding HTTP
65      * response (or forward to another web component that will create it).
66      * Return an <code>ActionForward</code> instance describing where and how
67      * control should be forwarded, or <code>null</code> if the response has
68      * already been completed.
69      *
70      * @param mapping The ActionMapping used to select this instance
71      * @param actionForm The optional ActionForm bean for this request (if any)
72      * @param request The HTTP request we are processing
73      * @param response The HTTP response we are creating
74      *
75      * @exception IOException if an input/output error occurs
76      * @exception ServletException if a servlet exception occurs
77      */

78     public ActionForward execute(ActionMapping mapping,
79                                  ActionForm form,
80                                  HttpServletRequest JavaDoc request,
81                                  HttpServletResponse JavaDoc response)
82         throws IOException JavaDoc, ServletException JavaDoc {
83         
84         // Acquire the resources that we need
85
HttpSession JavaDoc session = request.getSession();
86         Locale JavaDoc locale = getLocale(request);
87         MessageResources resources = getResources(request);
88         
89         // Acquire a reference to the MBeanServer containing our MBeans
90
try {
91             mBServer = ((ApplicationServlet) getServlet()).getServer();
92         } catch (Throwable JavaDoc t) {
93             throw new ServletException JavaDoc
94             ("Cannot acquire MBeanServer reference", t);
95         }
96         
97         // Set up the object names of the MBeans we are manipulating
98
ObjectName JavaDoc sname = null;
99         ObjectName JavaDoc ename = null;
100         StringBuffer JavaDoc sb = null;
101         try {
102             sname = new ObjectName JavaDoc(request.getParameter("select"));
103         } catch (Exception JavaDoc e) {
104             String JavaDoc message =
105                 resources.getMessage(locale, "error.serviceName.bad",
106                                      request.getParameter("select"));
107             getServlet().log(message);
108             response.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
109             return (null);
110         }
111         try {
112             sb = new StringBuffer JavaDoc(sname.getDomain());
113             sb.append(":type=Engine");
114             ename = new ObjectName JavaDoc(sb.toString());
115         } catch (Exception JavaDoc e) {
116             String JavaDoc message =
117                 resources.getMessage(locale, "error.engineName.bad",
118                                      sb.toString());
119             getServlet().log(message);
120             response.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
121             return (null);
122         }
123
124         String JavaDoc adminService = null;
125         // Get the service name the admin app runs on
126
// this service cannot be deleted from the admin tool
127
try {
128             adminService = Lists.getAdminAppService(
129                                   mBServer, sname.getDomain(),request);
130          } catch (Exception JavaDoc e) {
131             String JavaDoc message =
132                 resources.getMessage(locale, "error.serviceName.bad",
133                                  adminService);
134             getServlet().log(message);
135             response.sendError(HttpServletResponse.SC_BAD_REQUEST, message);
136             return (null);
137         }
138
139         
140         // Fill in the form values for display and editing
141
ServiceForm serviceFm = new ServiceForm();
142         session.setAttribute("serviceForm", serviceFm);
143         serviceFm.setAdminAction("Edit");
144         serviceFm.setObjectName(sname.toString());
145         serviceFm.setEngineObjectName(ename.toString());
146         sb = new StringBuffer JavaDoc();
147         sb.append(resources.getMessage(locale, "server.service.treeBuilder.subtreeNode"));
148         sb.append(" (");
149         sb.append(sname.getKeyProperty("serviceName"));
150         sb.append(")");
151         serviceFm.setNodeLabel(sb.toString());
152         serviceFm.setAdminServiceName(adminService);
153         String JavaDoc attribute = null;
154         try {
155
156             // Copy scalar properties
157
attribute = "name";
158             serviceFm.setServiceName
159                 ((String JavaDoc) mBServer.getAttribute(sname, attribute));
160             attribute = "name";
161             serviceFm.setEngineName
162                 ((String JavaDoc) mBServer.getAttribute(ename, attribute));
163             attribute = "defaultHost";
164             serviceFm.setDefaultHost
165                 ((String JavaDoc) mBServer.getAttribute(ename, attribute));
166
167             // Build the list of available hosts
168
attribute = "hosts";
169             ArrayList JavaDoc hosts = new ArrayList JavaDoc();
170             hosts.add(new LabelValueBean
171                       (resources.getMessage(locale, "list.none"), ""));
172             Iterator JavaDoc items = Lists.getHosts(mBServer, sname).iterator();
173             while (items.hasNext()) {
174                 ObjectName JavaDoc hname = new ObjectName JavaDoc((String JavaDoc) items.next());
175                 String JavaDoc name = hname.getKeyProperty("host");
176                 if (name!=null) {
177                     hosts.add(new LabelValueBean(name, name));
178                 }
179             }
180             serviceFm.setHostNameVals(hosts);
181
182         } catch (Throwable JavaDoc t) {
183             getServlet().log
184                 (resources.getMessage(locale, "users.error.attribute.get",
185                                       attribute), t);
186             response.sendError
187                 (HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
188                  resources.getMessage(locale, "users.error.attribute.get",
189                                       attribute));
190             return (null);
191         }
192         
193         // Forward to the service display page
194
return (mapping.findForward("Service"));
195         
196     }
197
198
199 }
200
Popular Tags