Author: markt Date: Thu Sep 14 19:01:03 2006 New Revision: 446457 URL: http://svn.apache.org/viewvc?view=rev&rev=446457 Log: Fix bug 34399 - disable the undeploy option if the webapp has not been 'deployed' This occurs, for example, if the webapp is defined in server.xml
Modified: tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/startup/HostConfig.java tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/startup/mbeans-descriptors.xml tomcat/container/tc5.5.x/webapps/docs/changelog.xml tomcat/container/tc5.5.x/webapps/manager/WEB-INF/classes/org/apache/catalina/manager/HTMLManagerServlet.java tomcat/container/tc5.5.x/webapps/manager/WEB-INF/classes/org/apache/catalina/manager/LocalStrings.properties tomcat/container/tc5.5.x/webapps/manager/WEB-INF/classes/org/apache/catalina/manager/ManagerServlet.java Modified: tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/startup/HostConfig.java URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/startup/HostConfig.java?view=diff&rev=446457&r1=446456&r2=446457 ============================================================================== --- tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/startup/HostConfig.java (original) +++ tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/startup/HostConfig.java Thu Sep 14 19:01:03 2006 @@ -354,6 +354,23 @@ } + /** + * Has the specified application been deployed? Note applications defined + * in server.xml will not have been deployed. + * @return <code>true</code> if the application has been deployed and + * <code>false</code> if the applciation has not been deployed or does not + * exist + */ + public boolean isDeployed(String name) { + DeployedApplication app = (DeployedApplication) deployed.get(name); + if (app == null) { + return false; + } else { + return true; + } + } + + // ------------------------------------------------------ Protected Methods @@ -670,8 +687,6 @@ if (files == null) return; - - boolean checkAdditionalDeployments = false; for (int i = 0; i < files.length; i++) { Modified: tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/startup/mbeans-descriptors.xml URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/startup/mbeans-descriptors.xml?view=diff&rev=446457&r1=446456&r2=446457 ============================================================================== --- tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/startup/mbeans-descriptors.xml (original) +++ tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/startup/mbeans-descriptors.xml Thu Sep 14 19:01:03 2006 @@ -79,6 +79,15 @@ type="java.lang.String"/> </operation> + <operation name="isDeployed" + description="Was this web application deployed by this component" + impact="ACTION" + returnType="boolean"> + <parameter name="name" + description="Application name" + type="java.lang.String"/> + </operation> + <operation name="manageApp" description="Add a web application managed externally" impact="ACTION" Modified: tomcat/container/tc5.5.x/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/webapps/docs/changelog.xml?view=diff&rev=446457&r1=446456&r2=446457 ============================================================================== --- tomcat/container/tc5.5.x/webapps/docs/changelog.xml (original) +++ tomcat/container/tc5.5.x/webapps/docs/changelog.xml Thu Sep 14 19:01:03 2006 @@ -41,6 +41,14 @@ </fix> </changelog> </subsection> + <subsection name="Webapps"> + <changelog> + <fix> + <bug>34399</bug>: Disable undeploy for applciations that have not + been deployed such as those defined in server.xml (markt) + </fix> + </changelog> + </subsection> </section> Modified: tomcat/container/tc5.5.x/webapps/manager/WEB-INF/classes/org/apache/catalina/manager/HTMLManagerServlet.java URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/webapps/manager/WEB-INF/classes/org/apache/catalina/manager/HTMLManagerServlet.java?view=diff&rev=446457&r1=446456&r2=446457 ============================================================================== --- tomcat/container/tc5.5.x/webapps/manager/WEB-INF/classes/org/apache/catalina/manager/HTMLManagerServlet.java (original) +++ tomcat/container/tc5.5.x/webapps/manager/WEB-INF/classes/org/apache/catalina/manager/HTMLManagerServlet.java Thu Sep 14 19:01:03 2006 @@ -333,6 +333,7 @@ Iterator iterator = sortedContextPathsMap.entrySet().iterator(); boolean isHighlighted = true; + boolean isDeployed = true; String highlightColor = null; while (iterator.hasNext()) { @@ -353,6 +354,13 @@ } if (context != null ) { + try { + isDeployed = isDeployed(contextPath); + } catch (Exception e) { + // Assume false on failure for safety + isDeployed = false; + } + args = new Object[6]; args[0] = displayPath; args[1] = context.getDisplayName(); @@ -398,12 +406,18 @@ if (context.getPath().equals(this.context.getPath())) { writer.print(MessageFormat.format( MANAGER_APP_ROW_BUTTON_SECTION, args)); - } else if (context.getAvailable()) { + } else if (context.getAvailable() && isDeployed) { + writer.print(MessageFormat.format( + STARTED_DEPLOYED_APPS_ROW_BUTTON_SECTION, args)); + } else if (context.getAvailable() && !isDeployed) { writer.print(MessageFormat.format( - STARTED_APPS_ROW_BUTTON_SECTION, args)); + STARTED_NONDEPLOYED_APPS_ROW_BUTTON_SECTION, args)); + } else if (!context.getAvailable() && isDeployed) { + writer.print(MessageFormat.format( + STOPPED_DEPLOYED_APPS_ROW_BUTTON_SECTION, args)); } else { writer.print(MessageFormat.format( - STOPPED_APPS_ROW_BUTTON_SECTION, args)); + STOPPED_NONDEPLOYED_APPS_ROW_BUTTON_SECTION, args)); } } @@ -584,7 +598,7 @@ " </td>\n" + "</tr>\n"; - private static final String STARTED_APPS_ROW_BUTTON_SECTION = + private static final String STARTED_DEPLOYED_APPS_ROW_BUTTON_SECTION = " <td class=\"row-left\" bgcolor=\"{8}\">\n" + " <small>\n" + " {1} \n" + @@ -595,13 +609,35 @@ " </td>\n" + "</tr>\n"; - private static final String STOPPED_APPS_ROW_BUTTON_SECTION = + private static final String STOPPED_DEPLOYED_APPS_ROW_BUTTON_SECTION = " <td class=\"row-left\" bgcolor=\"{8}\">\n" + " <small>\n" + " <a href=\"{0}\" onclick=\"return(confirm('''Are you sure?'''))\">{1}</a> \n" + " {3} \n" + " {5} \n" + " <a href=\"{6}\" onclick=\"return(confirm('''Are you sure? This will delete the application.'''))\">{7}</a> \n" + + " </small>\n" + + " </td>\n" + + "</tr>\n"; + + private static final String STARTED_NONDEPLOYED_APPS_ROW_BUTTON_SECTION = + " <td class=\"row-left\" bgcolor=\"{8}\">\n" + + " <small>\n" + + " {1} \n" + + " <a href=\"{2}\" onclick=\"return(confirm('''Are you sure?'''))\">{3}</a> \n" + + " <a href=\"{4}\" onclick=\"return(confirm('''Are you sure?'''))\">{5}</a> \n" + + " {7} \n" + + " </small>\n" + + " </td>\n" + + "</tr>\n"; + + private static final String STOPPED_NONDEPLOYED_APPS_ROW_BUTTON_SECTION = + " <td class=\"row-left\" bgcolor=\"{8}\">\n" + + " <small>\n" + + " <a href=\"{0}\" onclick=\"return(confirm('''Are you sure?'''))\">{1}</a> \n" + + " {3} \n" + + " {5} \n" + + " {7} \n" + " </small>\n" + " </td>\n" + "</tr>\n"; Modified: tomcat/container/tc5.5.x/webapps/manager/WEB-INF/classes/org/apache/catalina/manager/LocalStrings.properties URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/webapps/manager/WEB-INF/classes/org/apache/catalina/manager/LocalStrings.properties?view=diff&rev=446457&r1=446456&r2=446457 ============================================================================== --- tomcat/container/tc5.5.x/webapps/manager/WEB-INF/classes/org/apache/catalina/manager/LocalStrings.properties (original) +++ tomcat/container/tc5.5.x/webapps/manager/WEB-INF/classes/org/apache/catalina/manager/LocalStrings.properties Thu Sep 14 19:01:03 2006 @@ -58,6 +58,7 @@ managerServlet.noRole=FAIL - User does not possess role {0} managerServlet.noSelf=FAIL - The manager can not reload, undeploy, stop, or undeploy itself managerServlet.noWrapper=Container has not called setWrapper() for this servlet +managerServlet.notDeployed=FAIL - Context {0} is defined in server.xml and may not be undeployed managerServlet.reloaded=OK - Reloaded application at context path {0} managerServlet.undeployd=OK - Undeployed application at context path {0} managerServlet.resourcesAll=OK - Listed global resources of all types Modified: tomcat/container/tc5.5.x/webapps/manager/WEB-INF/classes/org/apache/catalina/manager/ManagerServlet.java URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/webapps/manager/WEB-INF/classes/org/apache/catalina/manager/ManagerServlet.java?view=diff&rev=446457&r1=446456&r2=446457 ============================================================================== --- tomcat/container/tc5.5.x/webapps/manager/WEB-INF/classes/org/apache/catalina/manager/ManagerServlet.java (original) +++ tomcat/container/tc5.5.x/webapps/manager/WEB-INF/classes/org/apache/catalina/manager/ManagerServlet.java Thu Sep 14 19:01:03 2006 @@ -1276,6 +1276,12 @@ } } + if (!isDeployed(path)) { + writer.println(sm.getString("managerServlet.notDeployed", + RequestUtil.filter(displayPath))); + return; + } + if (!isServiced(path)) { addServiced(path); try { @@ -1368,6 +1374,19 @@ /** + * Invoke the isDeployed method on the deployer. + */ + protected boolean isDeployed(String name) + throws Exception { + String[] params = { name }; + String[] signature = { "java.lang.String" }; + Boolean result = + (Boolean) mBeanServer.invoke(oname, "isDeployed", params, signature); + return result.booleanValue(); + } + + + /** * Invoke the check method on the deployer. */ protected void check(String name) @@ -1379,7 +1398,7 @@ /** - * Invoke the check method on the deployer. + * Invoke the isServiced method on the deployer. */ protected boolean isServiced(String name) throws Exception { @@ -1392,7 +1411,7 @@ /** - * Invoke the check method on the deployer. + * Invoke the addServiced method on the deployer. */ protected void addServiced(String name) throws Exception { @@ -1403,7 +1422,7 @@ /** - * Invoke the check method on the deployer. + * Invoke the removeServiced method on the deployer. */ protected void removeServiced(String name) throws Exception { --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]