This is an automated email from the ASF dual-hosted git repository.
sxnan pushed a commit to branch release-0.1
in repository https://gitbox.apache.org/repos/asf/flink-agents.git
The following commit(s) were added to refs/heads/release-0.1 by this push:
new 78e96a0 [runtime] Implement hashCode and equals for ActionTask. (#365)
78e96a0 is described below
commit 78e96a00da21abf50520eb5b13b1a6a4ed358a31
Author: Wenjin Xie <[email protected]>
AuthorDate: Tue Dec 2 15:45:23 2025 +0800
[runtime] Implement hashCode and equals for ActionTask. (#365)
---
.../main/java/org/apache/flink/agents/api/Event.java | 15 +++++++++++++++
.../org/apache/flink/agents/plan/PythonFunction.java | 16 ++++++++++++++++
.../org/apache/flink/agents/plan/actions/Action.java | 16 ++++++++++++++++
.../flink/agents/runtime/operator/ActionTask.java | 16 ++++++++++++++++
.../flink/agents/runtime/python/event/PythonEvent.java | 18 ++++++++++++++++++
5 files changed, 81 insertions(+)
diff --git a/api/src/main/java/org/apache/flink/agents/api/Event.java
b/api/src/main/java/org/apache/flink/agents/api/Event.java
index e0e77e5..868447a 100644
--- a/api/src/main/java/org/apache/flink/agents/api/Event.java
+++ b/api/src/main/java/org/apache/flink/agents/api/Event.java
@@ -22,6 +22,7 @@ import
org.apache.flink.shaded.jackson2.com.fasterxml.jackson.annotation.JsonCre
import java.util.HashMap;
import java.util.Map;
+import java.util.Objects;
import java.util.UUID;
/** Base class for all event types in the system. */
@@ -68,4 +69,18 @@ public abstract class Event {
public void setSourceTimestamp(long timestamp) {
this.sourceTimestamp = timestamp;
}
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ Event other = (Event) o;
+ return Objects.equals(this.id, other.id)
+ && Objects.equals(this.attributes, other.attributes);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(id, attributes);
+ }
}
diff --git
a/plan/src/main/java/org/apache/flink/agents/plan/PythonFunction.java
b/plan/src/main/java/org/apache/flink/agents/plan/PythonFunction.java
index da112b0..b5beabd 100644
--- a/plan/src/main/java/org/apache/flink/agents/plan/PythonFunction.java
+++ b/plan/src/main/java/org/apache/flink/agents/plan/PythonFunction.java
@@ -19,6 +19,8 @@ package org.apache.flink.agents.plan;
import pemja.core.PythonInterpreter;
+import java.util.Objects;
+
/** Represent a Python function. */
public class PythonFunction implements Function {
private static final String CALL_PYTHON_FUNCTION =
"function.call_python_function";
@@ -57,4 +59,18 @@ public class PythonFunction implements Function {
public String getQualName() {
return qualName;
}
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ PythonFunction other = (PythonFunction) o;
+ return Objects.equals(this.module, other.module)
+ && Objects.equals(this.qualName, other.qualName);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(module, qualName);
+ }
}
diff --git
a/plan/src/main/java/org/apache/flink/agents/plan/actions/Action.java
b/plan/src/main/java/org/apache/flink/agents/plan/actions/Action.java
index a9a4cfa..771e278 100644
--- a/plan/src/main/java/org/apache/flink/agents/plan/actions/Action.java
+++ b/plan/src/main/java/org/apache/flink/agents/plan/actions/Action.java
@@ -30,6 +30,7 @@ import javax.annotation.Nullable;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
/**
* Representation of an agent action with event listening and function
execution.
@@ -80,4 +81,19 @@ public class Action {
public Map<String, Object> getConfig() {
return config;
}
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ Action other = (Action) o;
+ return name.equals(other.name)
+ && exec.equals(other.exec)
+ && listenEventTypes.equals(other.listenEventTypes);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name, exec, listenEventTypes);
+ }
}
diff --git
a/runtime/src/main/java/org/apache/flink/agents/runtime/operator/ActionTask.java
b/runtime/src/main/java/org/apache/flink/agents/runtime/operator/ActionTask.java
index 5dff8a5..d8a30b3 100644
---
a/runtime/src/main/java/org/apache/flink/agents/runtime/operator/ActionTask.java
+++
b/runtime/src/main/java/org/apache/flink/agents/runtime/operator/ActionTask.java
@@ -26,6 +26,7 @@ import org.slf4j.LoggerFactory;
import javax.annotation.Nullable;
import java.util.List;
+import java.util.Objects;
import java.util.Optional;
/**
@@ -70,6 +71,21 @@ public abstract class ActionTask {
return key;
}
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ ActionTask other = (ActionTask) o;
+ return Objects.equals(this.key, other.key)
+ && Objects.equals(this.event, other.event)
+ && Objects.equals(this.action, other.action);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(key, event, action);
+ }
+
/** Invokes the action task. */
public abstract ActionTaskResult invoke() throws Exception;
diff --git
a/runtime/src/main/java/org/apache/flink/agents/runtime/python/event/PythonEvent.java
b/runtime/src/main/java/org/apache/flink/agents/runtime/python/event/PythonEvent.java
index a5692a2..1a99e97 100644
---
a/runtime/src/main/java/org/apache/flink/agents/runtime/python/event/PythonEvent.java
+++
b/runtime/src/main/java/org/apache/flink/agents/runtime/python/event/PythonEvent.java
@@ -23,7 +23,9 @@ import org.apache.flink.agents.api.Event;
import
org.apache.flink.shaded.jackson2.com.fasterxml.jackson.annotation.JsonCreator;
import
org.apache.flink.shaded.jackson2.com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Arrays;
import java.util.Map;
+import java.util.Objects;
import java.util.UUID;
/** An event generated by the framework, passing a Python event to the Java
agent runner. */
@@ -55,4 +57,20 @@ public class PythonEvent extends Event {
public String getEventType() {
return eventType;
}
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ if (!super.equals(o)) {
+ return false;
+ }
+ PythonEvent other = (PythonEvent) o;
+ return Arrays.equals(event, other.event) &&
Objects.equals(this.eventType, other.eventType);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), Arrays.hashCode(event),
eventType);
+ }
}