This is an automated email from the ASF dual-hosted git repository.
bamaer pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/hop.git
The following commit(s) were added to refs/heads/main by this push:
new fc0e2d3ae8 Trim non-breaking spaces in input values (#9193)
fc0e2d3ae8 is described below
commit fc0e2d3ae821d4cf5cd680c395f041a7f701a197
Author: Gabriel Dutra <[email protected]>
AuthorDate: Sun Nov 1 00:39:02 2026 -0700
Trim non-breaking spaces in input values (#9193)
---
core/src/main/java/org/apache/hop/core/Const.java | 7 ++++++-
.../apache/hop/core/row/value/ValueMetaBaseTest.java | 19 +++++++++++++++++++
.../pipeline/transforms/jsoninput/JsonInputTest.java | 18 ++++++++++++++++++
3 files changed, 43 insertions(+), 1 deletion(-)
diff --git a/core/src/main/java/org/apache/hop/core/Const.java
b/core/src/main/java/org/apache/hop/core/Const.java
index 765e29eb4f..879a29c9cc 100644
--- a/core/src/main/java/org/apache/hop/core/Const.java
+++ b/core/src/main/java/org/apache/hop/core/Const.java
@@ -1752,7 +1752,12 @@ public class Const {
* @return true if the character is a variables. false otherwise.
*/
public static boolean isSpace(char c) {
- return c == ' ' || c == '\t' || c == '\r' || c == '\n' ||
Character.isWhitespace(c);
+ return c == ' '
+ || c == '\t'
+ || c == '\r'
+ || c == '\n'
+ || Character.isWhitespace(c)
+ || Character.isSpaceChar(c);
}
/**
diff --git
a/core/src/test/java/org/apache/hop/core/row/value/ValueMetaBaseTest.java
b/core/src/test/java/org/apache/hop/core/row/value/ValueMetaBaseTest.java
index e07d8a92f7..b24050c45e 100644
--- a/core/src/test/java/org/apache/hop/core/row/value/ValueMetaBaseTest.java
+++ b/core/src/test/java/org/apache/hop/core/row/value/ValueMetaBaseTest.java
@@ -586,6 +586,25 @@ class ValueMetaBaseTest {
"\t\r\n value \n\r\t", inMeta, null, null,
IValueMeta.TRIM_TYPE_BOTH));
}
+ @Test
+ void testConvertDataFromStringTrimsNonBreakingSpaces() throws
HopValueException {
+ ValueMetaBase inMeta = new ValueMetaString();
+ ValueMetaBase outMeta = new ValueMetaString();
+ String input = "\u00A0value\u00A0";
+
+ assertEquals(
+ "value",
+ outMeta.convertDataFromString(input, inMeta, null, null,
IValueMeta.TRIM_TYPE_BOTH));
+ assertEquals(
+ "value\u00A0",
+ outMeta.convertDataFromString(input, inMeta, null, null,
IValueMeta.TRIM_TYPE_LEFT));
+ assertEquals(
+ "\u00A0value",
+ outMeta.convertDataFromString(input, inMeta, null, null,
IValueMeta.TRIM_TYPE_RIGHT));
+ assertEquals(
+ input, outMeta.convertDataFromString(input, inMeta, null, null,
IValueMeta.TRIM_TYPE_NONE));
+ }
+
@Test
void testConvertDataFromStringTrimsBeforeNumericParsing() throws
HopValueException {
ValueMetaBase inMeta = new ValueMetaString();
diff --git
a/plugins/transforms/json/src/test/java/org/apache/hop/pipeline/transforms/jsoninput/JsonInputTest.java
b/plugins/transforms/json/src/test/java/org/apache/hop/pipeline/transforms/jsoninput/JsonInputTest.java
index ca49eb6752..e70c8e5464 100644
---
a/plugins/transforms/json/src/test/java/org/apache/hop/pipeline/transforms/jsoninput/JsonInputTest.java
+++
b/plugins/transforms/json/src/test/java/org/apache/hop/pipeline/transforms/jsoninput/JsonInputTest.java
@@ -216,6 +216,24 @@ class JsonInputTest {
new Object[][] {new Object[] {jsonInputField, "red"}});
}
+ @Test
+ void testTrimNonBreakingSpaces() throws Exception {
+ String input = "{\"city\":\"\u00A0GAYE\u00A0\"}";
+ JsonInputField city = new JsonInputField("city");
+ city.setPath("$.city");
+ city.setType(IValueMeta.TYPE_STRING);
+ city.setTrimType(IValueMeta.TRIM_TYPE_BOTH);
+
+ JsonInput jsonInput =
+ createJsonInput("json", createSimpleMeta("json", city), new Object[]
{input});
+ jsonInput.addRowListener(new RowComparatorListener(new Object[] {input,
"GAYE"}));
+
+ processRows(jsonInput, 2);
+
+ assertEquals(1, jsonInput.getLinesWritten(), "rows written");
+ assertEquals(0, jsonInput.getErrors(), "errors");
+ }
+
@Test
void testIndex() throws Exception {
final String jsonInputField = getBasicTestJson();