Return-Path: Delivered-To: apmail-jakarta-commons-dev-archive@www.apache.org Received: (qmail 5736 invoked from network); 9 Feb 2004 20:31:45 -0000 Received: from daedalus.apache.org (HELO mail.apache.org) (208.185.179.12) by minotaur-2.apache.org with SMTP; 9 Feb 2004 20:31:45 -0000 Received: (qmail 71471 invoked by uid 500); 9 Feb 2004 20:30:27 -0000 Delivered-To: apmail-jakarta-commons-dev-archive@jakarta.apache.org Received: (qmail 71443 invoked by uid 500); 9 Feb 2004 20:30:26 -0000 Mailing-List: contact commons-dev-help@jakarta.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Help: List-Post: List-Id: "Jakarta Commons Developers List" Reply-To: "Jakarta Commons Developers List" Delivered-To: mailing list commons-dev@jakarta.apache.org Received: (qmail 71372 invoked by uid 500); 9 Feb 2004 20:30:26 -0000 Received: (qmail 71319 invoked from network); 9 Feb 2004 20:30:25 -0000 Received: from unknown (HELO minotaur.apache.org) (209.237.227.194) by daedalus.apache.org with SMTP; 9 Feb 2004 20:30:25 -0000 Received: (qmail 4668 invoked by uid 1289); 9 Feb 2004 20:30:35 -0000 Date: 9 Feb 2004 20:30:35 -0000 Message-ID: <20040209203035.4667.qmail@minotaur.apache.org> From: rdonkin@apache.org To: jakarta-commons-cvs@apache.org Subject: cvs commit: jakarta-commons/digester/src/test/org/apache/commons/digester EBRTestCase.java X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N rdonkin 2004/02/09 12:30:35 Modified: digester/src/java/org/apache/commons/digester ExtendedBaseRules.java digester/src/test/org/apache/commons/digester EBRTestCase.java Log: Fixed a bug in extended rules set. Revision Changes Path 1.11 +24 -10 jakarta-commons/digester/src/java/org/apache/commons/digester/ExtendedBaseRules.java Index: ExtendedBaseRules.java =================================================================== RCS file: /home/cvs/jakarta-commons/digester/src/java/org/apache/commons/digester/ExtendedBaseRules.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- ExtendedBaseRules.java 10 Jan 2004 17:34:18 -0000 1.10 +++ ExtendedBaseRules.java 9 Feb 2004 20:30:34 -0000 1.11 @@ -327,13 +327,27 @@ } else if (key.endsWith("/*")) { // check for ancester match - int patternStart = 0; if (key.startsWith("*/")) { - patternStart = 2; - } - ancesterMatched = - (pattern.lastIndexOf(key.substring(patternStart, key.length() - 2)) > -1); - + String patternBody = key.substring(2, key.length() - 2); + if (pattern.endsWith(patternBody)) { + ancesterMatched = true; + } else { + ancesterMatched = (pattern.indexOf(patternBody + "/") > -1); + } + } else { + String bodyPattern = key.substring(0, key.length() - 2); + if (pattern.startsWith(bodyPattern)) + { + if (pattern.length() == bodyPattern.length()) { + // exact match + ancesterMatched = true; + } else { + ancesterMatched = ( pattern.charAt(bodyPattern.length()) == '/' ); + } + } else { + ancesterMatched = false; + } + } } else { // try for a base match basicMatched = basicMatch(key, pattern); 1.12 +26 -4 jakarta-commons/digester/src/test/org/apache/commons/digester/EBRTestCase.java Index: EBRTestCase.java =================================================================== RCS file: /home/cvs/jakarta-commons/digester/src/test/org/apache/commons/digester/EBRTestCase.java,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- EBRTestCase.java 18 Oct 2003 13:30:22 -0000 1.11 +++ EBRTestCase.java 9 Feb 2004 20:30:34 -0000 1.12 @@ -467,4 +467,26 @@ list = digester.getRules().match(null, "a/b/c/d"); assertEquals("Long match (4)", 0, list.size()); } + + public void testInstructors() { + digester.getRules().clear(); + + digester.addRule("!instructors/*", new TestRule("instructors")); + digester.addRule("!instructor/*", new TestRule("instructor")); + + List list = digester.getRules().match(null, "instructors"); + assertEquals("Only expect to match instructors", 1, list.size()); + assertEquals("Instructors expected", "instructors" , ((TestRule) list.get(0)).getIdentifier()); + + } + + public void testMiddleInstructors() { + digester.getRules().clear(); + + digester.addRule("!instructors/*", new TestRule("instructors")); + + List list = digester.getRules().match(null, "/tosh/instructors/fiddlesticks"); + assertEquals("No matches expected", 0, list.size()); + + } } --------------------------------------------------------------------- To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org For additional commands, e-mail: commons-dev-help@jakarta.apache.org