From 55324399fd9e1f7620b2e7de947ee4862c644fec Mon Sep 17 00:00:00 2001 From: Tyler Ohlsen Date: Tue, 30 Jan 2024 18:20:36 -0800 Subject: [PATCH] Add ser/deser to get AD transport action request (#1150) Signed-off-by: Tyler Ohlsen --- .../transport/GetAnomalyDetectorRequest.java | 19 +++++++++++++++++++ .../GetAnomalyDetectorTransportAction.java | 7 +++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/opensearch/ad/transport/GetAnomalyDetectorRequest.java b/src/main/java/org/opensearch/ad/transport/GetAnomalyDetectorRequest.java index 7b45abe35..3289ac541 100644 --- a/src/main/java/org/opensearch/ad/transport/GetAnomalyDetectorRequest.java +++ b/src/main/java/org/opensearch/ad/transport/GetAnomalyDetectorRequest.java @@ -11,11 +11,15 @@ package org.opensearch.ad.transport; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import org.opensearch.action.ActionRequest; import org.opensearch.action.ActionRequestValidationException; import org.opensearch.ad.model.Entity; +import org.opensearch.core.common.io.stream.InputStreamStreamInput; +import org.opensearch.core.common.io.stream.OutputStreamStreamOutput; import org.opensearch.core.common.io.stream.StreamInput; import org.opensearch.core.common.io.stream.StreamOutput; @@ -119,4 +123,19 @@ public void writeTo(StreamOutput out) throws IOException { public ActionRequestValidationException validate() { return null; } + + public static GetAnomalyDetectorRequest fromActionRequest(final ActionRequest actionRequest) { + if (actionRequest instanceof GetAnomalyDetectorRequest) { + return (GetAnomalyDetectorRequest) actionRequest; + } + + try (ByteArrayOutputStream baos = new ByteArrayOutputStream(); OutputStreamStreamOutput osso = new OutputStreamStreamOutput(baos)) { + actionRequest.writeTo(osso); + try (StreamInput input = new InputStreamStreamInput(new ByteArrayInputStream(baos.toByteArray()))) { + return new GetAnomalyDetectorRequest(input); + } + } catch (IOException e) { + throw new IllegalArgumentException("failed to parse ActionRequest into GetAnomalyDetectorRequest", e); + } + } } diff --git a/src/main/java/org/opensearch/ad/transport/GetAnomalyDetectorTransportAction.java b/src/main/java/org/opensearch/ad/transport/GetAnomalyDetectorTransportAction.java index 1786904c6..d616fa204 100644 --- a/src/main/java/org/opensearch/ad/transport/GetAnomalyDetectorTransportAction.java +++ b/src/main/java/org/opensearch/ad/transport/GetAnomalyDetectorTransportAction.java @@ -37,6 +37,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.opensearch.OpenSearchStatusException; +import org.opensearch.action.ActionRequest; import org.opensearch.action.get.MultiGetItemResponse; import org.opensearch.action.get.MultiGetRequest; import org.opensearch.action.get.MultiGetResponse; @@ -75,7 +76,7 @@ import com.google.common.collect.Sets; -public class GetAnomalyDetectorTransportAction extends HandledTransportAction { +public class GetAnomalyDetectorTransportAction extends HandledTransportAction { private static final Logger LOG = LogManager.getLogger(GetAnomalyDetectorTransportAction.class); @@ -131,7 +132,9 @@ public GetAnomalyDetectorTransportAction( } @Override - protected void doExecute(Task task, GetAnomalyDetectorRequest request, ActionListener actionListener) { + protected void doExecute(Task task, ActionRequest actionRequest, ActionListener actionListener) { + GetAnomalyDetectorRequest request = GetAnomalyDetectorRequest.fromActionRequest(actionRequest); + String detectorID = request.getDetectorID(); User user = getUserContext(client); ActionListener listener = wrapRestActionListener(actionListener, FAIL_TO_GET_DETECTOR);