support doip cluster mode

This commit is contained in:
CaiHQ 2023-04-28 17:50:03 +08:00
parent 723c9c7a06
commit fd1690c97b
12 changed files with 83 additions and 178 deletions

View File

@ -6,7 +6,7 @@ plugins {
} }
group = "org.bdware.sc" group = "org.bdware.sc"
version = "1.8.5" version = "1.8.7"
tasks.withType(JavaCompile) { tasks.withType(JavaCompile) {
// options.compilerArgs << '-Xlint:none' // options.compilerArgs << '-Xlint:none'
// options.compilerArgs << '-Xlint:deprecation' << "-Werror" // options.compilerArgs << '-Xlint:deprecation' << "-Werror"
@ -48,8 +48,8 @@ dependencies {
implementation 'com.sun.mail:javax.mail:1.6.2' implementation 'com.sun.mail:javax.mail:1.6.2'
implementation 'com.squareup.okhttp3:okhttp:4.9.1' implementation 'com.squareup.okhttp3:okhttp:4.9.1'
implementation 'org.bdware.bdcontract:sdk-java:1.0.2' implementation 'org.bdware.bdcontract:sdk-java:1.0.2'
implementation 'org.bdware.doip:doip-audit-tool:1.2.4' implementation 'org.bdware.doip:doip-audit-tool:1.2.6'
implementation 'org.bdware.doip:doip-sdk:1.4.0' implementation 'org.bdware.doip:doip-sdk:1.4.2'
implementation fileTree(dir: 'lib', include: '*.jar') implementation fileTree(dir: 'lib', include: '*.jar')
testImplementation 'junit:junit:4.13.2' testImplementation 'junit:junit:4.13.2'
} }
@ -68,7 +68,7 @@ jar {
// while develop at local use "false" // while develop at local use "false"
configurations.runtimeClasspath.filter { configurations.runtimeClasspath.filter {
it.getAbsolutePath().contains("/lib/") it.getAbsolutePath().contains("/lib/")
//false // false
}.collect { }.collect {
it.isDirectory() ? it : zipTree(it) it.isDirectory() ? it : zipTree(it)
} }

View File

@ -63,7 +63,7 @@ public class DebugMain {
= new ResultCallback() { = new ResultCallback() {
@Override @Override
public void onResult(String str) { public void onResult(String str) {
if(str.contains("Error")) { if (str.contains("Error")) {
LOGGER.error("Some error happens: " + str); LOGGER.error("Some error happens: " + str);
} }
LOGGER.info("[PrintCB] " + str); LOGGER.info("[PrintCB] " + str);
@ -103,7 +103,7 @@ public class DebugMain {
config.cPort = jsonObject.get("cPort").getAsInt(); config.cPort = jsonObject.get("cPort").getAsInt();
config.port = jsonObject.get("port").getAsInt(); config.port = jsonObject.get("port").getAsInt();
JsonObject ownerAndScript = new JsonObject(); JsonObject ownerAndScript = new JsonObject();
String arg = "abc&owner=" + config.publicKey + "&script=" + config.ypkPath; String arg = "abc&owner=" + config.publicKey + "&script=" + config.ypkPath + "&doipStartPort=" + config.doipStartPort;
url = String.format(urlFormat, config.agentAddress, "allocateKeyPair", arg); url = String.format(urlFormat, config.agentAddress, "allocateKeyPair", arg);
resp = HttpUtil.httpGet(url); resp = HttpUtil.httpGet(url);
LOGGER.info(url); LOGGER.info(url);
@ -133,6 +133,7 @@ public class DebugMain {
String killBeforeStart; String killBeforeStart;
String ypkPath; String ypkPath;
String cpHost; String cpHost;
int doipStartPort;
//AutoAppend //AutoAppend
int port; int port;
String cmi; String cmi;

View File

@ -728,7 +728,7 @@ public class ContractProcess {
startPort = arg.getAsJsonObject().get("doipStartPort").getAsInt(); startPort = arg.getAsJsonObject().get("doipStartPort").getAsInt();
} }
LOGGER.info("Fetch the onStartingDoipServerRes from router successfully, the result is " + onStartingDoipServerRes); LOGGER.info("Fetch the onStartingDoipServerRes from router successfully, the result is " + onStartingDoipServerRes);
int doipListenPort = DoipClusterServer.startDoipServer(startPort); int doipListenPort = DoipClusterServer.startDoipServer(startPort,onStartingDoipServerRes);
returnValue.addProperty("doipListenPort", doipListenPort); returnValue.addProperty("doipListenPort", doipListenPort);
this.contract.setDoipPort(doipListenPort); this.contract.setDoipPort(doipListenPort);
returnValue.addProperty("doipStartPort", startPort); returnValue.addProperty("doipStartPort", startPort);

View File

@ -0,0 +1,15 @@
package org.bdware.sc.boundry.utils;
import org.bdware.sc.compiler.PermissionStub;
import org.bdware.sc.node.Permission;
@PermissionStub(permission = Permission.Digest)
public class DigestUtil {
public static String md5Hex(String arg) {
return org.apache.commons.codec.digest.DigestUtils.md5Hex(arg);
}
public static String sha256Hex(String arg) {
return org.apache.commons.codec.digest.DigestUtils.sha256Hex(arg);
}
}

View File

@ -1,8 +1,6 @@
package org.bdware.sc.engine; package org.bdware.sc.engine;
import com.google.gson.*; import com.google.gson.*;
import org.bdware.doip.codec.doipMessage.DoipMessage;
import org.bdware.sc.util.JsonUtil;
import wrp.jdk.nashorn.api.scripting.ScriptObjectMirror; import wrp.jdk.nashorn.api.scripting.ScriptObjectMirror;
import wrp.jdk.nashorn.internal.objects.NativeArray; import wrp.jdk.nashorn.internal.objects.NativeArray;
import wrp.jdk.nashorn.internal.runtime.PropertyMap; import wrp.jdk.nashorn.internal.runtime.PropertyMap;
@ -44,7 +42,7 @@ public class JSONTool {
} }
public static Object convertJsonElementToMirror(Object input) { public static Object convertJsonElementToMirror(Object input) {
if(input instanceof JsonElement) { if (input instanceof JsonElement) {
return convertJsonElementToMirror((JsonElement) input); return convertJsonElementToMirror((JsonElement) input);
} else { } else {
return input; return input;
@ -149,9 +147,7 @@ public class JSONTool {
return jsonObject; return jsonObject;
} else if (obj.getClass() == jdk.internal.dynalink.beans.StaticClass.class) { } else if (obj.getClass() == jdk.internal.dynalink.beans.StaticClass.class) {
return JsonNull.INSTANCE; return JsonNull.INSTANCE;
} else if (obj.getClass() == DoipMessage.class) { } else if (obj instanceof Number) {
return JsonUtil.fromJson(JsonUtil.toJson(obj), JsonObject.class);
}else if (obj instanceof Number) {
return new JsonPrimitive((Number) obj); return new JsonPrimitive((Number) obj);
} else if (obj instanceof String) { } else if (obj instanceof String) {
return new JsonPrimitive((String) obj); return new JsonPrimitive((String) obj);

View File

@ -57,7 +57,6 @@ public class AccessHandler implements AnnotationHook {
LOGGER.info("verify success!" + argPacks.request.getRequester()); LOGGER.info("verify success!" + argPacks.request.getRequester());
if (acFunction == null) return argPacks; if (acFunction == null) return argPacks;
DesktopEngine de = (DesktopEngine) desktopEngine; DesktopEngine de = (DesktopEngine) desktopEngine;
try { try {
ContractRequest input = argPacks.request; ContractRequest input = argPacks.request;
JO jo = new JO(PropertyMap.newMap()); JO jo = new JO(PropertyMap.newMap());

View File

@ -34,15 +34,20 @@ public class DOOPAfterExecHandler implements AnnotationHook {
originDoipMsg = doipMessagePacker.rawDoipMsg; originDoipMsg = doipMessagePacker.rawDoipMsg;
// if http, directly return // if http, directly return
if (doipMessagePacker.source.equals("http")) { if (doipMessagePacker.source.equals("http")) {
if (argPacks.ret != null && argPacks.ret instanceof DoipMessage) {
argPacks.ret = JsonUtil.parseObject(JsonDoipMessage.fromDoipMessage((DoipMessage) argPacks.ret));
}
return argPacks; return argPacks;
} else { } else {
// pack // pack
JsonObject jsonObjectRes = JSONTool.convertMirrorToJson(argPacks.ret).getAsJsonObject(); if (!(argPacks.ret instanceof DoipMessage)) {
// validate json response JsonObject jsonObjectRes = ((JsonElement)argPacks.ret).getAsJsonObject();
ArgSchemaVisitor visitor = new ArgSchemaVisitor(jsonObjectRes); // validate json response
validateJsonElementRulesByArgSchemaVisitor(jsonResponseRules, visitor); ArgSchemaVisitor visitor = new ArgSchemaVisitor(jsonObjectRes);
JsonDoipMessage returnedMessage = JsonUtil.fromJson(jsonObjectRes, JsonDoipMessage.class); validateJsonElementRulesByArgSchemaVisitor(jsonResponseRules, visitor);
argPacks.ret = returnedMessage.toResponseDoipMessage(originDoipMsg); JsonDoipMessage returnedMessage = JsonUtil.fromJson(jsonObjectRes, JsonDoipMessage.class);
argPacks.ret = returnedMessage.toResponseDoipMessage(originDoipMsg);
}
return argPacks; return argPacks;
} }
} else { } else {

View File

@ -3,8 +3,9 @@ package org.bdware.sc.engine.hook;
import com.google.gson.JsonElement; import com.google.gson.JsonElement;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.google.gson.JsonParser; import com.google.gson.JsonParser;
import org.bdware.doip.codec.JsonDoipMessage;
import org.bdware.doip.codec.doipMessage.DoipMessage; import org.bdware.doip.codec.doipMessage.DoipMessage;
import org.bdware.doip.codec.doipMessage.DoipMessageFactory; import org.bdware.doip.codec.doipMessage.MessageCredential;
import org.bdware.doip.codec.operations.BasicOperations; import org.bdware.doip.codec.operations.BasicOperations;
import org.bdware.sc.JSEngine; import org.bdware.sc.JSEngine;
import org.bdware.sc.bean.ContractRequest; import org.bdware.sc.bean.ContractRequest;
@ -12,10 +13,7 @@ import org.bdware.sc.boundry.ScriptReturnException;
import org.bdware.sc.entity.DoipMessagePacker; import org.bdware.sc.entity.DoipMessagePacker;
import org.bdware.sc.node.AnnotationHook; import org.bdware.sc.node.AnnotationHook;
import org.bdware.sc.node.ArgPacks; import org.bdware.sc.node.ArgPacks;
import org.bdware.sc.util.JsonUtil;
import java.nio.charset.StandardCharsets;
import java.util.Map;
import java.util.Set;
public class DOOPBeforeExecHandler implements AnnotationHook { public class DOOPBeforeExecHandler implements AnnotationHook {
@ -31,17 +29,20 @@ public class DOOPBeforeExecHandler implements AnnotationHook {
public ArgPacks handle(JSEngine desktopEngine, ArgPacks argPacks) { public ArgPacks handle(JSEngine desktopEngine, ArgPacks argPacks) {
Object arg = argPacks.arg; Object arg = argPacks.arg;
DoipMessagePacker doipMsgPackerArg = new DoipMessagePacker(); DoipMessagePacker doipMsgPackerArg = new DoipMessagePacker();
if (arg instanceof DoipMessagePacker) { if (arg instanceof DoipMessagePacker) {
doipMsgPackerArg = (DoipMessagePacker) arg; doipMsgPackerArg = (DoipMessagePacker) arg;
} else { } else {
// validate http request's params // validate http request's params
ContractRequest httpReq = argPacks.request; ContractRequest httpReq = argPacks.request;
validateHTTPRequestArgs(httpReq); validateHTTPRequestArgs(httpReq);
// set doipMsgPackerArg struct's params // set doipMsgPackerArg struct's params
doipMsgPackerArg.setSource("http"); doipMsgPackerArg.setSource("http");
doipMsgPackerArg.rawDoipMsg = convertHttpRequestToDoipMessage(httpReq); doipMsgPackerArg.rawDoipMsg = convertHttpRequestToDoipMessage(httpReq);
if (httpReq.verifySignature()) {
doipMsgPackerArg.rawDoipMsg.credential = new MessageCredential(httpReq.getRequester(), new byte[0]);
} else {
doipMsgPackerArg.rawDoipMsg.credential = null;
}
} }
argPacks.arg = doipMsgPackerArg; argPacks.arg = doipMsgPackerArg;
@ -82,71 +83,8 @@ public class DOOPBeforeExecHandler implements AnnotationHook {
public DoipMessage convertHttpRequestToDoipMessage(ContractRequest httpReq) { public DoipMessage convertHttpRequestToDoipMessage(ContractRequest httpReq) {
JsonObject jsonParams = JsonParser.parseString(httpReq.getArg().getAsString()).getAsJsonObject(); JsonObject jsonParams = JsonParser.parseString(httpReq.getArg().getAsString()).getAsJsonObject();
// taking Extension into consideration JsonDoipMessage doipMessage = JsonUtil.fromJson(jsonParams, JsonDoipMessage.class);
JsonObject header = jsonParams.get("header") != null ? jsonParams.get("header").getAsJsonObject() : null; return doipMessage.toRequestDoipMessage();
String body = jsonParams.get("body") != null ? jsonParams.get("body").getAsString() : null;
DoipMessage doipMessage = null;
switch (httpOperation) {
case Hello:
case Delete:
case ListOps:
doipMessage = new DoipMessageFactory.DoipMessageBuilder().createRequest(header.get("identifier").getAsString(), httpOperation.getName()).create();
break;
case Create:
case Update:
doipMessage = new DoipMessageFactory.DoipMessageBuilder()
.createRequest(header.get("identifier").getAsString(), httpOperation.getName())
.setBody(body.getBytes(StandardCharsets.UTF_8))
.create();
break;
case Search:
DoipMessageFactory.DoipMessageBuilder searchBuilder = new DoipMessageFactory.DoipMessageBuilder()
.createRequest(header.get("identifier").getAsString(), httpOperation.getName());
JsonElement query = header.get("query");
if (query != null) searchBuilder.addAttributes("query", query.getAsString());
JsonElement pageNum = header.get("pageNum");
if (pageNum != null) searchBuilder.addAttributes("pageNum", pageNum.getAsInt());
JsonElement pageSize = header.get("pageSize");
if (pageSize != null) searchBuilder.addAttributes("pageSize", pageSize.getAsInt());
JsonElement type = header.get("type");
if (type != null) searchBuilder.addAttributes("type", type.getAsString());
doipMessage = searchBuilder.create();
break;
case Retrieve:
doipMessage = new DoipMessageFactory.DoipMessageBuilder().createRequest(header.get("identifier").getAsString(), httpOperation.getName()).create();
JsonElement element = header.get("element");
JsonElement includeElementData = header.get("includeElementData");
if (element != null) doipMessage.header.parameters.addAttribute("element", element.getAsString());
if (includeElementData != null && includeElementData.getAsBoolean())
doipMessage.header.parameters.addAttribute("includeElementData", "true");
break;
case Extension:
DoipMessageFactory.DoipMessageBuilder extensionBuilder = new DoipMessageFactory.DoipMessageBuilder();
if (header != null) {
if (header.get("identifier") != null) {
extensionBuilder = extensionBuilder
.createRequest(header.get("identifier").getAsString(), httpOperation.getName());
}
Set<Map.Entry<String, JsonElement>> entries = header.entrySet();
for (Map.Entry<String, JsonElement> entry : entries) {
extensionBuilder.addAttributes(entry.getKey(), entry.getValue());
}
}
if (body != null) {
extensionBuilder.setBody(body.getBytes(StandardCharsets.UTF_8));
}
doipMessage = extensionBuilder.create();
break;
case Unknown:
default:
break;
}
return doipMessage;
} }

View File

@ -1,5 +1,6 @@
package org.bdware.sc.engine.hook; package org.bdware.sc.engine.hook;
import org.bdware.doip.codec.doipMessage.DoipMessage;
import org.bdware.sc.JSEngine; import org.bdware.sc.JSEngine;
import org.bdware.sc.engine.JSONTool; import org.bdware.sc.engine.JSONTool;
import org.bdware.sc.node.AnnotationHook; import org.bdware.sc.node.AnnotationHook;
@ -8,6 +9,8 @@ import org.bdware.sc.node.ArgPacks;
public class ObjToJsonHandler implements AnnotationHook { public class ObjToJsonHandler implements AnnotationHook {
@Override @Override
public ArgPacks handle(JSEngine desktopEngine, ArgPacks argPacks) { public ArgPacks handle(JSEngine desktopEngine, ArgPacks argPacks) {
if (argPacks.ret instanceof DoipMessage)
return argPacks;
argPacks.ret = JSONTool.convertMirrorToJson(argPacks.ret); argPacks.ret = JSONTool.convertMirrorToJson(argPacks.ret);
return argPacks; return argPacks;
} }

View File

@ -11,7 +11,6 @@ import org.bdware.doip.codec.doipMessage.HeaderParameter;
import org.bdware.doip.codec.operations.BasicOperations; import org.bdware.doip.codec.operations.BasicOperations;
import org.bdware.doip.endpoint.server.DoipRequestHandler; import org.bdware.doip.endpoint.server.DoipRequestHandler;
import org.bdware.doip.endpoint.server.NettyServerHandler; import org.bdware.doip.endpoint.server.NettyServerHandler;
import org.bdware.doip.endpoint.server.RepositoryHandler;
import org.bdware.sc.ContractProcess; import org.bdware.sc.ContractProcess;
import org.bdware.sc.bean.ContractRequest; import org.bdware.sc.bean.ContractRequest;
import org.bdware.sc.boundry.JavaScriptEntry; import org.bdware.sc.boundry.JavaScriptEntry;
@ -24,7 +23,7 @@ import java.io.PrintStream;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
public class DOOPRequestHandler implements DoipRequestHandler, RepositoryHandler { public class DOOPRequestHandler implements DoipRequestHandler {
static Logger logger = LogManager.getLogger(NettyServerHandler.class); static Logger logger = LogManager.getLogger(NettyServerHandler.class);
public Map<String, FunctionNode> doipFunctionNodeMap; public Map<String, FunctionNode> doipFunctionNodeMap;
@ -71,81 +70,6 @@ public class DOOPRequestHandler implements DoipRequestHandler, RepositoryHandler
return null; return null;
} }
@Override
public DoipMessage handleHello(DoipMessage request) {
FunctionNode fn = doipFunctionNodeMap.get(BasicOperations.Hello.getName());
if (fn == null) fn = doipFunctionNodeMap.get(BasicOperations.Unknown.getName());
if (fn != null) {
return buildRequestAndInvokeEngine(fn, request);
} else {
logger.error("DoipOperation Hello is not provided");
}
return null;
}
@Override
public DoipMessage handleListOps(DoipMessage request) {
FunctionNode fn = doipFunctionNodeMap.get(BasicOperations.ListOps.getName());
if (fn == null) fn = doipFunctionNodeMap.get(BasicOperations.Unknown.getName());
if (fn != null) {
return buildRequestAndInvokeEngine(fn, request);
} else {
logger.error("DoipOperation ListOps is not provided");
}
return null;
}
@Override
public DoipMessage handleCreate(DoipMessage request) {
FunctionNode fn = doipFunctionNodeMap.get(BasicOperations.Create.getName());
if (fn == null) fn = doipFunctionNodeMap.get(BasicOperations.Unknown.getName());
if (fn != null) {
return buildRequestAndInvokeEngine(fn, request);
} else {
logger.error("DoipOperation Create is not provided");
}
return null;
}
@Override
public DoipMessage handleUpdate(DoipMessage request) {
FunctionNode fn = doipFunctionNodeMap.get(BasicOperations.Update.getName());
if (fn == null) fn = doipFunctionNodeMap.get(BasicOperations.Unknown.getName());
if (fn != null) {
return buildRequestAndInvokeEngine(fn, request);
} else {
logger.error("DoipOperation Update is not provided");
}
return null;
}
@Override
public DoipMessage handleDelete(DoipMessage request) {
FunctionNode fn = doipFunctionNodeMap.get(BasicOperations.Delete.getName());
if (fn == null) fn = doipFunctionNodeMap.get(BasicOperations.Unknown.getName());
if (fn != null) {
return buildRequestAndInvokeEngine(fn, request);
} else {
logger.error("DoipOperation Delete is not provided");
}
return null;
}
@Override
public DoipMessage handleRetrieve(DoipMessage request) {
FunctionNode fn = doipFunctionNodeMap.get(BasicOperations.Retrieve.getName());
if (fn == null) fn = doipFunctionNodeMap.get(BasicOperations.Unknown.getName());
if (fn != null) {
return buildRequestAndInvokeEngine(fn, request);
} else {
logger.error("DoipOperation Retrieve is not provided");
}
return null;
}
public DoipMessage buildRequestAndInvokeEngine(FunctionNode fn, DoipMessage msg) { public DoipMessage buildRequestAndInvokeEngine(FunctionNode fn, DoipMessage msg) {
ContractRequest contractRequest = constructContractRequest(fn, msg); ContractRequest contractRequest = constructContractRequest(fn, msg);
DoipMessagePacker arg = new DoipMessagePacker("doip", msg); DoipMessagePacker arg = new DoipMessagePacker("doip", msg);

View File

@ -42,9 +42,9 @@ public class DoipClusterServer extends DoipServerImpl {
return instance; return instance;
} }
public static int startDoipServer(int startPort) throws InterruptedException { public static int startDoipServer(int startPort, JsonElement otherConfigs) throws InterruptedException {
try { try {
int ret = DoipLocalSingleton.run(startPort); int ret = DoipLocalSingleton.run(startPort, otherConfigs);
return ret; return ret;
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();

View File

@ -1,7 +1,12 @@
package org.bdware.sc.server; package org.bdware.sc.server;
import com.google.gson.JsonElement;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.bdware.doip.audit.EndpointConfig;
import org.bdware.doip.audit.EndpointInfo;
import org.bdware.doip.audit.client.AuditIrpClient;
import org.bdware.doip.audit.config.TempConfigStorage;
import org.bdware.doip.endpoint.server.DoipListenerConfig; import org.bdware.doip.endpoint.server.DoipListenerConfig;
import org.bdware.doip.endpoint.server.DoipServerImpl; import org.bdware.doip.endpoint.server.DoipServerImpl;
import org.bdware.doip.endpoint.server.DoipServiceInfo; import org.bdware.doip.endpoint.server.DoipServiceInfo;
@ -12,6 +17,7 @@ import org.bdware.sc.handler.DOOPRequestHandler;
import java.net.URI; import java.net.URI;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.UUID;
public class DoipLocalSingleton { public class DoipLocalSingleton {
static Logger LOGGER = LogManager.getLogger(DoipLocalSingleton.class); static Logger LOGGER = LogManager.getLogger(DoipLocalSingleton.class);
@ -24,7 +30,7 @@ public class DoipLocalSingleton {
@Override @Override
public void run() { public void run() {
try { try {
DoipLocalSingleton.run(port); DoipLocalSingleton.run(port, null);
} catch (InterruptedException e) { } catch (InterruptedException e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -33,17 +39,17 @@ public class DoipLocalSingleton {
doipServerThread.start(); doipServerThread.start();
} }
public static int run(int port) throws InterruptedException { public static int run(int port, JsonElement otherConfigs) throws InterruptedException {
int i = -1; int i = -1;
LOGGER.info("try to listener port:" + port); LOGGER.info("try to listener port:" + port);
for (i = run("tcp://127.0.0.1:" + port++); i < 0; ) { for (i = run("tcp://127.0.0.1:" + port++, otherConfigs); i < 0; ) {
LOGGER.info("try again to listener port:" + port); LOGGER.info("try again to listener port:" + port);
i = run("tcp://127.0.0.1:" + port++); i = run("tcp://127.0.0.1:" + port++, otherConfigs);
} }
return i; return i;
} }
public static int run(String doipAddr) throws InterruptedException { public static int run(String doipAddr, JsonElement otherConfigs) throws InterruptedException {
List<DoipListenerConfig> infos = new ArrayList<>(); List<DoipListenerConfig> infos = new ArrayList<>();
int port = -1; int port = -1;
try { try {
@ -53,10 +59,28 @@ public class DoipLocalSingleton {
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
DoipServiceInfo info = new DoipServiceInfo("aibd.govdata.tj/do.3f9c41e6-9f8e-48a0-9220-53f438d40e43", "ownerDEF", "gateRepo", infos); String repoID = "bdtest/BDRepo/" + UUID.randomUUID().toString();
String owner = ContractProcess.instance.getContract().getOwner();
String repoType = "Repository";
try {
if (otherConfigs != null && otherConfigs.isJsonObject()) {
EndpointConfig config = new TempConfigStorage(otherConfigs.toString()).loadAsEndpointConfig();
if (config.routerURI != null) {
AuditIrpClient irpClient = new AuditIrpClient(config);
EndpointInfo endpointInfo = irpClient.getEndpointInfo();
repoID = endpointInfo.getDoId();
owner = endpointInfo.getPubKey();
infos.clear();
infos.add(new DoipListenerConfig(endpointInfo.getURI(), "2.1"));
}
}
} catch (Exception e) {
e.printStackTrace();
}
DoipServiceInfo info = new DoipServiceInfo(repoID, owner, repoType, infos);
server = new DoipServerImpl(info); server = new DoipServerImpl(info);
DOOPRequestHandler handler = ContractProcess.instance.doopRequestHandler; DOOPRequestHandler handler = ContractProcess.instance.doopRequestHandler;
server.setRepositoryHandler(handler); server.setRequestCallback(handler);
ResultChecker checker = new ResultChecker(); ResultChecker checker = new ResultChecker();
server.start(checker); server.start(checker);
checker.waitForResult(1000); checker.waitForResult(1000);