![JAR search and dependency download from the Maven repository](/logo.png)
org.bdware.doip.codec.JsonDoipMessage Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of doip-audit-tool Show documentation
Show all versions of doip-audit-tool Show documentation
doip audit tool developed by bdware
The newest version!
package org.bdware.doip.codec;
import com.google.gson.JsonObject;
import org.apache.commons.codec.binary.Base64;
import org.bdware.doip.codec.doipMessage.DoipMessage;
import org.bdware.doip.codec.doipMessage.DoipMessageFactory;
import org.bdware.doip.codec.doipMessage.DoipResponseCode;
import org.bdware.sc.conn.ByteUtil;
import java.nio.charset.StandardCharsets;
public class JsonDoipMessage {
String reqID;
public JsonDoipHeader header;
public String body;
public JsonObject sm2KeyPair;
public void disableBase64Encode() {
if (header == null) header = new JsonDoipHeader();
if (header.attributes == null)
header.attributes = new JsonObject();
header.attributes.addProperty("bodyBase64Encoded", false);
}
public static boolean needEncode(JsonObject attribute) {
if (attribute.has("bodyBase64Encoded") && !attribute.get("bodyBase64Encoded").getAsBoolean()) {
return false;
}
return true;
}
public static JsonDoipMessage fromDoipMessage(DoipMessage doipMessage) {
JsonDoipMessage message = new JsonDoipMessage();
//TODO 需要的按byte数组方式去读取!
if (doipMessage.body != null && doipMessage.body.getEncodedData() != null) {
if (doipMessage.header == null
|| doipMessage.header.parameters == null
|| doipMessage.header.parameters.attributes == null
|| needEncode(doipMessage.header.parameters.attributes))
message.body = ByteUtil.encodeBASE64(doipMessage.body.getEncodedData());
else
message.body = doipMessage.body.getDataAsJsonString();
}
if (doipMessage.credential != null) {
message.sm2KeyPair = new JsonObject();
message.sm2KeyPair.addProperty("publicKey", doipMessage.credential.getSigner());
}
if (doipMessage.header != null && doipMessage.header.parameters != null) {
message.header = new JsonDoipHeader();
message.header.identifier = doipMessage.header.parameters.id;
message.header.operation = doipMessage.header.parameters.operation;
message.header.attributes = doipMessage.header.parameters.attributes;
if (doipMessage.header.parameters.response != null)
message.header.response = doipMessage.header.parameters.response.getName();
}
return message;
}
public DoipMessage toResponseDoipMessage(DoipMessage request) {
DoipMessageFactory.DoipMessageBuilder builder = new DoipMessageFactory.DoipMessageBuilder();
builder.createResponse(DoipResponseCode.getDoResponse(header.response), request);
appendHeaderAndBody(builder);
return builder.create();
}
// use
public DoipMessage toRequestDoipMessage() {
DoipMessageFactory.DoipMessageBuilder builder = new DoipMessageFactory.DoipMessageBuilder();
builder.createRequest(header.identifier, header.operation);
appendHeaderAndBody(builder);
return builder.create();
}
public void addAttribute(String key, String value) {
if (header == null) header = new JsonDoipHeader();
if (header.attributes == null) header.attributes = new JsonObject();
header.attributes.addProperty(key, value);
}
public String getBodyAsStr() {
return body;
}
private void appendHeaderAndBody(DoipMessageFactory.DoipMessageBuilder builder) {
if (header.attributes != null) {
for (String key : header.attributes.keySet()) {
builder.addAttributes(key, header.attributes.get(key));
}
}
if (body != null) {
if (header == null || header.attributes == null || needEncode(header.attributes)) {
if (Base64.isBase64(body)) {
builder.setBody(Base64.decodeBase64(body));
} else
builder.setBody(body.getBytes(StandardCharsets.UTF_8));
} else
builder.setBody(body.getBytes(StandardCharsets.UTF_8));
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy