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() {