From 5aa6185d92a46d5907f61bc5678eb19bd72c8b38 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Wed, 6 Dec 2023 11:15:57 +0100 Subject: [PATCH] [jOOQ/jOOQ#12985] Clone the closures for good measure --- .../gradle/CodegenPluginExtension.java | 1 + .../jooq/codegen/gradle/MetaExtensions.java | 82 +++++++++++++++++++ .../codegen/gradle/NamedConfiguration.java | 1 + 3 files changed, 84 insertions(+) diff --git a/jOOQ-codegen-gradle/src/main/java/org/jooq/codegen/gradle/CodegenPluginExtension.java b/jOOQ-codegen-gradle/src/main/java/org/jooq/codegen/gradle/CodegenPluginExtension.java index 59e27b3dd3..a54d72e5ee 100644 --- a/jOOQ-codegen-gradle/src/main/java/org/jooq/codegen/gradle/CodegenPluginExtension.java +++ b/jOOQ-codegen-gradle/src/main/java/org/jooq/codegen/gradle/CodegenPluginExtension.java @@ -78,6 +78,7 @@ public class CodegenPluginExtension { public void configuration(Closure closure) { MetaExtensions.ConfigurationExtension c = new MetaExtensions.ConfigurationExtension(); + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(c); closure.call(c); diff --git a/jOOQ-codegen-gradle/src/main/java/org/jooq/codegen/gradle/MetaExtensions.java b/jOOQ-codegen-gradle/src/main/java/org/jooq/codegen/gradle/MetaExtensions.java index bb898fb329..8d557e7f41 100644 --- a/jOOQ-codegen-gradle/src/main/java/org/jooq/codegen/gradle/MetaExtensions.java +++ b/jOOQ-codegen-gradle/src/main/java/org/jooq/codegen/gradle/MetaExtensions.java @@ -50,6 +50,7 @@ public class MetaExtensions { public static class ConfigurationExtension extends Configuration { public void jdbc(Closure closure) { JdbcExtension o = new JdbcExtension(); + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(o); closure.call(o); @@ -57,6 +58,7 @@ public class MetaExtensions { } public void generator(Closure closure) { GeneratorExtension o = new GeneratorExtension(); + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(o); closure.call(o); @@ -70,12 +72,14 @@ public class MetaExtensions { ArrayList l = new ArrayList() { public void property(Closure c) { PropertyExtension o = new PropertyExtension(); + c = (Closure) c.clone(); c.setResolveStrategy(Closure.DELEGATE_FIRST); c.setDelegate(o); c.call(o); add(o); } }; + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(l); closure.call(l); @@ -89,6 +93,7 @@ public class MetaExtensions { public static class GeneratorExtension extends Generator { public void strategy(Closure closure) { StrategyExtension o = new StrategyExtension(); + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(o); closure.call(o); @@ -96,6 +101,7 @@ public class MetaExtensions { } public void database(Closure closure) { DatabaseExtension o = new DatabaseExtension(); + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(o); closure.call(o); @@ -103,6 +109,7 @@ public class MetaExtensions { } public void generate(Closure closure) { GenerateExtension o = new GenerateExtension(); + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(o); closure.call(o); @@ -110,6 +117,7 @@ public class MetaExtensions { } public void target(Closure closure) { TargetExtension o = new TargetExtension(); + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(o); closure.call(o); @@ -120,6 +128,7 @@ public class MetaExtensions { public static class StrategyExtension extends Strategy { public void matchers(Closure closure) { MatchersExtension o = new MatchersExtension(); + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(o); closure.call(o); @@ -133,12 +142,14 @@ public class MetaExtensions { ArrayList l = new ArrayList() { public void catalog(Closure c) { MatchersCatalogTypeExtension o = new MatchersCatalogTypeExtension(); + c = (Closure) c.clone(); c.setResolveStrategy(Closure.DELEGATE_FIRST); c.setDelegate(o); c.call(o); add(o); } }; + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(l); closure.call(l); @@ -149,12 +160,14 @@ public class MetaExtensions { ArrayList l = new ArrayList() { public void schema(Closure c) { MatchersSchemaTypeExtension o = new MatchersSchemaTypeExtension(); + c = (Closure) c.clone(); c.setResolveStrategy(Closure.DELEGATE_FIRST); c.setDelegate(o); c.call(o); add(o); } }; + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(l); closure.call(l); @@ -165,12 +178,14 @@ public class MetaExtensions { ArrayList l = new ArrayList() { public void table(Closure c) { MatchersTableTypeExtension o = new MatchersTableTypeExtension(); + c = (Closure) c.clone(); c.setResolveStrategy(Closure.DELEGATE_FIRST); c.setDelegate(o); c.call(o); add(o); } }; + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(l); closure.call(l); @@ -181,12 +196,14 @@ public class MetaExtensions { ArrayList l = new ArrayList() { public void index(Closure c) { MatchersIndexTypeExtension o = new MatchersIndexTypeExtension(); + c = (Closure) c.clone(); c.setResolveStrategy(Closure.DELEGATE_FIRST); c.setDelegate(o); c.call(o); add(o); } }; + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(l); closure.call(l); @@ -197,12 +214,14 @@ public class MetaExtensions { ArrayList l = new ArrayList() { public void primaryKey(Closure c) { MatchersPrimaryKeyTypeExtension o = new MatchersPrimaryKeyTypeExtension(); + c = (Closure) c.clone(); c.setResolveStrategy(Closure.DELEGATE_FIRST); c.setDelegate(o); c.call(o); add(o); } }; + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(l); closure.call(l); @@ -213,12 +232,14 @@ public class MetaExtensions { ArrayList l = new ArrayList() { public void uniqueKey(Closure c) { MatchersUniqueKeyTypeExtension o = new MatchersUniqueKeyTypeExtension(); + c = (Closure) c.clone(); c.setResolveStrategy(Closure.DELEGATE_FIRST); c.setDelegate(o); c.call(o); add(o); } }; + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(l); closure.call(l); @@ -229,12 +250,14 @@ public class MetaExtensions { ArrayList l = new ArrayList() { public void foreignKey(Closure c) { MatchersForeignKeyTypeExtension o = new MatchersForeignKeyTypeExtension(); + c = (Closure) c.clone(); c.setResolveStrategy(Closure.DELEGATE_FIRST); c.setDelegate(o); c.call(o); add(o); } }; + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(l); closure.call(l); @@ -245,12 +268,14 @@ public class MetaExtensions { ArrayList l = new ArrayList() { public void field(Closure c) { MatchersFieldTypeExtension o = new MatchersFieldTypeExtension(); + c = (Closure) c.clone(); c.setResolveStrategy(Closure.DELEGATE_FIRST); c.setDelegate(o); c.call(o); add(o); } }; + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(l); closure.call(l); @@ -261,12 +286,14 @@ public class MetaExtensions { ArrayList l = new ArrayList() { public void routine(Closure c) { MatchersRoutineTypeExtension o = new MatchersRoutineTypeExtension(); + c = (Closure) c.clone(); c.setResolveStrategy(Closure.DELEGATE_FIRST); c.setDelegate(o); c.call(o); add(o); } }; + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(l); closure.call(l); @@ -277,12 +304,14 @@ public class MetaExtensions { ArrayList l = new ArrayList() { public void sequence(Closure c) { MatchersSequenceTypeExtension o = new MatchersSequenceTypeExtension(); + c = (Closure) c.clone(); c.setResolveStrategy(Closure.DELEGATE_FIRST); c.setDelegate(o); c.call(o); add(o); } }; + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(l); closure.call(l); @@ -293,12 +322,14 @@ public class MetaExtensions { ArrayList l = new ArrayList() { public void enum_(Closure c) { MatchersEnumTypeExtension o = new MatchersEnumTypeExtension(); + c = (Closure) c.clone(); c.setResolveStrategy(Closure.DELEGATE_FIRST); c.setDelegate(o); c.call(o); add(o); } }; + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(l); closure.call(l); @@ -309,12 +340,14 @@ public class MetaExtensions { ArrayList l = new ArrayList() { public void embeddable(Closure c) { MatchersEmbeddableTypeExtension o = new MatchersEmbeddableTypeExtension(); + c = (Closure) c.clone(); c.setResolveStrategy(Closure.DELEGATE_FIRST); c.setDelegate(o); c.call(o); add(o); } }; + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(l); closure.call(l); @@ -325,12 +358,14 @@ public class MetaExtensions { ArrayList l = new ArrayList() { public void udt(Closure c) { MatchersUDTTypeExtension o = new MatchersUDTTypeExtension(); + c = (Closure) c.clone(); c.setResolveStrategy(Closure.DELEGATE_FIRST); c.setDelegate(o); c.call(o); add(o); } }; + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(l); closure.call(l); @@ -341,12 +376,14 @@ public class MetaExtensions { ArrayList l = new ArrayList() { public void attribute(Closure c) { MatchersAttributeTypeExtension o = new MatchersAttributeTypeExtension(); + c = (Closure) c.clone(); c.setResolveStrategy(Closure.DELEGATE_FIRST); c.setDelegate(o); c.call(o); add(o); } }; + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(l); closure.call(l); @@ -357,6 +394,7 @@ public class MetaExtensions { public static class MatchersCatalogTypeExtension extends MatchersCatalogType { public void catalogClass(Closure closure) { MatcherRuleExtension o = new MatcherRuleExtension(); + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(o); closure.call(o); @@ -409,6 +447,7 @@ public class MetaExtensions { public static class DatabaseExtension extends Database { public void syntheticObjects(Closure closure) { SyntheticObjectsTypeExtension o = new SyntheticObjectsTypeExtension(); + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(o); closure.call(o); @@ -419,12 +458,14 @@ public class MetaExtensions { ArrayList l = new ArrayList() { public void property(Closure c) { PropertyExtension o = new PropertyExtension(); + c = (Closure) c.clone(); c.setResolveStrategy(Closure.DELEGATE_FIRST); c.setDelegate(o); c.call(o); add(o); } }; + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(l); closure.call(l); @@ -435,12 +476,14 @@ public class MetaExtensions { ArrayList l = new ArrayList() { public void comment(Closure c) { CommentTypeExtension o = new CommentTypeExtension(); + c = (Closure) c.clone(); c.setResolveStrategy(Closure.DELEGATE_FIRST); c.setDelegate(o); c.call(o); add(o); } }; + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(l); closure.call(l); @@ -451,12 +494,14 @@ public class MetaExtensions { ArrayList l = new ArrayList() { public void catalog(Closure c) { CatalogMappingTypeExtension o = new CatalogMappingTypeExtension(); + c = (Closure) c.clone(); c.setResolveStrategy(Closure.DELEGATE_FIRST); c.setDelegate(o); c.call(o); add(o); } }; + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(l); closure.call(l); @@ -467,12 +512,14 @@ public class MetaExtensions { ArrayList l = new ArrayList() { public void schema(Closure c) { SchemaMappingTypeExtension o = new SchemaMappingTypeExtension(); + c = (Closure) c.clone(); c.setResolveStrategy(Closure.DELEGATE_FIRST); c.setDelegate(o); c.call(o); add(o); } }; + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(l); closure.call(l); @@ -483,12 +530,14 @@ public class MetaExtensions { ArrayList l = new ArrayList() { public void embeddable(Closure c) { EmbeddableDefinitionTypeExtension o = new EmbeddableDefinitionTypeExtension(); + c = (Closure) c.clone(); c.setResolveStrategy(Closure.DELEGATE_FIRST); c.setDelegate(o); c.call(o); add(o); } }; + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(l); closure.call(l); @@ -499,12 +548,14 @@ public class MetaExtensions { ArrayList l = new ArrayList() { public void customType(Closure c) { CustomTypeExtension o = new CustomTypeExtension(); + c = (Closure) c.clone(); c.setResolveStrategy(Closure.DELEGATE_FIRST); c.setDelegate(o); c.call(o); add(o); } }; + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(l); closure.call(l); @@ -515,12 +566,14 @@ public class MetaExtensions { ArrayList l = new ArrayList() { public void enumType(Closure c) { EnumTypeExtension o = new EnumTypeExtension(); + c = (Closure) c.clone(); c.setResolveStrategy(Closure.DELEGATE_FIRST); c.setDelegate(o); c.call(o); add(o); } }; + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(l); closure.call(l); @@ -531,12 +584,14 @@ public class MetaExtensions { ArrayList l = new ArrayList() { public void forcedType(Closure c) { ForcedTypeExtension o = new ForcedTypeExtension(); + c = (Closure) c.clone(); c.setResolveStrategy(Closure.DELEGATE_FIRST); c.setDelegate(o); c.call(o); add(o); } }; + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(l); closure.call(l); @@ -550,12 +605,14 @@ public class MetaExtensions { ArrayList l = new ArrayList() { public void readonlyColumn(Closure c) { SyntheticReadonlyColumnTypeExtension o = new SyntheticReadonlyColumnTypeExtension(); + c = (Closure) c.clone(); c.setResolveStrategy(Closure.DELEGATE_FIRST); c.setDelegate(o); c.call(o); add(o); } }; + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(l); closure.call(l); @@ -566,12 +623,14 @@ public class MetaExtensions { ArrayList l = new ArrayList() { public void readonlyRowid(Closure c) { SyntheticReadonlyRowidTypeExtension o = new SyntheticReadonlyRowidTypeExtension(); + c = (Closure) c.clone(); c.setResolveStrategy(Closure.DELEGATE_FIRST); c.setDelegate(o); c.call(o); add(o); } }; + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(l); closure.call(l); @@ -582,12 +641,14 @@ public class MetaExtensions { ArrayList l = new ArrayList() { public void column(Closure c) { SyntheticColumnTypeExtension o = new SyntheticColumnTypeExtension(); + c = (Closure) c.clone(); c.setResolveStrategy(Closure.DELEGATE_FIRST); c.setDelegate(o); c.call(o); add(o); } }; + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(l); closure.call(l); @@ -598,12 +659,14 @@ public class MetaExtensions { ArrayList l = new ArrayList() { public void identity(Closure c) { SyntheticIdentityTypeExtension o = new SyntheticIdentityTypeExtension(); + c = (Closure) c.clone(); c.setResolveStrategy(Closure.DELEGATE_FIRST); c.setDelegate(o); c.call(o); add(o); } }; + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(l); closure.call(l); @@ -614,12 +677,14 @@ public class MetaExtensions { ArrayList l = new ArrayList() { public void enum_(Closure c) { SyntheticEnumTypeExtension o = new SyntheticEnumTypeExtension(); + c = (Closure) c.clone(); c.setResolveStrategy(Closure.DELEGATE_FIRST); c.setDelegate(o); c.call(o); add(o); } }; + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(l); closure.call(l); @@ -630,12 +695,14 @@ public class MetaExtensions { ArrayList l = new ArrayList() { public void primaryKey(Closure c) { SyntheticPrimaryKeyTypeExtension o = new SyntheticPrimaryKeyTypeExtension(); + c = (Closure) c.clone(); c.setResolveStrategy(Closure.DELEGATE_FIRST); c.setDelegate(o); c.call(o); add(o); } }; + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(l); closure.call(l); @@ -646,12 +713,14 @@ public class MetaExtensions { ArrayList l = new ArrayList() { public void uniqueKey(Closure c) { SyntheticUniqueKeyTypeExtension o = new SyntheticUniqueKeyTypeExtension(); + c = (Closure) c.clone(); c.setResolveStrategy(Closure.DELEGATE_FIRST); c.setDelegate(o); c.call(o); add(o); } }; + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(l); closure.call(l); @@ -662,12 +731,14 @@ public class MetaExtensions { ArrayList l = new ArrayList() { public void foreignKey(Closure c) { SyntheticForeignKeyTypeExtension o = new SyntheticForeignKeyTypeExtension(); + c = (Closure) c.clone(); c.setResolveStrategy(Closure.DELEGATE_FIRST); c.setDelegate(o); c.call(o); add(o); } }; + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(l); closure.call(l); @@ -678,12 +749,14 @@ public class MetaExtensions { ArrayList l = new ArrayList() { public void view(Closure c) { SyntheticViewTypeExtension o = new SyntheticViewTypeExtension(); + c = (Closure) c.clone(); c.setResolveStrategy(Closure.DELEGATE_FIRST); c.setDelegate(o); c.call(o); add(o); } }; + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(l); closure.call(l); @@ -694,12 +767,14 @@ public class MetaExtensions { ArrayList l = new ArrayList() { public void dao(Closure c) { SyntheticDaoTypeExtension o = new SyntheticDaoTypeExtension(); + c = (Closure) c.clone(); c.setResolveStrategy(Closure.DELEGATE_FIRST); c.setDelegate(o); c.call(o); add(o); } }; + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(l); closure.call(l); @@ -740,12 +815,14 @@ public class MetaExtensions { ArrayList l = new ArrayList() { public void method(Closure c) { SyntheticDaoMethodTypeExtension o = new SyntheticDaoMethodTypeExtension(); + c = (Closure) c.clone(); c.setResolveStrategy(Closure.DELEGATE_FIRST); c.setDelegate(o); c.call(o); add(o); } }; + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(l); closure.call(l); @@ -765,12 +842,14 @@ public class MetaExtensions { ArrayList l = new ArrayList() { public void schema(Closure c) { SchemaMappingTypeExtension o = new SchemaMappingTypeExtension(); + c = (Closure) c.clone(); c.setResolveStrategy(Closure.DELEGATE_FIRST); c.setDelegate(o); c.call(o); add(o); } }; + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(l); closure.call(l); @@ -787,12 +866,14 @@ public class MetaExtensions { ArrayList l = new ArrayList() { public void field(Closure c) { EmbeddableFieldExtension o = new EmbeddableFieldExtension(); + c = (Closure) c.clone(); c.setResolveStrategy(Closure.DELEGATE_FIRST); c.setDelegate(o); c.call(o); add(o); } }; + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(l); closure.call(l); @@ -806,6 +887,7 @@ public class MetaExtensions { public static class CustomTypeExtension extends CustomType { public void lambdaConverter(Closure closure) { LambdaConverterExtension o = new LambdaConverterExtension(); + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(o); closure.call(o); diff --git a/jOOQ-codegen-gradle/src/main/java/org/jooq/codegen/gradle/NamedConfiguration.java b/jOOQ-codegen-gradle/src/main/java/org/jooq/codegen/gradle/NamedConfiguration.java index 20798c02a2..a08a793a40 100644 --- a/jOOQ-codegen-gradle/src/main/java/org/jooq/codegen/gradle/NamedConfiguration.java +++ b/jOOQ-codegen-gradle/src/main/java/org/jooq/codegen/gradle/NamedConfiguration.java @@ -87,6 +87,7 @@ public class NamedConfiguration { public void configuration(Closure closure) { MetaExtensions.ConfigurationExtension c = new MetaExtensions.ConfigurationExtension(); + closure = (Closure) closure.clone(); closure.setResolveStrategy(Closure.DELEGATE_FIRST); closure.setDelegate(c); closure.call(c);