Return-Path: Delivered-To: apmail-cocoon-cvs-archive@www.apache.org Received: (qmail 12405 invoked from network); 25 Jul 2008 13:12:58 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 25 Jul 2008 13:12:58 -0000 Received: (qmail 17974 invoked by uid 500); 25 Jul 2008 13:12:57 -0000 Delivered-To: apmail-cocoon-cvs-archive@cocoon.apache.org Received: (qmail 17931 invoked by uid 500); 25 Jul 2008 13:12:57 -0000 Mailing-List: contact cvs-help@cocoon.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@cocoon.apache.org list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list cvs@cocoon.apache.org Received: (qmail 17922 invoked by uid 99); 25 Jul 2008 13:12:57 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 25 Jul 2008 06:12:57 -0700 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; Fri, 25 Jul 2008 13:12:11 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id D575723889FF; Fri, 25 Jul 2008 06:12:06 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r679793 - in /cocoon/whiteboard/corona/trunk: corona-sample-webapp/src/test/java/org/apache/cocoon/corona/it/ corona-sample/src/main/resources/COB-INF/ corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/matcher/ corona-sitemap/sr... Date: Fri, 25 Jul 2008 13:12:05 -0000 To: cvs@cocoon.apache.org From: reinhard@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20080725131206.D575723889FF@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: reinhard Date: Fri Jul 25 06:12:04 2008 New Revision: 679793 URL: http://svn.apache.org/viewvc?rev=679793&view=rev Log: . add an example with an empty element . add a regexp negative lookahead sample (regexp) . check if there is a separating character between named parameters (otherwise ** matchers would be generated) Modified: cocoon/whiteboard/corona/trunk/corona-sample-webapp/src/test/java/org/apache/cocoon/corona/it/MatcherTest.java cocoon/whiteboard/corona/trunk/corona-sample/src/main/resources/COB-INF/overview.html cocoon/whiteboard/corona/trunk/corona-sample/src/main/resources/COB-INF/sitemap.xmap cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/matcher/WildcardMatcher.java cocoon/whiteboard/corona/trunk/corona-sitemap/src/test/java/org/apache/cocoon/corona/sitemap/matcher/WildcardMatcherTest.java Modified: cocoon/whiteboard/corona/trunk/corona-sample-webapp/src/test/java/org/apache/cocoon/corona/it/MatcherTest.java URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-sample-webapp/src/test/java/org/apache/cocoon/corona/it/MatcherTest.java?rev=679793&r1=679792&r2=679793&view=diff ============================================================================== --- cocoon/whiteboard/corona/trunk/corona-sample-webapp/src/test/java/org/apache/cocoon/corona/it/MatcherTest.java (original) +++ cocoon/whiteboard/corona/trunk/corona-sample-webapp/src/test/java/org/apache/cocoon/corona/it/MatcherTest.java Fri Jul 25 06:12:04 2008 @@ -76,6 +76,8 @@ this.assertXPath("/html/body/p[text() = '4']", "4"); this.assertXPath("/html/body/p[text() = '5']", ""); this.assertXPath("/html/body/p[text() = '6']", "6"); + this.assertXPath("/html/body/p[text() = '7']", "7"); + this.assertXPath("/html/body/p[text() = '8']", ""); } public void testDeeplyNestedMatcherSelector2() throws Exception { @@ -88,10 +90,12 @@ this.assertXPath("/html/body/p[text() = '4']", ""); this.assertXPath("/html/body/p[text() = '5']", ""); this.assertXPath("/html/body/p[text() = '6']", "6"); + this.assertXPath("/html/body/p[text() = '7']", "7"); + this.assertXPath("/html/body/p[text() = '8']", ""); } public void testDeeplyNestedMatcherSelector3() throws Exception { - this.loadXmlPage("advanced-matching-4?param_a=1¶m_b=2¶m_e=1"); + this.loadXmlPage("advanced-matching-4?param_a=1¶m_b=2¶m_e=1¶m_g=2"); assertTrue(this.response.getStatusCode() == 200); assertEquals("text/xml", this.response.getContentType()); this.assertXPath("/html/body/p[text() = '1']", "1"); @@ -100,6 +104,22 @@ this.assertXPath("/html/body/p[text() = '4']", ""); this.assertXPath("/html/body/p[text() = '5']", "5"); this.assertXPath("/html/body/p[text() = '6']", "6"); + this.assertXPath("/html/body/p[text() = '7']", "7"); + this.assertXPath("/html/body/p[text() = '8']", "8"); + } + + public void testDeeplyNestedMatcherSelector4() throws Exception { + this.loadXmlPage("advanced-matching-4?param_g=1"); + assertTrue(this.response.getStatusCode() == 200); + assertEquals("text/xml", this.response.getContentType()); + this.assertXPath("/html/body/p[text() = '1']", "1"); + this.assertXPath("/html/body/p[text() = '2']", ""); + this.assertXPath("/html/body/p[text() = '3']", ""); + this.assertXPath("/html/body/p[text() = '4']", ""); + this.assertXPath("/html/body/p[text() = '5']", ""); + this.assertXPath("/html/body/p[text() = '6']", ""); + this.assertXPath("/html/body/p[text() = '7']", "7"); + this.assertXPath("/html/body/p[text() = '8']", ""); } } Modified: cocoon/whiteboard/corona/trunk/corona-sample/src/main/resources/COB-INF/overview.html URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-sample/src/main/resources/COB-INF/overview.html?rev=679793&r1=679792&r2=679793&view=diff ============================================================================== --- cocoon/whiteboard/corona/trunk/corona-sample/src/main/resources/COB-INF/overview.html (original) +++ cocoon/whiteboard/corona/trunk/corona-sample/src/main/resources/COB-INF/overview.html Fri Jul 25 06:12:04 2008 @@ -18,7 +18,7 @@ Corona Samples and Integration Tests: Overview - +

Corona Samples and Integration Tests: Overview

Modified: cocoon/whiteboard/corona/trunk/corona-sample/src/main/resources/COB-INF/sitemap.xmap URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-sample/src/main/resources/COB-INF/sitemap.xmap?rev=679793&r1=679792&r2=679793&view=diff ============================================================================== --- cocoon/whiteboard/corona/trunk/corona-sample/src/main/resources/COB-INF/sitemap.xmap (original) +++ cocoon/whiteboard/corona/trunk/corona-sample/src/main/resources/COB-INF/sitemap.xmap Fri Jul 25 06:12:04 2008 @@ -279,6 +279,21 @@ + + + + + + + + + + + + + + + Modified: cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/matcher/WildcardMatcher.java URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/matcher/WildcardMatcher.java?rev=679793&r1=679792&r2=679793&view=diff ============================================================================== --- cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/matcher/WildcardMatcher.java (original) +++ cocoon/whiteboard/corona/trunk/corona-sitemap/src/main/java/org/apache/cocoon/corona/sitemap/matcher/WildcardMatcher.java Fri Jul 25 06:12:04 2008 @@ -81,6 +81,7 @@ public WildcardExpressionRewriter(String originalExpression) { super(); this.originalExpression = originalExpression; + this.checkExpression(); this.parameterAndWildcardMatcher = PARAMETER_WILDCARD_PATTERN.matcher(originalExpression); this.parameterMatcher = PARAMETER_PATTERN.matcher(originalExpression); @@ -104,6 +105,13 @@ return this.rewrittenExpression; } + private void checkExpression() { + if (this.originalExpression.contains("}{")) { + throw new UnsupportedNamedWildcardExpressionException("}{ is not allowed (" + this.originalExpression + + "). There must be a seperating character between two named wildcards."); + } + } + private Map findParameters() { Map parameterNames = new HashMap(); @@ -127,6 +135,12 @@ private String rewriteExpression() { return this.parameterMatcher.replaceAll("*"); } + } + + public static class UnsupportedNamedWildcardExpressionException extends RuntimeException { + public UnsupportedNamedWildcardExpressionException(String msg) { + super(msg); + } } } Modified: cocoon/whiteboard/corona/trunk/corona-sitemap/src/test/java/org/apache/cocoon/corona/sitemap/matcher/WildcardMatcherTest.java URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-sitemap/src/test/java/org/apache/cocoon/corona/sitemap/matcher/WildcardMatcherTest.java?rev=679793&r1=679792&r2=679793&view=diff ============================================================================== --- cocoon/whiteboard/corona/trunk/corona-sitemap/src/test/java/org/apache/cocoon/corona/sitemap/matcher/WildcardMatcherTest.java (original) +++ cocoon/whiteboard/corona/trunk/corona-sitemap/src/test/java/org/apache/cocoon/corona/sitemap/matcher/WildcardMatcherTest.java Fri Jul 25 06:12:04 2008 @@ -20,6 +20,7 @@ import junit.framework.Assert; +import org.apache.cocoon.corona.sitemap.matcher.WildcardMatcher.UnsupportedNamedWildcardExpressionException; import org.apache.cocoon.corona.sitemap.matcher.WildcardMatcher.WildcardExpressionRewriter; import org.junit.Test; @@ -68,4 +69,16 @@ WildcardExpressionRewriter rewriter = new WildcardExpressionRewriter("abc/{name}/*/{id}.html"); Assert.assertEquals("abc/*/*/*.html", rewriter.getRewrittenExpression()); } + + @Test + public void testWrongNamedParameters() { + try { + new WildcardMatcher().match("*/{name}{id}", "abc/def/ghi"); + Assert.fail("}{ is not allowed without some character in between " + + "because this would be translated into a '**' which has a different meaning"); + } catch (UnsupportedNamedWildcardExpressionException e) { + // expected + } + + } }