private int buildStopResp()

in runner-plugin-sdk/src/main/java/org/apache/apisix/plugin/runner/HttpResponse.java [171:213]


    private int buildStopResp(FlatBufferBuilder builder) {
        int headerIndex = -1;
        if (!CollectionUtils.isEmpty(respHeaders)) {
            int[] headerTexts = new int[respHeaders.size()];
            int i = -1;
            for (Map.Entry<String, String> header : respHeaders.entrySet()) {
                int key = builder.createString(header.getKey());
                int value = 0;
                if (!Objects.isNull(header.getValue())) {
                    value = builder.createString(header.getValue());
                }
                int text = TextEntry.createTextEntry(builder, key, value);
                headerTexts[++i] = text;
            }
            headerIndex = Stop.createHeadersVector(builder, headerTexts);
        }

        int bodyIndex = -1;
        if (StringUtils.hasText(body)) {
            byte[] bodyBytes = body.getBytes(StandardCharsets.UTF_8);
            bodyIndex = Stop.createBodyVector(builder, bodyBytes);
        }

        Stop.startStop(builder);
        if (!Objects.isNull(statusCode)) {
            Stop.addStatus(builder, statusCode);
        } else {
            /**
             * Avoid APISIX using 0 as the default HTTP Status Code
             * {@link org.apache.apisix.plugin.runner.HttpResponse#setStatusCode(int statusCode)}
             * @see https://github.com/apache/apisix-java-plugin-runner/issues/55
            */
            Stop.addStatus(builder, 200);
            logger.info("Use 200 as the default HTTP Status Code when setStatusCode is not called");
        }
        if (-1 != headerIndex) {
            Stop.addHeaders(builder, headerIndex);
        }
        if (-1 != bodyIndex) {
            Stop.addBody(builder, bodyIndex);
        }
        return Stop.endStop(builder);
    }