You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by el...@apache.org on 2026/08/20 20:45:27 UTC
(maven-filtering) branch master updated: Fix setEscapeString(null) to clear escape state (#373)
This is an automated email from the ASF dual-hosted git repository.
elharo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-filtering.git
The following commit(s) were added to refs/heads/master by this push:
new d39618d Fix setEscapeString(null) to clear escape state (#373)
d39618d is described below
commit d39618d73e54d30601bfe97233dab4caf72581fa
Author: Elliotte Rusty Harold <el...@users.noreply.github.com>
AuthorDate: Thu Aug 20 16:45:22 2026 -0400
Fix setEscapeString(null) to clear escape state (#373)
setEscapeString(null) and setEscapeString("") were silently ignored,
leaving the previous escape string and useEscape flag intact. A caller
who sets escape string to non-null, then later sets it to null to
disable escaping, would find escaping still active with the old string.
Fix by clearing escapeString to null and useEscape to false when the
input is null or empty, and always call calculateMarkLength().
Also added tests verifying both null and empty string disable escaping.
Closes #351
---
.../filtering/AbstractFilterReaderLineEnding.java | 6 ++--
.../InterpolatorFilterReaderLineEndingTest.java | 32 ++++++++++++++++++++++
2 files changed, 36 insertions(+), 2 deletions(-)
diff --git a/src/main/java/org/apache/maven/shared/filtering/AbstractFilterReaderLineEnding.java b/src/main/java/org/apache/maven/shared/filtering/AbstractFilterReaderLineEnding.java
index f47de4c..343eaf0 100644
--- a/src/main/java/org/apache/maven/shared/filtering/AbstractFilterReaderLineEnding.java
+++ b/src/main/java/org/apache/maven/shared/filtering/AbstractFilterReaderLineEnding.java
@@ -65,12 +65,14 @@ public abstract class AbstractFilterReaderLineEnding extends FilterReader {
* @param escapeString Set the value of the escape string.
*/
public void setEscapeString(String escapeString) {
- // TODO NPE if escapeString is null ?
if (escapeString != null && !escapeString.isEmpty()) {
this.escapeString = escapeString;
this.useEscape = true;
- calculateMarkLength();
+ } else {
+ this.escapeString = null;
+ this.useEscape = false;
}
+ calculateMarkLength();
}
/**
diff --git a/src/test/java/org/apache/maven/shared/filtering/InterpolatorFilterReaderLineEndingTest.java b/src/test/java/org/apache/maven/shared/filtering/InterpolatorFilterReaderLineEndingTest.java
index 37e1a46..a1444fc 100644
--- a/src/test/java/org/apache/maven/shared/filtering/InterpolatorFilterReaderLineEndingTest.java
+++ b/src/test/java/org/apache/maven/shared/filtering/InterpolatorFilterReaderLineEndingTest.java
@@ -19,9 +19,17 @@
package org.apache.maven.shared.filtering;
import java.io.Reader;
+import java.io.StringReader;
import org.codehaus.plexus.interpolation.Interpolator;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.junit.jupiter.MockitoExtension;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
+
+@ExtendWith(MockitoExtension.class)
public class InterpolatorFilterReaderLineEndingTest extends AbstractInterpolatorFilterReaderLineEndingTest {
@Override
protected Reader getAaaAaaReader(Reader in, Interpolator interpolator) {
@@ -48,4 +56,28 @@ public class InterpolatorFilterReaderLineEndingTest extends AbstractInterpolator
reader.setEscapeString(escapeString);
return reader;
}
+
+ @Test
+ public void setEscapeStringNullShouldDisableEscaping() throws Exception {
+ InterpolatorFilterReaderLineEnding reader =
+ new InterpolatorFilterReaderLineEnding(new StringReader("\\${a}"), null, "${", "}", true);
+ reader.setEscapeString("\\");
+ assertEquals("\\", reader.getEscapeString());
+
+ // Now disable escaping by setting to null
+ reader.setEscapeString(null);
+ assertNull(reader.getEscapeString());
+ }
+
+ @Test
+ public void setEscapeStringEmptyShouldDisableEscaping() throws Exception {
+ InterpolatorFilterReaderLineEnding reader =
+ new InterpolatorFilterReaderLineEnding(new StringReader("\\${a}"), null, "${", "}", true);
+ reader.setEscapeString("\\");
+ assertEquals("\\", reader.getEscapeString());
+
+ // Now disable escaping by setting to empty string
+ reader.setEscapeString("");
+ assertNull(reader.getEscapeString());
+ }
}