Return-Path: Delivered-To: apmail-tomcat-dev-archive@www.apache.org Received: (qmail 38587 invoked from network); 2 Dec 2010 12:58:34 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 2 Dec 2010 12:58:34 -0000 Received: (qmail 50215 invoked by uid 500); 2 Dec 2010 12:58:33 -0000 Delivered-To: apmail-tomcat-dev-archive@tomcat.apache.org Received: (qmail 50065 invoked by uid 500); 2 Dec 2010 12:58:33 -0000 Mailing-List: contact dev-help@tomcat.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "Tomcat Developers List" Delivered-To: mailing list dev@tomcat.apache.org Received: (qmail 50056 invoked by uid 99); 2 Dec 2010 12:58:32 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 02 Dec 2010 12:58:32 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 02 Dec 2010 12:58:29 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id A457F23889ED; Thu, 2 Dec 2010 12:56:56 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1041356 - in /tomcat/trunk: java/org/apache/catalina/util/ContextName.java test/org/apache/catalina/util/TestContextName.java Date: Thu, 02 Dec 2010 12:56:56 -0000 To: dev@tomcat.apache.org From: markt@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20101202125656.A457F23889ED@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: markt Date: Thu Dec 2 12:56:56 2010 New Revision: 1041356 URL: http://svn.apache.org/viewvc?rev=1041356&view=rev Log: HostConfig passed a context name to ContextName(String) - ensure that this is correctly parsed. ContextName(String) now accepts all variations of Context name. Modified: tomcat/trunk/java/org/apache/catalina/util/ContextName.java tomcat/trunk/test/org/apache/catalina/util/TestContextName.java 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=1041356&r1=1041355&r2=1041356&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/util/ContextName.java (original) +++ tomcat/trunk/java/org/apache/catalina/util/ContextName.java Thu Dec 2 12:56:56 2010 @@ -33,35 +33,53 @@ public final class ContextName { private final String name; /** - * Creates an instance from a base name, directory name, WAR name or - * context.xml 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 */ public ContextName(String name) { - // Remove file extension, if any - if (name.toLowerCase(Locale.ENGLISH).endsWith(".war") || - name.toLowerCase(Locale.ENGLISH).endsWith(".xml")) { - baseName = name.substring(0, name.length() -4); - } else { - baseName = name; + + String tmp1 = name; + + // Convert Context names and display names to base names + + // Strip off any leading "/" + if (tmp1.startsWith("/")) { + tmp1 = tmp1.substring(1); + } + + // Replace any remaining / + tmp1.replaceAll("/", FWD_SLASH_REPLACEMENT); + + // Insert the ROOT name if required + if (tmp1.startsWith(VERSION_MARKER) || "".equals(tmp1)) { + tmp1 = ROOT_NAME + tmp1; } - String tmp; + // Remove any file extensions + if (tmp1.toLowerCase(Locale.ENGLISH).endsWith(".war") || + tmp1.toLowerCase(Locale.ENGLISH).endsWith(".xml")) { + tmp1 = tmp1.substring(0, tmp1.length() -4); + } + + baseName = tmp1; + + String tmp2; // Extract version number int versionIndex = baseName.indexOf(VERSION_MARKER); if (versionIndex > -1) { version = baseName.substring(versionIndex + 2); - tmp = baseName.substring(0, versionIndex); + tmp2 = baseName.substring(0, versionIndex); } else { version = ""; - tmp = baseName; + tmp2 = baseName; } - if (ROOT_NAME.equals(tmp)) { + if (ROOT_NAME.equals(tmp2)) { path = ""; } else { - path = "/" + tmp.replaceAll(FWD_SLASH_REPLACEMENT, "/"); + path = "/" + tmp2.replaceAll(FWD_SLASH_REPLACEMENT, "/"); } if (versionIndex > -1) { 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=1041356&r1=1041355&r2=1041356&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/catalina/util/TestContextName.java (original) +++ tomcat/trunk/test/org/apache/catalina/util/TestContextName.java Thu Dec 2 12:56:56 2010 @@ -137,4 +137,41 @@ public class TestContextName extends Tes assertEquals("/foo/bar##E", cn16.getDisplayName()); } + public void testConstructorStringWithName() { + assertEquals("", new ContextName(cn1.getName()).getName()); + assertEquals("", new ContextName(cn2.getName()).getName()); + assertEquals("", new ContextName(cn3.getName()).getName()); + assertEquals("/foo", new ContextName(cn4.getName()).getName()); + assertEquals("/foo/bar", new ContextName(cn5.getName()).getName()); + assertEquals("##A", new ContextName(cn6.getName()).getName()); + assertEquals("##B", new ContextName(cn7.getName()).getName()); + assertEquals("##C", new ContextName(cn8.getName()).getName()); + assertEquals("/foo##D", new ContextName(cn9.getName()).getName()); + assertEquals("/foo/bar##E", new ContextName(cn10.getName()).getName()); + assertEquals("", new ContextName(cn11.getName()).getName()); + assertEquals("/foo", new ContextName(cn12.getName()).getName()); + assertEquals("/foo/bar", new ContextName(cn13.getName()).getName()); + assertEquals("##A", new ContextName(cn14.getName()).getName()); + assertEquals("/foo##D", new ContextName(cn15.getName()).getName()); + assertEquals("/foo/bar##E", new ContextName(cn16.getName()).getName()); + } + + public void testConstructorStringWithDisplayName() { + assertEquals("", new ContextName(cn1.getDisplayName()).getName()); + assertEquals("", new ContextName(cn2.getDisplayName()).getName()); + assertEquals("", new ContextName(cn3.getDisplayName()).getName()); + assertEquals("/foo", new ContextName(cn4.getDisplayName()).getName()); + assertEquals("/foo/bar", new ContextName(cn5.getDisplayName()).getName()); + assertEquals("##A", new ContextName(cn6.getDisplayName()).getName()); + assertEquals("##B", new ContextName(cn7.getDisplayName()).getName()); + assertEquals("##C", new ContextName(cn8.getDisplayName()).getName()); + assertEquals("/foo##D", new ContextName(cn9.getDisplayName()).getName()); + assertEquals("/foo/bar##E", new ContextName(cn10.getDisplayName()).getName()); + assertEquals("", new ContextName(cn11.getDisplayName()).getName()); + assertEquals("/foo", new ContextName(cn12.getDisplayName()).getName()); + assertEquals("/foo/bar", new ContextName(cn13.getDisplayName()).getName()); + assertEquals("##A", new ContextName(cn14.getDisplayName()).getName()); + assertEquals("/foo##D", new ContextName(cn15.getDisplayName()).getName()); + assertEquals("/foo/bar##E", new ContextName(cn16.getDisplayName()).getName()); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org For additional commands, e-mail: dev-help@tomcat.apache.org