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