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 150edebad2 fix transformcchangelistener registration logic and cleanup 
removal method (#6856)
150edebad2 is described below

commit 150edebad2a47577fc663290eaee72b4f13863f4
Author: Josh Downing <[email protected]>
AuthorDate: Tue Mar 24 10:57:52 2026 -0400

    fix transformcchangelistener registration logic and cleanup removal method 
(#6856)
---
 .../java/org/apache/hop/pipeline/PipelineMeta.java | 33 ++++++----------------
 .../org/apache/hop/pipeline/PipelineMetaTest.java  |  2 +-
 2 files changed, 10 insertions(+), 25 deletions(-)

diff --git a/engine/src/main/java/org/apache/hop/pipeline/PipelineMeta.java 
b/engine/src/main/java/org/apache/hop/pipeline/PipelineMeta.java
index 9ac027924c..e2bb7e0314 100644
--- a/engine/src/main/java/org/apache/hop/pipeline/PipelineMeta.java
+++ b/engine/src/main/java/org/apache/hop/pipeline/PipelineMeta.java
@@ -378,14 +378,16 @@ public class PipelineMeta extends AbstractMeta
   public void addOrReplaceTransform(TransformMeta transformMeta) {
     int index = transforms.indexOf(transformMeta);
     if (index < 0) {
-      index = transforms.add(transformMeta) ? 0 : index;
+      transforms.add(transformMeta);
+      index = transforms.size() - 1;
     } else {
       TransformMeta previous = getTransform(index);
       previous.replaceMeta(transformMeta);
     }
     transformMeta.setParentPipelineMeta(this);
     ITransformMeta iface = transformMeta.getTransform();
-    if (index != -1 && iface instanceof ITransformMetaChangeListener 
iTransformMetaChangeListener) {
+
+    if (iface instanceof ITransformMetaChangeListener 
iTransformMetaChangeListener) {
       addTransformChangeListener(index, iTransformMetaChangeListener);
     }
     changedTransforms = true;
@@ -3656,37 +3658,20 @@ public class PipelineMeta extends AbstractMeta
   }
 
   public void addTransformChangeListener(int p, ITransformMetaChangeListener 
list) {
-    int indexListener = -1;
-    int indexListenerRemove = -1;
     TransformMeta rewriteTransform = transforms.get(p);
     ITransformMeta iface = rewriteTransform.getTransform();
     if (iface instanceof ITransformMetaChangeListener) {
-      for (ITransformMetaChangeListener listener : transformChangeListeners) {
-        indexListener++;
-        if (listener.equals(iface)) {
-          indexListenerRemove = indexListener;
-        }
-      }
-      if (indexListenerRemove >= 0) {
-        transformChangeListeners.add(indexListenerRemove, list);
-      } else if (transformChangeListeners.isEmpty() && p == 0) {
+      int index = transformChangeListeners.indexOf(iface);
+      if (index >= 0) {
+        transformChangeListeners.set(index, list);
+      } else {
         transformChangeListeners.add(list);
       }
     }
   }
 
   public void removeTransformChangeListener(ITransformMetaChangeListener list) 
{
-    int indexListener = -1;
-    int indexListenerRemove = -1;
-    for (ITransformMetaChangeListener listener : transformChangeListeners) {
-      indexListener++;
-      if (listener.equals(list)) {
-        indexListenerRemove = indexListener;
-      }
-    }
-    if (indexListenerRemove >= 0) {
-      transformChangeListeners.remove(indexListenerRemove);
-    }
+    transformChangeListeners.remove(list);
   }
 
   public void notifyAllListeners(TransformMeta oldMeta, TransformMeta newMeta) 
{
diff --git a/engine/src/test/java/org/apache/hop/pipeline/PipelineMetaTest.java 
b/engine/src/test/java/org/apache/hop/pipeline/PipelineMetaTest.java
index c94a57108d..195e55a7ee 100644
--- a/engine/src/test/java/org/apache/hop/pipeline/PipelineMetaTest.java
+++ b/engine/src/test/java/org/apache/hop/pipeline/PipelineMetaTest.java
@@ -247,7 +247,7 @@ class PipelineMetaTest {
 
     pipelineMeta.addTransform(0, transformMeta);
     assertEquals(2, pipelineMeta.transforms.size());
-    assertEquals(2, pipelineMeta.transformChangeListeners.size());
+    assertEquals(1, pipelineMeta.transformChangeListeners.size());
   }
 
   @Test

Reply via email to