Author: markt Date: Thu Jan 9 13:59:10 2014 New Revision: 1556807 URL: http://svn.apache.org/r1556807 Log: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=55958 Differentiate between foo.war the directory and foo.war the file
Modified: tomcat/trunk/java/org/apache/catalina/core/ContainerBase.java tomcat/trunk/java/org/apache/catalina/ha/deploy/FarmWarDeployer.java tomcat/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java tomcat/trunk/java/org/apache/catalina/mbeans/MBeanUtils.java tomcat/trunk/java/org/apache/catalina/startup/FailedContext.java tomcat/trunk/java/org/apache/catalina/startup/HostConfig.java tomcat/trunk/java/org/apache/catalina/storeconfig/StandardContextSF.java tomcat/trunk/java/org/apache/catalina/util/ContextName.java tomcat/trunk/test/org/apache/catalina/startup/TestHostConfigAutomaticDeployment.java tomcat/trunk/test/org/apache/catalina/util/TestContextName.java Modified: tomcat/trunk/java/org/apache/catalina/core/ContainerBase.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/ContainerBase.java?rev=1556807&r1=1556806&r2=1556807&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/core/ContainerBase.java (original) +++ tomcat/trunk/java/org/apache/catalina/core/ContainerBase.java Thu Jan 9 13:59:10 2014 @@ -1234,7 +1234,7 @@ public abstract class ContainerBase exte keyProperties.insert(9, c.getName()); } else if (c instanceof Context) { keyProperties.insert(0, ",context="); - ContextName cn = new ContextName(c.getName()); + ContextName cn = new ContextName(c.getName(), false); keyProperties.insert(9,cn.getDisplayName()); } else if (c instanceof Host) { keyProperties.insert(0, ",host="); Modified: tomcat/trunk/java/org/apache/catalina/ha/deploy/FarmWarDeployer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/deploy/FarmWarDeployer.java?rev=1556807&r1=1556806&r2=1556807&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/ha/deploy/FarmWarDeployer.java (original) +++ tomcat/trunk/java/org/apache/catalina/ha/deploy/FarmWarDeployer.java Thu Jan 9 13:59:10 2014 @@ -452,7 +452,7 @@ public class FarmWarDeployer extends Clu public void fileModified(File newWar) { try { File deployWar = new File(getDeployDirFile(), newWar.getName()); - ContextName cn = new ContextName(deployWar.getName()); + ContextName cn = new ContextName(deployWar.getName(), true); if (deployWar.exists() && deployWar.lastModified() > newWar.lastModified()) { if (log.isInfoEnabled()) log.info(sm.getString("farmWarDeployer.alreadyDeployed", cn.getName())); @@ -488,7 +488,7 @@ public class FarmWarDeployer extends Clu @Override public void fileRemoved(File removeWar) { try { - ContextName cn = new ContextName(removeWar.getName()); + ContextName cn = new ContextName(removeWar.getName(), true); if (log.isInfoEnabled()) log.info(sm.getString("farmWarDeployer.removeLocal", cn.getName())); Modified: tomcat/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java?rev=1556807&r1=1556806&r2=1556807&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java (original) +++ tomcat/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java Thu Jan 9 13:59:10 2014 @@ -288,7 +288,7 @@ public final class HTMLManagerServlet ex break; } - ContextName cn = new ContextName(filename); + ContextName cn = new ContextName(filename, true); String name = cn.getName(); if ((host.findChild(name) != null) && !isDeployed(name)) { Modified: tomcat/trunk/java/org/apache/catalina/mbeans/MBeanUtils.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/mbeans/MBeanUtils.java?rev=1556807&r1=1556806&r2=1556807&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/mbeans/MBeanUtils.java (original) +++ tomcat/trunk/java/org/apache/catalina/mbeans/MBeanUtils.java Thu Jan 9 13:59:10 2014 @@ -344,7 +344,7 @@ public class MBeanUtils { ",resourcetype=Global,name=" + environment.getName()); } else if (container instanceof Context) { Context context = ((Context)container); - ContextName cn = new ContextName(context.getName()); + ContextName cn = new ContextName(context.getName(), false); Container host = context.getParent(); name = new ObjectName(domain + ":type=Environment" + ",resourcetype=Context,host=" + host.getName() + @@ -379,7 +379,7 @@ public class MBeanUtils { ",name=" + quotedResourceName); } else if (container instanceof Context) { Context context = ((Context)container); - ContextName cn = new ContextName(context.getName()); + ContextName cn = new ContextName(context.getName(), false); Container host = context.getParent(); name = new ObjectName(domain + ":type=Resource" + ",resourcetype=Context,host=" + host.getName() + @@ -417,7 +417,7 @@ public class MBeanUtils { ",name=" + quotedResourceLinkName); } else if (container instanceof Context) { Context context = ((Context)container); - ContextName cn = new ContextName(context.getName()); + ContextName cn = new ContextName(context.getName(), false); Container host = context.getParent(); name = new ObjectName(domain + ":type=ResourceLink" + ",resourcetype=Context,host=" + host.getName() + @@ -467,7 +467,7 @@ public class MBeanUtils { ObjectName name = null; Context context = loader.getContext(); - ContextName cn = new ContextName(context.getName()); + ContextName cn = new ContextName(context.getName(), false); Container host = context.getParent(); name = new ObjectName(domain + ":type=Loader,host=" + host.getName() + ",context=" + cn.getDisplayName()); Modified: tomcat/trunk/java/org/apache/catalina/startup/FailedContext.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/FailedContext.java?rev=1556807&r1=1556806&r2=1556807&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/startup/FailedContext.java (original) +++ tomcat/trunk/java/org/apache/catalina/startup/FailedContext.java Thu Jan 9 13:59:10 2014 @@ -144,7 +144,7 @@ public class FailedContext extends Lifec while (!(c instanceof Engine)) { if (c instanceof Context) { keyProperties.append(",context="); - ContextName cn = new ContextName(c.getName()); + ContextName cn = new ContextName(c.getName(), false); keyProperties.append(cn.getDisplayName()); } else if (c instanceof Host) { keyProperties.append(",host="); Modified: tomcat/trunk/java/org/apache/catalina/startup/HostConfig.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/HostConfig.java?rev=1556807&r1=1556806&r2=1556807&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/startup/HostConfig.java (original) +++ tomcat/trunk/java/org/apache/catalina/startup/HostConfig.java Thu Jan 9 13:59:10 2014 @@ -443,7 +443,7 @@ public class HostConfig File appBase = host.getAppBaseFile(); File configBase = host.getConfigBaseFile(); - ContextName cn = new ContextName(name); + ContextName cn = new ContextName(name, false); String baseName = cn.getBaseName(); if (deploymentExists(baseName)) { @@ -484,7 +484,7 @@ public class HostConfig File contextXml = new File(configBase, files[i]); if (files[i].toLowerCase(Locale.ENGLISH).endsWith(".xml")) { - ContextName cn = new ContextName(files[i]); + ContextName cn = new ContextName(files[i], true); if (isServiced(cn.getName()) || deploymentExists(cn.getName())) continue; @@ -671,7 +671,7 @@ public class HostConfig if (files[i].toLowerCase(Locale.ENGLISH).endsWith(".war") && war.isFile() && !invalidWars.contains(files[i]) ) { - ContextName cn = new ContextName(files[i]); + ContextName cn = new ContextName(files[i], true); if (isServiced(cn.getName())) { continue; @@ -1025,7 +1025,7 @@ public class HostConfig continue; File dir = new File(appBase, files[i]); if (dir.isDirectory()) { - ContextName cn = new ContextName(files[i]); + ContextName cn = new ContextName(files[i], false); if (isServiced(cn.getName()) || deploymentExists(cn.getName())) continue; @@ -1569,9 +1569,9 @@ public class HostConfig } Iterator<String> iter = sortedAppNames.iterator(); - ContextName previous = new ContextName(iter.next()); + ContextName previous = new ContextName(iter.next(), false); do { - ContextName current = new ContextName(iter.next()); + ContextName current = new ContextName(iter.next(), false); if (current.getPath().equals(previous.getPath())) { // Current and previous are same path - current will always Modified: tomcat/trunk/java/org/apache/catalina/storeconfig/StandardContextSF.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/storeconfig/StandardContextSF.java?rev=1556807&r1=1556806&r2=1556807&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/storeconfig/StandardContextSF.java (original) +++ tomcat/trunk/java/org/apache/catalina/storeconfig/StandardContextSF.java Thu Jan 9 13:59:10 2014 @@ -87,7 +87,7 @@ public class StandardContextSF extends S Context context = ((StandardContext) aContext); Host host = (Host) context.getParent(); File configBase = host.getConfigBaseFile(); - ContextName cn = new ContextName(context.getName()); + ContextName cn = new ContextName(context.getName(), false); String baseName = cn.getBaseName(); File xml = new File(configBase, baseName + ".xml"); context.setConfigFile(xml.toURI().toURL()); Modified: tomcat/trunk/java/org/apache/catalina/util/ContextName.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/util/ContextName.java?rev=1556807&r1=1556806&r2=1556807&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/util/ContextName.java (original) +++ tomcat/trunk/java/org/apache/catalina/util/ContextName.java Thu Jan 9 13:59:10 2014 @@ -32,13 +32,17 @@ public final class ContextName { private final String version; private final String name; + /** * Creates an instance from a context name, display name, base name, * directory name, WAR name or context.xml name. * * @param name The name to use as the basis for this object + * @param stripFileExtension If a .war or .xml file extension is present + * at the end of the provided name should it be + * removed? */ - public ContextName(String name) { + public ContextName(String name, boolean stripFileExtension) { String tmp1 = name; @@ -58,8 +62,9 @@ public final class ContextName { } // Remove any file extensions - if (tmp1.toLowerCase(Locale.ENGLISH).endsWith(".war") || - tmp1.toLowerCase(Locale.ENGLISH).endsWith(".xml")) { + if (stripFileExtension && + (tmp1.toLowerCase(Locale.ENGLISH).endsWith(".war") || + tmp1.toLowerCase(Locale.ENGLISH).endsWith(".xml"))) { tmp1 = tmp1.substring(0, tmp1.length() -4); } Modified: tomcat/trunk/test/org/apache/catalina/startup/TestHostConfigAutomaticDeployment.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/startup/TestHostConfigAutomaticDeployment.java?rev=1556807&r1=1556806&r2=1556807&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/catalina/startup/TestHostConfigAutomaticDeployment.java (original) +++ tomcat/trunk/test/org/apache/catalina/startup/TestHostConfigAutomaticDeployment.java Thu Jan 9 13:59:10 2014 @@ -45,7 +45,7 @@ import org.apache.catalina.util.ContextN */ public class TestHostConfigAutomaticDeployment extends TomcatBaseTest { - private static final ContextName APP_NAME = new ContextName("myapp"); + private static final ContextName APP_NAME = new ContextName("myapp", false); private static final File XML_SOURCE = new File("test/deployment/context.xml"); private static final File WAR_XML_SOURCE = Modified: tomcat/trunk/test/org/apache/catalina/util/TestContextName.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/util/TestContextName.java?rev=1556807&r1=1556806&r2=1556807&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/catalina/util/TestContextName.java (original) +++ tomcat/trunk/test/org/apache/catalina/util/TestContextName.java Thu Jan 9 13:59:10 2014 @@ -44,6 +44,8 @@ public class TestContextName { private ContextName cn18; private ContextName cn19; private ContextName cn20; + private ContextName cn21; + private ContextName cn22; @Before public void setUp() throws Exception { @@ -57,16 +59,18 @@ public class TestContextName { cn8 = new ContextName("/", "C"); cn9 = new ContextName("/foo", "D"); cn10 = new ContextName("/foo/bar", "E"); - cn11 = new ContextName("ROOT"); - cn12 = new ContextName("foo"); - cn13 = new ContextName("foo#bar"); - cn14 = new ContextName("ROOT##A"); - cn15 = new ContextName("foo##D"); - cn16 = new ContextName("foo#bar##E"); + cn11 = new ContextName("ROOT", false); + cn12 = new ContextName("foo", false); + cn13 = new ContextName("foo#bar", false); + cn14 = new ContextName("ROOT##A", false); + cn15 = new ContextName("foo##D", false); + cn16 = new ContextName("foo#bar##E", false); cn17 = new ContextName("/ROOT", null); - cn18 = new ContextName("/ROOT#bar"); - cn19 = new ContextName("/ROOT#bar##A"); - cn20 = new ContextName("/ROOT##A"); + cn18 = new ContextName("/ROOT#bar", false); + cn19 = new ContextName("/ROOT#bar##A", false); + cn20 = new ContextName("/ROOT##A", false); + cn21 = new ContextName("foo.war", false); + cn22 = new ContextName("foo.war", true); } @Test @@ -91,6 +95,8 @@ public class TestContextName { assertEquals("ROOT#bar", cn18.getBaseName()); assertEquals("ROOT#bar##A", cn19.getBaseName()); assertEquals("ROOT##A", cn20.getBaseName()); + assertEquals("foo.war", cn21.getBaseName()); + assertEquals("foo", cn22.getBaseName()); } @Test @@ -115,6 +121,8 @@ public class TestContextName { assertEquals("/ROOT/bar", cn18.getPath()); assertEquals("/ROOT/bar", cn19.getPath()); assertEquals("", cn20.getPath()); + assertEquals("/foo.war", cn21.getPath()); + assertEquals("/foo", cn22.getPath()); } @Test @@ -139,6 +147,8 @@ public class TestContextName { assertEquals("", cn18.getVersion()); assertEquals("A", cn19.getVersion()); assertEquals("A", cn20.getVersion()); + assertEquals("", cn21.getVersion()); + assertEquals("", cn22.getVersion()); } @Test @@ -163,6 +173,8 @@ public class TestContextName { assertEquals("/ROOT/bar", cn18.getName()); assertEquals("/ROOT/bar##A", cn19.getName()); assertEquals("##A", cn20.getName()); + assertEquals("/foo.war", cn21.getName()); + assertEquals("/foo", cn22.getName()); } @Test @@ -187,6 +199,8 @@ public class TestContextName { assertEquals("/ROOT/bar", cn18.getDisplayName()); assertEquals("/ROOT/bar##A", cn19.getDisplayName()); assertEquals("/##A", cn20.getDisplayName()); + assertEquals("/foo.war", cn21.getDisplayName()); + assertEquals("/foo", cn22.getDisplayName()); } @Test @@ -211,12 +225,14 @@ public class TestContextName { doTestConstructorString(cn18); doTestConstructorString(cn19); doTestConstructorString(cn20); + doTestConstructorString(cn21); + doTestConstructorString(cn22); } private void doTestConstructorString(ContextName src) { - doCompare(src, new ContextName(src.getBaseName())); - doCompare(src, new ContextName(src.getDisplayName())); - doCompare(src, new ContextName(src.getName())); + doCompare(src, new ContextName(src.getBaseName(), false)); + doCompare(src, new ContextName(src.getDisplayName(), false)); + doCompare(src, new ContextName(src.getName(), false)); } private void doCompare(ContextName cn1, ContextName cn2) { --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org