All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.bdware.doip.cluster.client.DOAConfigBuilder Maven / Gradle / Ivy

The newest version!
package org.bdware.doip.cluster.client;

import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import org.bdware.doip.audit.EndpointConfig;
import org.bdware.doip.audit.client.AuditIrpClient;
import org.bdware.doip.audit.writer.AuditConfig;
import org.bdware.doip.audit.writer.AuditType;
import org.bdware.doip.codec.doipMessage.DoipMessageSigner;
import org.bdware.doip.cluster.InMemoryIrpClient;
import org.bdware.doip.cluster.StaticContentIrpClient;
import org.bdware.doip.encrypt.SM2Signer;
import org.bdware.irp.client.IrpClient;

public class DOAConfigBuilder {
    private final StaticDOAConfig ret;

    public static class StaticDOAConfig implements DOAConfig {
        private IrpClient irpClient;
        private AuditConfig auditConfig;
        private DoipMessageSigner signer;
        private JsonObject extraConfig;

        @Override
        public IrpClient getIrpClient() {
            return irpClient;
        }

        @Override
        public AuditConfig getAuditConfig() {
            return auditConfig;
        }

        @Override
        public DoipMessageSigner getSigner() {
            return signer;
        }

        @Override
        public JsonObject getExtraConfig() {
            return extraConfig;
        }
    }

    public static DOAConfig withIrpConfig(String irpConfig) {
        DOAConfigBuilder configBuilder = new DOAConfigBuilder();
        configBuilder.setIrpClient(irpConfig);
        return configBuilder.build();
    }

    public DOAConfigBuilder() {
        this.ret = new StaticDOAConfig();
    }

    public DOAConfigBuilder setIrpClient(String content) {
        if (content.startsWith("{")) {
            JsonObject jo = JsonParser.parseString(content).getAsJsonObject();
            switch (jo.get("type").getAsString()) {
                case "static":
                    ret.irpClient = new StaticContentIrpClient(jo.get("content").getAsJsonObject());
                    break;
                case "inMemory":
                default:
                    ret.irpClient = new InMemoryIrpClient(jo.get("content").getAsJsonObject());
                    break;
            }
        } else {
            EndpointConfig config = new EndpointConfig();
            config.routerURI = content;
            ret.irpClient = new AuditIrpClient(config);
        }
        return this;
    }

    public DOAConfigBuilder setAuditConfig(AuditConfig config) {
        ret.auditConfig = config;
        return this;
    }

    public DOAConfigBuilder setSigner(DoipMessageSigner signer) {
        ret.signer = signer;
        return this;
    }

    public DOAConfig build() {
        if (ret.auditConfig == null) ret.auditConfig = AuditConfig.newInstance(null, AuditType.None, null);
        if (ret.signer == null) ret.signer = new SM2Signer(null, false, false);
        if (ret.extraConfig == null) ret.extraConfig = new JsonObject();
        return ret;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy