Data Pipeline Patterns
Config Merge
A merge step can combine default settings with a specific override.
Config Merge
ConfigMerge.java
public class ConfigMerge {
record Settings(int timeoutSeconds, boolean audit) {}
static Settings merge(Settings defaults, int overrideTimeout) {
int timeout = overrideTimeout > 0 ? overrideTimeout : defaults.timeoutSeconds();
return new Settings(timeout, defaults.audit());
}
public static void main(String[] args) {
int overrideTimeout = ;
Settings defaults = new Settings(30, true);
Settings settings = merge(defaults, overrideTimeout);
System.out.println("timeout=" + settings.timeoutSeconds());
System.out.println("audit=" + settings.audit());
}
}
public class ConfigMerge {
record Settings(int timeoutSeconds, boolean audit) {}
static Settings merge(Settings defaults, int overrideTimeout) {
int timeout = overrideTimeout > 0 ? overrideTimeout : defaults.timeoutSeconds();
return new Settings(timeout, defaults.audit());
}
public static void main(String[] args) {
int overrideTimeout = ;
Settings defaults = new Settings(30, true);
Settings settings = merge(defaults, overrideTimeout);
System.out.println("timeout=" + settings.timeoutSeconds());
System.out.println("audit=" + settings.audit());
}
}
public class ConfigMerge {
record Settings(int timeoutSeconds, boolean audit) {}
static Settings merge(Settings defaults, int overrideTimeout) {
int timeout = overrideTimeout > 0 ? overrideTimeout : defaults.timeoutSeconds();
return new Settings(timeout, defaults.audit());
}
public static void main(String[] args) {
int overrideTimeout = ;
Settings defaults = new Settings(30, true);
Settings settings = merge(defaults, overrideTimeout);
System.out.println("timeout=" + settings.timeoutSeconds());
System.out.println("audit=" + settings.audit());
}
}
default settings
Defaults give the pipeline a complete configuration even when no override is present.
override rule
The merge rule chooses the override only when it is meaningful.