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 dffe81e480 issue #7266 : Conversion from PDI - In UDJE the "Java 
expression" column is emptied (#7368)
dffe81e480 is described below

commit dffe81e480ca1cbd1414680b1c152433accf93ff
Author: Matt Casters <[email protected]>
AuthorDate: Tue Jun 30 09:19:22 2026 +0200

    issue #7266 : Conversion from PDI - In UDJE the "Java expression" column is 
emptied (#7368)
---
 .../hop/pipeline/transforms/janino/JaninoMeta.java | 20 ++++++++++++
 .../pipeline/transforms/janino/JaninoMetaTest.java | 38 ++++++++++++++++++++++
 2 files changed, 58 insertions(+)

diff --git 
a/plugins/transforms/janino/src/main/java/org/apache/hop/pipeline/transforms/janino/JaninoMeta.java
 
b/plugins/transforms/janino/src/main/java/org/apache/hop/pipeline/transforms/janino/JaninoMeta.java
index 5127f2ac0f..dc6d5dbc55 100644
--- 
a/plugins/transforms/janino/src/main/java/org/apache/hop/pipeline/transforms/janino/JaninoMeta.java
+++ 
b/plugins/transforms/janino/src/main/java/org/apache/hop/pipeline/transforms/janino/JaninoMeta.java
@@ -23,18 +23,21 @@ import lombok.Setter;
 import org.apache.hop.core.CheckResult;
 import org.apache.hop.core.ICheckResult;
 import org.apache.hop.core.annotations.Transform;
+import org.apache.hop.core.exception.HopException;
 import org.apache.hop.core.exception.HopTransformException;
 import org.apache.hop.core.row.IRowMeta;
 import org.apache.hop.core.row.IValueMeta;
 import org.apache.hop.core.row.value.ValueMetaFactory;
 import org.apache.hop.core.util.Utils;
 import org.apache.hop.core.variables.IVariables;
+import org.apache.hop.core.xml.XmlHandler;
 import org.apache.hop.i18n.BaseMessages;
 import org.apache.hop.metadata.api.HopMetadataProperty;
 import org.apache.hop.metadata.api.IHopMetadataProvider;
 import org.apache.hop.pipeline.PipelineMeta;
 import org.apache.hop.pipeline.transform.BaseTransformMeta;
 import org.apache.hop.pipeline.transform.TransformMeta;
+import org.w3c.dom.Node;
 
 @Transform(
     id = "Janino",
@@ -203,4 +206,21 @@ public class JaninoMeta extends BaseTransformMeta<Janino, 
JaninoData> {
   public boolean supportsErrorHandling() {
     return true;
   }
+
+  @Override
+  public void convertLegacyXml(Node node) throws HopException {
+    int nrCalcs = XmlHandler.countNodes(node, "formula");
+    for (int i = 0; i < nrCalcs; i++) {
+      Node calcnode = XmlHandler.getSubNodeByNr(node, "formula", i);
+      if (calcnode != null) {
+        String expression = XmlHandler.getTagValue(calcnode, "formula");
+        if (expression != null && i < functions.size()) {
+          JaninoMetaFunction fn = functions.get(i);
+          if (Utils.isEmpty(fn.getFormula())) {
+            fn.setFormula(expression);
+          }
+        }
+      }
+    }
+  }
 }
diff --git 
a/plugins/transforms/janino/src/test/java/org/apache/hop/pipeline/transforms/janino/JaninoMetaTest.java
 
b/plugins/transforms/janino/src/test/java/org/apache/hop/pipeline/transforms/janino/JaninoMetaTest.java
index 2f08e89149..6ce5f40400 100644
--- 
a/plugins/transforms/janino/src/test/java/org/apache/hop/pipeline/transforms/janino/JaninoMetaTest.java
+++ 
b/plugins/transforms/janino/src/test/java/org/apache/hop/pipeline/transforms/janino/JaninoMetaTest.java
@@ -340,4 +340,42 @@ class JaninoMetaTest {
   void supportsErrorHandling_returnsTrue() {
     assertTrue(new JaninoMeta().supportsErrorHandling());
   }
+
+  // ------------------------------------------------------------------ 
convertLegacyXml
+
+  @Test
+  void testConvertLegacyXml() throws Exception {
+    String xml =
+        "<transform>"
+            + "    <formula>"
+            + "        <field_name>f1</field_name>"
+            + "        <formula>expression1</formula>"
+            + "        <value_type>String</value_type>"
+            + "        <value_length>100</value_length>"
+            + "        <value_precision>-1</value_precision>"
+            + "        <replace_field>replace1</replace_field>"
+            + "    </formula>"
+            + "    <formula>"
+            + "        <field_name>f2</field_name>"
+            + "        <formula>expression2</formula>"
+            + "        <value_type>Integer</value_type>"
+            + "        <value_length>7</value_length>"
+            + "        <value_precision>-1</value_precision>"
+            + "        <replace_field>replace2</replace_field>"
+            + "    </formula>"
+            + "</transform>";
+
+    JaninoMeta meta = new JaninoMeta();
+    XmlMetadataUtil.deSerializeFromXml(
+        XmlHandler.loadXmlString(xml, TransformMeta.XML_TAG),
+        JaninoMeta.class,
+        meta,
+        new MemoryMetadataProvider());
+
+    assertEquals(2, meta.getFunctions().size());
+    assertEquals("f1", meta.getFunctions().get(0).getFieldName());
+    assertEquals("expression1", meta.getFunctions().get(0).getFormula());
+    assertEquals("f2", meta.getFunctions().get(1).getFieldName());
+    assertEquals("expression2", meta.getFunctions().get(1).getFormula());
+  }
 }

Reply via email to