[jOOQ/jOOQ#15966] [jOOQ/jOOQ#15974] Copy default configuration

MiniJAXB doesn't deep clone the appended objects, so we end up using shared mutable state (see [jOOQ/jOOQ#16056]). This must be avoided, otherwise, each execution updates the common shared default configuration, which is certainly not what we want.
This commit is contained in:
Lukas Eder 2024-01-11 09:35:34 +01:00
parent ab8b9dff1e
commit 303cfefa99

View File

@ -100,11 +100,15 @@ public class NamedConfiguration {
void configuration0(Configuration configuration) {
if (!unnamed)
MiniJAXB.append(this.configuration, project.getExtensions().getByType(CodegenPluginExtension.class).defaultConfiguration().configuration);
MiniJAXB.append(this.configuration, copy(project.getExtensions().getByType(CodegenPluginExtension.class).defaultConfiguration().configuration));
MiniJAXB.append(this.configuration, configuration);
}
static Configuration copy(Configuration configuration) {
return MiniJAXB.unmarshal(MiniJAXB.marshal(configuration), Configuration.class);
}
public void configuration(Action<ConfigurationExtension> action) {
ConfigurationExtension c = objects.newInstance(ConfigurationExtension.class, objects);
action.execute(c);