From a117ef4a414dba1135b9fc44f6430927f60e0452 Mon Sep 17 00:00:00 2001 From: "haoeliu@foxmail.com" Date: Mon, 20 Feb 2023 20:44:46 +0800 Subject: [PATCH] fix: add attributes and requestID to doipMsg to return --- .../org/bdware/sc/handler/DOOPRequestHandler.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/bdware/sc/handler/DOOPRequestHandler.java b/src/main/java/org/bdware/sc/handler/DOOPRequestHandler.java index bd3eaf9..4a31b11 100644 --- a/src/main/java/org/bdware/sc/handler/DOOPRequestHandler.java +++ b/src/main/java/org/bdware/sc/handler/DOOPRequestHandler.java @@ -1,16 +1,19 @@ package org.bdware.sc.handler; import com.google.gson.Gson; +import com.google.gson.JsonObject; import io.netty.channel.ChannelHandlerContext; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.bdware.doip.codec.doipMessage.DoipMessage; +import org.bdware.doip.codec.doipMessage.HeaderParameter; import org.bdware.doip.codec.operations.BasicOperations; import org.bdware.doip.endpoint.server.DoipRequestHandler; import org.bdware.doip.endpoint.server.NettyServerHandler; import org.bdware.doip.endpoint.server.RepositoryHandler; import org.bdware.sc.ContractProcess; import org.bdware.sc.bean.ContractRequest; +import org.bdware.sc.boundry.JavaScriptEntry; import org.bdware.sc.entity.DoipMessagePacker; import org.bdware.sc.node.FunctionNode; import org.bdware.sc.util.JsonUtil; @@ -138,7 +141,16 @@ public class DOOPRequestHandler implements DoipRequestHandler, RepositoryHandler try { // 改变调用的函数 + 构造DoipMessagePacker Object ret = ContractProcess.instance.engine.executeWithoutLock(fn, contractRequest, arg); - return JsonUtil.fromJson(JsonUtil.toJson(ret), DoipMessage.class); + DoipMessage finalDoipMsg = JsonUtil.fromJson(JsonUtil.toJson(ret), DoipMessage.class); + finalDoipMsg.requestID = msg.requestID; + if(finalDoipMsg.header.parameters == null) { + finalDoipMsg.header.parameters = new HeaderParameter("", ""); + } + if(finalDoipMsg.header.parameters.attributes == null) { + finalDoipMsg.header.parameters.attributes = new JsonObject(); + } + finalDoipMsg.header.parameters.attributes.addProperty("nodeID", String.valueOf(JavaScriptEntry.shardingID)); + return finalDoipMsg; } catch (Exception e) { e.printStackTrace(); logger.error("buildRequestAndInvokeEngine has something wrong, executeWithoutLock err or validateJsonElementRulesByArgSchemaVisitor err");