BaseWebAppAction.java

00001 
00026 package org.objectweb.jonas.webapp.jonasadmin.service.container;
00027 
00028 import java.net.URL;
00029 import java.util.Iterator;
00030 
00031 import javax.management.ObjectName;
00032 import javax.servlet.http.HttpServletRequest;
00033 
00034 import org.apache.struts.action.ActionMapping;
00035 import org.objectweb.jonas.jmx.J2eeObjectName;
00036 import org.objectweb.jonas.jmx.JonasManagementRepr;
00037 import org.objectweb.jonas.jmx.JonasObjectName;
00038 import org.objectweb.jonas.webapp.jonasadmin.JettyObjectName;
00039 import org.objectweb.jonas.webapp.jonasadmin.JonasAdminJmx;
00040 import org.objectweb.jonas.webapp.jonasadmin.deploy.BaseDeployAction;
00041 
00046 abstract public class BaseWebAppAction extends BaseDeployAction {
00047 
00048 // --------------------------------------------------------- Protected variables
00049 
00050     protected WebAppForm mWebAppForm;
00051     protected WarForm mWarForm;
00052 
00053 // --------------------------------------------------------- Public Methods
00054 
00055 // --------------------------------------------------------- Protected Methods
00056 
00063     protected boolean initialize(ActionMapping p_Mapping, HttpServletRequest p_Request) {
00064 
00065         boolean bPopulate = false;
00066 
00067         // Global form used
00068         mWebAppForm = null;
00069         mWarForm = null;
00070 
00071         // Action
00072         String sParamAction = p_Request.getParameter("action");
00073         // Selected WebApp (ObjectName)
00074         String sParamWebAppObjectName = p_Request.getParameter("on");
00075         // Selected War
00076         String sParamPathWar = p_Request.getParameter("war");
00077 
00078         // Detect create action
00079         if ((sParamAction != null) && ("create".equals(sParamAction) == true)) {
00080             // Create a new WebApp
00081             mWebAppForm = createWebAppForm(p_Mapping, p_Request);
00082             mWebAppForm.setAction("create");
00083             // Remove WarForm
00084             m_Session.removeAttribute("warForm");
00085         }
00086         // Build forms with the object name
00087         else if (sParamWebAppObjectName != null) {
00088             mWebAppForm = createWebAppForm(p_Mapping, p_Request);
00089             mWebAppForm.setObjectName(sParamWebAppObjectName);
00090             bPopulate = true;
00091             // Remove WarForm
00092             m_Session.removeAttribute("warForm");
00093         }
00094         else if (sParamPathWar != null) {
00095             // Create a new War form
00096             mWarForm = createWarForm(p_Mapping, p_Request);
00097             mWarForm.setPath(sParamPathWar);
00098             mWarForm.setFilename(JonasAdminJmx.extractFilename(sParamPathWar));
00099             bPopulate = true;
00100         }
00101         else {
00102             // Edit last form in session
00103             mWebAppForm = (WebAppForm) m_Session.getAttribute("webAppForm");
00104             if (mWebAppForm != null) {
00105                 mWebAppForm.setAction("edit");
00106             }
00107             mWarForm = (WarForm) m_Session.getAttribute("warForm");
00108             // Force populate
00109             if (("reload".equals(sParamAction) == true) || ("start".equals(sParamAction) == true)
00110                 || ("stop".equals(sParamAction) == true)) {
00111                 bPopulate = true;
00112             }
00113         }
00114         return bPopulate;
00115     }
00116 
00123     protected WebAppForm createWebAppForm(ActionMapping p_Mapping, HttpServletRequest p_Request) {
00124         WebAppForm oForm = null;
00125         if (m_WhereAreYou.isCatalinaServer() == true) {
00126             oForm = new WebAppCatalinaForm();
00127             oForm.reset(p_Mapping, p_Request);
00128             m_Session.setAttribute("webAppForm", oForm);
00129             m_Session.setAttribute("webAppCatalinaForm", oForm);
00130         }
00131         else if (m_WhereAreYou.isJettyServer() == true) {
00132             oForm = new WebAppJettyForm();
00133             oForm.reset(p_Mapping, p_Request);
00134             m_Session.setAttribute("webAppForm", oForm);
00135             m_Session.setAttribute("webAppJettyForm", oForm);
00136         }
00137         return oForm;
00138     }
00139 
00146     protected WarForm createWarForm(ActionMapping p_Mapping, HttpServletRequest p_Request) {
00147         WarForm oForm = new WarForm();
00148         oForm.reset(p_Mapping, p_Request);
00149         m_Session.setAttribute("warForm", oForm);
00150         return oForm;
00151     }
00152 
00159     protected void populateWebApp(String p_ObjectName, WebAppForm p_Form)
00160         throws Exception {
00161         if (m_WhereAreYou.isCatalinaServer() == true) {
00162             populateWebAppCatalina(p_ObjectName, (WebAppCatalinaForm) p_Form);
00163         }
00164         else if (m_WhereAreYou.isJettyServer() == true) {
00165             populateWebAppJetty(p_ObjectName, (WebAppJettyForm) p_Form);
00166         }
00167     }
00168 
00176     protected void populateWebAppCatalina(String p_ObjectName, WebAppCatalinaForm p_Form)
00177         throws Exception {
00178         // Context
00179         ObjectName on = new ObjectName(p_ObjectName);
00180         p_Form.setObjectName(on.toString());
00181         p_Form.setName(on.getKeyProperty("name"));
00182         p_Form.setJ2eeApplication(on.getKeyProperty("J2EEApplication"));
00183         p_Form.setJ2eeServer(on.getKeyProperty("J2EEServer"));
00184         p_Form.setPathContext(WebAppItem.extractPathContext(p_Form.getName()));
00185         p_Form.setHost(getStringAttribute(on, "hostname"));
00186         p_Form.setCookies(getBooleanAttribute(on, "cookies"));
00187         p_Form.setReloadable(getBooleanAttribute(on, "reloadable"));
00188         p_Form.setSwallowOutput(getBooleanAttribute(on, "swallowOutput"));
00189         p_Form.setCrossContext(getBooleanAttribute(on, "crossContext"));
00190         p_Form.setOverride(getBooleanAttribute(on, "override"));
00191         p_Form.setState(getIntegerAttribute(on, "state"));
00192     }
00193 
00200     protected void populateWebAppJetty(String p_ObjectName, WebAppJettyForm p_Form)
00201         throws Exception {
00202              // Find context
00203              Iterator it = JonasAdminJmx.getListMbean(JettyObjectName.jettyContexts()).iterator();
00204              while (it.hasNext() == true) {
00205                 ObjectName on = (ObjectName) it.next();
00206                 if ((on.getKeyProperty("WebApplicationContext") != null) &&
00207                         (on.getKeyProperty("WebApplicationHandler") == null)
00208                         ) {
00209                         // Context
00210                         p_Form.setStarted(getBooleanAttribute(on, "started"));
00211                         p_Form.setResourceBase(getStringAttribute(on, "resourceBase"));
00212                         p_Form.setDisplayName(getStringAttribute(on, "displayName"));
00213                         p_Form.setPathContext(getStringAttribute(on, "contextPath"));
00214                         break;
00215                  }
00216              }
00217     }
00218 
00225     protected ObjectName findJonasMbeanWar(String p_PathContext)
00226         throws Exception {
00227         ObjectName onRet = null;
00228         ObjectName on;
00229         String sPathContext;
00230         StringBuffer sb;
00231 
00232         Iterator itOnWars = JonasAdminJmx.getListMbean(JonasObjectName.allWars()).iterator();
00233         while (itOnWars.hasNext()) {
00234             on = (ObjectName) itOnWars.next();
00235             sPathContext = getStringAttribute(on, "ContextRoot");
00236             if (sPathContext.charAt(0) != '/') {
00237                 sb = new StringBuffer("/");
00238                 sb.append(sPathContext);
00239                 sPathContext = sb.toString();
00240             }
00241             // Detect the good War
00242             if (p_PathContext.equals(sPathContext) == true) {
00243                 onRet = on;
00244                 break;
00245             }
00246         }
00247         return onRet;
00248     }
00249 
00256     protected ObjectName findWebAppMbean(String p_PathContext)
00257         throws Exception {
00258         ObjectName onRet = null;
00259         if (m_WhereAreYou.isCatalinaServer() == true) {
00260             onRet = findJ2eeWebModuleMbean(p_PathContext);
00261         }
00262         else if (m_WhereAreYou.isJettyServer() == true) {
00263 
00264         }
00265         return onRet;
00266     }
00267 
00274     protected ObjectName findJ2eeWebModuleMbean(String p_PathContext)
00275         throws Exception {
00276         ObjectName onRet = null;
00277         ObjectName on;
00278         String sPathContext;
00279         String sSearchPathContext = p_PathContext;
00280         if (sSearchPathContext.charAt(0) != '/') {
00281             sSearchPathContext = "/" + p_PathContext;
00282         }
00283 
00284         Iterator itOns = JonasAdminJmx.getListMbean(J2eeObjectName.getWebModules(m_WhereAreYou.
00285             getCurrentCatalinaDomainName())).iterator();
00286         while (itOns.hasNext()) {
00287             on = (ObjectName) itOns.next();
00288             //ori: sPathContext = getStringAttribute(on, "name");
00289             sPathContext = on.getKeyProperty("name");
00290             // Detect the good War
00291             if (sSearchPathContext.equals(sPathContext) == true) {
00292                 onRet = on;
00293                 break;
00294             }
00295         }
00296         return onRet;
00297     }
00298 
00305     protected void populateWar(ObjectName p_ObjectName, WarForm p_Form)
00306         throws Exception {
00307         if (p_ObjectName != null) {
00308             //p_Form.setPath(p_ObjectName.getKeyProperty("fname"));
00309             String webModulePath = ((URL) JonasManagementRepr.getAttribute(p_ObjectName, "warURL")).toString();
00310             p_Form.setPath(webModulePath);
00311             p_Form.setFilename(JonasAdminJmx.extractFilename(p_Form.getPath()));
00312             // here the hostName is set to null as the War MBean has HostName=null
00313             // hope Jetty MBean will provide in the future the correct host name
00314             p_Form.setHostName(getStringAttribute(p_ObjectName, "hostname"));
00315             p_Form.setInEarCase(getBooleanAttribute(p_ObjectName, "inEarCase"));
00316             //p_Form.setContextRoot(getStringAttribute(p_ObjectName, "ContextRoot"));
00317             p_Form.setContextRoot(getStringAttribute(p_ObjectName, "path"));
00318             p_Form.setJava2DelegationModel(getBooleanAttribute(p_ObjectName, "java2DelegationModel"));
00319             p_Form.setXmlContent(getStringAttribute(p_ObjectName, "deploymentDescriptor"));
00320             p_Form.setJonasXmlContent(getStringAttribute(p_ObjectName, "jonasDeploymentDescriptor"));
00321             p_Form.setServletsName((String[]) JonasManagementRepr.getAttribute(p_ObjectName
00322                 , "servlets"));
00323             p_Form.setWarPath((URL) JonasManagementRepr.getAttribute(p_ObjectName, "warURL"));
00324             p_Form.setEarPath((URL) JonasManagementRepr.getAttribute(p_ObjectName, "earURL"));
00325         }
00326     }
00333     protected void populateJettyWar(ObjectName p_ObjectName, WarForm p_Form)
00334         throws Exception {
00335         if (p_ObjectName != null) {
00336             p_Form.setPath(p_ObjectName.getKeyProperty("fname"));
00337             p_Form.setFilename(JonasAdminJmx.extractFilename(p_Form.getPath()));
00338 
00339             p_Form.setHostName(getStringAttribute(p_ObjectName, "HostName"));
00340             p_Form.setInEarCase(getBooleanAttribute(p_ObjectName, "InEarCase"));
00341             p_Form.setContextRoot(getStringAttribute(p_ObjectName, "ContextRoot"));
00342             p_Form.setJava2DelegationModel(getBooleanAttribute(p_ObjectName, "Java2DelegationModel"));
00343             p_Form.setXmlContent(getStringAttribute(p_ObjectName, "XmlContent"));
00344             p_Form.setJonasXmlContent(getStringAttribute(p_ObjectName, "JOnASXmlContent"));
00345             p_Form.setServletsName((String[]) JonasManagementRepr.getAttribute(p_ObjectName
00346                 , "ServletsName"));
00347             p_Form.setWarPath((URL) JonasManagementRepr.getAttribute(p_ObjectName, "WarURL"));
00348             p_Form.setEarPath((URL) JonasManagementRepr.getAttribute(p_ObjectName, "EarURL"));
00349         }
00350     }
00351 
00358     protected void populateWar(String p_Path, WarForm p_Form)
00359         throws Exception {
00360         populateWar(JonasObjectName.war(p_Path), p_Form);
00361     }
00362 }

Generated on Tue Feb 15 15:05:30 2005 for JOnAS by  doxygen 1.3.9.1