This is an automated email from the ASF dual-hosted git repository.

hansva 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 cc7869d0d8 move jdbcMetadata package and add tests, fixes #7175 (#7178)
cc7869d0d8 is described below

commit cc7869d0d8326b5c8659ea468740f26f84b18961
Author: Hans Van Akelyen <[email protected]>
AuthorDate: Tue May 26 13:17:22 2026 +0200

    move jdbcMetadata package and add tests, fixes #7175 (#7178)
---
 .../transforms}/jdbcmetadata/JdbcMetadata.java     |   2 +-
 .../transforms}/jdbcmetadata/JdbcMetadataData.java |   2 +-
 .../jdbcmetadata/JdbcMetadataDialog.java           |   2 +-
 .../transforms}/jdbcmetadata/JdbcMetadataMeta.java |   2 +-
 .../transforms}/jdbcmetadata/OutputField.java      |   2 +-
 .../messages/messages_de_DE.properties             |   0
 .../messages/messages_en_US.properties             |   0
 .../messages/messages_es_AR.properties             |   0
 .../messages/messages_es_ES.properties             |   0
 .../messages/messages_fr_FR.properties             |   0
 .../messages/messages_it_IT.properties             |   0
 .../messages/messages_ja_JP.properties             |   0
 .../messages/messages_ko_KR.properties             |   0
 .../messages/messages_nl_NL.properties             |   0
 .../messages/messages_no_NO.properties             |   0
 .../messages/messages_pl_PL.properties             |   0
 .../messages/messages_pt_BR.properties             |   0
 .../messages/messages_pt_PT.properties             |   0
 .../messages/messages_zh_CN.properties             |   0
 .../jdbcmetadata/JdbcMetadataMetaTest.java         | 140 +++++++++++++++++++++
 .../transforms/jdbcmetadata/OutputFieldTest.java   |  48 +++++++
 21 files changed, 193 insertions(+), 5 deletions(-)

diff --git 
a/plugins/transforms/jdbc-metadata/src/main/java/org/apache/pipeline/transform/jdbcmetadata/JdbcMetadata.java
 
b/plugins/transforms/jdbc-metadata/src/main/java/org/apache/hop/pipeline/transforms/jdbcmetadata/JdbcMetadata.java
similarity index 99%
rename from 
plugins/transforms/jdbc-metadata/src/main/java/org/apache/pipeline/transform/jdbcmetadata/JdbcMetadata.java
rename to 
plugins/transforms/jdbc-metadata/src/main/java/org/apache/hop/pipeline/transforms/jdbcmetadata/JdbcMetadata.java
index 1381e9838c..440947656c 100644
--- 
a/plugins/transforms/jdbc-metadata/src/main/java/org/apache/pipeline/transform/jdbcmetadata/JdbcMetadata.java
+++ 
b/plugins/transforms/jdbc-metadata/src/main/java/org/apache/hop/pipeline/transforms/jdbcmetadata/JdbcMetadata.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.pipeline.transform.jdbcmetadata;
+package org.apache.hop.pipeline.transforms.jdbcmetadata;
 
 import java.lang.reflect.Array;
 import java.lang.reflect.Method;
diff --git 
a/plugins/transforms/jdbc-metadata/src/main/java/org/apache/pipeline/transform/jdbcmetadata/JdbcMetadataData.java
 
b/plugins/transforms/jdbc-metadata/src/main/java/org/apache/hop/pipeline/transforms/jdbcmetadata/JdbcMetadataData.java
similarity index 97%
rename from 
plugins/transforms/jdbc-metadata/src/main/java/org/apache/pipeline/transform/jdbcmetadata/JdbcMetadataData.java
rename to 
plugins/transforms/jdbc-metadata/src/main/java/org/apache/hop/pipeline/transforms/jdbcmetadata/JdbcMetadataData.java
index 69e23e3a92..812bac4032 100644
--- 
a/plugins/transforms/jdbc-metadata/src/main/java/org/apache/pipeline/transform/jdbcmetadata/JdbcMetadataData.java
+++ 
b/plugins/transforms/jdbc-metadata/src/main/java/org/apache/hop/pipeline/transforms/jdbcmetadata/JdbcMetadataData.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.pipeline.transform.jdbcmetadata;
+package org.apache.hop.pipeline.transforms.jdbcmetadata;
 
 import java.lang.reflect.Method;
 import java.sql.Connection;
diff --git 
a/plugins/transforms/jdbc-metadata/src/main/java/org/apache/pipeline/transform/jdbcmetadata/JdbcMetadataDialog.java
 
b/plugins/transforms/jdbc-metadata/src/main/java/org/apache/hop/pipeline/transforms/jdbcmetadata/JdbcMetadataDialog.java
similarity index 99%
rename from 
plugins/transforms/jdbc-metadata/src/main/java/org/apache/pipeline/transform/jdbcmetadata/JdbcMetadataDialog.java
rename to 
plugins/transforms/jdbc-metadata/src/main/java/org/apache/hop/pipeline/transforms/jdbcmetadata/JdbcMetadataDialog.java
index eed3b30414..ecbe066839 100644
--- 
a/plugins/transforms/jdbc-metadata/src/main/java/org/apache/pipeline/transform/jdbcmetadata/JdbcMetadataDialog.java
+++ 
b/plugins/transforms/jdbc-metadata/src/main/java/org/apache/hop/pipeline/transforms/jdbcmetadata/JdbcMetadataDialog.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.pipeline.transform.jdbcmetadata;
+package org.apache.hop.pipeline.transforms.jdbcmetadata;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git 
a/plugins/transforms/jdbc-metadata/src/main/java/org/apache/pipeline/transform/jdbcmetadata/JdbcMetadataMeta.java
 
b/plugins/transforms/jdbc-metadata/src/main/java/org/apache/hop/pipeline/transforms/jdbcmetadata/JdbcMetadataMeta.java
similarity index 99%
rename from 
plugins/transforms/jdbc-metadata/src/main/java/org/apache/pipeline/transform/jdbcmetadata/JdbcMetadataMeta.java
rename to 
plugins/transforms/jdbc-metadata/src/main/java/org/apache/hop/pipeline/transforms/jdbcmetadata/JdbcMetadataMeta.java
index 517dfc0e5b..4922536504 100644
--- 
a/plugins/transforms/jdbc-metadata/src/main/java/org/apache/pipeline/transform/jdbcmetadata/JdbcMetadataMeta.java
+++ 
b/plugins/transforms/jdbc-metadata/src/main/java/org/apache/hop/pipeline/transforms/jdbcmetadata/JdbcMetadataMeta.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.pipeline.transform.jdbcmetadata;
+package org.apache.hop.pipeline.transforms.jdbcmetadata;
 
 import java.lang.reflect.Method;
 import java.sql.DatabaseMetaData;
diff --git 
a/plugins/transforms/jdbc-metadata/src/main/java/org/apache/pipeline/transform/jdbcmetadata/OutputField.java
 
b/plugins/transforms/jdbc-metadata/src/main/java/org/apache/hop/pipeline/transforms/jdbcmetadata/OutputField.java
similarity index 95%
rename from 
plugins/transforms/jdbc-metadata/src/main/java/org/apache/pipeline/transform/jdbcmetadata/OutputField.java
rename to 
plugins/transforms/jdbc-metadata/src/main/java/org/apache/hop/pipeline/transforms/jdbcmetadata/OutputField.java
index 8ad02c0490..2a4a82527d 100644
--- 
a/plugins/transforms/jdbc-metadata/src/main/java/org/apache/pipeline/transform/jdbcmetadata/OutputField.java
+++ 
b/plugins/transforms/jdbc-metadata/src/main/java/org/apache/hop/pipeline/transforms/jdbcmetadata/OutputField.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.pipeline.transform.jdbcmetadata;
+package org.apache.hop.pipeline.transforms.jdbcmetadata;
 
 import org.apache.hop.metadata.api.HopMetadataProperty;
 
diff --git 
a/plugins/transforms/jdbc-metadata/src/main/resources/org/apache/pipeline/transform/jdbcmetadata/messages/messages_de_DE.properties
 
b/plugins/transforms/jdbc-metadata/src/main/resources/org/apache/hop/pipeline/transforms/jdbcmetadata/messages/messages_de_DE.properties
similarity index 100%
rename from 
plugins/transforms/jdbc-metadata/src/main/resources/org/apache/pipeline/transform/jdbcmetadata/messages/messages_de_DE.properties
rename to 
plugins/transforms/jdbc-metadata/src/main/resources/org/apache/hop/pipeline/transforms/jdbcmetadata/messages/messages_de_DE.properties
diff --git 
a/plugins/transforms/jdbc-metadata/src/main/resources/org/apache/pipeline/transform/jdbcmetadata/messages/messages_en_US.properties
 
b/plugins/transforms/jdbc-metadata/src/main/resources/org/apache/hop/pipeline/transforms/jdbcmetadata/messages/messages_en_US.properties
similarity index 100%
rename from 
plugins/transforms/jdbc-metadata/src/main/resources/org/apache/pipeline/transform/jdbcmetadata/messages/messages_en_US.properties
rename to 
plugins/transforms/jdbc-metadata/src/main/resources/org/apache/hop/pipeline/transforms/jdbcmetadata/messages/messages_en_US.properties
diff --git 
a/plugins/transforms/jdbc-metadata/src/main/resources/org/apache/pipeline/transform/jdbcmetadata/messages/messages_es_AR.properties
 
b/plugins/transforms/jdbc-metadata/src/main/resources/org/apache/hop/pipeline/transforms/jdbcmetadata/messages/messages_es_AR.properties
similarity index 100%
rename from 
plugins/transforms/jdbc-metadata/src/main/resources/org/apache/pipeline/transform/jdbcmetadata/messages/messages_es_AR.properties
rename to 
plugins/transforms/jdbc-metadata/src/main/resources/org/apache/hop/pipeline/transforms/jdbcmetadata/messages/messages_es_AR.properties
diff --git 
a/plugins/transforms/jdbc-metadata/src/main/resources/org/apache/pipeline/transform/jdbcmetadata/messages/messages_es_ES.properties
 
b/plugins/transforms/jdbc-metadata/src/main/resources/org/apache/hop/pipeline/transforms/jdbcmetadata/messages/messages_es_ES.properties
similarity index 100%
rename from 
plugins/transforms/jdbc-metadata/src/main/resources/org/apache/pipeline/transform/jdbcmetadata/messages/messages_es_ES.properties
rename to 
plugins/transforms/jdbc-metadata/src/main/resources/org/apache/hop/pipeline/transforms/jdbcmetadata/messages/messages_es_ES.properties
diff --git 
a/plugins/transforms/jdbc-metadata/src/main/resources/org/apache/pipeline/transform/jdbcmetadata/messages/messages_fr_FR.properties
 
b/plugins/transforms/jdbc-metadata/src/main/resources/org/apache/hop/pipeline/transforms/jdbcmetadata/messages/messages_fr_FR.properties
similarity index 100%
rename from 
plugins/transforms/jdbc-metadata/src/main/resources/org/apache/pipeline/transform/jdbcmetadata/messages/messages_fr_FR.properties
rename to 
plugins/transforms/jdbc-metadata/src/main/resources/org/apache/hop/pipeline/transforms/jdbcmetadata/messages/messages_fr_FR.properties
diff --git 
a/plugins/transforms/jdbc-metadata/src/main/resources/org/apache/pipeline/transform/jdbcmetadata/messages/messages_it_IT.properties
 
b/plugins/transforms/jdbc-metadata/src/main/resources/org/apache/hop/pipeline/transforms/jdbcmetadata/messages/messages_it_IT.properties
similarity index 100%
rename from 
plugins/transforms/jdbc-metadata/src/main/resources/org/apache/pipeline/transform/jdbcmetadata/messages/messages_it_IT.properties
rename to 
plugins/transforms/jdbc-metadata/src/main/resources/org/apache/hop/pipeline/transforms/jdbcmetadata/messages/messages_it_IT.properties
diff --git 
a/plugins/transforms/jdbc-metadata/src/main/resources/org/apache/pipeline/transform/jdbcmetadata/messages/messages_ja_JP.properties
 
b/plugins/transforms/jdbc-metadata/src/main/resources/org/apache/hop/pipeline/transforms/jdbcmetadata/messages/messages_ja_JP.properties
similarity index 100%
rename from 
plugins/transforms/jdbc-metadata/src/main/resources/org/apache/pipeline/transform/jdbcmetadata/messages/messages_ja_JP.properties
rename to 
plugins/transforms/jdbc-metadata/src/main/resources/org/apache/hop/pipeline/transforms/jdbcmetadata/messages/messages_ja_JP.properties
diff --git 
a/plugins/transforms/jdbc-metadata/src/main/resources/org/apache/pipeline/transform/jdbcmetadata/messages/messages_ko_KR.properties
 
b/plugins/transforms/jdbc-metadata/src/main/resources/org/apache/hop/pipeline/transforms/jdbcmetadata/messages/messages_ko_KR.properties
similarity index 100%
rename from 
plugins/transforms/jdbc-metadata/src/main/resources/org/apache/pipeline/transform/jdbcmetadata/messages/messages_ko_KR.properties
rename to 
plugins/transforms/jdbc-metadata/src/main/resources/org/apache/hop/pipeline/transforms/jdbcmetadata/messages/messages_ko_KR.properties
diff --git 
a/plugins/transforms/jdbc-metadata/src/main/resources/org/apache/pipeline/transform/jdbcmetadata/messages/messages_nl_NL.properties
 
b/plugins/transforms/jdbc-metadata/src/main/resources/org/apache/hop/pipeline/transforms/jdbcmetadata/messages/messages_nl_NL.properties
similarity index 100%
rename from 
plugins/transforms/jdbc-metadata/src/main/resources/org/apache/pipeline/transform/jdbcmetadata/messages/messages_nl_NL.properties
rename to 
plugins/transforms/jdbc-metadata/src/main/resources/org/apache/hop/pipeline/transforms/jdbcmetadata/messages/messages_nl_NL.properties
diff --git 
a/plugins/transforms/jdbc-metadata/src/main/resources/org/apache/pipeline/transform/jdbcmetadata/messages/messages_no_NO.properties
 
b/plugins/transforms/jdbc-metadata/src/main/resources/org/apache/hop/pipeline/transforms/jdbcmetadata/messages/messages_no_NO.properties
similarity index 100%
rename from 
plugins/transforms/jdbc-metadata/src/main/resources/org/apache/pipeline/transform/jdbcmetadata/messages/messages_no_NO.properties
rename to 
plugins/transforms/jdbc-metadata/src/main/resources/org/apache/hop/pipeline/transforms/jdbcmetadata/messages/messages_no_NO.properties
diff --git 
a/plugins/transforms/jdbc-metadata/src/main/resources/org/apache/pipeline/transform/jdbcmetadata/messages/messages_pl_PL.properties
 
b/plugins/transforms/jdbc-metadata/src/main/resources/org/apache/hop/pipeline/transforms/jdbcmetadata/messages/messages_pl_PL.properties
similarity index 100%
rename from 
plugins/transforms/jdbc-metadata/src/main/resources/org/apache/pipeline/transform/jdbcmetadata/messages/messages_pl_PL.properties
rename to 
plugins/transforms/jdbc-metadata/src/main/resources/org/apache/hop/pipeline/transforms/jdbcmetadata/messages/messages_pl_PL.properties
diff --git 
a/plugins/transforms/jdbc-metadata/src/main/resources/org/apache/pipeline/transform/jdbcmetadata/messages/messages_pt_BR.properties
 
b/plugins/transforms/jdbc-metadata/src/main/resources/org/apache/hop/pipeline/transforms/jdbcmetadata/messages/messages_pt_BR.properties
similarity index 100%
rename from 
plugins/transforms/jdbc-metadata/src/main/resources/org/apache/pipeline/transform/jdbcmetadata/messages/messages_pt_BR.properties
rename to 
plugins/transforms/jdbc-metadata/src/main/resources/org/apache/hop/pipeline/transforms/jdbcmetadata/messages/messages_pt_BR.properties
diff --git 
a/plugins/transforms/jdbc-metadata/src/main/resources/org/apache/pipeline/transform/jdbcmetadata/messages/messages_pt_PT.properties
 
b/plugins/transforms/jdbc-metadata/src/main/resources/org/apache/hop/pipeline/transforms/jdbcmetadata/messages/messages_pt_PT.properties
similarity index 100%
rename from 
plugins/transforms/jdbc-metadata/src/main/resources/org/apache/pipeline/transform/jdbcmetadata/messages/messages_pt_PT.properties
rename to 
plugins/transforms/jdbc-metadata/src/main/resources/org/apache/hop/pipeline/transforms/jdbcmetadata/messages/messages_pt_PT.properties
diff --git 
a/plugins/transforms/jdbc-metadata/src/main/resources/org/apache/pipeline/transform/jdbcmetadata/messages/messages_zh_CN.properties
 
b/plugins/transforms/jdbc-metadata/src/main/resources/org/apache/hop/pipeline/transforms/jdbcmetadata/messages/messages_zh_CN.properties
similarity index 100%
rename from 
plugins/transforms/jdbc-metadata/src/main/resources/org/apache/pipeline/transform/jdbcmetadata/messages/messages_zh_CN.properties
rename to 
plugins/transforms/jdbc-metadata/src/main/resources/org/apache/hop/pipeline/transforms/jdbcmetadata/messages/messages_zh_CN.properties
diff --git 
a/plugins/transforms/jdbc-metadata/src/test/java/org/apache/hop/pipeline/transforms/jdbcmetadata/JdbcMetadataMetaTest.java
 
b/plugins/transforms/jdbc-metadata/src/test/java/org/apache/hop/pipeline/transforms/jdbcmetadata/JdbcMetadataMetaTest.java
new file mode 100644
index 0000000000..3b855a0c24
--- /dev/null
+++ 
b/plugins/transforms/jdbc-metadata/src/test/java/org/apache/hop/pipeline/transforms/jdbcmetadata/JdbcMetadataMetaTest.java
@@ -0,0 +1,140 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hop.pipeline.transforms.jdbcmetadata;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import org.apache.hop.core.HopClientEnvironment;
+import org.apache.hop.core.xml.XmlHandler;
+import org.apache.hop.metadata.serializer.memory.MemoryMetadataProvider;
+import org.apache.hop.metadata.serializer.xml.XmlMetadataUtil;
+import org.apache.hop.pipeline.transform.TransformMeta;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+
+/**
+ * Behaviour tests for {@link JdbcMetadataMeta}. The XML round-trip in 
particular catches the common
+ * class of regression where a {@code @HopMetadataProperty} field is removed, 
renamed, or its
+ * key/groupKey changed - any of which would silently drop data from existing 
pipelines.
+ */
+class JdbcMetadataMetaTest {
+
+  @BeforeAll
+  static void setUp() throws Exception {
+    HopClientEnvironment.init();
+  }
+
+  @Test
+  void setDefaultPopulatesGetCatalogsAndOneOutputField() {
+    JdbcMetadataMeta meta = new JdbcMetadataMeta();
+    meta.setDefault();
+
+    assertEquals("getCatalogs", meta.getMethodName());
+    assertFalse(meta.isArgumentSourceFields());
+    assertNotNull(meta.getOutputFields());
+    assertEquals(1, meta.getOutputFields().size());
+    OutputField field = meta.getOutputFields().get(0);
+    assertEquals("TABLE_CAT", field.getName());
+    assertEquals("TABLE_CAT", field.getRename());
+  }
+
+  /**
+   * Configure every {@code @HopMetadataProperty} field, serialize to XML, 
deserialize into a fresh
+   * instance and assert every value survived. If a property loses its 
annotation or its
+   * key/groupKey is renamed, this test fails.
+   */
+  @Test
+  void xmlRoundTripPreservesAllProperties() throws Exception {
+    JdbcMetadataMeta original = new JdbcMetadataMeta();
+    original.setConnection("my-jdbc-connection");
+    original.setAlwaysPassInputRow(true);
+    original.setMethodName("getTables");
+    original.setArgumentSourceFields(true);
+    original.setRemoveArgumentFields(true);
+    original.setArguments(new ArrayList<>(Arrays.asList("catalogArg", 
"schemaArg", "tableArg")));
+
+    List<OutputField> outputFields = new ArrayList<>();
+    outputFields.add(new OutputField("TABLE_NAME", "tableName"));
+    outputFields.add(new OutputField("REMARKS", "comment"));
+    original.setOutputFields(outputFields);
+
+    JdbcMetadataMeta copy = serializeAndDeserialize(original);
+
+    assertEquals(original.getConnection(), copy.getConnection());
+    assertEquals(original.isAlwaysPassInputRow(), copy.isAlwaysPassInputRow());
+    assertEquals(original.getMethodName(), copy.getMethodName());
+    assertEquals(original.isArgumentSourceFields(), 
copy.isArgumentSourceFields());
+    assertEquals(original.isRemoveArgumentFields(), 
copy.isRemoveArgumentFields());
+    assertEquals(original.getArguments(), copy.getArguments());
+
+    assertNotNull(copy.getOutputFields());
+    assertEquals(2, copy.getOutputFields().size());
+    assertEquals("TABLE_NAME", copy.getOutputFields().get(0).getName());
+    assertEquals("tableName", copy.getOutputFields().get(0).getRename());
+    assertEquals("REMARKS", copy.getOutputFields().get(1).getName());
+    assertEquals("comment", copy.getOutputFields().get(1).getRename());
+  }
+
+  /** A default-only Meta must round-trip without losing or fabricating data. 
*/
+  @Test
+  void xmlRoundTripWithDefaultsIsIdempotent() throws Exception {
+    JdbcMetadataMeta original = new JdbcMetadataMeta();
+    original.setDefault();
+
+    JdbcMetadataMeta copy = serializeAndDeserialize(original);
+
+    assertEquals(original.getMethodName(), copy.getMethodName());
+    assertEquals(original.isArgumentSourceFields(), 
copy.isArgumentSourceFields());
+    assertNotNull(copy.getOutputFields());
+    assertEquals(original.getOutputFields().size(), 
copy.getOutputFields().size());
+    assertEquals(
+        original.getOutputFields().get(0).getName(), 
copy.getOutputFields().get(0).getName());
+  }
+
+  @Test
+  void argumentsListRoundTripsEmpty() throws Exception {
+    JdbcMetadataMeta original = new JdbcMetadataMeta();
+    original.setMethodName("getCatalogs");
+    original.setArguments(new ArrayList<>());
+
+    JdbcMetadataMeta copy = serializeAndDeserialize(original);
+
+    assertNotNull(copy.getArguments());
+    assertTrue(copy.getArguments().isEmpty());
+  }
+
+  private static JdbcMetadataMeta serializeAndDeserialize(JdbcMetadataMeta 
source)
+      throws Exception {
+    String xml =
+        XmlHandler.openTag(TransformMeta.XML_TAG)
+            + XmlMetadataUtil.serializeObjectToXml(source)
+            + XmlHandler.closeTag(TransformMeta.XML_TAG);
+    JdbcMetadataMeta copy = new JdbcMetadataMeta();
+    XmlMetadataUtil.deSerializeFromXml(
+        XmlHandler.loadXmlString(xml, TransformMeta.XML_TAG),
+        JdbcMetadataMeta.class,
+        copy,
+        new MemoryMetadataProvider());
+    return copy;
+  }
+}
diff --git 
a/plugins/transforms/jdbc-metadata/src/test/java/org/apache/hop/pipeline/transforms/jdbcmetadata/OutputFieldTest.java
 
b/plugins/transforms/jdbc-metadata/src/test/java/org/apache/hop/pipeline/transforms/jdbcmetadata/OutputFieldTest.java
new file mode 100644
index 0000000000..b6072018a6
--- /dev/null
+++ 
b/plugins/transforms/jdbc-metadata/src/test/java/org/apache/hop/pipeline/transforms/jdbcmetadata/OutputFieldTest.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hop.pipeline.transforms.jdbcmetadata;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
+
+import org.junit.jupiter.api.Test;
+
+class OutputFieldTest {
+
+  @Test
+  void noArgConstructorLeavesFieldsNull() {
+    OutputField field = new OutputField();
+    assertNull(field.getName());
+    assertNull(field.getRename());
+  }
+
+  @Test
+  void valueConstructorAssignsBothFields() {
+    OutputField field = new OutputField("TABLE_NAME", "table");
+    assertEquals("TABLE_NAME", field.getName());
+    assertEquals("table", field.getRename());
+  }
+
+  @Test
+  void settersUpdateFields() {
+    OutputField field = new OutputField();
+    field.setName("COLUMN_NAME");
+    field.setRename("col");
+    assertEquals("COLUMN_NAME", field.getName());
+    assertEquals("col", field.getRename());
+  }
+}

Reply via email to