Return-Path: Delivered-To: apmail-incubator-sling-commits-archive@locus.apache.org Received: (qmail 6450 invoked from network); 4 Feb 2008 13:17:57 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 4 Feb 2008 13:17:57 -0000 Received: (qmail 57658 invoked by uid 500); 4 Feb 2008 13:17:48 -0000 Delivered-To: apmail-incubator-sling-commits-archive@incubator.apache.org Received: (qmail 57646 invoked by uid 500); 4 Feb 2008 13:17:48 -0000 Mailing-List: contact sling-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: sling-dev@incubator.apache.org Delivered-To: mailing list sling-commits@incubator.apache.org Received: (qmail 57637 invoked by uid 99); 4 Feb 2008 13:17:48 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 04 Feb 2008 05:17:48 -0800 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 04 Feb 2008 13:17:28 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id F244D1A9832; Mon, 4 Feb 2008 05:17:32 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r618270 - in /incubator/sling/trunk/jcr/resource/src: main/java/org/apache/sling/jcr/resource/JcrResourceUtil.java test/java/org/apache/sling/jcr/resource/JcrResourceUtilTest.java Date: Mon, 04 Feb 2008 13:17:30 -0000 To: sling-commits@incubator.apache.org From: fmeschbe@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20080204131734.F244D1A9832@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: fmeschbe Date: Mon Feb 4 05:17:27 2008 New Revision: 618270 URL: http://svn.apache.org/viewvc?rev=618270&view=rev Log: * Prevent NullPointerException in getParent if path normalization returns null * Do not return leading slash for getName * Add unit tests for getParent and getName Modified: incubator/sling/trunk/jcr/resource/src/main/java/org/apache/sling/jcr/resource/JcrResourceUtil.java incubator/sling/trunk/jcr/resource/src/test/java/org/apache/sling/jcr/resource/JcrResourceUtilTest.java Modified: incubator/sling/trunk/jcr/resource/src/main/java/org/apache/sling/jcr/resource/JcrResourceUtil.java URL: http://svn.apache.org/viewvc/incubator/sling/trunk/jcr/resource/src/main/java/org/apache/sling/jcr/resource/JcrResourceUtil.java?rev=618270&r1=618269&r2=618270&view=diff ============================================================================== --- incubator/sling/trunk/jcr/resource/src/main/java/org/apache/sling/jcr/resource/JcrResourceUtil.java (original) +++ incubator/sling/trunk/jcr/resource/src/main/java/org/apache/sling/jcr/resource/JcrResourceUtil.java Mon Feb 4 05:17:27 2008 @@ -184,7 +184,7 @@ path = normalize(path); // if normalized to root, there is no parent - if ("/".equals(path)) { + if (path == null || "/".equals(path)) { return null; } @@ -193,6 +193,9 @@ if (lastSlash < 0) { // no slash in the path return null; + } else if (lastSlash == 0) { + // parent is root + return "/"; } return path.substring(0, lastSlash); @@ -223,8 +226,7 @@ } // find the last slash - int lastSlash = path.lastIndexOf('/'); - return (lastSlash >= 0) ? path.substring(lastSlash) : path; + return path.substring(path.lastIndexOf('/')+1); } } Modified: incubator/sling/trunk/jcr/resource/src/test/java/org/apache/sling/jcr/resource/JcrResourceUtilTest.java URL: http://svn.apache.org/viewvc/incubator/sling/trunk/jcr/resource/src/test/java/org/apache/sling/jcr/resource/JcrResourceUtilTest.java?rev=618270&r1=618269&r2=618270&view=diff ============================================================================== --- incubator/sling/trunk/jcr/resource/src/test/java/org/apache/sling/jcr/resource/JcrResourceUtilTest.java (original) +++ incubator/sling/trunk/jcr/resource/src/test/java/org/apache/sling/jcr/resource/JcrResourceUtilTest.java Mon Feb 4 05:17:27 2008 @@ -117,4 +117,34 @@ assertEquals("az/bz/cz", JcrResourceUtil.normalize("az/bz/cz")); assertEquals("", JcrResourceUtil.normalize("")); } + + public void testGetParent() { + assertNull(JcrResourceUtil.getParent("/")); + assertNull(JcrResourceUtil.getParent("/..")); + + assertEquals("/", JcrResourceUtil.getParent("/b")); + assertEquals("b/c", JcrResourceUtil.getParent("b/c/d")); + assertEquals("/b/c", JcrResourceUtil.getParent("/b/c/d")); + + assertNull(JcrResourceUtil.getParent("b")); + assertNull(JcrResourceUtil.getParent("/b/..")); + } + + public void testGetName() { + assertEquals("", JcrResourceUtil.getName("/")); + assertEquals("", JcrResourceUtil.getName("/a/..")); + + assertEquals("c", JcrResourceUtil.getName("c")); + assertEquals("c", JcrResourceUtil.getName("/c")); + + assertEquals("c", JcrResourceUtil.getName("b/c")); + assertEquals("c", JcrResourceUtil.getName("/b/c")); + + assertEquals("c", JcrResourceUtil.getName("b/c/")); + assertEquals("c", JcrResourceUtil.getName("/b/c/")); + + assertEquals("b", JcrResourceUtil.getName("b/c/..")); + assertEquals("b", JcrResourceUtil.getName("/b/c/..")); + assertEquals("", JcrResourceUtil.getName("/b/c/../..")); + } }