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 0e10c5892e remove remaining @InjectionSupported annotations, fixes 
#9120 (#9125)
0e10c5892e is described below

commit 0e10c5892eb3fc17af181dfd4e3c82499791466f
Author: Hans Van Akelyen <[email protected]>
AuthorDate: Wed Oct 28 20:02:57 2026 +0100

    remove remaining @InjectionSupported annotations, fixes #9120 (#9125)
---
 .../transforms/avroinput/AvroFileInputMeta.java    | 14 +++--
 .../transforms/avroinput/AvroInputMetaTest.java    | 15 ++++++
 .../gettablenames/GetTableNamesMeta.java           |  4 --
 .../gettablenames/GetTableNamesMetaTest.java       | 13 +++++
 .../stringoperations/StringOperationsMeta.java     |  2 -
 .../stringoperations/StringOperationsMetaTest.java | 63 ++++++++++++++++++++++
 6 files changed, 100 insertions(+), 11 deletions(-)

diff --git 
a/plugins/tech/avro/src/main/java/org/apache/hop/avro/transforms/avroinput/AvroFileInputMeta.java
 
b/plugins/tech/avro/src/main/java/org/apache/hop/avro/transforms/avroinput/AvroFileInputMeta.java
index 01a3c497ce..2f6c1b5993 100644
--- 
a/plugins/tech/avro/src/main/java/org/apache/hop/avro/transforms/avroinput/AvroFileInputMeta.java
+++ 
b/plugins/tech/avro/src/main/java/org/apache/hop/avro/transforms/avroinput/AvroFileInputMeta.java
@@ -19,7 +19,6 @@ package org.apache.hop.avro.transforms.avroinput;
 
 import org.apache.hop.core.annotations.Transform;
 import org.apache.hop.core.exception.HopTransformException;
-import org.apache.hop.core.injection.InjectionSupported;
 import org.apache.hop.core.row.IRowMeta;
 import org.apache.hop.core.row.IValueMeta;
 import org.apache.hop.core.row.value.ValueMetaAvroRecord;
@@ -38,16 +37,21 @@ import org.apache.hop.pipeline.transform.TransformMeta;
     documentationUrl = "/pipeline/transforms/avro-file-input.html",
     keywords = "i18n::AvroFileInputMeta.keyword",
     excludedEngines = {"SparkPipelineEngine"})
-@InjectionSupported(localizationPrefix = "AvroInputMeta.Injection.")
 public class AvroFileInputMeta extends BaseTransformMeta<AvroFileInput, 
AvroFileInputData> {
 
-  @HopMetadataProperty(key = "output_field")
+  @HopMetadataProperty(
+      key = "output_field",
+      injectionKeyDescription = "AvroFileInputDialog.OutputField.Label")
   private String outputFieldName;
 
-  @HopMetadataProperty(key = "data_filename_field")
+  @HopMetadataProperty(
+      key = "data_filename_field",
+      injectionKeyDescription = "AvroFileInputDialog.FilenameField.Label")
   private String dataFilenameField;
 
-  @HopMetadataProperty(key = "rows_limit")
+  @HopMetadataProperty(
+      key = "rows_limit",
+      injectionKeyDescription = "AvroFileInputDialog.RowsLimit.Label")
   private String rowsLimit;
 
   public AvroFileInputMeta() {
diff --git 
a/plugins/tech/avro/src/test/java/org/apache/hop/avro/transforms/avroinput/AvroInputMetaTest.java
 
b/plugins/tech/avro/src/test/java/org/apache/hop/avro/transforms/avroinput/AvroInputMetaTest.java
index a1213f3060..f52700fe35 100644
--- 
a/plugins/tech/avro/src/test/java/org/apache/hop/avro/transforms/avroinput/AvroInputMetaTest.java
+++ 
b/plugins/tech/avro/src/test/java/org/apache/hop/avro/transforms/avroinput/AvroInputMetaTest.java
@@ -19,6 +19,8 @@ package org.apache.hop.avro.transforms.avroinput;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
+import java.util.Set;
+import org.apache.hop.core.injection.bean.BeanInjectionInfo;
 import org.apache.hop.core.xml.XmlHandler;
 import org.apache.hop.pipeline.transform.TransformMeta;
 import org.junit.jupiter.api.Test;
@@ -53,4 +55,17 @@ class AvroInputMetaTest {
     assertEquals(meta.getOutputFieldName(), verify.getOutputFieldName());
     assertEquals(meta.getDataFilenameField(), verify.getDataFilenameField());
   }
+
+  /** Issue #9120: a class-level @InjectionSupported hid every metadata 
injection key. */
+  @Test
+  void testInjectionMetadata() {
+    BeanInjectionInfo<AvroFileInputMeta> injectionInfo =
+        new BeanInjectionInfo<>(AvroFileInputMeta.class);
+    assertEquals(
+        Set.of("output_field", "data_filename_field", "rows_limit"),
+        injectionInfo.getProperties().keySet());
+    assertEquals(
+        "Avro output field name",
+        
injectionInfo.getProperties().get("output_field").getTranslatedDescription());
+  }
 }
diff --git 
a/plugins/transforms/gettablenames/src/main/java/org/apache/hop/pipeline/transforms/gettablenames/GetTableNamesMeta.java
 
b/plugins/transforms/gettablenames/src/main/java/org/apache/hop/pipeline/transforms/gettablenames/GetTableNamesMeta.java
index 6163d1ed13..64f05fc2ff 100644
--- 
a/plugins/transforms/gettablenames/src/main/java/org/apache/hop/pipeline/transforms/gettablenames/GetTableNamesMeta.java
+++ 
b/plugins/transforms/gettablenames/src/main/java/org/apache/hop/pipeline/transforms/gettablenames/GetTableNamesMeta.java
@@ -23,7 +23,6 @@ import org.apache.hop.core.CheckResult;
 import org.apache.hop.core.ICheckResult;
 import org.apache.hop.core.annotations.Transform;
 import org.apache.hop.core.database.DatabaseMeta;
-import org.apache.hop.core.injection.InjectionSupported;
 import org.apache.hop.core.row.IRowMeta;
 import org.apache.hop.core.row.IValueMeta;
 import org.apache.hop.core.row.value.ValueMetaBoolean;
@@ -38,9 +37,6 @@ import org.apache.hop.pipeline.PipelineMeta;
 import org.apache.hop.pipeline.transform.BaseTransformMeta;
 import org.apache.hop.pipeline.transform.TransformMeta;
 
-@InjectionSupported(
-    localizationPrefix = "GetTableNames.Injection.",
-    groups = {"FIELDS", "SETTINGS", "OUTPUT"})
 @Transform(
     id = "GetTableNames",
     image = "gettablenames.svg",
diff --git 
a/plugins/transforms/gettablenames/src/test/java/org/apache/hop/pipeline/transforms/gettablenames/GetTableNamesMetaTest.java
 
b/plugins/transforms/gettablenames/src/test/java/org/apache/hop/pipeline/transforms/gettablenames/GetTableNamesMetaTest.java
index 58afd66a2c..7ea45d3291 100644
--- 
a/plugins/transforms/gettablenames/src/test/java/org/apache/hop/pipeline/transforms/gettablenames/GetTableNamesMetaTest.java
+++ 
b/plugins/transforms/gettablenames/src/test/java/org/apache/hop/pipeline/transforms/gettablenames/GetTableNamesMetaTest.java
@@ -17,9 +17,11 @@
 
 package org.apache.hop.pipeline.transforms.gettablenames;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
+import org.apache.hop.core.injection.bean.BeanInjectionInfo;
 import org.apache.hop.pipeline.transform.TransformSerializationTestUtil;
 import org.junit.jupiter.api.Test;
 
@@ -47,4 +49,15 @@ class GetTableNamesMetaTest {
     assertTrue(meta.consumesMainInput());
     assertFalse(meta.canStartWithoutInput());
   }
+
+  /** Issue #9120: a class-level @InjectionSupported hid every metadata 
injection key. */
+  @Test
+  void injectionKeysAreAvailable() {
+    BeanInjectionInfo<GetTableNamesMeta> injectionInfo =
+        new BeanInjectionInfo<>(GetTableNamesMeta.class);
+    assertEquals(15, injectionInfo.getProperties().size());
+    assertTrue(injectionInfo.getProperties().containsKey("CONNECTIONNAME"));
+    
assertTrue(injectionInfo.getProperties().containsKey("TABLENAMEFIELDNAME"));
+    assertTrue(injectionInfo.getProperties().containsKey("DYNAMICSCHEMA"));
+  }
 }
diff --git 
a/plugins/transforms/stringoperations/src/main/java/org/apache/hop/pipeline/transforms/stringoperations/StringOperationsMeta.java
 
b/plugins/transforms/stringoperations/src/main/java/org/apache/hop/pipeline/transforms/stringoperations/StringOperationsMeta.java
index 125a924271..32f6d9877a 100644
--- 
a/plugins/transforms/stringoperations/src/main/java/org/apache/hop/pipeline/transforms/stringoperations/StringOperationsMeta.java
+++ 
b/plugins/transforms/stringoperations/src/main/java/org/apache/hop/pipeline/transforms/stringoperations/StringOperationsMeta.java
@@ -28,7 +28,6 @@ import org.apache.hop.core.Const;
 import org.apache.hop.core.ICheckResult;
 import org.apache.hop.core.annotations.Transform;
 import org.apache.hop.core.exception.HopTransformException;
-import org.apache.hop.core.injection.InjectionSupported;
 import org.apache.hop.core.row.IRowMeta;
 import org.apache.hop.core.row.IValueMeta;
 import org.apache.hop.core.row.value.ValueMetaBase;
@@ -52,7 +51,6 @@ import org.jetbrains.annotations.NotNull;
     categoryDescription = 
"i18n:org.apache.hop.pipeline.transform:BaseTransform.Category.Transform",
     keywords = "i18n::StringOperationsMeta.keyword",
     documentationUrl = "/pipeline/transforms/stringoperations.html")
-@InjectionSupported(localizationPrefix = "StringOperationsDialog.Injection.")
 @Getter
 @Setter
 public class StringOperationsMeta
diff --git 
a/plugins/transforms/stringoperations/src/test/java/org/apache/hop/pipeline/transforms/stringoperations/StringOperationsMetaTest.java
 
b/plugins/transforms/stringoperations/src/test/java/org/apache/hop/pipeline/transforms/stringoperations/StringOperationsMetaTest.java
index ac41e665db..6142b53f99 100644
--- 
a/plugins/transforms/stringoperations/src/test/java/org/apache/hop/pipeline/transforms/stringoperations/StringOperationsMetaTest.java
+++ 
b/plugins/transforms/stringoperations/src/test/java/org/apache/hop/pipeline/transforms/stringoperations/StringOperationsMetaTest.java
@@ -25,8 +25,15 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.util.List;
 import java.util.Objects;
+import java.util.Set;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.hop.core.RowMetaAndData;
+import org.apache.hop.core.injection.bean.BeanInjectionInfo;
+import org.apache.hop.core.injection.bean.BeanInjector;
+import org.apache.hop.core.row.IRowMeta;
+import org.apache.hop.core.row.RowMetaBuilder;
 import org.apache.hop.core.xml.XmlHandler;
 import org.apache.hop.metadata.serializer.memory.MemoryMetadataProvider;
 import org.apache.hop.metadata.serializer.xml.XmlMetadataUtil;
@@ -165,4 +172,60 @@ class StringOperationsMetaTest {
     assertEquals(StringOperationsMeta.Digits.DIGITS_REMOVE, o1.getDigits());
     assertEquals(StringOperationsMeta.RemoveSpecialChars.CRLF, 
o1.getRemoveSpecialChars());
   }
+
+  /** Issue #9120: the operations must be offered to ETL Metadata Injection. */
+  @Test
+  void testInjectionMetadata() {
+    BeanInjectionInfo<StringOperationsMeta> injectionInfo =
+        new BeanInjectionInfo<>(StringOperationsMeta.class);
+
+    assertEquals(
+        Set.of(
+            "SOURCEFIELDS",
+            "TARGETFIELDS",
+            "TRIMTYPE",
+            "LOWERUPPER",
+            "INITCAP",
+            "MASKXML",
+            "DIGITS",
+            "SPECIALCHARS",
+            "PADDING",
+            "PADLEN",
+            "PADCHAR"),
+        injectionInfo.getProperties().keySet());
+    assertEquals("FIELDS", 
injectionInfo.getProperties().get("SOURCEFIELDS").getGroupKey());
+    assertEquals(
+        "In stream fields",
+        
injectionInfo.getProperties().get("SOURCEFIELDS").getTranslatedDescription());
+  }
+
+  @Test
+  void testInjection() throws Exception {
+    BeanInjectionInfo<StringOperationsMeta> injectionInfo =
+        new BeanInjectionInfo<>(StringOperationsMeta.class);
+    BeanInjector<StringOperationsMeta> injector =
+        new BeanInjector<>(injectionInfo, new MemoryMetadataProvider());
+
+    IRowMeta rowMeta =
+        new 
RowMetaBuilder().addString("in").addString("trim").addString("case").build();
+    List<RowMetaAndData> rows =
+        List.of(
+            new RowMetaAndData(rowMeta, "name", "both", "upper"),
+            new RowMetaAndData(rowMeta, "city", "left", "lower"));
+
+    StringOperationsMeta meta = new StringOperationsMeta();
+    injector.setProperty(meta, "SOURCEFIELDS", rows, "in");
+    injector.setProperty(meta, "TRIMTYPE", rows, "trim");
+    injector.setProperty(meta, "LOWERUPPER", rows, "case");
+
+    assertEquals(2, meta.getOperations().size());
+    StringOperationsMeta.StringOperation o0 = meta.getOperations().get(0);
+    assertEquals("name", o0.getFieldInStream());
+    assertEquals(StringOperationsMeta.TrimType.BOTH, o0.getTrimType());
+    assertEquals(StringOperationsMeta.LowerUpper.UPPER, o0.getLowerUpper());
+    StringOperationsMeta.StringOperation o1 = meta.getOperations().get(1);
+    assertEquals("city", o1.getFieldInStream());
+    assertEquals(StringOperationsMeta.TrimType.LEFT, o1.getTrimType());
+    assertEquals(StringOperationsMeta.LowerUpper.LOWER, o1.getLowerUpper());
+  }
 }

Reply via email to