diff --git a/runner-core/src/main/java/org/apache/apisix/plugin/runner/handler/RpcCallHandler.java b/runner-core/src/main/java/org/apache/apisix/plugin/runner/handler/RpcCallHandler.java index ed5ff040..f054ccfe 100644 --- a/runner-core/src/main/java/org/apache/apisix/plugin/runner/handler/RpcCallHandler.java +++ b/runner-core/src/main/java/org/apache/apisix/plugin/runner/handler/RpcCallHandler.java @@ -215,7 +215,7 @@ private void doPostFilter(ChannelHandlerContext ctx) { } private void handleExtraInfo(ChannelHandlerContext ctx, ExtraInfoResponse request) { - String result = request.getResult(); + byte[] result = request.getResult(); String varsKey = queue.poll(); if (Objects.isNull(varsKey)) { logger.error("queue is empty"); @@ -233,7 +233,7 @@ private void handleExtraInfo(ChannelHandlerContext ctx, ExtraInfoResponse reques } } else { - nginxVars.put(varsKey, result); + nginxVars.put(varsKey, new String(result)); } if (queue.isEmpty()) { diff --git a/runner-plugin-sdk/src/main/java/org/apache/apisix/plugin/runner/ExtraInfoResponse.java b/runner-plugin-sdk/src/main/java/org/apache/apisix/plugin/runner/ExtraInfoResponse.java index eb10f975..7839afb1 100644 --- a/runner-plugin-sdk/src/main/java/org/apache/apisix/plugin/runner/ExtraInfoResponse.java +++ b/runner-plugin-sdk/src/main/java/org/apache/apisix/plugin/runner/ExtraInfoResponse.java @@ -35,12 +35,12 @@ public static ExtraInfoResponse from(ByteBuffer buffer) { return new ExtraInfoResponse(req); } - public String getResult() { - StringBuilder builder = new StringBuilder(); + public byte[] getResult() { + byte[] byteArray = new byte[this.resp.resultLength()]; for (int i = 0; i < this.resp.resultLength(); i++) { - builder.append((char) this.resp.result(i)); + byteArray[i] = (byte) this.resp.result(i); } - return builder.toString(); + return byteArray; } @Override diff --git a/runner-plugin-sdk/src/main/java/org/apache/apisix/plugin/runner/HttpRequest.java b/runner-plugin-sdk/src/main/java/org/apache/apisix/plugin/runner/HttpRequest.java index 896a9118..2efede05 100644 --- a/runner-plugin-sdk/src/main/java/org/apache/apisix/plugin/runner/HttpRequest.java +++ b/runner-plugin-sdk/src/main/java/org/apache/apisix/plugin/runner/HttpRequest.java @@ -24,6 +24,7 @@ import org.springframework.util.StringUtils; import java.nio.ByteBuffer; +import java.nio.charset.Charset; import java.util.HashMap; import java.util.Map; import java.util.Objects; @@ -50,7 +51,7 @@ public class HttpRequest implements A6Request { private Map vars; - private String body; + private byte[] body; public HttpRequest(Req req) { this.req = req; @@ -300,10 +301,18 @@ public void setVars(Map vars) { } public String getBody() { - return body; + return new String(body); + } + + public String getBody(Charset charset) { + return new String(body, charset); } public void setBody(String body) { + this.body = body.getBytes(); + } + + public void setBody(byte[] body) { this.body = body; } diff --git a/runner-plugin-sdk/src/main/java/org/apache/apisix/plugin/runner/PostRequest.java b/runner-plugin-sdk/src/main/java/org/apache/apisix/plugin/runner/PostRequest.java index ba4179ad..88315f59 100644 --- a/runner-plugin-sdk/src/main/java/org/apache/apisix/plugin/runner/PostRequest.java +++ b/runner-plugin-sdk/src/main/java/org/apache/apisix/plugin/runner/PostRequest.java @@ -23,6 +23,7 @@ import org.springframework.util.CollectionUtils; import java.nio.ByteBuffer; +import java.nio.charset.Charset; import java.util.HashMap; import java.util.Map; import java.util.Objects; @@ -38,7 +39,7 @@ public class PostRequest implements A6Request { private Integer status; - private String body; + private byte[] body; private Map vars; @@ -94,11 +95,19 @@ public Integer getUpstreamStatusCode() { } public void setBody(String body) { + this.body = body.getBytes(); + } + + public void setBody(byte[] body) { this.body = body; } public String getBody() { - return body; + return new String(body); + } + + public String getBody(Charset charset) { + return new String(body, charset); } public String getVars(String key) { diff --git a/runner-plugin-sdk/src/test/java/org/apache/apisix/plugin/runner/PostResponseTest.java b/runner-plugin-sdk/src/test/java/org/apache/apisix/plugin/runner/PostResponseTest.java index 512aca96..1c8a4de8 100644 --- a/runner-plugin-sdk/src/test/java/org/apache/apisix/plugin/runner/PostResponseTest.java +++ b/runner-plugin-sdk/src/test/java/org/apache/apisix/plugin/runner/PostResponseTest.java @@ -1,3 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.apisix.plugin.runner; import org.junit.jupiter.api.DisplayName;