From c8b3893a88d4aac6e42b8c2f4b2fd89b78d5c8fc Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Mon, 17 Feb 2003 15:47:45 +0000 Subject: [PATCH] Use a non-recursive (well, less recursive, max depth is 2) approach for . PR: 15528 git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@274106 13f79535-47bb-0310-9956-ffa450edef68 --- .../filters/expected/linecontains.test | 3 +++ .../testcases/filters/input/linecontains.test | 6 +++++- .../apache/tools/ant/filters/LineContains.java | 18 +++++++++++++----- .../tools/ant/filters/LineContainsTest.java | 5 +++-- 4 files changed, 24 insertions(+), 8 deletions(-) diff --git a/src/etc/testcases/filters/expected/linecontains.test b/src/etc/testcases/filters/expected/linecontains.test index 75a94b55b..aabaa03ba 100644 --- a/src/etc/testcases/filters/expected/linecontains.test +++ b/src/etc/testcases/filters/expected/linecontains.test @@ -1 +1,4 @@ This is line 2 with beta. +This is line 3 with beta. +This is line 5 with beta. +This is line 7 with beta. diff --git a/src/etc/testcases/filters/input/linecontains.test b/src/etc/testcases/filters/input/linecontains.test index 2600cdb1f..c95b5539f 100644 --- a/src/etc/testcases/filters/input/linecontains.test +++ b/src/etc/testcases/filters/input/linecontains.test @@ -1,3 +1,7 @@ This is line 1 with alpha. This is line 2 with beta. -This is line 3 with gamma. +This is line 3 with beta. +This is line 4 with gamma. +This is line 5 with beta. +This is line 6 with delta. +This is line 7 with beta. diff --git a/src/main/org/apache/tools/ant/filters/LineContains.java b/src/main/org/apache/tools/ant/filters/LineContains.java index 97103b2d0..3a3916b17 100644 --- a/src/main/org/apache/tools/ant/filters/LineContains.java +++ b/src/main/org/apache/tools/ant/filters/LineContains.java @@ -1,7 +1,7 @@ /* * The Apache Software License, Version 1.1 * - * Copyright (c) 2002 The Apache Software Foundation. All rights + * Copyright (c) 2002-2003 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without @@ -143,10 +143,9 @@ public final class LineContains } } else { line = readLine(); - if (line == null) { - ch = -1; - } else { - final int containsSize = contains.size(); + final int containsSize = contains.size(); + + while (line != null) { for (int i = 0; i < containsSize; i++) { String containsStr = (String) contains.elementAt(i); if (line.indexOf(containsStr) == -1) { @@ -155,6 +154,15 @@ public final class LineContains } } + if (line == null) { + // line didn't match + line = readLine(); + } else { + break; + } + } + + if (line != null) { return read(); } } diff --git a/src/testcases/org/apache/tools/ant/filters/LineContainsTest.java b/src/testcases/org/apache/tools/ant/filters/LineContainsTest.java index 768751232..b6412e874 100644 --- a/src/testcases/org/apache/tools/ant/filters/LineContainsTest.java +++ b/src/testcases/org/apache/tools/ant/filters/LineContainsTest.java @@ -1,7 +1,7 @@ /* * The Apache Software License, Version 1.1 * - * Copyright (c) 2002 The Apache Software Foundation. All rights + * Copyright (c) 2002-2003 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without @@ -81,7 +81,8 @@ public class LineContainsTest extends BuildFileTest { executeTarget("testLineContains"); File expected = getProject().resolveFile("expected/linecontains.test"); File result = getProject().resolveFile("result/linecontains.test"); - assertTrue(FileUtils.newFileUtils().contentEquals(expected, result)); + FileUtils fu = FileUtils.newFileUtils(); + assertTrue(fu.contentEquals(expected, result)); } }