bodewig     2003/03/28 06:52:24

  Modified:    src/main/org/apache/tools/ant/util/regexp
                        JakartaOroMatcher.java JakartaRegexpMatcher.java
                        Jdk14RegexpMatcher.java
               src/testcases/org/apache/tools/ant/util/regexp
                        RegexpMatcherTest.java
  Log:
  Insert empty strings instead of "null" for groups that didn't match.
  
  PR: 14619
  
  Revision  Changes    Path
  1.12      +7 -2      
ant/src/main/org/apache/tools/ant/util/regexp/JakartaOroMatcher.java
  
  Index: JakartaOroMatcher.java
  ===================================================================
  RCS file: 
/home/cvs/ant/src/main/org/apache/tools/ant/util/regexp/JakartaOroMatcher.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- JakartaOroMatcher.java    7 Mar 2003 11:23:09 -0000       1.11
  +++ JakartaOroMatcher.java    28 Mar 2003 14:52:23 -0000      1.12
  @@ -1,7 +1,7 @@
   /*
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 2000-2002 The Apache Software Foundation.  All rights 
  + * Copyright (c) 2000-2003 The Apache Software Foundation.  All rights 
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -144,7 +144,12 @@
           MatchResult mr = matcher.getMatch();
           int cnt = mr.groups();
           for (int i = 0; i < cnt; i++) {
  -            v.addElement(mr.group(i));
  +            String match = mr.group(i);
  +            // treat non-matching groups as empty matches
  +            if (match == null) {
  +                match = "";
  +            }
  +            v.addElement(match);
           }
           return v;
       }
  
  
  
  1.14      +7 -2      
ant/src/main/org/apache/tools/ant/util/regexp/JakartaRegexpMatcher.java
  
  Index: JakartaRegexpMatcher.java
  ===================================================================
  RCS file: 
/home/cvs/ant/src/main/org/apache/tools/ant/util/regexp/JakartaRegexpMatcher.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- JakartaRegexpMatcher.java 7 Mar 2003 11:23:09 -0000       1.13
  +++ JakartaRegexpMatcher.java 28 Mar 2003 14:52:23 -0000      1.14
  @@ -1,7 +1,7 @@
   /*
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 2000-2002 The Apache Software Foundation.  All rights 
  + * Copyright (c) 2000-2003 The Apache Software Foundation.  All rights 
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -133,7 +133,12 @@
           Vector v = new Vector();
           int cnt = reg.getParenCount();
           for (int i = 0; i < cnt; i++) {
  -            v.addElement(reg.getParen(i));
  +            String match = reg.getParen(i);
  +            // treat non-matching groups as empty matches
  +            if (match == null) {
  +                match = "";
  +            }
  +            v.addElement(match);
           }
           return v;
       }
  
  
  
  1.13      +7 -2      
ant/src/main/org/apache/tools/ant/util/regexp/Jdk14RegexpMatcher.java
  
  Index: Jdk14RegexpMatcher.java
  ===================================================================
  RCS file: 
/home/cvs/ant/src/main/org/apache/tools/ant/util/regexp/Jdk14RegexpMatcher.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- Jdk14RegexpMatcher.java   7 Mar 2003 11:23:09 -0000       1.12
  +++ Jdk14RegexpMatcher.java   28 Mar 2003 14:52:23 -0000      1.13
  @@ -1,7 +1,7 @@
   /*
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 2001-2002 The Apache Software Foundation.  All rights 
  + * Copyright (c) 2001-2003 The Apache Software Foundation.  All rights 
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -144,7 +144,12 @@
           Vector v = new Vector();
           int cnt = matcher.groupCount();
           for (int i = 0; i <= cnt; i++) {
  -            v.addElement(matcher.group(i));
  +            String match = matcher.group(i);
  +            // treat non-matching groups as empty matches
  +            if (match == null) {
  +                match = "";
  +            }
  +            v.addElement(match);
           }
           return v;
       }
  
  
  
  1.15      +11 -1     
ant/src/testcases/org/apache/tools/ant/util/regexp/RegexpMatcherTest.java
  
  Index: RegexpMatcherTest.java
  ===================================================================
  RCS file: 
/home/cvs/ant/src/testcases/org/apache/tools/ant/util/regexp/RegexpMatcherTest.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- RegexpMatcherTest.java    7 Mar 2003 11:23:15 -0000       1.14
  +++ RegexpMatcherTest.java    28 Mar 2003 14:52:23 -0000      1.15
  @@ -1,7 +1,7 @@
   /*
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 2000-2002 The Apache Software Foundation.  All rights
  + * Copyright (c) 2000-2003 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -131,6 +131,16 @@
           assertEquals("aabb", (String) v.elementAt(0));
           assertEquals("aa", (String) v.elementAt(1));
           assertEquals("b", (String) v.elementAt(2));
  +    }
  +
  +    public void testBugzillaReport14619() {
  +        reg.setPattern("^(.*)/src/((.*/)*)([a-zA-Z0-9_\\.]+)\\.java$");
  +        Vector v = reg.getGroups("de/tom/src/Google.java");
  +        assertEquals(5, v.size());
  +        assertEquals("de/tom", v.elementAt(1));
  +        assertEquals("", v.elementAt(2));
  +        assertEquals("", v.elementAt(3));
  +        assertEquals("Google", v.elementAt(4));
       }
   
       public void testCaseInsensitiveMatch() {
  
  
  

Reply via email to