From d654c9be49d2cc5a16bbd45393af2b2eda01ad92 Mon Sep 17 00:00:00 2001 From: Ryan Ernst Date: Sun, 6 Apr 2025 06:30:42 -0700 Subject: [PATCH] Convert TransportMessage to an interface TransportMessage is unnecessarily an abstract class, which is more rigid when trying to refactor due to only being able to extend a single class. This commit makes TransportMessage an interface with default methods. --- .../elasticsearch/transport/TransportMessage.java | 15 +++++---------- .../elasticsearch/transport/TransportRequest.java | 2 +- .../transport/TransportResponse.java | 2 +- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/transport/TransportMessage.java b/server/src/main/java/org/elasticsearch/transport/TransportMessage.java index b93cdd4cbcbae..555d5e1c24b4e 100644 --- a/server/src/main/java/org/elasticsearch/transport/TransportMessage.java +++ b/server/src/main/java/org/elasticsearch/transport/TransportMessage.java @@ -12,20 +12,15 @@ import org.elasticsearch.common.io.stream.Writeable; import org.elasticsearch.core.RefCounted; -public abstract class TransportMessage implements Writeable, RefCounted { - - /** - * Constructs a new empty transport message - */ - public TransportMessage() {} +public interface TransportMessage extends Writeable, RefCounted { @Override - public void incRef() { + default void incRef() { // noop, override to manage the life-cycle of resources held by a transport message } @Override - public boolean tryIncRef() { + default boolean tryIncRef() { // noop, override to manage the life-cycle of resources held by a transport message return true; } @@ -38,13 +33,13 @@ public boolean tryIncRef() { * layer in a manner that might end up nesting too deeply. When in doubt, dispatch any further work onto a separate thread. */ @Override - public boolean decRef() { + default boolean decRef() { // noop, override to manage the life-cycle of resources held by a transport message return false; } @Override - public boolean hasReferences() { + default boolean hasReferences() { // noop, override to manage the life-cycle of resources held by a transport message return true; } diff --git a/server/src/main/java/org/elasticsearch/transport/TransportRequest.java b/server/src/main/java/org/elasticsearch/transport/TransportRequest.java index 393d015123473..e714ae6310dcf 100644 --- a/server/src/main/java/org/elasticsearch/transport/TransportRequest.java +++ b/server/src/main/java/org/elasticsearch/transport/TransportRequest.java @@ -18,7 +18,7 @@ import java.io.IOException; import java.net.InetSocketAddress; -public abstract class TransportRequest extends TransportMessage implements TaskAwareRequest { +public abstract class TransportRequest implements TransportMessage, TaskAwareRequest { @Nullable // set by the transport service on inbound messages; unset on outbound messages private InetSocketAddress remoteAddress; diff --git a/server/src/main/java/org/elasticsearch/transport/TransportResponse.java b/server/src/main/java/org/elasticsearch/transport/TransportResponse.java index e259d2abda119..16ee5160c58d8 100644 --- a/server/src/main/java/org/elasticsearch/transport/TransportResponse.java +++ b/server/src/main/java/org/elasticsearch/transport/TransportResponse.java @@ -13,7 +13,7 @@ import java.io.IOException; -public abstract class TransportResponse extends TransportMessage { +public abstract class TransportResponse implements TransportMessage { /** * Constructs a new empty transport response