package at.gv.egiz.moazs.preprocess; import at.gv.zustellung.app2mzs.xsd.ConfigType; import at.gv.zustellung.app2mzs.xsd.ServerType; import org.springframework.stereotype.Component; import static at.gv.zustellung.app2mzs.xsd.ConfigType.configTypeBuilder; import static at.gv.zustellung.app2mzs.xsd.ServerType.serverTypeBuilder; @Component public class ConfigProfileMerger { public ConfigType merge(ConfigType primary, ConfigType fallback) { var builder = configTypeBuilder(fallback); if(primary != null) { if(primary.getServer() != null) { builder.withServer(merge(primary.getServer(), fallback.getServer())); } if(primary.isPerformQueryPersonRequest() != null) { builder.withPerformQueryPersonRequest(primary.isPerformQueryPersonRequest()); } } return builder.build(); } private ServerType merge(ServerType primary, ServerType fallback) { if (fallback == null) { return primary; } var builder = serverTypeBuilder(fallback); if (primary.getX509() != null) builder.withX509 (primary.getX509() ); if (primary.getZUSEUrlID() != null) builder.withZUSEUrlID(primary.getZUSEUrlID()); return builder.build(); } }