rdonkin     2003/07/31 14:59:00

  Modified:    digester/src/java/org/apache/commons/digester RulesBase.java
               digester/src/test/org/apache/commons/digester
                        RulesBaseTestCase.java
  Log:
  Added code that corrects paths when a user has accidentally added a / at the end of 
a pattern.
  
  Revision  Changes    Path
  1.12      +11 -5     
jakarta-commons/digester/src/java/org/apache/commons/digester/RulesBase.java
  
  Index: RulesBase.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/digester/src/java/org/apache/commons/digester/RulesBase.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- RulesBase.java    2 Feb 2003 16:09:53 -0000       1.11
  +++ RulesBase.java    31 Jul 2003 21:59:00 -0000      1.12
  @@ -191,7 +191,13 @@
        * @param rule Rule instance to be registered
        */
       public void add(String pattern, Rule rule) {
  -
  +        // to help users who accidently add '/' to the end of their patterns
  +        int patternLength = pattern.length();
  +        if (patternLength>1 && pattern.endsWith("/")) {
  +            pattern = pattern.substring(0, patternLength-1);
  +        }
  +        
  +        
           List list = (List) cache.get(pattern);
           if (list == null) {
               list = new ArrayList();
  
  
  
  1.8       +29 -4     
jakarta-commons/digester/src/test/org/apache/commons/digester/RulesBaseTestCase.java
  
  Index: RulesBaseTestCase.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/digester/src/test/org/apache/commons/digester/RulesBaseTestCase.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- RulesBaseTestCase.java    2 Feb 2003 15:52:14 -0000       1.7
  +++ RulesBaseTestCase.java    31 Jul 2003 21:59:00 -0000      1.8
  @@ -329,4 +329,29 @@
           digester.getRules().clear();
   
       }
  +    
  +    /** Tests the behaviour when a rule is added with a trailing slash*/
  +    public void testTrailingSlash() {
  +        // clear any existing rules
  +        digester.getRules().clear();
  +
  +        assertEquals("Initial rules list is empty",
  +                0, digester.getRules().rules().size());
  +
  +        // Set up rules
  +        digester.addRule("alpha/beta/gamma/", new TestRule("one"));
  +        digester.addRule("alpha/beta/", new TestRule("two"));
  +        digester.addRule("beta/gamma/alpha", new TestRule("three"));
  +
  +        // test that rules are returned in set order
  +        List list = digester.getRules().match(null, "alpha/beta/gamma");
  +
  +        assertEquals("Testing number of matches", 1, list.size());
  +
  +        Iterator it = list.iterator();
  +        assertEquals("Testing ordering (A)", "one", ((TestRule) 
it.next()).getIdentifier());
  +
  +        // clean up
  +        digester.getRules().clear();  
  +    }
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to