diff --git a/.license b/.license
new file mode 100644
index 00000000000..96a4b92b30b
--- /dev/null
+++ b/.license
@@ -0,0 +1,15 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
diff --git a/build.gradle b/build.gradle
index 4b4ff6f5aa4..4dbb711cdbd 100644
--- a/build.gradle
+++ b/build.gradle
@@ -11,6 +11,7 @@ buildscript {
classpath "javax.xml.bind:jaxb-api:$jaxbApiVersion"
classpath "com.sun.xml.bind:jaxb-impl:$jaxbImplVersion"
classpath "org.codehaus.groovy.modules.http-builder:http-builder:0.7.2"
+ classpath "com.diffplug.spotless:spotless-plugin-gradle:6.25.0"
}
}
@@ -330,6 +331,16 @@ subprojects { project ->
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'project-report'
+ apply plugin: "com.diffplug.spotless"
+
+ spotless {
+ java {
+ licenseHeaderFile rootProject.file('.license')
+ }
+ groovy {
+ licenseHeaderFile rootProject.file('.license')
+ }
+ }
if (!isTestSuite) {
diff --git a/grails-bootstrap/src/main/groovy/grails/build/logging/ConsoleLogger.java b/grails-bootstrap/src/main/groovy/grails/build/logging/ConsoleLogger.java
index 68960348de5..b790d4fadf0 100644
--- a/grails-bootstrap/src/main/groovy/grails/build/logging/ConsoleLogger.java
+++ b/grails-bootstrap/src/main/groovy/grails/build/logging/ConsoleLogger.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/grails/build/logging/GrailsConsole.java b/grails-bootstrap/src/main/groovy/grails/build/logging/GrailsConsole.java
index f169490fa39..f5a18664115 100644
--- a/grails-bootstrap/src/main/groovy/grails/build/logging/GrailsConsole.java
+++ b/grails-bootstrap/src/main/groovy/grails/build/logging/GrailsConsole.java
@@ -1,11 +1,11 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-bootstrap/src/main/groovy/grails/build/logging/GrailsEclipseConsole.java b/grails-bootstrap/src/main/groovy/grails/build/logging/GrailsEclipseConsole.java
index d49e6ccbff2..8f37ca5c84c 100644
--- a/grails-bootstrap/src/main/groovy/grails/build/logging/GrailsEclipseConsole.java
+++ b/grails-bootstrap/src/main/groovy/grails/build/logging/GrailsEclipseConsole.java
@@ -1,11 +1,11 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-bootstrap/src/main/groovy/grails/build/proxy/SystemPropertiesAuthenticator.groovy b/grails-bootstrap/src/main/groovy/grails/build/proxy/SystemPropertiesAuthenticator.groovy
index ef082ea0c5c..5695245bcbe 100644
--- a/grails-bootstrap/src/main/groovy/grails/build/proxy/SystemPropertiesAuthenticator.groovy
+++ b/grails-bootstrap/src/main/groovy/grails/build/proxy/SystemPropertiesAuthenticator.groovy
@@ -1,10 +1,5 @@
-package grails.build.proxy
-
-import grails.util.BuildSettings
-import groovy.transform.CompileStatic
-
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,6 +13,10 @@ import groovy.transform.CompileStatic
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+package grails.build.proxy
+
+import grails.util.BuildSettings
+import groovy.transform.CompileStatic
/**
* An Authenticator that authenticates via System properties
diff --git a/grails-bootstrap/src/main/groovy/grails/build/support/MetaClassRegistryCleaner.java b/grails-bootstrap/src/main/groovy/grails/build/support/MetaClassRegistryCleaner.java
index 2050708d033..b1261ca5a71 100644
--- a/grails-bootstrap/src/main/groovy/grails/build/support/MetaClassRegistryCleaner.java
+++ b/grails-bootstrap/src/main/groovy/grails/build/support/MetaClassRegistryCleaner.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/grails/codegen/model/Model.groovy b/grails-bootstrap/src/main/groovy/grails/codegen/model/Model.groovy
index 7e31a4333b1..528c936c7c1 100644
--- a/grails-bootstrap/src/main/groovy/grails/codegen/model/Model.groovy
+++ b/grails-bootstrap/src/main/groovy/grails/codegen/model/Model.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/grails/codegen/model/ModelBuilder.groovy b/grails-bootstrap/src/main/groovy/grails/codegen/model/ModelBuilder.groovy
index 8fedc4d1a85..7836dba965c 100644
--- a/grails-bootstrap/src/main/groovy/grails/codegen/model/ModelBuilder.groovy
+++ b/grails-bootstrap/src/main/groovy/grails/codegen/model/ModelBuilder.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/grails/config/ConfigMap.groovy b/grails-bootstrap/src/main/groovy/grails/config/ConfigMap.groovy
index 2b689618591..5b23b5c67e4 100644
--- a/grails-bootstrap/src/main/groovy/grails/config/ConfigMap.groovy
+++ b/grails-bootstrap/src/main/groovy/grails/config/ConfigMap.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/grails/io/IOUtils.groovy b/grails-bootstrap/src/main/groovy/grails/io/IOUtils.groovy
index bd8596c402b..1ee3fe43e0b 100644
--- a/grails-bootstrap/src/main/groovy/grails/io/IOUtils.groovy
+++ b/grails-bootstrap/src/main/groovy/grails/io/IOUtils.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/grails/io/ResourceUtils.groovy b/grails-bootstrap/src/main/groovy/grails/io/ResourceUtils.groovy
index 8128abda4b1..33097c69ac6 100644
--- a/grails-bootstrap/src/main/groovy/grails/io/ResourceUtils.groovy
+++ b/grails-bootstrap/src/main/groovy/grails/io/ResourceUtils.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/grails/io/support/SystemOutErrCapturer.groovy b/grails-bootstrap/src/main/groovy/grails/io/support/SystemOutErrCapturer.groovy
index 3fa82d0723b..a91ab4b155f 100644
--- a/grails-bootstrap/src/main/groovy/grails/io/support/SystemOutErrCapturer.groovy
+++ b/grails-bootstrap/src/main/groovy/grails/io/support/SystemOutErrCapturer.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/grails/io/support/SystemStreamsRedirector.groovy b/grails-bootstrap/src/main/groovy/grails/io/support/SystemStreamsRedirector.groovy
index 50af2cd595b..e337bc7b3db 100644
--- a/grails-bootstrap/src/main/groovy/grails/io/support/SystemStreamsRedirector.groovy
+++ b/grails-bootstrap/src/main/groovy/grails/io/support/SystemStreamsRedirector.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.io.support
import groovy.transform.CompileStatic
diff --git a/grails-bootstrap/src/main/groovy/grails/plugins/GrailsPluginInfo.java b/grails-bootstrap/src/main/groovy/grails/plugins/GrailsPluginInfo.java
index 070e9ce502b..9da21fa1579 100644
--- a/grails-bootstrap/src/main/groovy/grails/plugins/GrailsPluginInfo.java
+++ b/grails-bootstrap/src/main/groovy/grails/plugins/GrailsPluginInfo.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/grails/plugins/GrailsVersionUtils.groovy b/grails-bootstrap/src/main/groovy/grails/plugins/GrailsVersionUtils.groovy
index 242725c5bcd..cfff44703a7 100644
--- a/grails-bootstrap/src/main/groovy/grails/plugins/GrailsVersionUtils.groovy
+++ b/grails-bootstrap/src/main/groovy/grails/plugins/GrailsVersionUtils.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/grails/plugins/InvalidVersionException.java b/grails-bootstrap/src/main/groovy/grails/plugins/InvalidVersionException.java
index b73ea708e65..277762be92a 100644
--- a/grails-bootstrap/src/main/groovy/grails/plugins/InvalidVersionException.java
+++ b/grails-bootstrap/src/main/groovy/grails/plugins/InvalidVersionException.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/grails/plugins/VersionComparator.groovy b/grails-bootstrap/src/main/groovy/grails/plugins/VersionComparator.groovy
index 9a93bf652ad..a0240048f92 100644
--- a/grails-bootstrap/src/main/groovy/grails/plugins/VersionComparator.groovy
+++ b/grails-bootstrap/src/main/groovy/grails/plugins/VersionComparator.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/grails/plugins/exceptions/PluginException.java b/grails-bootstrap/src/main/groovy/grails/plugins/exceptions/PluginException.java
index bcfbec44c85..9d3d1d47668 100644
--- a/grails-bootstrap/src/main/groovy/grails/plugins/exceptions/PluginException.java
+++ b/grails-bootstrap/src/main/groovy/grails/plugins/exceptions/PluginException.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/grails/plugins/metadata/GrailsPlugin.java b/grails-bootstrap/src/main/groovy/grails/plugins/metadata/GrailsPlugin.java
index 61e48db1e76..8306c002daa 100644
--- a/grails-bootstrap/src/main/groovy/grails/plugins/metadata/GrailsPlugin.java
+++ b/grails-bootstrap/src/main/groovy/grails/plugins/metadata/GrailsPlugin.java
@@ -1,18 +1,18 @@
/*
-* Copyright 2004-2005 the original author or authors.
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.plugins.metadata;
import java.lang.annotation.Retention;
diff --git a/grails-bootstrap/src/main/groovy/grails/plugins/metadata/PluginSource.java b/grails-bootstrap/src/main/groovy/grails/plugins/metadata/PluginSource.java
index 0f69d713371..14bd81b4640 100644
--- a/grails-bootstrap/src/main/groovy/grails/plugins/metadata/PluginSource.java
+++ b/grails-bootstrap/src/main/groovy/grails/plugins/metadata/PluginSource.java
@@ -1,18 +1,18 @@
/*
-* Copyright 2016 the original author or authors.
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.plugins.metadata;
import java.lang.annotation.ElementType;
diff --git a/grails-bootstrap/src/main/groovy/grails/util/BuildSettings.groovy b/grails-bootstrap/src/main/groovy/grails/util/BuildSettings.groovy
index 09899b9fd16..a3cb7a711dc 100644
--- a/grails-bootstrap/src/main/groovy/grails/util/BuildSettings.groovy
+++ b/grails-bootstrap/src/main/groovy/grails/util/BuildSettings.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2008 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/grails/util/CollectionUtils.java b/grails-bootstrap/src/main/groovy/grails/util/CollectionUtils.java
index fd7afa3a6cf..0ba969d1ef3 100644
--- a/grails-bootstrap/src/main/groovy/grails/util/CollectionUtils.java
+++ b/grails-bootstrap/src/main/groovy/grails/util/CollectionUtils.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/grails/util/CosineSimilarity.groovy b/grails-bootstrap/src/main/groovy/grails/util/CosineSimilarity.groovy
index eaaed1bd5bb..ec3eaf4fe86 100644
--- a/grails-bootstrap/src/main/groovy/grails/util/CosineSimilarity.groovy
+++ b/grails-bootstrap/src/main/groovy/grails/util/CosineSimilarity.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2010 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/grails/util/Described.groovy b/grails-bootstrap/src/main/groovy/grails/util/Described.groovy
index 8fc6f95c902..4907cb28831 100644
--- a/grails-bootstrap/src/main/groovy/grails/util/Described.groovy
+++ b/grails-bootstrap/src/main/groovy/grails/util/Described.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2015 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package grails.util
diff --git a/grails-bootstrap/src/main/groovy/grails/util/Environment.groovy b/grails-bootstrap/src/main/groovy/grails/util/Environment.groovy
index 3a763971cf2..bb2bff8b823 100644
--- a/grails-bootstrap/src/main/groovy/grails/util/Environment.groovy
+++ b/grails-bootstrap/src/main/groovy/grails/util/Environment.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/grails/util/EnvironmentBlockEvaluator.groovy b/grails-bootstrap/src/main/groovy/grails/util/EnvironmentBlockEvaluator.groovy
index 522563839c7..5be08b57765 100644
--- a/grails-bootstrap/src/main/groovy/grails/util/EnvironmentBlockEvaluator.groovy
+++ b/grails-bootstrap/src/main/groovy/grails/util/EnvironmentBlockEvaluator.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/grails/util/GrailsNameUtils.java b/grails-bootstrap/src/main/groovy/grails/util/GrailsNameUtils.java
index bb1b210b17e..4429816127a 100644
--- a/grails-bootstrap/src/main/groovy/grails/util/GrailsNameUtils.java
+++ b/grails-bootstrap/src/main/groovy/grails/util/GrailsNameUtils.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2008 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/grails/util/Holder.java b/grails-bootstrap/src/main/groovy/grails/util/Holder.java
index 034b2decdb1..10539597da8 100644
--- a/grails-bootstrap/src/main/groovy/grails/util/Holder.java
+++ b/grails-bootstrap/src/main/groovy/grails/util/Holder.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/grails/util/Metadata.groovy b/grails-bootstrap/src/main/groovy/grails/util/Metadata.groovy
index fbebcabb156..d5ee395d40a 100644
--- a/grails-bootstrap/src/main/groovy/grails/util/Metadata.groovy
+++ b/grails-bootstrap/src/main/groovy/grails/util/Metadata.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/grails/util/Named.groovy b/grails-bootstrap/src/main/groovy/grails/util/Named.groovy
index 32db2fe26b0..2d5e5942235 100644
--- a/grails-bootstrap/src/main/groovy/grails/util/Named.groovy
+++ b/grails-bootstrap/src/main/groovy/grails/util/Named.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/grails/util/SupplierUtil.java b/grails-bootstrap/src/main/groovy/grails/util/SupplierUtil.java
index a42c3ab0008..5331895c0a8 100644
--- a/grails-bootstrap/src/main/groovy/grails/util/SupplierUtil.java
+++ b/grails-bootstrap/src/main/groovy/grails/util/SupplierUtil.java
@@ -1,11 +1,11 @@
/*
- * Copyright 2017-2019 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-bootstrap/src/main/groovy/org/grails/build/interactive/CandidateListCompletionHandler.java b/grails-bootstrap/src/main/groovy/org/grails/build/interactive/CandidateListCompletionHandler.java
index 6c707d3a3b9..fe60034bd6e 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/build/interactive/CandidateListCompletionHandler.java
+++ b/grails-bootstrap/src/main/groovy/org/grails/build/interactive/CandidateListCompletionHandler.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/org/grails/build/logging/GrailsConsoleAntBuilder.java b/grails-bootstrap/src/main/groovy/org/grails/build/logging/GrailsConsoleAntBuilder.java
index cfe0845e327..22f5576fe39 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/build/logging/GrailsConsoleAntBuilder.java
+++ b/grails-bootstrap/src/main/groovy/org/grails/build/logging/GrailsConsoleAntBuilder.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/org/grails/build/logging/GrailsConsoleBuildListener.java b/grails-bootstrap/src/main/groovy/org/grails/build/logging/GrailsConsoleBuildListener.java
index 882ec9638df..9f6fb5c1ccf 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/build/logging/GrailsConsoleBuildListener.java
+++ b/grails-bootstrap/src/main/groovy/org/grails/build/logging/GrailsConsoleBuildListener.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/org/grails/build/logging/GrailsConsoleErrorPrintStream.java b/grails-bootstrap/src/main/groovy/org/grails/build/logging/GrailsConsoleErrorPrintStream.java
index cbced97fb08..5ca9ca5d263 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/build/logging/GrailsConsoleErrorPrintStream.java
+++ b/grails-bootstrap/src/main/groovy/org/grails/build/logging/GrailsConsoleErrorPrintStream.java
@@ -1,11 +1,11 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-bootstrap/src/main/groovy/org/grails/build/logging/GrailsConsolePrintStream.java b/grails-bootstrap/src/main/groovy/org/grails/build/logging/GrailsConsolePrintStream.java
index 00187f8beb7..bc9fe298a35 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/build/logging/GrailsConsolePrintStream.java
+++ b/grails-bootstrap/src/main/groovy/org/grails/build/logging/GrailsConsolePrintStream.java
@@ -1,11 +1,11 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-bootstrap/src/main/groovy/org/grails/build/parsing/CommandLine.java b/grails-bootstrap/src/main/groovy/org/grails/build/parsing/CommandLine.java
index e26ef98a63f..2ce0fbe0d03 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/build/parsing/CommandLine.java
+++ b/grails-bootstrap/src/main/groovy/org/grails/build/parsing/CommandLine.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/org/grails/build/parsing/CommandLineParser.java b/grails-bootstrap/src/main/groovy/org/grails/build/parsing/CommandLineParser.java
index a8ae97b8e45..a65f3e6103f 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/build/parsing/CommandLineParser.java
+++ b/grails-bootstrap/src/main/groovy/org/grails/build/parsing/CommandLineParser.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/org/grails/build/parsing/DefaultCommandLine.java b/grails-bootstrap/src/main/groovy/org/grails/build/parsing/DefaultCommandLine.java
index ec7cb8d461b..f2d2b447c81 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/build/parsing/DefaultCommandLine.java
+++ b/grails-bootstrap/src/main/groovy/org/grails/build/parsing/DefaultCommandLine.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/org/grails/build/parsing/Option.java b/grails-bootstrap/src/main/groovy/org/grails/build/parsing/Option.java
index d11e9ad269e..50e4ba09fc8 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/build/parsing/Option.java
+++ b/grails-bootstrap/src/main/groovy/org/grails/build/parsing/Option.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/org/grails/build/parsing/ParseException.java b/grails-bootstrap/src/main/groovy/org/grails/build/parsing/ParseException.java
index 215a7165b03..69c61558a1a 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/build/parsing/ParseException.java
+++ b/grails-bootstrap/src/main/groovy/org/grails/build/parsing/ParseException.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/org/grails/build/parsing/ScriptNameResolver.groovy b/grails-bootstrap/src/main/groovy/org/grails/build/parsing/ScriptNameResolver.groovy
index d0c233378c9..c0573d96bb4 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/build/parsing/ScriptNameResolver.groovy
+++ b/grails-bootstrap/src/main/groovy/org/grails/build/parsing/ScriptNameResolver.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2010 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/org/grails/config/CodeGenConfig.groovy b/grails-bootstrap/src/main/groovy/org/grails/config/CodeGenConfig.groovy
index 5832fd4ce65..c4c43b57644 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/config/CodeGenConfig.groovy
+++ b/grails-bootstrap/src/main/groovy/org/grails/config/CodeGenConfig.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/org/grails/config/NavigableMap.groovy b/grails-bootstrap/src/main/groovy/org/grails/config/NavigableMap.groovy
index 7119e383491..7eb42309ccd 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/config/NavigableMap.groovy
+++ b/grails-bootstrap/src/main/groovy/org/grails/config/NavigableMap.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.config
import groovy.transform.CompileDynamic
diff --git a/grails-bootstrap/src/main/groovy/org/grails/exceptions/ExceptionUtils.groovy b/grails-bootstrap/src/main/groovy/org/grails/exceptions/ExceptionUtils.groovy
index 07abacbffa1..6929ffb1393 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/exceptions/ExceptionUtils.groovy
+++ b/grails-bootstrap/src/main/groovy/org/grails/exceptions/ExceptionUtils.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.exceptions
import groovy.transform.CompileStatic
diff --git a/grails-bootstrap/src/main/groovy/org/grails/exceptions/reporting/CodeSnippetPrinter.groovy b/grails-bootstrap/src/main/groovy/org/grails/exceptions/reporting/CodeSnippetPrinter.groovy
index ffa21913ed7..bace97f9095 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/exceptions/reporting/CodeSnippetPrinter.groovy
+++ b/grails-bootstrap/src/main/groovy/org/grails/exceptions/reporting/CodeSnippetPrinter.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/org/grails/exceptions/reporting/DefaultStackTraceFilterer.java b/grails-bootstrap/src/main/groovy/org/grails/exceptions/reporting/DefaultStackTraceFilterer.java
index 8992673f61e..7193c4bf868 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/exceptions/reporting/DefaultStackTraceFilterer.java
+++ b/grails-bootstrap/src/main/groovy/org/grails/exceptions/reporting/DefaultStackTraceFilterer.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/org/grails/exceptions/reporting/DefaultStackTracePrinter.groovy b/grails-bootstrap/src/main/groovy/org/grails/exceptions/reporting/DefaultStackTracePrinter.groovy
index 7ff0636215f..1b4d4197ddc 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/exceptions/reporting/DefaultStackTracePrinter.groovy
+++ b/grails-bootstrap/src/main/groovy/org/grails/exceptions/reporting/DefaultStackTracePrinter.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/org/grails/exceptions/reporting/SourceCodeAware.java b/grails-bootstrap/src/main/groovy/org/grails/exceptions/reporting/SourceCodeAware.java
index b66fea0ad84..8f0652a0b22 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/exceptions/reporting/SourceCodeAware.java
+++ b/grails-bootstrap/src/main/groovy/org/grails/exceptions/reporting/SourceCodeAware.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/org/grails/exceptions/reporting/StackTraceFilterer.java b/grails-bootstrap/src/main/groovy/org/grails/exceptions/reporting/StackTraceFilterer.java
index 4cd9a5d08e5..b817398caea 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/exceptions/reporting/StackTraceFilterer.java
+++ b/grails-bootstrap/src/main/groovy/org/grails/exceptions/reporting/StackTraceFilterer.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/org/grails/exceptions/reporting/StackTracePrinter.groovy b/grails-bootstrap/src/main/groovy/org/grails/exceptions/reporting/StackTracePrinter.groovy
index 074a3390517..011283d1bf0 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/exceptions/reporting/StackTracePrinter.groovy
+++ b/grails-bootstrap/src/main/groovy/org/grails/exceptions/reporting/StackTracePrinter.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/org/grails/io/support/AbstractFileResolvingResource.java b/grails-bootstrap/src/main/groovy/org/grails/io/support/AbstractFileResolvingResource.java
index 8b234199d78..47bbd7bfbdf 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/io/support/AbstractFileResolvingResource.java
+++ b/grails-bootstrap/src/main/groovy/org/grails/io/support/AbstractFileResolvingResource.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/org/grails/io/support/AntPathMatcher.java b/grails-bootstrap/src/main/groovy/org/grails/io/support/AntPathMatcher.java
index 4c5ced3bd3c..5302687fb3a 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/io/support/AntPathMatcher.java
+++ b/grails-bootstrap/src/main/groovy/org/grails/io/support/AntPathMatcher.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/org/grails/io/support/ByteArrayResource.groovy b/grails-bootstrap/src/main/groovy/org/grails/io/support/ByteArrayResource.groovy
index 0320348e284..788364640a5 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/io/support/ByteArrayResource.groovy
+++ b/grails-bootstrap/src/main/groovy/org/grails/io/support/ByteArrayResource.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/org/grails/io/support/ClassPathResource.java b/grails-bootstrap/src/main/groovy/org/grails/io/support/ClassPathResource.java
index 707db4f3877..9da02e5ed8f 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/io/support/ClassPathResource.java
+++ b/grails-bootstrap/src/main/groovy/org/grails/io/support/ClassPathResource.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/org/grails/io/support/DefaultResourceLoader.java b/grails-bootstrap/src/main/groovy/org/grails/io/support/DefaultResourceLoader.java
index 98824f60d64..b760a59a0d8 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/io/support/DefaultResourceLoader.java
+++ b/grails-bootstrap/src/main/groovy/org/grails/io/support/DefaultResourceLoader.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/org/grails/io/support/DevNullPrintStream.groovy b/grails-bootstrap/src/main/groovy/org/grails/io/support/DevNullPrintStream.groovy
index 203d02d6b8d..4cd8485e6c5 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/io/support/DevNullPrintStream.groovy
+++ b/grails-bootstrap/src/main/groovy/org/grails/io/support/DevNullPrintStream.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.io.support
import groovy.transform.CompileStatic
diff --git a/grails-bootstrap/src/main/groovy/org/grails/io/support/FactoriesLoaderSupport.groovy b/grails-bootstrap/src/main/groovy/org/grails/io/support/FactoriesLoaderSupport.groovy
index fed8565a265..62853cd955a 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/io/support/FactoriesLoaderSupport.groovy
+++ b/grails-bootstrap/src/main/groovy/org/grails/io/support/FactoriesLoaderSupport.groovy
@@ -1,6 +1,5 @@
-
/*
- * Copyright 2015 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/org/grails/io/support/FileSystemResource.java b/grails-bootstrap/src/main/groovy/org/grails/io/support/FileSystemResource.java
index 9e456ec2b31..59bd10803d9 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/io/support/FileSystemResource.java
+++ b/grails-bootstrap/src/main/groovy/org/grails/io/support/FileSystemResource.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/org/grails/io/support/FileSystemResourceLoader.java b/grails-bootstrap/src/main/groovy/org/grails/io/support/FileSystemResourceLoader.java
index 99cd3acc365..7835d800e98 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/io/support/FileSystemResourceLoader.java
+++ b/grails-bootstrap/src/main/groovy/org/grails/io/support/FileSystemResourceLoader.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/org/grails/io/support/GrailsResourceUtils.java b/grails-bootstrap/src/main/groovy/org/grails/io/support/GrailsResourceUtils.java
index 9c59ae3d53f..010a79c0d40 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/io/support/GrailsResourceUtils.java
+++ b/grails-bootstrap/src/main/groovy/org/grails/io/support/GrailsResourceUtils.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/org/grails/io/support/MainClassFinder.groovy b/grails-bootstrap/src/main/groovy/org/grails/io/support/MainClassFinder.groovy
index 60f708c261c..6c65b3d035f 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/io/support/MainClassFinder.groovy
+++ b/grails-bootstrap/src/main/groovy/org/grails/io/support/MainClassFinder.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.io.support
import grails.util.BuildSettings
diff --git a/grails-bootstrap/src/main/groovy/org/grails/io/support/PathMatchingResourcePatternResolver.java b/grails-bootstrap/src/main/groovy/org/grails/io/support/PathMatchingResourcePatternResolver.java
index e04674208b7..56f3bcbac00 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/io/support/PathMatchingResourcePatternResolver.java
+++ b/grails-bootstrap/src/main/groovy/org/grails/io/support/PathMatchingResourcePatternResolver.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/org/grails/io/support/Resource.java b/grails-bootstrap/src/main/groovy/org/grails/io/support/Resource.java
index 30f0c6c7a09..4067958d73d 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/io/support/Resource.java
+++ b/grails-bootstrap/src/main/groovy/org/grails/io/support/Resource.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/org/grails/io/support/ResourceLoader.java b/grails-bootstrap/src/main/groovy/org/grails/io/support/ResourceLoader.java
index b4328dfc775..ca43143079d 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/io/support/ResourceLoader.java
+++ b/grails-bootstrap/src/main/groovy/org/grails/io/support/ResourceLoader.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/org/grails/io/support/ResourceLocator.java b/grails-bootstrap/src/main/groovy/org/grails/io/support/ResourceLocator.java
index ad19e5cc553..2da48affb5f 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/io/support/ResourceLocator.java
+++ b/grails-bootstrap/src/main/groovy/org/grails/io/support/ResourceLocator.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/org/grails/io/support/SpringIOUtils.java b/grails-bootstrap/src/main/groovy/org/grails/io/support/SpringIOUtils.java
index 193f99876a1..abbfa1de05d 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/io/support/SpringIOUtils.java
+++ b/grails-bootstrap/src/main/groovy/org/grails/io/support/SpringIOUtils.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2008 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/org/grails/io/support/StaticResourceLoader.java b/grails-bootstrap/src/main/groovy/org/grails/io/support/StaticResourceLoader.java
index cfe0fc1a51a..a36add2ea5c 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/io/support/StaticResourceLoader.java
+++ b/grails-bootstrap/src/main/groovy/org/grails/io/support/StaticResourceLoader.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2015 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/org/grails/io/support/UrlResource.java b/grails-bootstrap/src/main/groovy/org/grails/io/support/UrlResource.java
index 3d841a18f92..c873b2242d4 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/io/support/UrlResource.java
+++ b/grails-bootstrap/src/main/groovy/org/grails/io/support/UrlResource.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/main/groovy/org/grails/io/watch/AbstractDirectoryWatcher.java b/grails-bootstrap/src/main/groovy/org/grails/io/watch/AbstractDirectoryWatcher.java
index 60b340d8f7f..e4af90fade0 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/io/watch/AbstractDirectoryWatcher.java
+++ b/grails-bootstrap/src/main/groovy/org/grails/io/watch/AbstractDirectoryWatcher.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.io.watch;
import java.io.File;
diff --git a/grails-bootstrap/src/main/groovy/org/grails/io/watch/DirectoryWatcher.java b/grails-bootstrap/src/main/groovy/org/grails/io/watch/DirectoryWatcher.java
index 40ef5c4745f..822af10230e 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/io/watch/DirectoryWatcher.java
+++ b/grails-bootstrap/src/main/groovy/org/grails/io/watch/DirectoryWatcher.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.grails.io.watch;
import java.io.File;
diff --git a/grails-bootstrap/src/main/groovy/org/grails/io/watch/FileExtensionFileChangeListener.groovy b/grails-bootstrap/src/main/groovy/org/grails/io/watch/FileExtensionFileChangeListener.groovy
index 0250df787f0..c31b59abb4c 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/io/watch/FileExtensionFileChangeListener.groovy
+++ b/grails-bootstrap/src/main/groovy/org/grails/io/watch/FileExtensionFileChangeListener.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.io.watch
import groovy.transform.CompileStatic
diff --git a/grails-bootstrap/src/main/groovy/org/grails/io/watch/MacOsWatchServiceDirectoryWatcher.java b/grails-bootstrap/src/main/groovy/org/grails/io/watch/MacOsWatchServiceDirectoryWatcher.java
index c32661adfc5..4df77f75bca 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/io/watch/MacOsWatchServiceDirectoryWatcher.java
+++ b/grails-bootstrap/src/main/groovy/org/grails/io/watch/MacOsWatchServiceDirectoryWatcher.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.io.watch;
import java.nio.file.WatchEvent.Kind;
diff --git a/grails-bootstrap/src/main/groovy/org/grails/io/watch/PollingDirectoryWatcher.java b/grails-bootstrap/src/main/groovy/org/grails/io/watch/PollingDirectoryWatcher.java
index 245dc133260..e479e071076 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/io/watch/PollingDirectoryWatcher.java
+++ b/grails-bootstrap/src/main/groovy/org/grails/io/watch/PollingDirectoryWatcher.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.io.watch;
import java.io.File;
diff --git a/grails-bootstrap/src/main/groovy/org/grails/io/watch/WatchServiceDirectoryWatcher.java b/grails-bootstrap/src/main/groovy/org/grails/io/watch/WatchServiceDirectoryWatcher.java
index 5066d27b54a..ef95cf476d8 100644
--- a/grails-bootstrap/src/main/groovy/org/grails/io/watch/WatchServiceDirectoryWatcher.java
+++ b/grails-bootstrap/src/main/groovy/org/grails/io/watch/WatchServiceDirectoryWatcher.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.io.watch;
import java.io.File;
diff --git a/grails-bootstrap/src/test/groovy/grails/build/logging/GrailsConsoleSpec.groovy b/grails-bootstrap/src/test/groovy/grails/build/logging/GrailsConsoleSpec.groovy
index 688f785487f..8baf54816de 100644
--- a/grails-bootstrap/src/test/groovy/grails/build/logging/GrailsConsoleSpec.groovy
+++ b/grails-bootstrap/src/test/groovy/grails/build/logging/GrailsConsoleSpec.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2012 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package grails.build.logging
import jline.console.ConsoleReader
diff --git a/grails-bootstrap/src/test/groovy/grails/config/CodeGenConfigSpec.groovy b/grails-bootstrap/src/test/groovy/grails/config/CodeGenConfigSpec.groovy
index 5bb381d11ad..f100983d90a 100644
--- a/grails-bootstrap/src/test/groovy/grails/config/CodeGenConfigSpec.groovy
+++ b/grails-bootstrap/src/test/groovy/grails/config/CodeGenConfigSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.config
import org.grails.config.CodeGenConfig
diff --git a/grails-bootstrap/src/test/groovy/grails/config/ConfigMapSpec.groovy b/grails-bootstrap/src/test/groovy/grails/config/ConfigMapSpec.groovy
index 4ed76c5f2eb..10f4f565c9a 100644
--- a/grails-bootstrap/src/test/groovy/grails/config/ConfigMapSpec.groovy
+++ b/grails-bootstrap/src/test/groovy/grails/config/ConfigMapSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.config
import org.grails.config.NavigableMap
diff --git a/grails-bootstrap/src/test/groovy/grails/config/GrailsConfigSpec.groovy b/grails-bootstrap/src/test/groovy/grails/config/GrailsConfigSpec.groovy
index 73842370280..08ad032621c 100644
--- a/grails-bootstrap/src/test/groovy/grails/config/GrailsConfigSpec.groovy
+++ b/grails-bootstrap/src/test/groovy/grails/config/GrailsConfigSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.config
import org.grails.config.CodeGenConfig
diff --git a/grails-bootstrap/src/test/groovy/grails/config/NavigableMapSpec.groovy b/grails-bootstrap/src/test/groovy/grails/config/NavigableMapSpec.groovy
index fb900d9b14c..a4b7367506f 100644
--- a/grails-bootstrap/src/test/groovy/grails/config/NavigableMapSpec.groovy
+++ b/grails-bootstrap/src/test/groovy/grails/config/NavigableMapSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.config
import org.grails.config.NavigableMap
diff --git a/grails-bootstrap/src/test/groovy/grails/io/IOUtilsSpec.groovy b/grails-bootstrap/src/test/groovy/grails/io/IOUtilsSpec.groovy
index cf68c4cd749..a424970ee87 100644
--- a/grails-bootstrap/src/test/groovy/grails/io/IOUtilsSpec.groovy
+++ b/grails-bootstrap/src/test/groovy/grails/io/IOUtilsSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.io
import grails.util.BuildSettings
diff --git a/grails-bootstrap/src/test/groovy/grails/util/EnvironmentTests.groovy b/grails-bootstrap/src/test/groovy/grails/util/EnvironmentTests.groovy
index 94d0dc98f01..7e25f86bb5a 100644
--- a/grails-bootstrap/src/test/groovy/grails/util/EnvironmentTests.groovy
+++ b/grails-bootstrap/src/test/groovy/grails/util/EnvironmentTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.util
import org.junit.jupiter.api.AfterEach
diff --git a/grails-bootstrap/src/test/groovy/grails/util/GrailsNameUtilsTests.groovy b/grails-bootstrap/src/test/groovy/grails/util/GrailsNameUtilsTests.groovy
index 1f2faf5764b..8f66fffb7e4 100644
--- a/grails-bootstrap/src/test/groovy/grails/util/GrailsNameUtilsTests.groovy
+++ b/grails-bootstrap/src/test/groovy/grails/util/GrailsNameUtilsTests.groovy
@@ -1,4 +1,5 @@
-/* Copyright 2008 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-bootstrap/src/test/groovy/org/grails/build/parsing/CommandLineParserSpec.groovy b/grails-bootstrap/src/test/groovy/org/grails/build/parsing/CommandLineParserSpec.groovy
index 00da1daf306..92ef9558a0c 100644
--- a/grails-bootstrap/src/test/groovy/org/grails/build/parsing/CommandLineParserSpec.groovy
+++ b/grails-bootstrap/src/test/groovy/org/grails/build/parsing/CommandLineParserSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.build.parsing
import grails.util.Environment
diff --git a/grails-codecs/src/main/groovy/org/grails/plugins/codecs/Base64CodecExtensionMethods.groovy b/grails-codecs/src/main/groovy/org/grails/plugins/codecs/Base64CodecExtensionMethods.groovy
index da4e9f82f50..564286b2019 100644
--- a/grails-codecs/src/main/groovy/org/grails/plugins/codecs/Base64CodecExtensionMethods.groovy
+++ b/grails-codecs/src/main/groovy/org/grails/plugins/codecs/Base64CodecExtensionMethods.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-codecs/src/main/groovy/org/grails/plugins/codecs/DigestUtils.groovy b/grails-codecs/src/main/groovy/org/grails/plugins/codecs/DigestUtils.groovy
index 90d7741a736..76de14016e0 100644
--- a/grails-codecs/src/main/groovy/org/grails/plugins/codecs/DigestUtils.groovy
+++ b/grails-codecs/src/main/groovy/org/grails/plugins/codecs/DigestUtils.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-codecs/src/main/groovy/org/grails/plugins/codecs/HexCodecExtensionMethods.groovy b/grails-codecs/src/main/groovy/org/grails/plugins/codecs/HexCodecExtensionMethods.groovy
index af5277a5ffb..85adc47cfa8 100644
--- a/grails-codecs/src/main/groovy/org/grails/plugins/codecs/HexCodecExtensionMethods.groovy
+++ b/grails-codecs/src/main/groovy/org/grails/plugins/codecs/HexCodecExtensionMethods.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-codecs/src/main/groovy/org/grails/plugins/codecs/MD5BytesCodecExtensionMethods.groovy b/grails-codecs/src/main/groovy/org/grails/plugins/codecs/MD5BytesCodecExtensionMethods.groovy
index 490431d81fa..3fafc723eb3 100644
--- a/grails-codecs/src/main/groovy/org/grails/plugins/codecs/MD5BytesCodecExtensionMethods.groovy
+++ b/grails-codecs/src/main/groovy/org/grails/plugins/codecs/MD5BytesCodecExtensionMethods.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-codecs/src/main/groovy/org/grails/plugins/codecs/MD5CodecExtensionMethods.groovy b/grails-codecs/src/main/groovy/org/grails/plugins/codecs/MD5CodecExtensionMethods.groovy
index aa6879e9205..243cbe69e10 100644
--- a/grails-codecs/src/main/groovy/org/grails/plugins/codecs/MD5CodecExtensionMethods.groovy
+++ b/grails-codecs/src/main/groovy/org/grails/plugins/codecs/MD5CodecExtensionMethods.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-codecs/src/main/groovy/org/grails/plugins/codecs/SHA1BytesCodecExtensionMethods.groovy b/grails-codecs/src/main/groovy/org/grails/plugins/codecs/SHA1BytesCodecExtensionMethods.groovy
index 2b98f23f1eb..a7605fc44d4 100644
--- a/grails-codecs/src/main/groovy/org/grails/plugins/codecs/SHA1BytesCodecExtensionMethods.groovy
+++ b/grails-codecs/src/main/groovy/org/grails/plugins/codecs/SHA1BytesCodecExtensionMethods.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-codecs/src/main/groovy/org/grails/plugins/codecs/SHA1CodecExtensionMethods.groovy b/grails-codecs/src/main/groovy/org/grails/plugins/codecs/SHA1CodecExtensionMethods.groovy
index f9a59b5b4ac..767f1a61ee7 100644
--- a/grails-codecs/src/main/groovy/org/grails/plugins/codecs/SHA1CodecExtensionMethods.groovy
+++ b/grails-codecs/src/main/groovy/org/grails/plugins/codecs/SHA1CodecExtensionMethods.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-codecs/src/main/groovy/org/grails/plugins/codecs/SHA256BytesCodecExtensionMethods.groovy b/grails-codecs/src/main/groovy/org/grails/plugins/codecs/SHA256BytesCodecExtensionMethods.groovy
index c2189514017..5790568e1f0 100644
--- a/grails-codecs/src/main/groovy/org/grails/plugins/codecs/SHA256BytesCodecExtensionMethods.groovy
+++ b/grails-codecs/src/main/groovy/org/grails/plugins/codecs/SHA256BytesCodecExtensionMethods.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-codecs/src/main/groovy/org/grails/plugins/codecs/SHA256CodecExtensionMethods.groovy b/grails-codecs/src/main/groovy/org/grails/plugins/codecs/SHA256CodecExtensionMethods.groovy
index 0163d277b89..3cccc3b1826 100644
--- a/grails-codecs/src/main/groovy/org/grails/plugins/codecs/SHA256CodecExtensionMethods.groovy
+++ b/grails-codecs/src/main/groovy/org/grails/plugins/codecs/SHA256CodecExtensionMethods.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-codecs/src/test/groovy/org/grails/web/codecs/Base64CodecTests.groovy b/grails-codecs/src/test/groovy/org/grails/web/codecs/Base64CodecTests.groovy
index 289f86d986b..816cc7359ce 100644
--- a/grails-codecs/src/test/groovy/org/grails/web/codecs/Base64CodecTests.groovy
+++ b/grails-codecs/src/test/groovy/org/grails/web/codecs/Base64CodecTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.codecs
import org.junit.jupiter.api.BeforeEach
diff --git a/grails-codecs/src/test/groovy/org/grails/web/codecs/HexCodecTests.groovy b/grails-codecs/src/test/groovy/org/grails/web/codecs/HexCodecTests.groovy
index 2d60e4d1f89..6d9b6549b6f 100644
--- a/grails-codecs/src/test/groovy/org/grails/web/codecs/HexCodecTests.groovy
+++ b/grails-codecs/src/test/groovy/org/grails/web/codecs/HexCodecTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.codecs
import org.junit.jupiter.api.Test
diff --git a/grails-codecs/src/test/groovy/org/grails/web/codecs/MD5BytesCodecTests.groovy b/grails-codecs/src/test/groovy/org/grails/web/codecs/MD5BytesCodecTests.groovy
index 54030a9fa39..e94549a80d5 100644
--- a/grails-codecs/src/test/groovy/org/grails/web/codecs/MD5BytesCodecTests.groovy
+++ b/grails-codecs/src/test/groovy/org/grails/web/codecs/MD5BytesCodecTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.codecs
import org.junit.jupiter.api.Test
diff --git a/grails-codecs/src/test/groovy/org/grails/web/codecs/MD5CodecTests.groovy b/grails-codecs/src/test/groovy/org/grails/web/codecs/MD5CodecTests.groovy
index 0efbb4ee1eb..faec2201b58 100644
--- a/grails-codecs/src/test/groovy/org/grails/web/codecs/MD5CodecTests.groovy
+++ b/grails-codecs/src/test/groovy/org/grails/web/codecs/MD5CodecTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.codecs
import org.junit.jupiter.api.Test
diff --git a/grails-codecs/src/test/groovy/org/grails/web/codecs/SHA1BytesCodecTests.groovy b/grails-codecs/src/test/groovy/org/grails/web/codecs/SHA1BytesCodecTests.groovy
index cfb4b36e9b7..c3f03a48c7d 100644
--- a/grails-codecs/src/test/groovy/org/grails/web/codecs/SHA1BytesCodecTests.groovy
+++ b/grails-codecs/src/test/groovy/org/grails/web/codecs/SHA1BytesCodecTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.codecs
import org.junit.jupiter.api.Test
diff --git a/grails-codecs/src/test/groovy/org/grails/web/codecs/SHA1CodecTests.groovy b/grails-codecs/src/test/groovy/org/grails/web/codecs/SHA1CodecTests.groovy
index 1cc67587ab7..39474987818 100644
--- a/grails-codecs/src/test/groovy/org/grails/web/codecs/SHA1CodecTests.groovy
+++ b/grails-codecs/src/test/groovy/org/grails/web/codecs/SHA1CodecTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.codecs
import org.junit.jupiter.api.Test
diff --git a/grails-codecs/src/test/groovy/org/grails/web/codecs/SHA256BytesCodecTests.groovy b/grails-codecs/src/test/groovy/org/grails/web/codecs/SHA256BytesCodecTests.groovy
index db8dc23a730..d4229faf18d 100644
--- a/grails-codecs/src/test/groovy/org/grails/web/codecs/SHA256BytesCodecTests.groovy
+++ b/grails-codecs/src/test/groovy/org/grails/web/codecs/SHA256BytesCodecTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.codecs
import org.junit.jupiter.api.Test
diff --git a/grails-codecs/src/test/groovy/org/grails/web/codecs/SHA256CodecTests.groovy b/grails-codecs/src/test/groovy/org/grails/web/codecs/SHA256CodecTests.groovy
index e6afa33086a..ef050e6d531 100644
--- a/grails-codecs/src/test/groovy/org/grails/web/codecs/SHA256CodecTests.groovy
+++ b/grails-codecs/src/test/groovy/org/grails/web/codecs/SHA256CodecTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.codecs
import org.junit.jupiter.api.Test
diff --git a/grails-console/src/main/groovy/grails/ui/command/GrailsApplicationContextCommandRunner.groovy b/grails-console/src/main/groovy/grails/ui/command/GrailsApplicationContextCommandRunner.groovy
index 5827d027fc3..6890edd24f8 100644
--- a/grails-console/src/main/groovy/grails/ui/command/GrailsApplicationContextCommandRunner.groovy
+++ b/grails-console/src/main/groovy/grails/ui/command/GrailsApplicationContextCommandRunner.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-console/src/main/groovy/grails/ui/console/GrailsSwingConsole.groovy b/grails-console/src/main/groovy/grails/ui/console/GrailsSwingConsole.groovy
index 9057a9c2b7b..4c0467d3a42 100644
--- a/grails-console/src/main/groovy/grails/ui/console/GrailsSwingConsole.groovy
+++ b/grails-console/src/main/groovy/grails/ui/console/GrailsSwingConsole.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-console/src/main/groovy/grails/ui/console/support/GroovyConsoleApplicationContext.groovy b/grails-console/src/main/groovy/grails/ui/console/support/GroovyConsoleApplicationContext.groovy
index d6ebf2eb2f6..d12bf2a77a5 100644
--- a/grails-console/src/main/groovy/grails/ui/console/support/GroovyConsoleApplicationContext.groovy
+++ b/grails-console/src/main/groovy/grails/ui/console/support/GroovyConsoleApplicationContext.groovy
@@ -1,12 +1,5 @@
-package grails.ui.console.support
-
-import grails.core.GrailsApplication
-import groovy.transform.CompileStatic
-import groovy.transform.InheritConstructors
-import org.springframework.context.support.GenericApplicationContext
-
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -20,6 +13,12 @@ import org.springframework.context.support.GenericApplicationContext
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+package grails.ui.console.support
+
+import grails.core.GrailsApplication
+import groovy.transform.CompileStatic
+import groovy.transform.InheritConstructors
+import org.springframework.context.support.GenericApplicationContext
/**
* An {@link org.springframework.context.ApplicationContext} that loads the GroovyConsole and makes the ApplicationContext and Grails environment available to the console
diff --git a/grails-console/src/main/groovy/grails/ui/console/support/GroovyConsoleWebApplicationContext.groovy b/grails-console/src/main/groovy/grails/ui/console/support/GroovyConsoleWebApplicationContext.groovy
index 447490f56ef..9cfc35f6917 100644
--- a/grails-console/src/main/groovy/grails/ui/console/support/GroovyConsoleWebApplicationContext.groovy
+++ b/grails-console/src/main/groovy/grails/ui/console/support/GroovyConsoleWebApplicationContext.groovy
@@ -1,17 +1,5 @@
-package grails.ui.console.support
-
-import grails.core.GrailsApplication
-import grails.persistence.support.PersistenceContextInterceptor
-import grails.ui.support.DevelopmentWebApplicationContext
-import grails.util.BuildSettings
-import groovy.transform.CompileStatic
-import groovy.transform.InheritConstructors
-import org.springframework.mock.web.MockServletConfig
-import org.springframework.mock.web.MockServletContext
-import org.springframework.web.context.support.GenericWebApplicationContext
-
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -25,6 +13,17 @@ import org.springframework.web.context.support.GenericWebApplicationContext
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+package grails.ui.console.support
+
+import grails.core.GrailsApplication
+import grails.persistence.support.PersistenceContextInterceptor
+import grails.ui.support.DevelopmentWebApplicationContext
+import grails.util.BuildSettings
+import groovy.transform.CompileStatic
+import groovy.transform.InheritConstructors
+import org.springframework.mock.web.MockServletConfig
+import org.springframework.mock.web.MockServletContext
+import org.springframework.web.context.support.GenericWebApplicationContext
/**
* A {@org.springframework.web.context.WebApplicationContext} for use in the embedded Grails console
diff --git a/grails-console/src/main/groovy/grails/ui/script/GrailsApplicationScriptRunner.groovy b/grails-console/src/main/groovy/grails/ui/script/GrailsApplicationScriptRunner.groovy
index 89deb2af8db..a3eb9032ef0 100644
--- a/grails-console/src/main/groovy/grails/ui/script/GrailsApplicationScriptRunner.groovy
+++ b/grails-console/src/main/groovy/grails/ui/script/GrailsApplicationScriptRunner.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-console/src/main/groovy/grails/ui/shell/GrailsShell.groovy b/grails-console/src/main/groovy/grails/ui/shell/GrailsShell.groovy
index c7beb68f794..03bb16816c0 100644
--- a/grails-console/src/main/groovy/grails/ui/shell/GrailsShell.groovy
+++ b/grails-console/src/main/groovy/grails/ui/shell/GrailsShell.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-console/src/main/groovy/grails/ui/shell/support/GroovyshApplicationContext.groovy b/grails-console/src/main/groovy/grails/ui/shell/support/GroovyshApplicationContext.groovy
index 1dd2123802a..ec5a3b66457 100644
--- a/grails-console/src/main/groovy/grails/ui/shell/support/GroovyshApplicationContext.groovy
+++ b/grails-console/src/main/groovy/grails/ui/shell/support/GroovyshApplicationContext.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-console/src/main/groovy/grails/ui/shell/support/GroovyshWebApplicationContext.groovy b/grails-console/src/main/groovy/grails/ui/shell/support/GroovyshWebApplicationContext.groovy
index a3a2774af09..8366cdab5dc 100644
--- a/grails-console/src/main/groovy/grails/ui/shell/support/GroovyshWebApplicationContext.groovy
+++ b/grails-console/src/main/groovy/grails/ui/shell/support/GroovyshWebApplicationContext.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-console/src/main/groovy/grails/ui/support/DevelopmentGrailsApplication.groovy b/grails-console/src/main/groovy/grails/ui/support/DevelopmentGrailsApplication.groovy
index 23fcc730e6c..c7a8a7d12b8 100644
--- a/grails-console/src/main/groovy/grails/ui/support/DevelopmentGrailsApplication.groovy
+++ b/grails-console/src/main/groovy/grails/ui/support/DevelopmentGrailsApplication.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-console/src/main/groovy/grails/ui/support/DevelopmentWebApplicationContext.groovy b/grails-console/src/main/groovy/grails/ui/support/DevelopmentWebApplicationContext.groovy
index 6e2c54e678f..a5babf5a8fb 100644
--- a/grails-console/src/main/groovy/grails/ui/support/DevelopmentWebApplicationContext.groovy
+++ b/grails-console/src/main/groovy/grails/ui/support/DevelopmentWebApplicationContext.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/artefact/ApiDelegate.java b/grails-core/src/main/groovy/grails/artefact/ApiDelegate.java
index d7a2440bf91..1bd27a05b4a 100644
--- a/grails-core/src/main/groovy/grails/artefact/ApiDelegate.java
+++ b/grails-core/src/main/groovy/grails/artefact/ApiDelegate.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/artefact/Artefact.java b/grails-core/src/main/groovy/grails/artefact/Artefact.java
index 186cdac3503..eb90330e798 100644
--- a/grails-core/src/main/groovy/grails/artefact/Artefact.java
+++ b/grails-core/src/main/groovy/grails/artefact/Artefact.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/artefact/Enhanced.java b/grails-core/src/main/groovy/grails/artefact/Enhanced.java
index 099d4c32e80..ee19474c87a 100644
--- a/grails-core/src/main/groovy/grails/artefact/Enhanced.java
+++ b/grails-core/src/main/groovy/grails/artefact/Enhanced.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/artefact/Enhances.java b/grails-core/src/main/groovy/grails/artefact/Enhances.java
index cc585715c2f..797464ef1c9 100644
--- a/grails-core/src/main/groovy/grails/artefact/Enhances.java
+++ b/grails-core/src/main/groovy/grails/artefact/Enhances.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2015 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/beans/util/LazyBeanMap.groovy b/grails-core/src/main/groovy/grails/beans/util/LazyBeanMap.groovy
index 1005f789dab..30ce1c7f760 100644
--- a/grails-core/src/main/groovy/grails/beans/util/LazyBeanMap.groovy
+++ b/grails-core/src/main/groovy/grails/beans/util/LazyBeanMap.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/beans/util/LazyMetaPropertyMap.java b/grails-core/src/main/groovy/grails/beans/util/LazyMetaPropertyMap.java
index 636a73a574e..d1d3cd9615a 100644
--- a/grails-core/src/main/groovy/grails/beans/util/LazyMetaPropertyMap.java
+++ b/grails-core/src/main/groovy/grails/beans/util/LazyMetaPropertyMap.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/boot/GrailsApp.groovy b/grails-core/src/main/groovy/grails/boot/GrailsApp.groovy
index 7fa1b521444..dc6378ca4b6 100644
--- a/grails-core/src/main/groovy/grails/boot/GrailsApp.groovy
+++ b/grails-core/src/main/groovy/grails/boot/GrailsApp.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.boot
import grails.compiler.ast.ClassInjector
diff --git a/grails-core/src/main/groovy/grails/boot/GrailsAppBuilder.groovy b/grails-core/src/main/groovy/grails/boot/GrailsAppBuilder.groovy
index b3e03fc2098..f8eed21a251 100644
--- a/grails-core/src/main/groovy/grails/boot/GrailsAppBuilder.groovy
+++ b/grails-core/src/main/groovy/grails/boot/GrailsAppBuilder.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.boot
import groovy.transform.CompileStatic
diff --git a/grails-core/src/main/groovy/grails/boot/GrailsPluginApplication.groovy b/grails-core/src/main/groovy/grails/boot/GrailsPluginApplication.groovy
index 2b34259b277..f3a56a32e97 100644
--- a/grails-core/src/main/groovy/grails/boot/GrailsPluginApplication.groovy
+++ b/grails-core/src/main/groovy/grails/boot/GrailsPluginApplication.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2016 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/boot/config/GrailsApplicationPostProcessor.groovy b/grails-core/src/main/groovy/grails/boot/config/GrailsApplicationPostProcessor.groovy
index 1bfe5f4cd37..6b3e92eec0a 100644
--- a/grails-core/src/main/groovy/grails/boot/config/GrailsApplicationPostProcessor.groovy
+++ b/grails-core/src/main/groovy/grails/boot/config/GrailsApplicationPostProcessor.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.boot.config
import grails.boot.GrailsApp
diff --git a/grails-core/src/main/groovy/grails/boot/config/GrailsAutoConfiguration.groovy b/grails-core/src/main/groovy/grails/boot/config/GrailsAutoConfiguration.groovy
index c5440b74d30..f0a201fa529 100644
--- a/grails-core/src/main/groovy/grails/boot/config/GrailsAutoConfiguration.groovy
+++ b/grails-core/src/main/groovy/grails/boot/config/GrailsAutoConfiguration.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2015 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/boot/config/tools/ClassPathScanner.groovy b/grails-core/src/main/groovy/grails/boot/config/tools/ClassPathScanner.groovy
index e2114dee777..0d742be39e0 100644
--- a/grails-core/src/main/groovy/grails/boot/config/tools/ClassPathScanner.groovy
+++ b/grails-core/src/main/groovy/grails/boot/config/tools/ClassPathScanner.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2016 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/boot/config/tools/ProfilingGrailsApplicationPostProcessor.groovy b/grails-core/src/main/groovy/grails/boot/config/tools/ProfilingGrailsApplicationPostProcessor.groovy
index f0e1a714ef9..2e5b18ad76f 100644
--- a/grails-core/src/main/groovy/grails/boot/config/tools/ProfilingGrailsApplicationPostProcessor.groovy
+++ b/grails-core/src/main/groovy/grails/boot/config/tools/ProfilingGrailsApplicationPostProcessor.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/boot/config/tools/SettingsFile.groovy b/grails-core/src/main/groovy/grails/boot/config/tools/SettingsFile.groovy
index 0cf96a1c379..61dc4b000e9 100644
--- a/grails-core/src/main/groovy/grails/boot/config/tools/SettingsFile.groovy
+++ b/grails-core/src/main/groovy/grails/boot/config/tools/SettingsFile.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2015 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package grails.boot.config.tools
import groovy.transform.CompileStatic
diff --git a/grails-core/src/main/groovy/grails/compiler/DelegatingMethod.groovy b/grails-core/src/main/groovy/grails/compiler/DelegatingMethod.groovy
index aba49e3ac70..71dc02f67a9 100644
--- a/grails-core/src/main/groovy/grails/compiler/DelegatingMethod.groovy
+++ b/grails-core/src/main/groovy/grails/compiler/DelegatingMethod.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2015 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/compiler/GrailsCompileStatic.groovy b/grails-core/src/main/groovy/grails/compiler/GrailsCompileStatic.groovy
index 166b4d80fd1..b712c2a549b 100644
--- a/grails-core/src/main/groovy/grails/compiler/GrailsCompileStatic.groovy
+++ b/grails-core/src/main/groovy/grails/compiler/GrailsCompileStatic.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/compiler/GrailsTypeChecked.groovy b/grails-core/src/main/groovy/grails/compiler/GrailsTypeChecked.groovy
index fec8214ef42..7c243bb8a54 100644
--- a/grails-core/src/main/groovy/grails/compiler/GrailsTypeChecked.groovy
+++ b/grails-core/src/main/groovy/grails/compiler/GrailsTypeChecked.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/compiler/ast/AllArtefactClassInjector.java b/grails-core/src/main/groovy/grails/compiler/ast/AllArtefactClassInjector.java
index 02cce10fe99..766ca2b223a 100644
--- a/grails-core/src/main/groovy/grails/compiler/ast/AllArtefactClassInjector.java
+++ b/grails-core/src/main/groovy/grails/compiler/ast/AllArtefactClassInjector.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/compiler/ast/AnnotatedClassInjector.java b/grails-core/src/main/groovy/grails/compiler/ast/AnnotatedClassInjector.java
index 5db894de19c..1dfb93c3af2 100644
--- a/grails-core/src/main/groovy/grails/compiler/ast/AnnotatedClassInjector.java
+++ b/grails-core/src/main/groovy/grails/compiler/ast/AnnotatedClassInjector.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/compiler/ast/AstTransformer.java b/grails-core/src/main/groovy/grails/compiler/ast/AstTransformer.java
index 43093fb3ffa..b0be531ffd7 100644
--- a/grails-core/src/main/groovy/grails/compiler/ast/AstTransformer.java
+++ b/grails-core/src/main/groovy/grails/compiler/ast/AstTransformer.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/compiler/ast/ClassInjector.java b/grails-core/src/main/groovy/grails/compiler/ast/ClassInjector.java
index a2d6679bda4..f4c6829e176 100644
--- a/grails-core/src/main/groovy/grails/compiler/ast/ClassInjector.java
+++ b/grails-core/src/main/groovy/grails/compiler/ast/ClassInjector.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/compiler/ast/GlobalClassInjector.groovy b/grails-core/src/main/groovy/grails/compiler/ast/GlobalClassInjector.groovy
index c1ecd41f2d1..18d51dbc609 100644
--- a/grails-core/src/main/groovy/grails/compiler/ast/GlobalClassInjector.groovy
+++ b/grails-core/src/main/groovy/grails/compiler/ast/GlobalClassInjector.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.compiler.ast
/**
diff --git a/grails-core/src/main/groovy/grails/compiler/ast/GlobalClassInjectorAdapter.groovy b/grails-core/src/main/groovy/grails/compiler/ast/GlobalClassInjectorAdapter.groovy
index b40c8af53ed..550687f2f59 100644
--- a/grails-core/src/main/groovy/grails/compiler/ast/GlobalClassInjectorAdapter.groovy
+++ b/grails-core/src/main/groovy/grails/compiler/ast/GlobalClassInjectorAdapter.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.compiler.ast
import groovy.transform.CompileStatic
diff --git a/grails-core/src/main/groovy/grails/compiler/ast/GrailsArtefactClassInjector.java b/grails-core/src/main/groovy/grails/compiler/ast/GrailsArtefactClassInjector.java
index 8c8a02bbc7a..e015b23075b 100644
--- a/grails-core/src/main/groovy/grails/compiler/ast/GrailsArtefactClassInjector.java
+++ b/grails-core/src/main/groovy/grails/compiler/ast/GrailsArtefactClassInjector.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/compiler/ast/GrailsDomainClassInjector.java b/grails-core/src/main/groovy/grails/compiler/ast/GrailsDomainClassInjector.java
index 46ca99ae4a7..cbfdee4d28d 100644
--- a/grails-core/src/main/groovy/grails/compiler/ast/GrailsDomainClassInjector.java
+++ b/grails-core/src/main/groovy/grails/compiler/ast/GrailsDomainClassInjector.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/compiler/ast/GroovyPageInjector.java b/grails-core/src/main/groovy/grails/compiler/ast/GroovyPageInjector.java
index 891f6b0a9a4..41a5fca7b99 100644
--- a/grails-core/src/main/groovy/grails/compiler/ast/GroovyPageInjector.java
+++ b/grails-core/src/main/groovy/grails/compiler/ast/GroovyPageInjector.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/compiler/ast/SupportsClassNode.java b/grails-core/src/main/groovy/grails/compiler/ast/SupportsClassNode.java
index c934b0f7da2..9776c60296c 100644
--- a/grails-core/src/main/groovy/grails/compiler/ast/SupportsClassNode.java
+++ b/grails-core/src/main/groovy/grails/compiler/ast/SupportsClassNode.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.compiler.ast;
import org.codehaus.groovy.ast.ClassNode;
diff --git a/grails-core/src/main/groovy/grails/compiler/traits/TraitInjector.java b/grails-core/src/main/groovy/grails/compiler/traits/TraitInjector.java
index 1765171502e..951e2d9eb5c 100644
--- a/grails-core/src/main/groovy/grails/compiler/traits/TraitInjector.java
+++ b/grails-core/src/main/groovy/grails/compiler/traits/TraitInjector.java
@@ -1,6 +1,5 @@
-
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/config/Config.groovy b/grails-core/src/main/groovy/grails/config/Config.groovy
index a6391485fcb..b57906253c6 100644
--- a/grails-core/src/main/groovy/grails/config/Config.groovy
+++ b/grails-core/src/main/groovy/grails/config/Config.groovy
@@ -1,6 +1,5 @@
-
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/config/ConfigProperties.groovy b/grails-core/src/main/groovy/grails/config/ConfigProperties.groovy
index 806ccdc4e10..56c0585b347 100644
--- a/grails-core/src/main/groovy/grails/config/ConfigProperties.groovy
+++ b/grails-core/src/main/groovy/grails/config/ConfigProperties.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2015 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/config/Settings.groovy b/grails-core/src/main/groovy/grails/config/Settings.groovy
index 227b1e2b473..d480a7dc65d 100644
--- a/grails-core/src/main/groovy/grails/config/Settings.groovy
+++ b/grails-core/src/main/groovy/grails/config/Settings.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.config
/**
diff --git a/grails-core/src/main/groovy/grails/core/ApplicationAttributes.java b/grails-core/src/main/groovy/grails/core/ApplicationAttributes.java
index 0490b266d94..0a436eefe0a 100644
--- a/grails-core/src/main/groovy/grails/core/ApplicationAttributes.java
+++ b/grails-core/src/main/groovy/grails/core/ApplicationAttributes.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/core/ArtefactHandler.java b/grails-core/src/main/groovy/grails/core/ArtefactHandler.java
index dd706874fcf..c5b635265d6 100644
--- a/grails-core/src/main/groovy/grails/core/ArtefactHandler.java
+++ b/grails-core/src/main/groovy/grails/core/ArtefactHandler.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/core/ArtefactHandlerAdapter.java b/grails-core/src/main/groovy/grails/core/ArtefactHandlerAdapter.java
index 6e3d740b0aa..dd167d47fdd 100644
--- a/grails-core/src/main/groovy/grails/core/ArtefactHandlerAdapter.java
+++ b/grails-core/src/main/groovy/grails/core/ArtefactHandlerAdapter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/core/ArtefactInfo.java b/grails-core/src/main/groovy/grails/core/ArtefactInfo.java
index 1a4c6425706..05413d22bb5 100644
--- a/grails-core/src/main/groovy/grails/core/ArtefactInfo.java
+++ b/grails-core/src/main/groovy/grails/core/ArtefactInfo.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/core/DefaultArtefactInfo.java b/grails-core/src/main/groovy/grails/core/DefaultArtefactInfo.java
index 09209913506..8782a46ed31 100644
--- a/grails-core/src/main/groovy/grails/core/DefaultArtefactInfo.java
+++ b/grails-core/src/main/groovy/grails/core/DefaultArtefactInfo.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/core/DefaultGrailsApplication.java b/grails-core/src/main/groovy/grails/core/DefaultGrailsApplication.java
index 24074ca8230..dc835755f6e 100644
--- a/grails-core/src/main/groovy/grails/core/DefaultGrailsApplication.java
+++ b/grails-core/src/main/groovy/grails/core/DefaultGrailsApplication.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/core/DefaultGrailsClass.java b/grails-core/src/main/groovy/grails/core/DefaultGrailsClass.java
index fb5c8500bbf..f4c3f60bf8b 100644
--- a/grails-core/src/main/groovy/grails/core/DefaultGrailsClass.java
+++ b/grails-core/src/main/groovy/grails/core/DefaultGrailsClass.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/core/GrailsApplication.java b/grails-core/src/main/groovy/grails/core/GrailsApplication.java
index 5c690e0c8d0..88ae2bff5fa 100644
--- a/grails-core/src/main/groovy/grails/core/GrailsApplication.java
+++ b/grails-core/src/main/groovy/grails/core/GrailsApplication.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/core/GrailsApplicationClass.groovy b/grails-core/src/main/groovy/grails/core/GrailsApplicationClass.groovy
index ccfa09718d9..fa6f5bc9a44 100644
--- a/grails-core/src/main/groovy/grails/core/GrailsApplicationClass.groovy
+++ b/grails-core/src/main/groovy/grails/core/GrailsApplicationClass.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2015 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/core/GrailsApplicationLifeCycle.groovy b/grails-core/src/main/groovy/grails/core/GrailsApplicationLifeCycle.groovy
index 2b4d31d7022..9d06d0928be 100644
--- a/grails-core/src/main/groovy/grails/core/GrailsApplicationLifeCycle.groovy
+++ b/grails-core/src/main/groovy/grails/core/GrailsApplicationLifeCycle.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/core/GrailsApplicationLifeCycleAdapter.groovy b/grails-core/src/main/groovy/grails/core/GrailsApplicationLifeCycleAdapter.groovy
index 75a9d27a449..c945a18bd81 100644
--- a/grails-core/src/main/groovy/grails/core/GrailsApplicationLifeCycleAdapter.groovy
+++ b/grails-core/src/main/groovy/grails/core/GrailsApplicationLifeCycleAdapter.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2015 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package grails.core
import groovy.transform.CompileStatic
diff --git a/grails-core/src/main/groovy/grails/core/GrailsClass.java b/grails-core/src/main/groovy/grails/core/GrailsClass.java
index d4abdc81659..3bcbec31091 100644
--- a/grails-core/src/main/groovy/grails/core/GrailsClass.java
+++ b/grails-core/src/main/groovy/grails/core/GrailsClass.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/core/GrailsControllerClass.java b/grails-core/src/main/groovy/grails/core/GrailsControllerClass.java
index 134e98db3e7..e0ce333a752 100644
--- a/grails-core/src/main/groovy/grails/core/GrailsControllerClass.java
+++ b/grails-core/src/main/groovy/grails/core/GrailsControllerClass.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/core/GrailsDataSource.java b/grails-core/src/main/groovy/grails/core/GrailsDataSource.java
index e91147b01e0..ee42b77552d 100644
--- a/grails-core/src/main/groovy/grails/core/GrailsDataSource.java
+++ b/grails-core/src/main/groovy/grails/core/GrailsDataSource.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/core/GrailsDomainClass.java b/grails-core/src/main/groovy/grails/core/GrailsDomainClass.java
index 3760c9c43ed..b84534b9097 100644
--- a/grails-core/src/main/groovy/grails/core/GrailsDomainClass.java
+++ b/grails-core/src/main/groovy/grails/core/GrailsDomainClass.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/core/GrailsServiceClass.java b/grails-core/src/main/groovy/grails/core/GrailsServiceClass.java
index 40647f5913a..3fb61987c39 100644
--- a/grails-core/src/main/groovy/grails/core/GrailsServiceClass.java
+++ b/grails-core/src/main/groovy/grails/core/GrailsServiceClass.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/core/GrailsUrlMappingsClass.java b/grails-core/src/main/groovy/grails/core/GrailsUrlMappingsClass.java
index 9eb57798bd8..25bc289600d 100644
--- a/grails-core/src/main/groovy/grails/core/GrailsUrlMappingsClass.java
+++ b/grails-core/src/main/groovy/grails/core/GrailsUrlMappingsClass.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/core/InjectableGrailsClass.java b/grails-core/src/main/groovy/grails/core/InjectableGrailsClass.java
index 49e13494901..94094628880 100644
--- a/grails-core/src/main/groovy/grails/core/InjectableGrailsClass.java
+++ b/grails-core/src/main/groovy/grails/core/InjectableGrailsClass.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/core/events/ArtefactAdditionEvent.groovy b/grails-core/src/main/groovy/grails/core/events/ArtefactAdditionEvent.groovy
index d49759942c0..d31d0268772 100644
--- a/grails-core/src/main/groovy/grails/core/events/ArtefactAdditionEvent.groovy
+++ b/grails-core/src/main/groovy/grails/core/events/ArtefactAdditionEvent.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.core.events
import groovy.transform.CompileStatic
diff --git a/grails-core/src/main/groovy/grails/core/support/ClassLoaderAware.java b/grails-core/src/main/groovy/grails/core/support/ClassLoaderAware.java
index 496f6a4b24a..e61cab18fcb 100644
--- a/grails-core/src/main/groovy/grails/core/support/ClassLoaderAware.java
+++ b/grails-core/src/main/groovy/grails/core/support/ClassLoaderAware.java
@@ -1,11 +1,11 @@
/*
- * Copyright 2003-2007 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-core/src/main/groovy/grails/core/support/GrailsApplicationAware.java b/grails-core/src/main/groovy/grails/core/support/GrailsApplicationAware.java
index a5c331f5f49..fdac0080de8 100644
--- a/grails-core/src/main/groovy/grails/core/support/GrailsApplicationAware.java
+++ b/grails-core/src/main/groovy/grails/core/support/GrailsApplicationAware.java
@@ -1,11 +1,11 @@
/*
- * Copyright 2003-2007 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-core/src/main/groovy/grails/core/support/GrailsConfigurationAware.java b/grails-core/src/main/groovy/grails/core/support/GrailsConfigurationAware.java
index fe53faaf0e2..dbb7b9af232 100644
--- a/grails-core/src/main/groovy/grails/core/support/GrailsConfigurationAware.java
+++ b/grails-core/src/main/groovy/grails/core/support/GrailsConfigurationAware.java
@@ -1,11 +1,11 @@
/*
- * Copyright 2003-2007 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-core/src/main/groovy/grails/core/support/ParentApplicationContextAware.java b/grails-core/src/main/groovy/grails/core/support/ParentApplicationContextAware.java
index d34b59d386b..d812d242571 100644
--- a/grails-core/src/main/groovy/grails/core/support/ParentApplicationContextAware.java
+++ b/grails-core/src/main/groovy/grails/core/support/ParentApplicationContextAware.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2006 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/core/support/proxy/DefaultProxyHandler.java b/grails-core/src/main/groovy/grails/core/support/proxy/DefaultProxyHandler.java
index 8bd4a45ee54..aee672c1ada 100644
--- a/grails-core/src/main/groovy/grails/core/support/proxy/DefaultProxyHandler.java
+++ b/grails-core/src/main/groovy/grails/core/support/proxy/DefaultProxyHandler.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2008 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/core/support/proxy/EntityProxyHandler.java b/grails-core/src/main/groovy/grails/core/support/proxy/EntityProxyHandler.java
index 7e311a68ca3..9d547250657 100644
--- a/grails-core/src/main/groovy/grails/core/support/proxy/EntityProxyHandler.java
+++ b/grails-core/src/main/groovy/grails/core/support/proxy/EntityProxyHandler.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2010 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/core/support/proxy/ProxyHandler.java b/grails-core/src/main/groovy/grails/core/support/proxy/ProxyHandler.java
index dbb11528bff..aee6586c6c3 100644
--- a/grails-core/src/main/groovy/grails/core/support/proxy/ProxyHandler.java
+++ b/grails-core/src/main/groovy/grails/core/support/proxy/ProxyHandler.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2008 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/dev/Support.groovy b/grails-core/src/main/groovy/grails/dev/Support.groovy
index eb869c155bd..9497c017e76 100644
--- a/grails-core/src/main/groovy/grails/dev/Support.groovy
+++ b/grails-core/src/main/groovy/grails/dev/Support.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/dev/commands/ApplicationCommand.groovy b/grails-core/src/main/groovy/grails/dev/commands/ApplicationCommand.groovy
index 1cefa4ef32a..88515e8804b 100644
--- a/grails-core/src/main/groovy/grails/dev/commands/ApplicationCommand.groovy
+++ b/grails-core/src/main/groovy/grails/dev/commands/ApplicationCommand.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/dev/commands/ApplicationContextCommandRegistry.groovy b/grails-core/src/main/groovy/grails/dev/commands/ApplicationContextCommandRegistry.groovy
index c6d34a3ce22..9c0a687199d 100644
--- a/grails-core/src/main/groovy/grails/dev/commands/ApplicationContextCommandRegistry.groovy
+++ b/grails-core/src/main/groovy/grails/dev/commands/ApplicationContextCommandRegistry.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/dev/commands/ExecutionContext.groovy b/grails-core/src/main/groovy/grails/dev/commands/ExecutionContext.groovy
index 63b2ff6872b..9ee5a229445 100644
--- a/grails-core/src/main/groovy/grails/dev/commands/ExecutionContext.groovy
+++ b/grails-core/src/main/groovy/grails/dev/commands/ExecutionContext.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2015 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/dev/commands/GrailsApplicationCommand.groovy b/grails-core/src/main/groovy/grails/dev/commands/GrailsApplicationCommand.groovy
index dcd1f5f6421..20af75d66fb 100644
--- a/grails-core/src/main/groovy/grails/dev/commands/GrailsApplicationCommand.groovy
+++ b/grails-core/src/main/groovy/grails/dev/commands/GrailsApplicationCommand.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.dev.commands
import grails.codegen.model.ModelBuilder
diff --git a/grails-core/src/main/groovy/grails/dev/commands/io/FileSystemInteraction.groovy b/grails-core/src/main/groovy/grails/dev/commands/io/FileSystemInteraction.groovy
index 9728c9c90e8..e68d393e2f1 100644
--- a/grails-core/src/main/groovy/grails/dev/commands/io/FileSystemInteraction.groovy
+++ b/grails-core/src/main/groovy/grails/dev/commands/io/FileSystemInteraction.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/dev/commands/io/FileSystemInteractionImpl.groovy b/grails-core/src/main/groovy/grails/dev/commands/io/FileSystemInteractionImpl.groovy
index 31f536e27e8..96fbde2b68e 100644
--- a/grails-core/src/main/groovy/grails/dev/commands/io/FileSystemInteractionImpl.groovy
+++ b/grails-core/src/main/groovy/grails/dev/commands/io/FileSystemInteractionImpl.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/dev/commands/template/TemplateException.groovy b/grails-core/src/main/groovy/grails/dev/commands/template/TemplateException.groovy
index 621d55cc0e2..27a31178f58 100644
--- a/grails-core/src/main/groovy/grails/dev/commands/template/TemplateException.groovy
+++ b/grails-core/src/main/groovy/grails/dev/commands/template/TemplateException.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/dev/commands/template/TemplateRenderer.groovy b/grails-core/src/main/groovy/grails/dev/commands/template/TemplateRenderer.groovy
index 16c6ef2d68f..43e4a6013ec 100644
--- a/grails-core/src/main/groovy/grails/dev/commands/template/TemplateRenderer.groovy
+++ b/grails-core/src/main/groovy/grails/dev/commands/template/TemplateRenderer.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/dev/commands/template/TemplateRendererImpl.groovy b/grails-core/src/main/groovy/grails/dev/commands/template/TemplateRendererImpl.groovy
index 9baed027368..6a512d46b9a 100644
--- a/grails-core/src/main/groovy/grails/dev/commands/template/TemplateRendererImpl.groovy
+++ b/grails-core/src/main/groovy/grails/dev/commands/template/TemplateRendererImpl.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.dev.commands.template
import grails.codegen.model.Model
diff --git a/grails-core/src/main/groovy/grails/persistence/Entity.java b/grails-core/src/main/groovy/grails/persistence/Entity.java
index c173456ede2..490b2e6f775 100644
--- a/grails-core/src/main/groovy/grails/persistence/Entity.java
+++ b/grails-core/src/main/groovy/grails/persistence/Entity.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/persistence/Event.java b/grails-core/src/main/groovy/grails/persistence/Event.java
index ec3112386a1..2c8d1d4de93 100644
--- a/grails-core/src/main/groovy/grails/persistence/Event.java
+++ b/grails-core/src/main/groovy/grails/persistence/Event.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/persistence/PersistenceMethod.java b/grails-core/src/main/groovy/grails/persistence/PersistenceMethod.java
index 9206d1919e3..cf7d5062665 100644
--- a/grails-core/src/main/groovy/grails/persistence/PersistenceMethod.java
+++ b/grails-core/src/main/groovy/grails/persistence/PersistenceMethod.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/persistence/support/NullPersistentContextInterceptor.java b/grails-core/src/main/groovy/grails/persistence/support/NullPersistentContextInterceptor.java
index 9bc1a2bb088..c3f754db164 100644
--- a/grails-core/src/main/groovy/grails/persistence/support/NullPersistentContextInterceptor.java
+++ b/grails-core/src/main/groovy/grails/persistence/support/NullPersistentContextInterceptor.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/persistence/support/PersistenceContextInterceptor.java b/grails-core/src/main/groovy/grails/persistence/support/PersistenceContextInterceptor.java
index 9d3e2fe4c52..315e703d9c3 100644
--- a/grails-core/src/main/groovy/grails/persistence/support/PersistenceContextInterceptor.java
+++ b/grails-core/src/main/groovy/grails/persistence/support/PersistenceContextInterceptor.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2006 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/persistence/support/PersistenceContextInterceptorExecutor.groovy b/grails-core/src/main/groovy/grails/persistence/support/PersistenceContextInterceptorExecutor.groovy
index 70f64182c63..4d15f55c8c6 100644
--- a/grails-core/src/main/groovy/grails/persistence/support/PersistenceContextInterceptorExecutor.groovy
+++ b/grails-core/src/main/groovy/grails/persistence/support/PersistenceContextInterceptorExecutor.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/plugins/DefaultGrailsPluginManager.java b/grails-core/src/main/groovy/grails/plugins/DefaultGrailsPluginManager.java
index 80557c8cc24..10df1d28ffe 100644
--- a/grails-core/src/main/groovy/grails/plugins/DefaultGrailsPluginManager.java
+++ b/grails-core/src/main/groovy/grails/plugins/DefaultGrailsPluginManager.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/plugins/GrailsPlugin.java b/grails-core/src/main/groovy/grails/plugins/GrailsPlugin.java
index bc4b016cbe6..9214259ad8d 100644
--- a/grails-core/src/main/groovy/grails/plugins/GrailsPlugin.java
+++ b/grails-core/src/main/groovy/grails/plugins/GrailsPlugin.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/plugins/GrailsPluginManager.java b/grails-core/src/main/groovy/grails/plugins/GrailsPluginManager.java
index 4ebb3cbad6c..06bddf82d8c 100644
--- a/grails-core/src/main/groovy/grails/plugins/GrailsPluginManager.java
+++ b/grails-core/src/main/groovy/grails/plugins/GrailsPluginManager.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/plugins/Plugin.groovy b/grails-core/src/main/groovy/grails/plugins/Plugin.groovy
index e520a369d4a..93fdf0777d8 100644
--- a/grails-core/src/main/groovy/grails/plugins/Plugin.groovy
+++ b/grails-core/src/main/groovy/grails/plugins/Plugin.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/plugins/PluginFilter.java b/grails-core/src/main/groovy/grails/plugins/PluginFilter.java
index e95fd0aea41..54105e0daf4 100644
--- a/grails-core/src/main/groovy/grails/plugins/PluginFilter.java
+++ b/grails-core/src/main/groovy/grails/plugins/PluginFilter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/plugins/PluginManagerAware.java b/grails-core/src/main/groovy/grails/plugins/PluginManagerAware.java
index 62189773a1e..d7b995dd5fa 100644
--- a/grails-core/src/main/groovy/grails/plugins/PluginManagerAware.java
+++ b/grails-core/src/main/groovy/grails/plugins/PluginManagerAware.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2006-2007 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/plugins/PluginManagerLoader.groovy b/grails-core/src/main/groovy/grails/plugins/PluginManagerLoader.groovy
index d212d452905..b9aed929ade 100644
--- a/grails-core/src/main/groovy/grails/plugins/PluginManagerLoader.groovy
+++ b/grails-core/src/main/groovy/grails/plugins/PluginManagerLoader.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package grails.plugins
/**
diff --git a/grails-core/src/main/groovy/grails/transaction/TransactionManagerAware.java b/grails-core/src/main/groovy/grails/transaction/TransactionManagerAware.java
index e3f241323f5..e23a72fdab4 100644
--- a/grails-core/src/main/groovy/grails/transaction/TransactionManagerAware.java
+++ b/grails-core/src/main/groovy/grails/transaction/TransactionManagerAware.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2006 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/util/AbstractTypeConvertingMap.java b/grails-core/src/main/groovy/grails/util/AbstractTypeConvertingMap.java
index c348f1ad0fe..811e45db6f4 100644
--- a/grails-core/src/main/groovy/grails/util/AbstractTypeConvertingMap.java
+++ b/grails-core/src/main/groovy/grails/util/AbstractTypeConvertingMap.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/util/CacheEntry.java b/grails-core/src/main/groovy/grails/util/CacheEntry.java
index 444bca9f0fb..0a9e5a9715e 100644
--- a/grails-core/src/main/groovy/grails/util/CacheEntry.java
+++ b/grails-core/src/main/groovy/grails/util/CacheEntry.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/util/ClosureToMapPopulator.java b/grails-core/src/main/groovy/grails/util/ClosureToMapPopulator.java
index e753e859f5d..0cf4dfc6bd3 100644
--- a/grails-core/src/main/groovy/grails/util/ClosureToMapPopulator.java
+++ b/grails-core/src/main/groovy/grails/util/ClosureToMapPopulator.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/util/DomainBuilder.java b/grails-core/src/main/groovy/grails/util/DomainBuilder.java
index 6a9f6197171..cd3edeb9d98 100644
--- a/grails-core/src/main/groovy/grails/util/DomainBuilder.java
+++ b/grails-core/src/main/groovy/grails/util/DomainBuilder.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/util/ExtendedProxy.java b/grails-core/src/main/groovy/grails/util/ExtendedProxy.java
index 81703d8c661..7e7e9d01b17 100644
--- a/grails-core/src/main/groovy/grails/util/ExtendedProxy.java
+++ b/grails-core/src/main/groovy/grails/util/ExtendedProxy.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/util/GrailsArrayUtils.groovy b/grails-core/src/main/groovy/grails/util/GrailsArrayUtils.groovy
index 6a4e69039a9..b46d7d64534 100644
--- a/grails-core/src/main/groovy/grails/util/GrailsArrayUtils.groovy
+++ b/grails-core/src/main/groovy/grails/util/GrailsArrayUtils.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package grails.util
import groovy.transform.CompileStatic
diff --git a/grails-core/src/main/groovy/grails/util/GrailsClassUtils.java b/grails-core/src/main/groovy/grails/util/GrailsClassUtils.java
index 38cd5aec1a6..690a0bda934 100644
--- a/grails-core/src/main/groovy/grails/util/GrailsClassUtils.java
+++ b/grails-core/src/main/groovy/grails/util/GrailsClassUtils.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/util/GrailsMetaClassUtils.java b/grails-core/src/main/groovy/grails/util/GrailsMetaClassUtils.java
index 96de0709f70..27d73b8f01b 100644
--- a/grails-core/src/main/groovy/grails/util/GrailsMetaClassUtils.java
+++ b/grails-core/src/main/groovy/grails/util/GrailsMetaClassUtils.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/util/GrailsStringUtils.groovy b/grails-core/src/main/groovy/grails/util/GrailsStringUtils.groovy
index 08926a26bb5..40ab9f7e3ae 100644
--- a/grails-core/src/main/groovy/grails/util/GrailsStringUtils.groovy
+++ b/grails-core/src/main/groovy/grails/util/GrailsStringUtils.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package grails.util
import groovy.transform.CompileStatic
diff --git a/grails-core/src/main/groovy/grails/util/GrailsUtil.java b/grails-core/src/main/groovy/grails/util/GrailsUtil.java
index a186f4e124e..7def424dd2e 100644
--- a/grails-core/src/main/groovy/grails/util/GrailsUtil.java
+++ b/grails-core/src/main/groovy/grails/util/GrailsUtil.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/util/Holders.java b/grails-core/src/main/groovy/grails/util/Holders.java
index fbb427cc287..ea868b6a1a4 100644
--- a/grails-core/src/main/groovy/grails/util/Holders.java
+++ b/grails-core/src/main/groovy/grails/util/Holders.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/util/Mixin.java b/grails-core/src/main/groovy/grails/util/Mixin.java
index 659d5d5bc12..fc15a508f45 100644
--- a/grails-core/src/main/groovy/grails/util/Mixin.java
+++ b/grails-core/src/main/groovy/grails/util/Mixin.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/util/MixinTargetAware.groovy b/grails-core/src/main/groovy/grails/util/MixinTargetAware.groovy
index 8e8c318c759..52576e898a2 100644
--- a/grails-core/src/main/groovy/grails/util/MixinTargetAware.groovy
+++ b/grails-core/src/main/groovy/grails/util/MixinTargetAware.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/util/Pair.java b/grails-core/src/main/groovy/grails/util/Pair.java
index c6e4d1481fa..7371dbcf1cd 100644
--- a/grails-core/src/main/groovy/grails/util/Pair.java
+++ b/grails-core/src/main/groovy/grails/util/Pair.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.util;
public class Pair {
diff --git a/grails-core/src/main/groovy/grails/util/Triple.java b/grails-core/src/main/groovy/grails/util/Triple.java
index 79eb0a92a01..218a5e68c75 100644
--- a/grails-core/src/main/groovy/grails/util/Triple.java
+++ b/grails-core/src/main/groovy/grails/util/Triple.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.util;
public class Triple {
diff --git a/grails-core/src/main/groovy/grails/util/TypeConvertingMap.groovy b/grails-core/src/main/groovy/grails/util/TypeConvertingMap.groovy
index 113be265822..271f9212709 100644
--- a/grails-core/src/main/groovy/grails/util/TypeConvertingMap.groovy
+++ b/grails-core/src/main/groovy/grails/util/TypeConvertingMap.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/validation/Constrained.java b/grails-core/src/main/groovy/grails/validation/Constrained.java
index 832d466161f..d7d3c56c574 100644
--- a/grails-core/src/main/groovy/grails/validation/Constrained.java
+++ b/grails-core/src/main/groovy/grails/validation/Constrained.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/validation/ConstraintsEvaluator.java b/grails-core/src/main/groovy/grails/validation/ConstraintsEvaluator.java
index 62960c888f1..bbe7e0e64c5 100644
--- a/grails-core/src/main/groovy/grails/validation/ConstraintsEvaluator.java
+++ b/grails-core/src/main/groovy/grails/validation/ConstraintsEvaluator.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/validation/DeferredBindingActions.java b/grails-core/src/main/groovy/grails/validation/DeferredBindingActions.java
index 00528c71819..bf93a240346 100644
--- a/grails-core/src/main/groovy/grails/validation/DeferredBindingActions.java
+++ b/grails-core/src/main/groovy/grails/validation/DeferredBindingActions.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/validation/ValidationErrors.groovy b/grails-core/src/main/groovy/grails/validation/ValidationErrors.groovy
index e69f9ee37e8..0aed2338cb0 100644
--- a/grails-core/src/main/groovy/grails/validation/ValidationErrors.groovy
+++ b/grails-core/src/main/groovy/grails/validation/ValidationErrors.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/validation/ValidationException.java b/grails-core/src/main/groovy/grails/validation/ValidationException.java
index 9ca5d671a96..e2977c339d2 100644
--- a/grails-core/src/main/groovy/grails/validation/ValidationException.java
+++ b/grails-core/src/main/groovy/grails/validation/ValidationException.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2009 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/web/Action.java b/grails-core/src/main/groovy/grails/web/Action.java
index 4a7a5175db7..e38fbcdcd70 100644
--- a/grails-core/src/main/groovy/grails/web/Action.java
+++ b/grails-core/src/main/groovy/grails/web/Action.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/web/CamelCaseUrlConverter.java b/grails-core/src/main/groovy/grails/web/CamelCaseUrlConverter.java
index c7cc5fa6d51..f791a4f9a6a 100644
--- a/grails-core/src/main/groovy/grails/web/CamelCaseUrlConverter.java
+++ b/grails-core/src/main/groovy/grails/web/CamelCaseUrlConverter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/web/HyphenatedUrlConverter.java b/grails-core/src/main/groovy/grails/web/HyphenatedUrlConverter.java
index 8065e718468..ec04c007049 100644
--- a/grails-core/src/main/groovy/grails/web/HyphenatedUrlConverter.java
+++ b/grails-core/src/main/groovy/grails/web/HyphenatedUrlConverter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/grails/web/UrlConverter.java b/grails-core/src/main/groovy/grails/web/UrlConverter.java
index 421ef5fd24a..c2a14ded56f 100644
--- a/grails-core/src/main/groovy/grails/web/UrlConverter.java
+++ b/grails-core/src/main/groovy/grails/web/UrlConverter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/asm/AnnotationMetadataReader.java b/grails-core/src/main/groovy/org/grails/asm/AnnotationMetadataReader.java
index 6927c366574..336b47ccc7c 100644
--- a/grails-core/src/main/groovy/org/grails/asm/AnnotationMetadataReader.java
+++ b/grails-core/src/main/groovy/org/grails/asm/AnnotationMetadataReader.java
@@ -1,11 +1,11 @@
/*
- * Copyright 2016 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.grails.asm;
import org.springframework.asm.AnnotationVisitor;
diff --git a/grails-core/src/main/groovy/org/grails/asm/Attribute.java b/grails-core/src/main/groovy/org/grails/asm/Attribute.java
index 3e585d07434..a88ed98fd9f 100644
--- a/grails-core/src/main/groovy/org/grails/asm/Attribute.java
+++ b/grails-core/src/main/groovy/org/grails/asm/Attribute.java
@@ -1,3 +1,20 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.grails.asm;
+
/***
* ASM: a very small and fast Java bytecode manipulation framework
* Copyright (c) 2000-2011 INRIA, France Telecom
@@ -27,7 +44,6 @@
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/
-package org.grails.asm;
import org.springframework.asm.ClassWriter;
import org.springframework.asm.Label;
diff --git a/grails-core/src/main/groovy/org/grails/asm/ByteVector.java b/grails-core/src/main/groovy/org/grails/asm/ByteVector.java
index 9532c2214cd..80b4857cedc 100644
--- a/grails-core/src/main/groovy/org/grails/asm/ByteVector.java
+++ b/grails-core/src/main/groovy/org/grails/asm/ByteVector.java
@@ -1,3 +1,20 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.grails.asm;
+
/***
* ASM: a very small and fast Java bytecode manipulation framework
* Copyright (c) 2000-2011 INRIA, France Telecom
@@ -27,7 +44,6 @@
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/
-package org.grails.asm;
/**
* A dynamically extensible vector of bytes. This class is roughly equivalent to
diff --git a/grails-core/src/main/groovy/org/grails/asm/ClassReader.java b/grails-core/src/main/groovy/org/grails/asm/ClassReader.java
index d95bdba68ec..75b30d9259b 100644
--- a/grails-core/src/main/groovy/org/grails/asm/ClassReader.java
+++ b/grails-core/src/main/groovy/org/grails/asm/ClassReader.java
@@ -1,3 +1,20 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.grails.asm;
+
/***
* ASM: a very small and fast Java bytecode manipulation framework
* Copyright (c) 2000-2011 INRIA, France Telecom
@@ -27,7 +44,6 @@
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/
-package org.grails.asm;
import org.springframework.asm.*;
import java.io.IOException;
diff --git a/grails-core/src/main/groovy/org/grails/asm/Context.java b/grails-core/src/main/groovy/org/grails/asm/Context.java
index 9d4c44545a9..36deb416fe3 100644
--- a/grails-core/src/main/groovy/org/grails/asm/Context.java
+++ b/grails-core/src/main/groovy/org/grails/asm/Context.java
@@ -1,3 +1,20 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.grails.asm;
+
/***
* ASM: a very small and fast Java bytecode manipulation framework
* Copyright (c) 2000-2011 INRIA, France Telecom
@@ -28,8 +45,6 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
-package org.grails.asm;
-
import org.springframework.asm.Label;
/**
diff --git a/grails-core/src/main/groovy/org/grails/asm/TypePath.java b/grails-core/src/main/groovy/org/grails/asm/TypePath.java
index 68e7c4f7ffc..fd67dde22af 100644
--- a/grails-core/src/main/groovy/org/grails/asm/TypePath.java
+++ b/grails-core/src/main/groovy/org/grails/asm/TypePath.java
@@ -1,3 +1,20 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.grails.asm;
+
/***
* ASM: a very small and fast Java bytecode manipulation framework
* Copyright (c) 2000-2013 INRIA, France Telecom
@@ -28,9 +45,6 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
-package org.grails.asm;
-
-
/**
* The path to a type argument, wildcard bound, array element type, or static
* inner type within an enclosing type.
diff --git a/grails-core/src/main/groovy/org/grails/beans/support/PropertiesEditor.java b/grails-core/src/main/groovy/org/grails/beans/support/PropertiesEditor.java
index 4c14672bdde..0a80af2cd0c 100644
--- a/grails-core/src/main/groovy/org/grails/beans/support/PropertiesEditor.java
+++ b/grails-core/src/main/groovy/org/grails/beans/support/PropertiesEditor.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.beans.support;
import java.util.Map;
diff --git a/grails-core/src/main/groovy/org/grails/boot/internal/EnableAutoConfiguration.java b/grails-core/src/main/groovy/org/grails/boot/internal/EnableAutoConfiguration.java
index ceb60ab397f..ffa8925f9db 100644
--- a/grails-core/src/main/groovy/org/grails/boot/internal/EnableAutoConfiguration.java
+++ b/grails-core/src/main/groovy/org/grails/boot/internal/EnableAutoConfiguration.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/boot/internal/JavaCompiler.groovy b/grails-core/src/main/groovy/org/grails/boot/internal/JavaCompiler.groovy
index 3ddeb86f50e..c59d355d2e1 100644
--- a/grails-core/src/main/groovy/org/grails/boot/internal/JavaCompiler.groovy
+++ b/grails-core/src/main/groovy/org/grails/boot/internal/JavaCompiler.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2015 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/compiler/CriteriaTypeCheckingExtension.groovy b/grails-core/src/main/groovy/org/grails/compiler/CriteriaTypeCheckingExtension.groovy
index 987574967ab..89e5da7d41b 100644
--- a/grails-core/src/main/groovy/org/grails/compiler/CriteriaTypeCheckingExtension.groovy
+++ b/grails-core/src/main/groovy/org/grails/compiler/CriteriaTypeCheckingExtension.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/compiler/DomainMappingTypeCheckingExtension.groovy b/grails-core/src/main/groovy/org/grails/compiler/DomainMappingTypeCheckingExtension.groovy
index e82e322dca7..3690bbc3ebc 100644
--- a/grails-core/src/main/groovy/org/grails/compiler/DomainMappingTypeCheckingExtension.groovy
+++ b/grails-core/src/main/groovy/org/grails/compiler/DomainMappingTypeCheckingExtension.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/compiler/DynamicFinderTypeCheckingExtension.groovy b/grails-core/src/main/groovy/org/grails/compiler/DynamicFinderTypeCheckingExtension.groovy
index 2e18721dc0f..4070b2e3097 100644
--- a/grails-core/src/main/groovy/org/grails/compiler/DynamicFinderTypeCheckingExtension.groovy
+++ b/grails-core/src/main/groovy/org/grails/compiler/DynamicFinderTypeCheckingExtension.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/compiler/HttpServletRequestTypeCheckingExtension.groovy b/grails-core/src/main/groovy/org/grails/compiler/HttpServletRequestTypeCheckingExtension.groovy
index 0e35d7f9b86..cce97a7bf81 100644
--- a/grails-core/src/main/groovy/org/grails/compiler/HttpServletRequestTypeCheckingExtension.groovy
+++ b/grails-core/src/main/groovy/org/grails/compiler/HttpServletRequestTypeCheckingExtension.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2015 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/compiler/NamedQueryTypeCheckingExtension.groovy b/grails-core/src/main/groovy/org/grails/compiler/NamedQueryTypeCheckingExtension.groovy
index 897cf36048a..4c9df1eca78 100644
--- a/grails-core/src/main/groovy/org/grails/compiler/NamedQueryTypeCheckingExtension.groovy
+++ b/grails-core/src/main/groovy/org/grails/compiler/NamedQueryTypeCheckingExtension.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2018 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/compiler/RelationshipManagementMethodTypeCheckingExtension.groovy b/grails-core/src/main/groovy/org/grails/compiler/RelationshipManagementMethodTypeCheckingExtension.groovy
index 635b69646dd..cd16f4522e1 100644
--- a/grails-core/src/main/groovy/org/grails/compiler/RelationshipManagementMethodTypeCheckingExtension.groovy
+++ b/grails-core/src/main/groovy/org/grails/compiler/RelationshipManagementMethodTypeCheckingExtension.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/compiler/ValidateableTypeCheckingExtension.groovy b/grails-core/src/main/groovy/org/grails/compiler/ValidateableTypeCheckingExtension.groovy
index e8d7a0f9a0d..38fd358d906 100644
--- a/grails-core/src/main/groovy/org/grails/compiler/ValidateableTypeCheckingExtension.groovy
+++ b/grails-core/src/main/groovy/org/grails/compiler/ValidateableTypeCheckingExtension.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/compiler/WhereQueryTypeCheckingExtension.groovy b/grails-core/src/main/groovy/org/grails/compiler/WhereQueryTypeCheckingExtension.groovy
index 41ec7c0a326..bdc645db402 100644
--- a/grails-core/src/main/groovy/org/grails/compiler/WhereQueryTypeCheckingExtension.groovy
+++ b/grails-core/src/main/groovy/org/grails/compiler/WhereQueryTypeCheckingExtension.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/compiler/injection/ASTErrorsHelper.java b/grails-core/src/main/groovy/org/grails/compiler/injection/ASTErrorsHelper.java
index d69fa814ba7..65ae25b9ff8 100644
--- a/grails-core/src/main/groovy/org/grails/compiler/injection/ASTErrorsHelper.java
+++ b/grails-core/src/main/groovy/org/grails/compiler/injection/ASTErrorsHelper.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/compiler/injection/ASTValidationErrorsHelper.java b/grails-core/src/main/groovy/org/grails/compiler/injection/ASTValidationErrorsHelper.java
index 9a36dec1cd9..a5c7800705d 100644
--- a/grails-core/src/main/groovy/org/grails/compiler/injection/ASTValidationErrorsHelper.java
+++ b/grails-core/src/main/groovy/org/grails/compiler/injection/ASTValidationErrorsHelper.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/compiler/injection/AbstractArtefactTypeAstTransformation.java b/grails-core/src/main/groovy/org/grails/compiler/injection/AbstractArtefactTypeAstTransformation.java
index e13f85c5b9a..33aa2bfb8a1 100644
--- a/grails-core/src/main/groovy/org/grails/compiler/injection/AbstractArtefactTypeAstTransformation.java
+++ b/grails-core/src/main/groovy/org/grails/compiler/injection/AbstractArtefactTypeAstTransformation.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/compiler/injection/AbstractGrailsArtefactTransformer.java b/grails-core/src/main/groovy/org/grails/compiler/injection/AbstractGrailsArtefactTransformer.java
index 98fe5ecb5b0..40e15f4d32d 100644
--- a/grails-core/src/main/groovy/org/grails/compiler/injection/AbstractGrailsArtefactTransformer.java
+++ b/grails-core/src/main/groovy/org/grails/compiler/injection/AbstractGrailsArtefactTransformer.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/compiler/injection/ApiDelegateTransformation.java b/grails-core/src/main/groovy/org/grails/compiler/injection/ApiDelegateTransformation.java
index 1de50b4daeb..3d53a7a2974 100644
--- a/grails-core/src/main/groovy/org/grails/compiler/injection/ApiDelegateTransformation.java
+++ b/grails-core/src/main/groovy/org/grails/compiler/injection/ApiDelegateTransformation.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/compiler/injection/ApplicationClassInjector.groovy b/grails-core/src/main/groovy/org/grails/compiler/injection/ApplicationClassInjector.groovy
index 93425f09086..3094c39af2f 100644
--- a/grails-core/src/main/groovy/org/grails/compiler/injection/ApplicationClassInjector.groovy
+++ b/grails-core/src/main/groovy/org/grails/compiler/injection/ApplicationClassInjector.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/compiler/injection/ArtefactTypeAstTransformation.java b/grails-core/src/main/groovy/org/grails/compiler/injection/ArtefactTypeAstTransformation.java
index 6ab036fcfa6..fa476c300ed 100644
--- a/grails-core/src/main/groovy/org/grails/compiler/injection/ArtefactTypeAstTransformation.java
+++ b/grails-core/src/main/groovy/org/grails/compiler/injection/ArtefactTypeAstTransformation.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/compiler/injection/DefaultGrailsDomainClassInjector.java b/grails-core/src/main/groovy/org/grails/compiler/injection/DefaultGrailsDomainClassInjector.java
index 47cb40d2985..d02479bbe94 100644
--- a/grails-core/src/main/groovy/org/grails/compiler/injection/DefaultGrailsDomainClassInjector.java
+++ b/grails-core/src/main/groovy/org/grails/compiler/injection/DefaultGrailsDomainClassInjector.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/compiler/injection/EnhancesTraitTransformation.groovy b/grails-core/src/main/groovy/org/grails/compiler/injection/EnhancesTraitTransformation.groovy
index cfcc98db0c8..5010d7f373d 100644
--- a/grails-core/src/main/groovy/org/grails/compiler/injection/EnhancesTraitTransformation.groovy
+++ b/grails-core/src/main/groovy/org/grails/compiler/injection/EnhancesTraitTransformation.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2015 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.grails.compiler.injection
import grails.artefact.Enhances
import grails.compiler.traits.TraitInjector
diff --git a/grails-core/src/main/groovy/org/grails/compiler/injection/EntityASTTransformation.java b/grails-core/src/main/groovy/org/grails/compiler/injection/EntityASTTransformation.java
index 2b87b80ab38..28d280cc2e8 100644
--- a/grails-core/src/main/groovy/org/grails/compiler/injection/EntityASTTransformation.java
+++ b/grails-core/src/main/groovy/org/grails/compiler/injection/EntityASTTransformation.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/compiler/injection/GlobalGrailsClassInjectorTransformation.groovy b/grails-core/src/main/groovy/org/grails/compiler/injection/GlobalGrailsClassInjectorTransformation.groovy
index 7b5f6a50c78..7db2328dc26 100644
--- a/grails-core/src/main/groovy/org/grails/compiler/injection/GlobalGrailsClassInjectorTransformation.groovy
+++ b/grails-core/src/main/groovy/org/grails/compiler/injection/GlobalGrailsClassInjectorTransformation.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.compiler.injection
import grails.artefact.Artefact
diff --git a/grails-core/src/main/groovy/org/grails/compiler/injection/GlobalImportTransformation.groovy b/grails-core/src/main/groovy/org/grails/compiler/injection/GlobalImportTransformation.groovy
index 2d982d3abfb..902def5b120 100644
--- a/grails-core/src/main/groovy/org/grails/compiler/injection/GlobalImportTransformation.groovy
+++ b/grails-core/src/main/groovy/org/grails/compiler/injection/GlobalImportTransformation.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/compiler/injection/GrailsASTUtils.java b/grails-core/src/main/groovy/org/grails/compiler/injection/GrailsASTUtils.java
index 675f374918c..28ce6583763 100644
--- a/grails-core/src/main/groovy/org/grails/compiler/injection/GrailsASTUtils.java
+++ b/grails-core/src/main/groovy/org/grails/compiler/injection/GrailsASTUtils.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/compiler/injection/GrailsAwareClassLoader.java b/grails-core/src/main/groovy/org/grails/compiler/injection/GrailsAwareClassLoader.java
index 2098c2db65f..d81afe0bd92 100644
--- a/grails-core/src/main/groovy/org/grails/compiler/injection/GrailsAwareClassLoader.java
+++ b/grails-core/src/main/groovy/org/grails/compiler/injection/GrailsAwareClassLoader.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2006-2007 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/compiler/injection/GrailsAwareInjectionOperation.java b/grails-core/src/main/groovy/org/grails/compiler/injection/GrailsAwareInjectionOperation.java
index 40fc0303ada..f48c0dcf744 100644
--- a/grails-core/src/main/groovy/org/grails/compiler/injection/GrailsAwareInjectionOperation.java
+++ b/grails-core/src/main/groovy/org/grails/compiler/injection/GrailsAwareInjectionOperation.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2006-2007 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/compiler/injection/GroovyEclipseCompilationHelper.groovy b/grails-core/src/main/groovy/org/grails/compiler/injection/GroovyEclipseCompilationHelper.groovy
index a747e5ab0f0..ce69c7d8056 100644
--- a/grails-core/src/main/groovy/org/grails/compiler/injection/GroovyEclipseCompilationHelper.groovy
+++ b/grails-core/src/main/groovy/org/grails/compiler/injection/GroovyEclipseCompilationHelper.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2015 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.grails.compiler.injection
import groovy.transform.CompileStatic
diff --git a/grails-core/src/main/groovy/org/grails/compiler/injection/MixinTransformation.java b/grails-core/src/main/groovy/org/grails/compiler/injection/MixinTransformation.java
index 174ca46eff6..4c17c652641 100644
--- a/grails-core/src/main/groovy/org/grails/compiler/injection/MixinTransformation.java
+++ b/grails-core/src/main/groovy/org/grails/compiler/injection/MixinTransformation.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/compiler/injection/NamedArtefactTypeAstTransformation.java b/grails-core/src/main/groovy/org/grails/compiler/injection/NamedArtefactTypeAstTransformation.java
index 5b4d6da1ac3..bb5ca3f77b8 100644
--- a/grails-core/src/main/groovy/org/grails/compiler/injection/NamedArtefactTypeAstTransformation.java
+++ b/grails-core/src/main/groovy/org/grails/compiler/injection/NamedArtefactTypeAstTransformation.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/compiler/injection/PluginAstReader.java b/grails-core/src/main/groovy/org/grails/compiler/injection/PluginAstReader.java
index 3c17a897d44..af5fc87ced6 100644
--- a/grails-core/src/main/groovy/org/grails/compiler/injection/PluginAstReader.java
+++ b/grails-core/src/main/groovy/org/grails/compiler/injection/PluginAstReader.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/compiler/injection/TraitInjectionSupport.groovy b/grails-core/src/main/groovy/org/grails/compiler/injection/TraitInjectionSupport.groovy
index e376a42138f..1315eb9618d 100644
--- a/grails-core/src/main/groovy/org/grails/compiler/injection/TraitInjectionSupport.groovy
+++ b/grails-core/src/main/groovy/org/grails/compiler/injection/TraitInjectionSupport.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2015 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.grails.compiler.injection
import grails.compiler.traits.TraitInjector
diff --git a/grails-core/src/main/groovy/org/grails/compiler/injection/TraitInjectionUtils.java b/grails-core/src/main/groovy/org/grails/compiler/injection/TraitInjectionUtils.java
index 686c1f4aca2..316eb689701 100644
--- a/grails-core/src/main/groovy/org/grails/compiler/injection/TraitInjectionUtils.java
+++ b/grails-core/src/main/groovy/org/grails/compiler/injection/TraitInjectionUtils.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/config/CompositeConfig.java b/grails-core/src/main/groovy/org/grails/config/CompositeConfig.java
index d337201646f..118fbbb6c36 100644
--- a/grails-core/src/main/groovy/org/grails/config/CompositeConfig.java
+++ b/grails-core/src/main/groovy/org/grails/config/CompositeConfig.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/config/EnvironmentAwarePropertySource.java b/grails-core/src/main/groovy/org/grails/config/EnvironmentAwarePropertySource.java
index 3d50ebe4083..cf3bf978188 100644
--- a/grails-core/src/main/groovy/org/grails/config/EnvironmentAwarePropertySource.java
+++ b/grails-core/src/main/groovy/org/grails/config/EnvironmentAwarePropertySource.java
@@ -1,6 +1,5 @@
-
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.grails.config;
import grails.util.Environment;
diff --git a/grails-core/src/main/groovy/org/grails/config/NavigableMapConfig.java b/grails-core/src/main/groovy/org/grails/config/NavigableMapConfig.java
index 6945c48fa70..51d5208ce33 100644
--- a/grails-core/src/main/groovy/org/grails/config/NavigableMapConfig.java
+++ b/grails-core/src/main/groovy/org/grails/config/NavigableMapConfig.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/config/NavigableMapPropertySource.groovy b/grails-core/src/main/groovy/org/grails/config/NavigableMapPropertySource.groovy
index b76f1e7fead..7e5f13953aa 100644
--- a/grails-core/src/main/groovy/org/grails/config/NavigableMapPropertySource.groovy
+++ b/grails-core/src/main/groovy/org/grails/config/NavigableMapPropertySource.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2015 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/config/PrefixedConfig.java b/grails-core/src/main/groovy/org/grails/config/PrefixedConfig.java
index 4b47d7e960a..1dece9ac62b 100644
--- a/grails-core/src/main/groovy/org/grails/config/PrefixedConfig.java
+++ b/grails-core/src/main/groovy/org/grails/config/PrefixedConfig.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/config/PrefixedMapPropertySource.groovy b/grails-core/src/main/groovy/org/grails/config/PrefixedMapPropertySource.groovy
index a606e5698b7..49af8134a16 100644
--- a/grails-core/src/main/groovy/org/grails/config/PrefixedMapPropertySource.groovy
+++ b/grails-core/src/main/groovy/org/grails/config/PrefixedMapPropertySource.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2015 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/config/PropertySourcesConfig.java b/grails-core/src/main/groovy/org/grails/config/PropertySourcesConfig.java
index 0f08626fb67..61f5f6017c4 100644
--- a/grails-core/src/main/groovy/org/grails/config/PropertySourcesConfig.java
+++ b/grails-core/src/main/groovy/org/grails/config/PropertySourcesConfig.java
@@ -1,11 +1,11 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-core/src/main/groovy/org/grails/config/yaml/YamlPropertySourceLoader.java b/grails-core/src/main/groovy/org/grails/config/yaml/YamlPropertySourceLoader.java
index dce7434e324..f12c12ed1e9 100644
--- a/grails-core/src/main/groovy/org/grails/config/yaml/YamlPropertySourceLoader.java
+++ b/grails-core/src/main/groovy/org/grails/config/yaml/YamlPropertySourceLoader.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2018 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.grails.config.yaml;
diff --git a/grails-core/src/main/groovy/org/grails/core/AbstractGrailsApplication.java b/grails-core/src/main/groovy/org/grails/core/AbstractGrailsApplication.java
index 3fb495e7131..a3a7ff48423 100644
--- a/grails-core/src/main/groovy/org/grails/core/AbstractGrailsApplication.java
+++ b/grails-core/src/main/groovy/org/grails/core/AbstractGrailsApplication.java
@@ -1,4 +1,5 @@
-/* Copyright 2014 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/AbstractGrailsClass.java b/grails-core/src/main/groovy/org/grails/core/AbstractGrailsClass.java
index 3a067597248..3a807d46591 100644
--- a/grails-core/src/main/groovy/org/grails/core/AbstractGrailsClass.java
+++ b/grails-core/src/main/groovy/org/grails/core/AbstractGrailsClass.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/AbstractInjectableGrailsClass.java b/grails-core/src/main/groovy/org/grails/core/AbstractInjectableGrailsClass.java
index 2186e00b518..f5f50c780b7 100644
--- a/grails-core/src/main/groovy/org/grails/core/AbstractInjectableGrailsClass.java
+++ b/grails-core/src/main/groovy/org/grails/core/AbstractInjectableGrailsClass.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/DefaultGrailsControllerClass.java b/grails-core/src/main/groovy/org/grails/core/DefaultGrailsControllerClass.java
index 6160d593d0e..1b6c5f17942 100644
--- a/grails-core/src/main/groovy/org/grails/core/DefaultGrailsControllerClass.java
+++ b/grails-core/src/main/groovy/org/grails/core/DefaultGrailsControllerClass.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/DefaultGrailsDomainClass.java b/grails-core/src/main/groovy/org/grails/core/DefaultGrailsDomainClass.java
index b0cf41c3449..03770dcbd81 100644
--- a/grails-core/src/main/groovy/org/grails/core/DefaultGrailsDomainClass.java
+++ b/grails-core/src/main/groovy/org/grails/core/DefaultGrailsDomainClass.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/DefaultGrailsServiceClass.java b/grails-core/src/main/groovy/org/grails/core/DefaultGrailsServiceClass.java
index 5aa554a3392..aaa66b853e2 100644
--- a/grails-core/src/main/groovy/org/grails/core/DefaultGrailsServiceClass.java
+++ b/grails-core/src/main/groovy/org/grails/core/DefaultGrailsServiceClass.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/DefaultGrailsUrlMappingsClass.java b/grails-core/src/main/groovy/org/grails/core/DefaultGrailsUrlMappingsClass.java
index 378d1f40513..f6c1342c4b8 100644
--- a/grails-core/src/main/groovy/org/grails/core/DefaultGrailsUrlMappingsClass.java
+++ b/grails-core/src/main/groovy/org/grails/core/DefaultGrailsUrlMappingsClass.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/artefact/AnnotationDomainClassArtefactHandler.java b/grails-core/src/main/groovy/org/grails/core/artefact/AnnotationDomainClassArtefactHandler.java
index fcf2e0f0c4b..5230480aa5b 100644
--- a/grails-core/src/main/groovy/org/grails/core/artefact/AnnotationDomainClassArtefactHandler.java
+++ b/grails-core/src/main/groovy/org/grails/core/artefact/AnnotationDomainClassArtefactHandler.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/artefact/ApplicationArtefactHandler.groovy b/grails-core/src/main/groovy/org/grails/core/artefact/ApplicationArtefactHandler.groovy
index d867c8813f3..d6f0e05216e 100644
--- a/grails-core/src/main/groovy/org/grails/core/artefact/ApplicationArtefactHandler.groovy
+++ b/grails-core/src/main/groovy/org/grails/core/artefact/ApplicationArtefactHandler.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/artefact/ControllerArtefactHandler.java b/grails-core/src/main/groovy/org/grails/core/artefact/ControllerArtefactHandler.java
index 4e8424e03fb..7c5b645a136 100644
--- a/grails-core/src/main/groovy/org/grails/core/artefact/ControllerArtefactHandler.java
+++ b/grails-core/src/main/groovy/org/grails/core/artefact/ControllerArtefactHandler.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/artefact/DomainClassArtefactHandler.java b/grails-core/src/main/groovy/org/grails/core/artefact/DomainClassArtefactHandler.java
index d8d836fd953..4cc8ac0ae2b 100644
--- a/grails-core/src/main/groovy/org/grails/core/artefact/DomainClassArtefactHandler.java
+++ b/grails-core/src/main/groovy/org/grails/core/artefact/DomainClassArtefactHandler.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/artefact/ServiceArtefactHandler.java b/grails-core/src/main/groovy/org/grails/core/artefact/ServiceArtefactHandler.java
index 4561406b887..a4c97a5a48b 100644
--- a/grails-core/src/main/groovy/org/grails/core/artefact/ServiceArtefactHandler.java
+++ b/grails-core/src/main/groovy/org/grails/core/artefact/ServiceArtefactHandler.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/artefact/UrlMappingsArtefactHandler.java b/grails-core/src/main/groovy/org/grails/core/artefact/UrlMappingsArtefactHandler.java
index 86885bc3e88..6ad11265dd1 100644
--- a/grails-core/src/main/groovy/org/grails/core/artefact/UrlMappingsArtefactHandler.java
+++ b/grails-core/src/main/groovy/org/grails/core/artefact/UrlMappingsArtefactHandler.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/cfg/CustomSafeConstructor.groovy b/grails-core/src/main/groovy/org/grails/core/cfg/CustomSafeConstructor.groovy
index 4b2e2fb47d4..91a09216811 100644
--- a/grails-core/src/main/groovy/org/grails/core/cfg/CustomSafeConstructor.groovy
+++ b/grails-core/src/main/groovy/org/grails/core/cfg/CustomSafeConstructor.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2017-2020 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-core/src/main/groovy/org/grails/core/cfg/GroovyConfigPropertySourceLoader.groovy b/grails-core/src/main/groovy/org/grails/core/cfg/GroovyConfigPropertySourceLoader.groovy
index d88d3695c6e..f743b27e735 100644
--- a/grails-core/src/main/groovy/org/grails/core/cfg/GroovyConfigPropertySourceLoader.groovy
+++ b/grails-core/src/main/groovy/org/grails/core/cfg/GroovyConfigPropertySourceLoader.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/cfg/MicronautGroovyPropertySourceLoader.groovy b/grails-core/src/main/groovy/org/grails/core/cfg/MicronautGroovyPropertySourceLoader.groovy
index 4620d1ff08b..7fd3c95d314 100644
--- a/grails-core/src/main/groovy/org/grails/core/cfg/MicronautGroovyPropertySourceLoader.groovy
+++ b/grails-core/src/main/groovy/org/grails/core/cfg/MicronautGroovyPropertySourceLoader.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.core.cfg
import grails.plugins.GrailsPlugin
diff --git a/grails-core/src/main/groovy/org/grails/core/cfg/MicronautYamlPropertySourceLoader.groovy b/grails-core/src/main/groovy/org/grails/core/cfg/MicronautYamlPropertySourceLoader.groovy
index ae08f4d3d7a..ae5cf9cbecd 100644
--- a/grails-core/src/main/groovy/org/grails/core/cfg/MicronautYamlPropertySourceLoader.groovy
+++ b/grails-core/src/main/groovy/org/grails/core/cfg/MicronautYamlPropertySourceLoader.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.core.cfg
import grails.plugins.GrailsPlugin
diff --git a/grails-core/src/main/groovy/org/grails/core/exceptions/DefaultErrorsPrinter.groovy b/grails-core/src/main/groovy/org/grails/core/exceptions/DefaultErrorsPrinter.groovy
index e68905d1f01..ad5b20af625 100644
--- a/grails-core/src/main/groovy/org/grails/core/exceptions/DefaultErrorsPrinter.groovy
+++ b/grails-core/src/main/groovy/org/grails/core/exceptions/DefaultErrorsPrinter.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/exceptions/GrailsConfigurationException.java b/grails-core/src/main/groovy/org/grails/core/exceptions/GrailsConfigurationException.java
index 6004f89ebb2..28cf6217f68 100644
--- a/grails-core/src/main/groovy/org/grails/core/exceptions/GrailsConfigurationException.java
+++ b/grails-core/src/main/groovy/org/grails/core/exceptions/GrailsConfigurationException.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/exceptions/GrailsDomainException.java b/grails-core/src/main/groovy/org/grails/core/exceptions/GrailsDomainException.java
index 5be9b0c70c2..3444d09eec7 100644
--- a/grails-core/src/main/groovy/org/grails/core/exceptions/GrailsDomainException.java
+++ b/grails-core/src/main/groovy/org/grails/core/exceptions/GrailsDomainException.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/exceptions/GrailsException.java b/grails-core/src/main/groovy/org/grails/core/exceptions/GrailsException.java
index eae5afe378f..4763102fae3 100644
--- a/grails-core/src/main/groovy/org/grails/core/exceptions/GrailsException.java
+++ b/grails-core/src/main/groovy/org/grails/core/exceptions/GrailsException.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/exceptions/GrailsRuntimeException.java b/grails-core/src/main/groovy/org/grails/core/exceptions/GrailsRuntimeException.java
index 63f25937ba6..a49852d7d00 100644
--- a/grails-core/src/main/groovy/org/grails/core/exceptions/GrailsRuntimeException.java
+++ b/grails-core/src/main/groovy/org/grails/core/exceptions/GrailsRuntimeException.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/exceptions/InvalidPropertyException.java b/grails-core/src/main/groovy/org/grails/core/exceptions/InvalidPropertyException.java
index 0cc50ab72e6..a215d4b8994 100644
--- a/grails-core/src/main/groovy/org/grails/core/exceptions/InvalidPropertyException.java
+++ b/grails-core/src/main/groovy/org/grails/core/exceptions/InvalidPropertyException.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/exceptions/NewInstanceCreationException.java b/grails-core/src/main/groovy/org/grails/core/exceptions/NewInstanceCreationException.java
index 3451de1d83d..40a517cebcb 100644
--- a/grails-core/src/main/groovy/org/grails/core/exceptions/NewInstanceCreationException.java
+++ b/grails-core/src/main/groovy/org/grails/core/exceptions/NewInstanceCreationException.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/io/CachingPathMatchingResourcePatternResolver.groovy b/grails-core/src/main/groovy/org/grails/core/io/CachingPathMatchingResourcePatternResolver.groovy
index 86f55158302..6556f6fa688 100644
--- a/grails-core/src/main/groovy/org/grails/core/io/CachingPathMatchingResourcePatternResolver.groovy
+++ b/grails-core/src/main/groovy/org/grails/core/io/CachingPathMatchingResourcePatternResolver.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.core.io
import groovy.transform.CompileStatic
diff --git a/grails-core/src/main/groovy/org/grails/core/io/DefaultResourceLocator.java b/grails-core/src/main/groovy/org/grails/core/io/DefaultResourceLocator.java
index d27e26a7eb4..531e464607a 100644
--- a/grails-core/src/main/groovy/org/grails/core/io/DefaultResourceLocator.java
+++ b/grails-core/src/main/groovy/org/grails/core/io/DefaultResourceLocator.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/io/GrailsByteArrayResource.java b/grails-core/src/main/groovy/org/grails/core/io/GrailsByteArrayResource.java
index 041b7e8c923..4a0c2531ba8 100644
--- a/grails-core/src/main/groovy/org/grails/core/io/GrailsByteArrayResource.java
+++ b/grails-core/src/main/groovy/org/grails/core/io/GrailsByteArrayResource.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/io/GrailsResource.groovy b/grails-core/src/main/groovy/org/grails/core/io/GrailsResource.groovy
index 5c234ef4fc0..964b2e79f59 100644
--- a/grails-core/src/main/groovy/org/grails/core/io/GrailsResource.groovy
+++ b/grails-core/src/main/groovy/org/grails/core/io/GrailsResource.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.core.io
import groovy.transform.CompileStatic
diff --git a/grails-core/src/main/groovy/org/grails/core/io/MockFileResource.java b/grails-core/src/main/groovy/org/grails/core/io/MockFileResource.java
index 9682951ba52..ff7c6a8abe1 100644
--- a/grails-core/src/main/groovy/org/grails/core/io/MockFileResource.java
+++ b/grails-core/src/main/groovy/org/grails/core/io/MockFileResource.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/io/MockResourceLoader.java b/grails-core/src/main/groovy/org/grails/core/io/MockResourceLoader.java
index 46b849e9bd3..80265216bc6 100644
--- a/grails-core/src/main/groovy/org/grails/core/io/MockResourceLoader.java
+++ b/grails-core/src/main/groovy/org/grails/core/io/MockResourceLoader.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/io/MockStringResourceLoader.java b/grails-core/src/main/groovy/org/grails/core/io/MockStringResourceLoader.java
index 88b13248535..e610159be10 100644
--- a/grails-core/src/main/groovy/org/grails/core/io/MockStringResourceLoader.java
+++ b/grails-core/src/main/groovy/org/grails/core/io/MockStringResourceLoader.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/io/PluginPathAwareFileSystemResourceLoader.java b/grails-core/src/main/groovy/org/grails/core/io/PluginPathAwareFileSystemResourceLoader.java
index a59f1ea5d9e..aae94f39e09 100644
--- a/grails-core/src/main/groovy/org/grails/core/io/PluginPathAwareFileSystemResourceLoader.java
+++ b/grails-core/src/main/groovy/org/grails/core/io/PluginPathAwareFileSystemResourceLoader.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/io/ResourceLocator.java b/grails-core/src/main/groovy/org/grails/core/io/ResourceLocator.java
index ef41399b9d1..24c3dbbec7a 100644
--- a/grails-core/src/main/groovy/org/grails/core/io/ResourceLocator.java
+++ b/grails-core/src/main/groovy/org/grails/core/io/ResourceLocator.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/io/SimpleMapResourceLoader.java b/grails-core/src/main/groovy/org/grails/core/io/SimpleMapResourceLoader.java
index 10f2a674523..80edcae3e1e 100644
--- a/grails-core/src/main/groovy/org/grails/core/io/SimpleMapResourceLoader.java
+++ b/grails-core/src/main/groovy/org/grails/core/io/SimpleMapResourceLoader.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/io/SpringResource.java b/grails-core/src/main/groovy/org/grails/core/io/SpringResource.java
index 4ce0d4560a9..cce3b145d17 100644
--- a/grails-core/src/main/groovy/org/grails/core/io/SpringResource.java
+++ b/grails-core/src/main/groovy/org/grails/core/io/SpringResource.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/io/StaticResourceLoader.java b/grails-core/src/main/groovy/org/grails/core/io/StaticResourceLoader.java
index 34aa87616f6..6e078b698a2 100644
--- a/grails-core/src/main/groovy/org/grails/core/io/StaticResourceLoader.java
+++ b/grails-core/src/main/groovy/org/grails/core/io/StaticResourceLoader.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/io/StaticResourceLocator.java b/grails-core/src/main/groovy/org/grails/core/io/StaticResourceLocator.java
index 75a2bf0ae4d..b8ca675cb46 100644
--- a/grails-core/src/main/groovy/org/grails/core/io/StaticResourceLocator.java
+++ b/grails-core/src/main/groovy/org/grails/core/io/StaticResourceLocator.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/io/support/GrailsFactoriesLoader.groovy b/grails-core/src/main/groovy/org/grails/core/io/support/GrailsFactoriesLoader.groovy
index 6eb416e43d5..15a2ba6e806 100644
--- a/grails-core/src/main/groovy/org/grails/core/io/support/GrailsFactoriesLoader.groovy
+++ b/grails-core/src/main/groovy/org/grails/core/io/support/GrailsFactoriesLoader.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.grails.core.io.support
import groovy.transform.CompileStatic
diff --git a/grails-core/src/main/groovy/org/grails/core/io/watch/PackagingException.java b/grails-core/src/main/groovy/org/grails/core/io/watch/PackagingException.java
index 17dc529cefe..763c1821d77 100644
--- a/grails-core/src/main/groovy/org/grails/core/io/watch/PackagingException.java
+++ b/grails-core/src/main/groovy/org/grails/core/io/watch/PackagingException.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/lifecycle/ShutdownOperations.java b/grails-core/src/main/groovy/org/grails/core/lifecycle/ShutdownOperations.java
index 3cfd561ef0a..d8c520912d4 100644
--- a/grails-core/src/main/groovy/org/grails/core/lifecycle/ShutdownOperations.java
+++ b/grails-core/src/main/groovy/org/grails/core/lifecycle/ShutdownOperations.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/metaclass/BaseApiProvider.java b/grails-core/src/main/groovy/org/grails/core/metaclass/BaseApiProvider.java
index 614c965d3c7..259e408f892 100644
--- a/grails-core/src/main/groovy/org/grails/core/metaclass/BaseApiProvider.java
+++ b/grails-core/src/main/groovy/org/grails/core/metaclass/BaseApiProvider.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2010 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/support/ClassEditor.java b/grails-core/src/main/groovy/org/grails/core/support/ClassEditor.java
index 548962d9322..0cff129367a 100644
--- a/grails-core/src/main/groovy/org/grails/core/support/ClassEditor.java
+++ b/grails-core/src/main/groovy/org/grails/core/support/ClassEditor.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/support/GrailsApplicationDiscoveryStrategy.groovy b/grails-core/src/main/groovy/org/grails/core/support/GrailsApplicationDiscoveryStrategy.groovy
index 26fad13b22b..63583d841bd 100644
--- a/grails-core/src/main/groovy/org/grails/core/support/GrailsApplicationDiscoveryStrategy.groovy
+++ b/grails-core/src/main/groovy/org/grails/core/support/GrailsApplicationDiscoveryStrategy.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/support/internal/tools/ClassRelativeClassLoader.java b/grails-core/src/main/groovy/org/grails/core/support/internal/tools/ClassRelativeClassLoader.java
index 0c6e3eb3244..87659c385a2 100644
--- a/grails-core/src/main/groovy/org/grails/core/support/internal/tools/ClassRelativeClassLoader.java
+++ b/grails-core/src/main/groovy/org/grails/core/support/internal/tools/ClassRelativeClassLoader.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.core.support.internal.tools;
import grails.io.IOUtils;
diff --git a/grails-core/src/main/groovy/org/grails/core/support/internal/tools/ClassRelativeResourcePatternResolver.java b/grails-core/src/main/groovy/org/grails/core/support/internal/tools/ClassRelativeResourcePatternResolver.java
index f89c32b635d..39747276e4f 100644
--- a/grails-core/src/main/groovy/org/grails/core/support/internal/tools/ClassRelativeResourcePatternResolver.java
+++ b/grails-core/src/main/groovy/org/grails/core/support/internal/tools/ClassRelativeResourcePatternResolver.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.core.support.internal.tools;
import org.springframework.core.io.Resource;
diff --git a/grails-core/src/main/groovy/org/grails/core/support/internal/tools/MetaClassChangeReporter.java b/grails-core/src/main/groovy/org/grails/core/support/internal/tools/MetaClassChangeReporter.java
index ff4b91dc02f..322a53aa443 100644
--- a/grails-core/src/main/groovy/org/grails/core/support/internal/tools/MetaClassChangeReporter.java
+++ b/grails-core/src/main/groovy/org/grails/core/support/internal/tools/MetaClassChangeReporter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/core/util/BeanCreationProfilingPostProcessor.java b/grails-core/src/main/groovy/org/grails/core/util/BeanCreationProfilingPostProcessor.java
index a2502f3ed4f..3798116c050 100644
--- a/grails-core/src/main/groovy/org/grails/core/util/BeanCreationProfilingPostProcessor.java
+++ b/grails-core/src/main/groovy/org/grails/core/util/BeanCreationProfilingPostProcessor.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.core.util;
import org.slf4j.Logger;
diff --git a/grails-core/src/main/groovy/org/grails/core/util/IncludeExcludeSupport.groovy b/grails-core/src/main/groovy/org/grails/core/util/IncludeExcludeSupport.groovy
index f4548dbc028..c5e9ac19450 100644
--- a/grails-core/src/main/groovy/org/grails/core/util/IncludeExcludeSupport.groovy
+++ b/grails-core/src/main/groovy/org/grails/core/util/IncludeExcludeSupport.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.grails.core.util
import groovy.transform.CompileStatic
diff --git a/grails-core/src/main/groovy/org/grails/core/util/StopWatch.java b/grails-core/src/main/groovy/org/grails/core/util/StopWatch.java
index 80463abf768..b7dc9cb3378 100644
--- a/grails-core/src/main/groovy/org/grails/core/util/StopWatch.java
+++ b/grails-core/src/main/groovy/org/grails/core/util/StopWatch.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.core.util;
import java.text.NumberFormat;
diff --git a/grails-core/src/main/groovy/org/grails/dev/support/CommandLineResourceLoader.java b/grails-core/src/main/groovy/org/grails/dev/support/CommandLineResourceLoader.java
index a92b8d10430..1e1679b46ae 100644
--- a/grails-core/src/main/groovy/org/grails/dev/support/CommandLineResourceLoader.java
+++ b/grails-core/src/main/groovy/org/grails/dev/support/CommandLineResourceLoader.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2006-2007 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/dev/support/DevelopmentShutdownHook.groovy b/grails-core/src/main/groovy/org/grails/dev/support/DevelopmentShutdownHook.groovy
index ff39f2a8f7d..93bf0a8adf4 100644
--- a/grails-core/src/main/groovy/org/grails/dev/support/DevelopmentShutdownHook.groovy
+++ b/grails-core/src/main/groovy/org/grails/dev/support/DevelopmentShutdownHook.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/plugins/AbstractGrailsPlugin.java b/grails-core/src/main/groovy/org/grails/plugins/AbstractGrailsPlugin.java
index 74a6add85f2..ca48c117749 100644
--- a/grails-core/src/main/groovy/org/grails/plugins/AbstractGrailsPlugin.java
+++ b/grails-core/src/main/groovy/org/grails/plugins/AbstractGrailsPlugin.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/plugins/AbstractGrailsPluginManager.java b/grails-core/src/main/groovy/org/grails/plugins/AbstractGrailsPluginManager.java
index 302180a0668..3379a07a0d6 100644
--- a/grails-core/src/main/groovy/org/grails/plugins/AbstractGrailsPluginManager.java
+++ b/grails-core/src/main/groovy/org/grails/plugins/AbstractGrailsPluginManager.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/plugins/BasePluginFilter.java b/grails-core/src/main/groovy/org/grails/plugins/BasePluginFilter.java
index f3b3c170d4f..3f219fd1b1d 100644
--- a/grails-core/src/main/groovy/org/grails/plugins/BasePluginFilter.java
+++ b/grails-core/src/main/groovy/org/grails/plugins/BasePluginFilter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2007 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/plugins/BinaryGrailsPlugin.java b/grails-core/src/main/groovy/org/grails/plugins/BinaryGrailsPlugin.java
index dc71f85e36c..96c8b5261c3 100644
--- a/grails-core/src/main/groovy/org/grails/plugins/BinaryGrailsPlugin.java
+++ b/grails-core/src/main/groovy/org/grails/plugins/BinaryGrailsPlugin.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/plugins/BinaryGrailsPluginDescriptor.java b/grails-core/src/main/groovy/org/grails/plugins/BinaryGrailsPluginDescriptor.java
index 87e29ceb942..5a3623d85a2 100644
--- a/grails-core/src/main/groovy/org/grails/plugins/BinaryGrailsPluginDescriptor.java
+++ b/grails-core/src/main/groovy/org/grails/plugins/BinaryGrailsPluginDescriptor.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/plugins/CoreGrailsPlugin.groovy b/grails-core/src/main/groovy/org/grails/plugins/CoreGrailsPlugin.groovy
index be494d13dd4..4186d5e3050 100644
--- a/grails-core/src/main/groovy/org/grails/plugins/CoreGrailsPlugin.groovy
+++ b/grails-core/src/main/groovy/org/grails/plugins/CoreGrailsPlugin.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/plugins/CorePluginFinder.java b/grails-core/src/main/groovy/org/grails/plugins/CorePluginFinder.java
index dd14c233493..c199fe1b1de 100644
--- a/grails-core/src/main/groovy/org/grails/plugins/CorePluginFinder.java
+++ b/grails-core/src/main/groovy/org/grails/plugins/CorePluginFinder.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2007 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/plugins/DefaultGrailsPlugin.java b/grails-core/src/main/groovy/org/grails/plugins/DefaultGrailsPlugin.java
index 0186ccf5df5..d46f8cda931 100644
--- a/grails-core/src/main/groovy/org/grails/plugins/DefaultGrailsPlugin.java
+++ b/grails-core/src/main/groovy/org/grails/plugins/DefaultGrailsPlugin.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2023 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/plugins/ExcludingPluginFilter.java b/grails-core/src/main/groovy/org/grails/plugins/ExcludingPluginFilter.java
index 8037589f4f7..76e574436e5 100644
--- a/grails-core/src/main/groovy/org/grails/plugins/ExcludingPluginFilter.java
+++ b/grails-core/src/main/groovy/org/grails/plugins/ExcludingPluginFilter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2007 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/plugins/IdentityPluginFilter.java b/grails-core/src/main/groovy/org/grails/plugins/IdentityPluginFilter.java
index 4882c64f9dc..0c0672943bc 100644
--- a/grails-core/src/main/groovy/org/grails/plugins/IdentityPluginFilter.java
+++ b/grails-core/src/main/groovy/org/grails/plugins/IdentityPluginFilter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2007 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/plugins/IncludingPluginFilter.java b/grails-core/src/main/groovy/org/grails/plugins/IncludingPluginFilter.java
index 68eac639258..36a60ee51c3 100644
--- a/grails-core/src/main/groovy/org/grails/plugins/IncludingPluginFilter.java
+++ b/grails-core/src/main/groovy/org/grails/plugins/IncludingPluginFilter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2007 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/plugins/MockGrailsPluginManager.java b/grails-core/src/main/groovy/org/grails/plugins/MockGrailsPluginManager.java
index bbe865abc05..3e64d96fb6c 100644
--- a/grails-core/src/main/groovy/org/grails/plugins/MockGrailsPluginManager.java
+++ b/grails-core/src/main/groovy/org/grails/plugins/MockGrailsPluginManager.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2006 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/plugins/PluginFilterRetriever.java b/grails-core/src/main/groovy/org/grails/plugins/PluginFilterRetriever.java
index 0d66a3b513d..936638370ca 100644
--- a/grails-core/src/main/groovy/org/grails/plugins/PluginFilterRetriever.java
+++ b/grails-core/src/main/groovy/org/grails/plugins/PluginFilterRetriever.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/plugins/ProfilingGrailsPluginManager.java b/grails-core/src/main/groovy/org/grails/plugins/ProfilingGrailsPluginManager.java
index 983513cc2cd..8d5f9b62544 100644
--- a/grails-core/src/main/groovy/org/grails/plugins/ProfilingGrailsPluginManager.java
+++ b/grails-core/src/main/groovy/org/grails/plugins/ProfilingGrailsPluginManager.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2010 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/plugins/core/CoreConfiguration.java b/grails-core/src/main/groovy/org/grails/plugins/core/CoreConfiguration.java
index 5f042870540..d41b9981dd3 100644
--- a/grails-core/src/main/groovy/org/grails/plugins/core/CoreConfiguration.java
+++ b/grails-core/src/main/groovy/org/grails/plugins/core/CoreConfiguration.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2019 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.grails.plugins.core;
import grails.config.ConfigProperties;
diff --git a/grails-core/src/main/groovy/org/grails/plugins/support/WatchPattern.groovy b/grails-core/src/main/groovy/org/grails/plugins/support/WatchPattern.groovy
index c5651d6170e..6b72abcd859 100644
--- a/grails-core/src/main/groovy/org/grails/plugins/support/WatchPattern.groovy
+++ b/grails-core/src/main/groovy/org/grails/plugins/support/WatchPattern.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/plugins/support/WatchPatternParser.java b/grails-core/src/main/groovy/org/grails/plugins/support/WatchPatternParser.java
index 556dd45e9ec..7edd919c77c 100644
--- a/grails-core/src/main/groovy/org/grails/plugins/support/WatchPatternParser.java
+++ b/grails-core/src/main/groovy/org/grails/plugins/support/WatchPatternParser.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/spring/RuntimeSpringConfigUtilities.java b/grails-core/src/main/groovy/org/grails/spring/RuntimeSpringConfigUtilities.java
index 8e8dd070b2a..b3a79a79400 100644
--- a/grails-core/src/main/groovy/org/grails/spring/RuntimeSpringConfigUtilities.java
+++ b/grails-core/src/main/groovy/org/grails/spring/RuntimeSpringConfigUtilities.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.grails.spring;
import grails.spring.BeanBuilder;
diff --git a/grails-core/src/main/groovy/org/grails/spring/aop/autoproxy/GroovyAwareAspectJAwareAdvisorAutoProxyCreator.java b/grails-core/src/main/groovy/org/grails/spring/aop/autoproxy/GroovyAwareAspectJAwareAdvisorAutoProxyCreator.java
index 7325a0e22bf..d53b7b49204 100644
--- a/grails-core/src/main/groovy/org/grails/spring/aop/autoproxy/GroovyAwareAspectJAwareAdvisorAutoProxyCreator.java
+++ b/grails-core/src/main/groovy/org/grails/spring/aop/autoproxy/GroovyAwareAspectJAwareAdvisorAutoProxyCreator.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/spring/aop/autoproxy/GroovyAwareInfrastructureAdvisorAutoProxyCreator.java b/grails-core/src/main/groovy/org/grails/spring/aop/autoproxy/GroovyAwareInfrastructureAdvisorAutoProxyCreator.java
index f60d72c33bb..97fdf79c391 100644
--- a/grails-core/src/main/groovy/org/grails/spring/aop/autoproxy/GroovyAwareInfrastructureAdvisorAutoProxyCreator.java
+++ b/grails-core/src/main/groovy/org/grails/spring/aop/autoproxy/GroovyAwareInfrastructureAdvisorAutoProxyCreator.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/spring/beans/BeanPostProcessorAdapter.java b/grails-core/src/main/groovy/org/grails/spring/beans/BeanPostProcessorAdapter.java
index c59f3166a94..d918af76657 100644
--- a/grails-core/src/main/groovy/org/grails/spring/beans/BeanPostProcessorAdapter.java
+++ b/grails-core/src/main/groovy/org/grails/spring/beans/BeanPostProcessorAdapter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/spring/beans/ClassLoaderAwareBeanPostProcessor.java b/grails-core/src/main/groovy/org/grails/spring/beans/ClassLoaderAwareBeanPostProcessor.java
index fe87929db97..ef3a11df159 100644
--- a/grails-core/src/main/groovy/org/grails/spring/beans/ClassLoaderAwareBeanPostProcessor.java
+++ b/grails-core/src/main/groovy/org/grails/spring/beans/ClassLoaderAwareBeanPostProcessor.java
@@ -1,11 +1,11 @@
/*
- * Copyright 2003-2007 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-core/src/main/groovy/org/grails/spring/beans/GrailsApplicationAwareBeanPostProcessor.java b/grails-core/src/main/groovy/org/grails/spring/beans/GrailsApplicationAwareBeanPostProcessor.java
index 848127538c7..ff801d4d75c 100644
--- a/grails-core/src/main/groovy/org/grails/spring/beans/GrailsApplicationAwareBeanPostProcessor.java
+++ b/grails-core/src/main/groovy/org/grails/spring/beans/GrailsApplicationAwareBeanPostProcessor.java
@@ -1,11 +1,11 @@
/*
- * Copyright 2003-2007 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-core/src/main/groovy/org/grails/spring/beans/PluginManagerAwareBeanPostProcessor.java b/grails-core/src/main/groovy/org/grails/spring/beans/PluginManagerAwareBeanPostProcessor.java
index e74f270726b..a2c0145b7c0 100644
--- a/grails-core/src/main/groovy/org/grails/spring/beans/PluginManagerAwareBeanPostProcessor.java
+++ b/grails-core/src/main/groovy/org/grails/spring/beans/PluginManagerAwareBeanPostProcessor.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/spring/beans/factory/GenericBeanFactoryAccessor.java b/grails-core/src/main/groovy/org/grails/spring/beans/factory/GenericBeanFactoryAccessor.java
index 0fdd7ffbdd6..364f7155e5f 100644
--- a/grails-core/src/main/groovy/org/grails/spring/beans/factory/GenericBeanFactoryAccessor.java
+++ b/grails-core/src/main/groovy/org/grails/spring/beans/factory/GenericBeanFactoryAccessor.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2008 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/spring/beans/factory/HotSwappableTargetSourceFactoryBean.groovy b/grails-core/src/main/groovy/org/grails/spring/beans/factory/HotSwappableTargetSourceFactoryBean.groovy
index 57f72d049a4..430eb0f6efe 100644
--- a/grails-core/src/main/groovy/org/grails/spring/beans/factory/HotSwappableTargetSourceFactoryBean.groovy
+++ b/grails-core/src/main/groovy/org/grails/spring/beans/factory/HotSwappableTargetSourceFactoryBean.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/spring/beans/factory/InstanceFactoryBean.java b/grails-core/src/main/groovy/org/grails/spring/beans/factory/InstanceFactoryBean.java
index 151548f37a8..5e391236797 100644
--- a/grails-core/src/main/groovy/org/grails/spring/beans/factory/InstanceFactoryBean.java
+++ b/grails-core/src/main/groovy/org/grails/spring/beans/factory/InstanceFactoryBean.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.spring.beans.factory;
import org.springframework.beans.factory.FactoryBean;
diff --git a/grails-core/src/main/groovy/org/grails/spring/beans/factory/OptimizedAutowireCapableBeanFactory.java b/grails-core/src/main/groovy/org/grails/spring/beans/factory/OptimizedAutowireCapableBeanFactory.java
index 2d92820d628..c2ca3cc7568 100644
--- a/grails-core/src/main/groovy/org/grails/spring/beans/factory/OptimizedAutowireCapableBeanFactory.java
+++ b/grails-core/src/main/groovy/org/grails/spring/beans/factory/OptimizedAutowireCapableBeanFactory.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/spring/context/ApplicationContextExtension.groovy b/grails-core/src/main/groovy/org/grails/spring/context/ApplicationContextExtension.groovy
index f1e7a44e7d1..2912a389d9f 100644
--- a/grails-core/src/main/groovy/org/grails/spring/context/ApplicationContextExtension.groovy
+++ b/grails-core/src/main/groovy/org/grails/spring/context/ApplicationContextExtension.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/spring/context/annotation/ClosureClassIgnoringComponentScanBeanDefinitionParser.java b/grails-core/src/main/groovy/org/grails/spring/context/annotation/ClosureClassIgnoringComponentScanBeanDefinitionParser.java
index 83f7560decd..e48c4bfaa33 100644
--- a/grails-core/src/main/groovy/org/grails/spring/context/annotation/ClosureClassIgnoringComponentScanBeanDefinitionParser.java
+++ b/grails-core/src/main/groovy/org/grails/spring/context/annotation/ClosureClassIgnoringComponentScanBeanDefinitionParser.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/spring/context/annotation/GrailsContextNamespaceHandler.java b/grails-core/src/main/groovy/org/grails/spring/context/annotation/GrailsContextNamespaceHandler.java
index 3f5865b824a..500791958e4 100644
--- a/grails-core/src/main/groovy/org/grails/spring/context/annotation/GrailsContextNamespaceHandler.java
+++ b/grails-core/src/main/groovy/org/grails/spring/context/annotation/GrailsContextNamespaceHandler.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/spring/context/support/GrailsPlaceholderConfigurer.java b/grails-core/src/main/groovy/org/grails/spring/context/support/GrailsPlaceholderConfigurer.java
index 26d01479ce5..72b1a51c5d6 100644
--- a/grails-core/src/main/groovy/org/grails/spring/context/support/GrailsPlaceholderConfigurer.java
+++ b/grails-core/src/main/groovy/org/grails/spring/context/support/GrailsPlaceholderConfigurer.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/spring/context/support/MapBasedSmartPropertyOverrideConfigurer.groovy b/grails-core/src/main/groovy/org/grails/spring/context/support/MapBasedSmartPropertyOverrideConfigurer.groovy
index ced34ae7598..8c74e520cdf 100644
--- a/grails-core/src/main/groovy/org/grails/spring/context/support/MapBasedSmartPropertyOverrideConfigurer.groovy
+++ b/grails-core/src/main/groovy/org/grails/spring/context/support/MapBasedSmartPropertyOverrideConfigurer.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2009 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/spring/context/support/PluginAwareResourceBundleMessageSource.java b/grails-core/src/main/groovy/org/grails/spring/context/support/PluginAwareResourceBundleMessageSource.java
index 416380cd006..7d723e19b67 100644
--- a/grails-core/src/main/groovy/org/grails/spring/context/support/PluginAwareResourceBundleMessageSource.java
+++ b/grails-core/src/main/groovy/org/grails/spring/context/support/PluginAwareResourceBundleMessageSource.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/spring/context/support/ReloadableResourceBundleMessageSource.java b/grails-core/src/main/groovy/org/grails/spring/context/support/ReloadableResourceBundleMessageSource.java
index 947ebf8e596..efb23901b80 100644
--- a/grails-core/src/main/groovy/org/grails/spring/context/support/ReloadableResourceBundleMessageSource.java
+++ b/grails-core/src/main/groovy/org/grails/spring/context/support/ReloadableResourceBundleMessageSource.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2012 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.grails.spring.context.support;
import grails.util.CacheEntry;
diff --git a/grails-core/src/main/groovy/org/grails/transaction/ChainedTransactionManager.java b/grails-core/src/main/groovy/org/grails/transaction/ChainedTransactionManager.java
index 89edffc1a50..3f92d3b9046 100644
--- a/grails-core/src/main/groovy/org/grails/transaction/ChainedTransactionManager.java
+++ b/grails-core/src/main/groovy/org/grails/transaction/ChainedTransactionManager.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011-2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/transaction/ChainedTransactionManagerPostProcessor.java b/grails-core/src/main/groovy/org/grails/transaction/ChainedTransactionManagerPostProcessor.java
index 1fc503f5ea9..170dfe0b21d 100644
--- a/grails-core/src/main/groovy/org/grails/transaction/ChainedTransactionManagerPostProcessor.java
+++ b/grails-core/src/main/groovy/org/grails/transaction/ChainedTransactionManagerPostProcessor.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.transaction;
import grails.config.Config;
diff --git a/grails-core/src/main/groovy/org/grails/transaction/GrailsTransactionAttribute.java b/grails-core/src/main/groovy/org/grails/transaction/GrailsTransactionAttribute.java
index 4c2abb4c28a..81664cb9aef 100644
--- a/grails-core/src/main/groovy/org/grails/transaction/GrailsTransactionAttribute.java
+++ b/grails-core/src/main/groovy/org/grails/transaction/GrailsTransactionAttribute.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.transaction;
import java.util.List;
diff --git a/grails-core/src/main/groovy/org/grails/transaction/GroovyAwareNamedTransactionAttributeSource.java b/grails-core/src/main/groovy/org/grails/transaction/GroovyAwareNamedTransactionAttributeSource.java
index 7e97e427f64..b02220d7c60 100644
--- a/grails-core/src/main/groovy/org/grails/transaction/GroovyAwareNamedTransactionAttributeSource.java
+++ b/grails-core/src/main/groovy/org/grails/transaction/GroovyAwareNamedTransactionAttributeSource.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/transaction/MultiTransactionStatus.java b/grails-core/src/main/groovy/org/grails/transaction/MultiTransactionStatus.java
index cc332fb56ea..beff0e0db99 100644
--- a/grails-core/src/main/groovy/org/grails/transaction/MultiTransactionStatus.java
+++ b/grails-core/src/main/groovy/org/grails/transaction/MultiTransactionStatus.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011-2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/transaction/SpringTransactionSynchronizationManager.java b/grails-core/src/main/groovy/org/grails/transaction/SpringTransactionSynchronizationManager.java
index dda7c4197cd..00829d5cd14 100644
--- a/grails-core/src/main/groovy/org/grails/transaction/SpringTransactionSynchronizationManager.java
+++ b/grails-core/src/main/groovy/org/grails/transaction/SpringTransactionSynchronizationManager.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011-2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/transaction/SynchronizationManager.java b/grails-core/src/main/groovy/org/grails/transaction/SynchronizationManager.java
index cd470a5cfd4..3d9cf39ccda 100644
--- a/grails-core/src/main/groovy/org/grails/transaction/SynchronizationManager.java
+++ b/grails-core/src/main/groovy/org/grails/transaction/SynchronizationManager.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011-2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.grails.transaction;
/**
diff --git a/grails-core/src/main/groovy/org/grails/transaction/TransactionManagerPostProcessor.java b/grails-core/src/main/groovy/org/grails/transaction/TransactionManagerPostProcessor.java
index 05e9eabe247..d999894c7dd 100644
--- a/grails-core/src/main/groovy/org/grails/transaction/TransactionManagerPostProcessor.java
+++ b/grails-core/src/main/groovy/org/grails/transaction/TransactionManagerPostProcessor.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2006 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/validation/ConstraintEvalUtils.groovy b/grails-core/src/main/groovy/org/grails/validation/ConstraintEvalUtils.groovy
index 3e872598b48..e485f95681e 100644
--- a/grails-core/src/main/groovy/org/grails/validation/ConstraintEvalUtils.groovy
+++ b/grails-core/src/main/groovy/org/grails/validation/ConstraintEvalUtils.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/main/groovy/org/grails/validation/discovery/ConstrainedDiscovery.groovy b/grails-core/src/main/groovy/org/grails/validation/discovery/ConstrainedDiscovery.groovy
index 81e36a547fe..0ebb89717f0 100644
--- a/grails-core/src/main/groovy/org/grails/validation/discovery/ConstrainedDiscovery.groovy
+++ b/grails-core/src/main/groovy/org/grails/validation/discovery/ConstrainedDiscovery.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.validation.discovery
import grails.validation.Constrained
diff --git a/grails-core/src/test/groovy/grails/artefact/ApiDelegateSpec.groovy b/grails-core/src/test/groovy/grails/artefact/ApiDelegateSpec.groovy
index ac97f0f62e6..d22dc1df639 100644
--- a/grails-core/src/test/groovy/grails/artefact/ApiDelegateSpec.groovy
+++ b/grails-core/src/test/groovy/grails/artefact/ApiDelegateSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.artefact
import spock.lang.Specification
diff --git a/grails-core/src/test/groovy/grails/artefact/EnhancesSpec.groovy b/grails-core/src/test/groovy/grails/artefact/EnhancesSpec.groovy
index 1f91c650b5c..6f91acb0845 100644
--- a/grails-core/src/test/groovy/grails/artefact/EnhancesSpec.groovy
+++ b/grails-core/src/test/groovy/grails/artefact/EnhancesSpec.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2015 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package grails.artefact
import grails.compiler.traits.TraitInjector
diff --git a/grails-core/src/test/groovy/grails/boot/DevelopmentModeWatchSpec.groovy b/grails-core/src/test/groovy/grails/boot/DevelopmentModeWatchSpec.groovy
index ce7b4db6f3b..aa622e043db 100644
--- a/grails-core/src/test/groovy/grails/boot/DevelopmentModeWatchSpec.groovy
+++ b/grails-core/src/test/groovy/grails/boot/DevelopmentModeWatchSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.boot
import grails.plugins.GrailsPlugin
diff --git a/grails-core/src/test/groovy/grails/boot/config/tools/ClassPathScannerSpec.groovy b/grails-core/src/test/groovy/grails/boot/config/tools/ClassPathScannerSpec.groovy
index 53416d47aec..8df2a600ba8 100644
--- a/grails-core/src/test/groovy/grails/boot/config/tools/ClassPathScannerSpec.groovy
+++ b/grails-core/src/test/groovy/grails/boot/config/tools/ClassPathScannerSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.boot.config.tools
import grails.persistence.Entity
diff --git a/grails-core/src/test/groovy/grails/config/ConfigPropertiesSpec.groovy b/grails-core/src/test/groovy/grails/config/ConfigPropertiesSpec.groovy
index 20b984be82e..a13fe6b3514 100644
--- a/grails-core/src/test/groovy/grails/config/ConfigPropertiesSpec.groovy
+++ b/grails-core/src/test/groovy/grails/config/ConfigPropertiesSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.config
import org.grails.config.PropertySourcesConfig
diff --git a/grails-core/src/test/groovy/grails/config/PropertySourceConfigSpec.groovy b/grails-core/src/test/groovy/grails/config/PropertySourceConfigSpec.groovy
index a440d7b47bd..fe08f925faf 100644
--- a/grails-core/src/test/groovy/grails/config/PropertySourceConfigSpec.groovy
+++ b/grails-core/src/test/groovy/grails/config/PropertySourceConfigSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.config
import org.grails.config.NavigableMap
diff --git a/grails-core/src/test/groovy/grails/plugins/DefaultGrailsPluginManagerSpec.groovy b/grails-core/src/test/groovy/grails/plugins/DefaultGrailsPluginManagerSpec.groovy
index f055b38245c..f45f874235e 100644
--- a/grails-core/src/test/groovy/grails/plugins/DefaultGrailsPluginManagerSpec.groovy
+++ b/grails-core/src/test/groovy/grails/plugins/DefaultGrailsPluginManagerSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.plugins
import grails.core.GrailsApplication
diff --git a/grails-core/src/test/groovy/grails/plugins/VersionComparatorSpec.groovy b/grails-core/src/test/groovy/grails/plugins/VersionComparatorSpec.groovy
index b65f24e29f7..25f467b2922 100644
--- a/grails-core/src/test/groovy/grails/plugins/VersionComparatorSpec.groovy
+++ b/grails-core/src/test/groovy/grails/plugins/VersionComparatorSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.plugins
import spock.lang.Specification
diff --git a/grails-core/src/test/groovy/grails/spring/GrailsPlaceHolderConfigurerCorePluginRuntimeSpec.groovy b/grails-core/src/test/groovy/grails/spring/GrailsPlaceHolderConfigurerCorePluginRuntimeSpec.groovy
index 9b2970f846a..0111a43778d 100644
--- a/grails-core/src/test/groovy/grails/spring/GrailsPlaceHolderConfigurerCorePluginRuntimeSpec.groovy
+++ b/grails-core/src/test/groovy/grails/spring/GrailsPlaceHolderConfigurerCorePluginRuntimeSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.spring
import grails.core.DefaultGrailsApplication
diff --git a/grails-core/src/test/groovy/grails/spring/GrailsPlaceholderConfigurerSpec.groovy b/grails-core/src/test/groovy/grails/spring/GrailsPlaceholderConfigurerSpec.groovy
index 9c63e04dcf2..0c6b0fd7f46 100644
--- a/grails-core/src/test/groovy/grails/spring/GrailsPlaceholderConfigurerSpec.groovy
+++ b/grails-core/src/test/groovy/grails/spring/GrailsPlaceholderConfigurerSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.spring
import grails.util.Holders
diff --git a/grails-core/src/test/groovy/grails/util/GrailsArrayUtilsSpec.groovy b/grails-core/src/test/groovy/grails/util/GrailsArrayUtilsSpec.groovy
index 0b6be5b43d1..55a35b913f6 100644
--- a/grails-core/src/test/groovy/grails/util/GrailsArrayUtilsSpec.groovy
+++ b/grails-core/src/test/groovy/grails/util/GrailsArrayUtilsSpec.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package grails.util
import grails.util.GrailsArrayUtils
diff --git a/grails-core/src/test/groovy/grails/util/GrailsMetaClassUtilsSpec.groovy b/grails-core/src/test/groovy/grails/util/GrailsMetaClassUtilsSpec.groovy
index e790384de41..46404843b2e 100644
--- a/grails-core/src/test/groovy/grails/util/GrailsMetaClassUtilsSpec.groovy
+++ b/grails-core/src/test/groovy/grails/util/GrailsMetaClassUtilsSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.util
import spock.lang.Specification
diff --git a/grails-core/src/test/groovy/grails/util/GrailsStringUtilsSpec.groovy b/grails-core/src/test/groovy/grails/util/GrailsStringUtilsSpec.groovy
index 09073e32167..4792b954b48 100644
--- a/grails-core/src/test/groovy/grails/util/GrailsStringUtilsSpec.groovy
+++ b/grails-core/src/test/groovy/grails/util/GrailsStringUtilsSpec.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package grails.util
import grails.util.GrailsStringUtils
diff --git a/grails-core/src/test/groovy/grails/util/GrailsUtilTests.java b/grails-core/src/test/groovy/grails/util/GrailsUtilTests.java
index 9aa06c7dc04..565736fbc7f 100644
--- a/grails-core/src/test/groovy/grails/util/GrailsUtilTests.java
+++ b/grails-core/src/test/groovy/grails/util/GrailsUtilTests.java
@@ -1,4 +1,5 @@
-/* Copyright 2004-2005 Graeme Rocher
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/test/groovy/grails/web/CamelCaseUrlConverterSpec.groovy b/grails-core/src/test/groovy/grails/web/CamelCaseUrlConverterSpec.groovy
index 74346ec2c6e..56d9a8ea672 100644
--- a/grails-core/src/test/groovy/grails/web/CamelCaseUrlConverterSpec.groovy
+++ b/grails-core/src/test/groovy/grails/web/CamelCaseUrlConverterSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.web
import spock.lang.Specification
diff --git a/grails-core/src/test/groovy/grails/web/HyphenatedUrlConverterSpec.groovy b/grails-core/src/test/groovy/grails/web/HyphenatedUrlConverterSpec.groovy
index fb037b73e58..76b2bd21318 100644
--- a/grails-core/src/test/groovy/grails/web/HyphenatedUrlConverterSpec.groovy
+++ b/grails-core/src/test/groovy/grails/web/HyphenatedUrlConverterSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.web
import spock.lang.Specification
diff --git a/grails-core/src/test/groovy/org/grails/compiler/injection/ASTValidationErrorsHelperSpec.groovy b/grails-core/src/test/groovy/org/grails/compiler/injection/ASTValidationErrorsHelperSpec.groovy
index d1c922c858d..68b39f0d57a 100644
--- a/grails-core/src/test/groovy/org/grails/compiler/injection/ASTValidationErrorsHelperSpec.groovy
+++ b/grails-core/src/test/groovy/org/grails/compiler/injection/ASTValidationErrorsHelperSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.compiler.injection
import groovy.transform.Generated
diff --git a/grails-core/src/test/groovy/org/grails/compiler/injection/ArtefactTypeAstTransformationSpec.groovy b/grails-core/src/test/groovy/org/grails/compiler/injection/ArtefactTypeAstTransformationSpec.groovy
index 61b535a96cb..ed1a362aec6 100644
--- a/grails-core/src/test/groovy/org/grails/compiler/injection/ArtefactTypeAstTransformationSpec.groovy
+++ b/grails-core/src/test/groovy/org/grails/compiler/injection/ArtefactTypeAstTransformationSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.compiler.injection
import grails.artefact.Artefact
diff --git a/grails-core/src/test/groovy/org/grails/compiler/injection/DefaultDomainClassInjectorSpec.groovy b/grails-core/src/test/groovy/org/grails/compiler/injection/DefaultDomainClassInjectorSpec.groovy
index d480ea30011..f7eb0a4676a 100644
--- a/grails-core/src/test/groovy/org/grails/compiler/injection/DefaultDomainClassInjectorSpec.groovy
+++ b/grails-core/src/test/groovy/org/grails/compiler/injection/DefaultDomainClassInjectorSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.compiler.injection
import grails.persistence.Entity
diff --git a/grails-core/src/test/groovy/org/grails/compiler/injection/GlobalGrailsClassInjectorTransformationSpec.groovy b/grails-core/src/test/groovy/org/grails/compiler/injection/GlobalGrailsClassInjectorTransformationSpec.groovy
index 5befbb06777..e73f7d8cad4 100644
--- a/grails-core/src/test/groovy/org/grails/compiler/injection/GlobalGrailsClassInjectorTransformationSpec.groovy
+++ b/grails-core/src/test/groovy/org/grails/compiler/injection/GlobalGrailsClassInjectorTransformationSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.compiler.injection
import groovy.xml.MarkupBuilder
diff --git a/grails-core/src/test/groovy/org/grails/compiler/injection/GrailsASTUtilsSpec.groovy b/grails-core/src/test/groovy/org/grails/compiler/injection/GrailsASTUtilsSpec.groovy
index 7bb00dc465b..9e27622e46b 100644
--- a/grails-core/src/test/groovy/org/grails/compiler/injection/GrailsASTUtilsSpec.groovy
+++ b/grails-core/src/test/groovy/org/grails/compiler/injection/GrailsASTUtilsSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.compiler.injection
import org.codehaus.groovy.ast.ClassNode
diff --git a/grails-core/src/test/groovy/org/grails/compiler/injection/GrailsASTUtilsTests.groovy b/grails-core/src/test/groovy/org/grails/compiler/injection/GrailsASTUtilsTests.groovy
index 92d0b541d15..9637f90b80e 100644
--- a/grails-core/src/test/groovy/org/grails/compiler/injection/GrailsASTUtilsTests.groovy
+++ b/grails-core/src/test/groovy/org/grails/compiler/injection/GrailsASTUtilsTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.compiler.injection
import grails.artefact.Enhanced
diff --git a/grails-core/src/test/groovy/org/grails/compiler/injection/GrailsArtefactTransformerSpec.groovy b/grails-core/src/test/groovy/org/grails/compiler/injection/GrailsArtefactTransformerSpec.groovy
index 37286260062..4c94e84d934 100644
--- a/grails-core/src/test/groovy/org/grails/compiler/injection/GrailsArtefactTransformerSpec.groovy
+++ b/grails-core/src/test/groovy/org/grails/compiler/injection/GrailsArtefactTransformerSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.compiler.injection
import grails.artefact.Enhanced
diff --git a/grails-core/src/test/groovy/org/grails/config/NavigableMapNestedEqualitySpec.groovy b/grails-core/src/test/groovy/org/grails/config/NavigableMapNestedEqualitySpec.groovy
index b0cb0efe2fd..a50fbb9bb54 100644
--- a/grails-core/src/test/groovy/org/grails/config/NavigableMapNestedEqualitySpec.groovy
+++ b/grails-core/src/test/groovy/org/grails/config/NavigableMapNestedEqualitySpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.config
import org.grails.config.yaml.YamlPropertySourceLoader
diff --git a/grails-core/src/test/groovy/org/grails/config/NavigableMapPropertySourceSpec.groovy b/grails-core/src/test/groovy/org/grails/config/NavigableMapPropertySourceSpec.groovy
index f1425c962dd..714e7a70f91 100644
--- a/grails-core/src/test/groovy/org/grails/config/NavigableMapPropertySourceSpec.groovy
+++ b/grails-core/src/test/groovy/org/grails/config/NavigableMapPropertySourceSpec.groovy
@@ -1,9 +1,5 @@
-package org.grails.config
-
-import spock.lang.Specification
-
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,6 +13,9 @@ import spock.lang.Specification
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+package org.grails.config
+
+import spock.lang.Specification
/**
* @author graemerocher
diff --git a/grails-core/src/test/groovy/org/grails/config/NavigableMapSpringProfilesSpec.groovy b/grails-core/src/test/groovy/org/grails/config/NavigableMapSpringProfilesSpec.groovy
index 37ea27c382d..c32e1f63aaf 100644
--- a/grails-core/src/test/groovy/org/grails/config/NavigableMapSpringProfilesSpec.groovy
+++ b/grails-core/src/test/groovy/org/grails/config/NavigableMapSpringProfilesSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.config
import org.grails.config.yaml.YamlPropertySourceLoader
diff --git a/grails-core/src/test/groovy/org/grails/config/PropertyResolutionSpec.groovy b/grails-core/src/test/groovy/org/grails/config/PropertyResolutionSpec.groovy
index 60c274fc179..2fcdf46d1bb 100644
--- a/grails-core/src/test/groovy/org/grails/config/PropertyResolutionSpec.groovy
+++ b/grails-core/src/test/groovy/org/grails/config/PropertyResolutionSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.config
import org.springframework.boot.env.RandomValuePropertySource
diff --git a/grails-core/src/test/groovy/org/grails/config/PropertySourcesConfigSpec.groovy b/grails-core/src/test/groovy/org/grails/config/PropertySourcesConfigSpec.groovy
index 058c279bb36..9e72523d310 100644
--- a/grails-core/src/test/groovy/org/grails/config/PropertySourcesConfigSpec.groovy
+++ b/grails-core/src/test/groovy/org/grails/config/PropertySourcesConfigSpec.groovy
@@ -1,22 +1,11 @@
-package org.grails.config
-
-
-import org.springframework.core.env.MapPropertySource
-import org.springframework.core.env.MutablePropertySources
-import spock.lang.Ignore
-import spock.lang.Issue
-import spock.lang.Specification
-
-import javax.persistence.FlushModeType
-
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
@@ -24,6 +13,16 @@ import javax.persistence.FlushModeType
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+package org.grails.config
+
+
+import org.springframework.core.env.MapPropertySource
+import org.springframework.core.env.MutablePropertySources
+import spock.lang.Ignore
+import spock.lang.Issue
+import spock.lang.Specification
+
+import javax.persistence.FlushModeType
/**
* @author graemerocher
diff --git a/grails-core/src/test/groovy/org/grails/config/SystemEnvironmentConfigSpec.groovy b/grails-core/src/test/groovy/org/grails/config/SystemEnvironmentConfigSpec.groovy
index c890e7f56fd..752c77cdb55 100644
--- a/grails-core/src/test/groovy/org/grails/config/SystemEnvironmentConfigSpec.groovy
+++ b/grails-core/src/test/groovy/org/grails/config/SystemEnvironmentConfigSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.config
import org.grails.config.yaml.YamlPropertySourceLoader
diff --git a/grails-core/src/test/groovy/org/grails/config/YamlPropertySourceLoaderSpec.groovy b/grails-core/src/test/groovy/org/grails/config/YamlPropertySourceLoaderSpec.groovy
index ea6028c29af..021c6b1b4fd 100644
--- a/grails-core/src/test/groovy/org/grails/config/YamlPropertySourceLoaderSpec.groovy
+++ b/grails-core/src/test/groovy/org/grails/config/YamlPropertySourceLoaderSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.config
import grails.util.Environment
diff --git a/grails-core/src/test/groovy/org/grails/core/DefaultGrailsControllerClassSpec.groovy b/grails-core/src/test/groovy/org/grails/core/DefaultGrailsControllerClassSpec.groovy
index aeeb2b2be84..27bf138dee0 100644
--- a/grails-core/src/test/groovy/org/grails/core/DefaultGrailsControllerClassSpec.groovy
+++ b/grails-core/src/test/groovy/org/grails/core/DefaultGrailsControllerClassSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.core
import grails.config.Settings
diff --git a/grails-core/src/test/groovy/org/grails/core/cfg/EnvironmentAwareSpec.groovy b/grails-core/src/test/groovy/org/grails/core/cfg/EnvironmentAwareSpec.groovy
index 2d8e22fd286..afd4ee30ffb 100644
--- a/grails-core/src/test/groovy/org/grails/core/cfg/EnvironmentAwareSpec.groovy
+++ b/grails-core/src/test/groovy/org/grails/core/cfg/EnvironmentAwareSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.core.cfg
import grails.util.Environment
diff --git a/grails-core/src/test/groovy/org/grails/core/cfg/GroovyConfigPropertySourceLoaderSpec.groovy b/grails-core/src/test/groovy/org/grails/core/cfg/GroovyConfigPropertySourceLoaderSpec.groovy
index d13f65afc41..3c8c8cac7ab 100644
--- a/grails-core/src/test/groovy/org/grails/core/cfg/GroovyConfigPropertySourceLoaderSpec.groovy
+++ b/grails-core/src/test/groovy/org/grails/core/cfg/GroovyConfigPropertySourceLoaderSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.core.cfg
import grails.util.Environment
diff --git a/grails-core/src/test/groovy/org/grails/core/cfg/MicronautContextAwareSpec.groovy b/grails-core/src/test/groovy/org/grails/core/cfg/MicronautContextAwareSpec.groovy
index e338e913b45..72f1f9debd1 100644
--- a/grails-core/src/test/groovy/org/grails/core/cfg/MicronautContextAwareSpec.groovy
+++ b/grails-core/src/test/groovy/org/grails/core/cfg/MicronautContextAwareSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.core.cfg
import grails.util.Environment
diff --git a/grails-core/src/test/groovy/org/grails/core/cfg/MicronautGroovyPropertySourceLoaderSpec.groovy b/grails-core/src/test/groovy/org/grails/core/cfg/MicronautGroovyPropertySourceLoaderSpec.groovy
index eefc2807b6c..466b336e571 100644
--- a/grails-core/src/test/groovy/org/grails/core/cfg/MicronautGroovyPropertySourceLoaderSpec.groovy
+++ b/grails-core/src/test/groovy/org/grails/core/cfg/MicronautGroovyPropertySourceLoaderSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.core.cfg
import grails.util.Environment
diff --git a/grails-core/src/test/groovy/org/grails/core/cfg/MicronautYamlPropertySourceLoaderSpec.groovy b/grails-core/src/test/groovy/org/grails/core/cfg/MicronautYamlPropertySourceLoaderSpec.groovy
index 698fc59f396..c45916529b9 100644
--- a/grails-core/src/test/groovy/org/grails/core/cfg/MicronautYamlPropertySourceLoaderSpec.groovy
+++ b/grails-core/src/test/groovy/org/grails/core/cfg/MicronautYamlPropertySourceLoaderSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.core.cfg
import grails.util.Environment
diff --git a/grails-core/src/test/groovy/org/grails/core/io/ResourceLocatorSpec.groovy b/grails-core/src/test/groovy/org/grails/core/io/ResourceLocatorSpec.groovy
index e835cdad804..b319642666d 100644
--- a/grails-core/src/test/groovy/org/grails/core/io/ResourceLocatorSpec.groovy
+++ b/grails-core/src/test/groovy/org/grails/core/io/ResourceLocatorSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.core.io
import grails.core.DefaultGrailsApplication
diff --git a/grails-core/src/test/groovy/org/grails/core/support/internal/tools/ClassRelativeClassLoaderSpec.groovy b/grails-core/src/test/groovy/org/grails/core/support/internal/tools/ClassRelativeClassLoaderSpec.groovy
index 81ba30b616d..98a6693fa4b 100644
--- a/grails-core/src/test/groovy/org/grails/core/support/internal/tools/ClassRelativeClassLoaderSpec.groovy
+++ b/grails-core/src/test/groovy/org/grails/core/support/internal/tools/ClassRelativeClassLoaderSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.core.support.internal.tools
import spock.lang.Specification
diff --git a/grails-core/src/test/groovy/org/grails/exception/reporting/StackTraceFiltererSpec.groovy b/grails-core/src/test/groovy/org/grails/exception/reporting/StackTraceFiltererSpec.groovy
index 114c2bba810..0025aa843b0 100644
--- a/grails-core/src/test/groovy/org/grails/exception/reporting/StackTraceFiltererSpec.groovy
+++ b/grails-core/src/test/groovy/org/grails/exception/reporting/StackTraceFiltererSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.exception.reporting
import org.grails.exceptions.reporting.DefaultStackTraceFilterer
diff --git a/grails-core/src/test/groovy/org/grails/exception/reporting/StackTracePrinterSpec.groovy b/grails-core/src/test/groovy/org/grails/exception/reporting/StackTracePrinterSpec.groovy
index f69120a4bc4..73844903962 100644
--- a/grails-core/src/test/groovy/org/grails/exception/reporting/StackTracePrinterSpec.groovy
+++ b/grails-core/src/test/groovy/org/grails/exception/reporting/StackTracePrinterSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.exception.reporting
import org.grails.core.exceptions.DefaultErrorsPrinter
diff --git a/grails-core/src/test/groovy/org/grails/plugins/BinaryPluginSpec.groovy b/grails-core/src/test/groovy/org/grails/plugins/BinaryPluginSpec.groovy
index 545205fae76..91916173b1c 100644
--- a/grails-core/src/test/groovy/org/grails/plugins/BinaryPluginSpec.groovy
+++ b/grails-core/src/test/groovy/org/grails/plugins/BinaryPluginSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins
import grails.core.DefaultGrailsApplication
diff --git a/grails-core/src/test/groovy/org/grails/plugins/ConfigBindingExampleConfiguration.java b/grails-core/src/test/groovy/org/grails/plugins/ConfigBindingExampleConfiguration.java
index a1d58c4a823..c0d3bb9b085 100644
--- a/grails-core/src/test/groovy/org/grails/plugins/ConfigBindingExampleConfiguration.java
+++ b/grails-core/src/test/groovy/org/grails/plugins/ConfigBindingExampleConfiguration.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins;
import org.springframework.context.annotation.Configuration;
diff --git a/grails-core/src/test/groovy/org/grails/plugins/ConfigBindingExampleProperties.java b/grails-core/src/test/groovy/org/grails/plugins/ConfigBindingExampleProperties.java
index 3c1cd1d35d8..f584c33e24d 100644
--- a/grails-core/src/test/groovy/org/grails/plugins/ConfigBindingExampleProperties.java
+++ b/grails-core/src/test/groovy/org/grails/plugins/ConfigBindingExampleProperties.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins;
import io.micronaut.context.annotation.ConfigurationProperties;
diff --git a/grails-core/src/test/groovy/org/grails/plugins/GrailsPluginConfigurationClass.groovy b/grails-core/src/test/groovy/org/grails/plugins/GrailsPluginConfigurationClass.groovy
index 6f413170fce..8d7facf8b19 100644
--- a/grails-core/src/test/groovy/org/grails/plugins/GrailsPluginConfigurationClass.groovy
+++ b/grails-core/src/test/groovy/org/grails/plugins/GrailsPluginConfigurationClass.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins
import grails.boot.config.GrailsAutoConfiguration
diff --git a/grails-core/src/test/groovy/org/grails/plugins/GrailsPluginTests.groovy b/grails-core/src/test/groovy/org/grails/plugins/GrailsPluginTests.groovy
index 82f12dad1c3..e97372e6ed3 100644
--- a/grails-core/src/test/groovy/org/grails/plugins/GrailsPluginTests.groovy
+++ b/grails-core/src/test/groovy/org/grails/plugins/GrailsPluginTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins
import grails.core.DefaultGrailsApplication
diff --git a/grails-core/src/test/groovy/org/grails/plugins/PluginGroovyPropertySourceLoaderSpec.groovy b/grails-core/src/test/groovy/org/grails/plugins/PluginGroovyPropertySourceLoaderSpec.groovy
index 0f099f5870b..601b5002091 100644
--- a/grails-core/src/test/groovy/org/grails/plugins/PluginGroovyPropertySourceLoaderSpec.groovy
+++ b/grails-core/src/test/groovy/org/grails/plugins/PluginGroovyPropertySourceLoaderSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins
import grails.boot.GrailsApp
diff --git a/grails-core/src/test/groovy/org/grails/plugins/PluginYamlPropertySourceLoaderSpec.groovy b/grails-core/src/test/groovy/org/grails/plugins/PluginYamlPropertySourceLoaderSpec.groovy
index 32cb279d87e..5ffe1b76550 100644
--- a/grails-core/src/test/groovy/org/grails/plugins/PluginYamlPropertySourceLoaderSpec.groovy
+++ b/grails-core/src/test/groovy/org/grails/plugins/PluginYamlPropertySourceLoaderSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins
import grails.boot.GrailsApp
diff --git a/grails-core/src/test/groovy/org/grails/plugins/support/WatchPatternParserSpec.groovy b/grails-core/src/test/groovy/org/grails/plugins/support/WatchPatternParserSpec.groovy
index 657e79e4c54..6383af28480 100644
--- a/grails-core/src/test/groovy/org/grails/plugins/support/WatchPatternParserSpec.groovy
+++ b/grails-core/src/test/groovy/org/grails/plugins/support/WatchPatternParserSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins.support
import org.grails.plugins.support.WatchPatternParser
diff --git a/grails-core/src/test/groovy/org/grails/spring/context/ApplicationContextExtensionSpec.groovy b/grails-core/src/test/groovy/org/grails/spring/context/ApplicationContextExtensionSpec.groovy
index 0d7ff77269c..399d37b991a 100644
--- a/grails-core/src/test/groovy/org/grails/spring/context/ApplicationContextExtensionSpec.groovy
+++ b/grails-core/src/test/groovy/org/grails/spring/context/ApplicationContextExtensionSpec.groovy
@@ -1,10 +1,5 @@
-package org.grails.spring.context
-
-import org.springframework.context.support.GenericApplicationContext
-import spock.lang.Specification
-
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,6 +13,10 @@ import spock.lang.Specification
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+package org.grails.spring.context
+
+import org.springframework.context.support.GenericApplicationContext
+import spock.lang.Specification
/**
* @author graemerocher
diff --git a/grails-core/src/test/groovy/org/grails/spring/context/ResourceBundleMessageSourceSpec.groovy b/grails-core/src/test/groovy/org/grails/spring/context/ResourceBundleMessageSourceSpec.groovy
index 3614f9da33b..730f73e6ded 100644
--- a/grails-core/src/test/groovy/org/grails/spring/context/ResourceBundleMessageSourceSpec.groovy
+++ b/grails-core/src/test/groovy/org/grails/spring/context/ResourceBundleMessageSourceSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.spring.context
import org.grails.spring.context.support.ReloadableResourceBundleMessageSource
diff --git a/grails-core/src/test/groovy/org/grails/transaction/ChainedTransactionManagerPostProcessorSpec.groovy b/grails-core/src/test/groovy/org/grails/transaction/ChainedTransactionManagerPostProcessorSpec.groovy
index 5e919cac54f..f6f10d4847a 100644
--- a/grails-core/src/test/groovy/org/grails/transaction/ChainedTransactionManagerPostProcessorSpec.groovy
+++ b/grails-core/src/test/groovy/org/grails/transaction/ChainedTransactionManagerPostProcessorSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.transaction
import grails.spring.BeanBuilder
diff --git a/grails-core/src/test/groovy/org/grails/transaction/ChainedTransactionManagerTests.java b/grails-core/src/test/groovy/org/grails/transaction/ChainedTransactionManagerTests.java
index d487adc9a1f..86544f2e91d 100644
--- a/grails-core/src/test/groovy/org/grails/transaction/ChainedTransactionManagerTests.java
+++ b/grails-core/src/test/groovy/org/grails/transaction/ChainedTransactionManagerTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011-2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-core/src/test/groovy/org/grails/util/TypeConvertingMapTests.groovy b/grails-core/src/test/groovy/org/grails/util/TypeConvertingMapTests.groovy
index 15354984081..6a88f39f9fd 100644
--- a/grails-core/src/test/groovy/org/grails/util/TypeConvertingMapTests.groovy
+++ b/grails-core/src/test/groovy/org/grails/util/TypeConvertingMapTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.util
import grails.util.TypeConvertingMap
diff --git a/grails-databinding/src/main/groovy/grails/databinding/BindInitializer.java b/grails-databinding/src/main/groovy/grails/databinding/BindInitializer.java
index f40a28bb200..907b9832ff1 100644
--- a/grails-databinding/src/main/groovy/grails/databinding/BindInitializer.java
+++ b/grails-databinding/src/main/groovy/grails/databinding/BindInitializer.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/main/groovy/grails/databinding/BindUsing.java b/grails-databinding/src/main/groovy/grails/databinding/BindUsing.java
index 18c4a3f59a7..c91068a6e85 100755
--- a/grails-databinding/src/main/groovy/grails/databinding/BindUsing.java
+++ b/grails-databinding/src/main/groovy/grails/databinding/BindUsing.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/main/groovy/grails/databinding/BindingFormat.java b/grails-databinding/src/main/groovy/grails/databinding/BindingFormat.java
index 3abaed17702..783d09de011 100644
--- a/grails-databinding/src/main/groovy/grails/databinding/BindingFormat.java
+++ b/grails-databinding/src/main/groovy/grails/databinding/BindingFormat.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/main/groovy/grails/databinding/BindingHelper.java b/grails-databinding/src/main/groovy/grails/databinding/BindingHelper.java
index 07cbaee9dc6..83b0f9639f6 100755
--- a/grails-databinding/src/main/groovy/grails/databinding/BindingHelper.java
+++ b/grails-databinding/src/main/groovy/grails/databinding/BindingHelper.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/main/groovy/grails/databinding/CollectionDataBindingSource.java b/grails-databinding/src/main/groovy/grails/databinding/CollectionDataBindingSource.java
index 965efc7fd08..8b35dcb39be 100644
--- a/grails-databinding/src/main/groovy/grails/databinding/CollectionDataBindingSource.java
+++ b/grails-databinding/src/main/groovy/grails/databinding/CollectionDataBindingSource.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/main/groovy/grails/databinding/DataBinder.java b/grails-databinding/src/main/groovy/grails/databinding/DataBinder.java
index 21d274dadbd..da149d83502 100644
--- a/grails-databinding/src/main/groovy/grails/databinding/DataBinder.java
+++ b/grails-databinding/src/main/groovy/grails/databinding/DataBinder.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/main/groovy/grails/databinding/DataBindingSource.java b/grails-databinding/src/main/groovy/grails/databinding/DataBindingSource.java
index af608f5c44b..de4fc494aea 100644
--- a/grails-databinding/src/main/groovy/grails/databinding/DataBindingSource.java
+++ b/grails-databinding/src/main/groovy/grails/databinding/DataBindingSource.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/main/groovy/grails/databinding/SimpleDataBinder.groovy b/grails-databinding/src/main/groovy/grails/databinding/SimpleDataBinder.groovy
index bf4c58f4cfa..70a7edf91af 100755
--- a/grails-databinding/src/main/groovy/grails/databinding/SimpleDataBinder.groovy
+++ b/grails-databinding/src/main/groovy/grails/databinding/SimpleDataBinder.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/main/groovy/grails/databinding/SimpleMapDataBindingSource.groovy b/grails-databinding/src/main/groovy/grails/databinding/SimpleMapDataBindingSource.groovy
index 8d023676113..ba5517a194b 100644
--- a/grails-databinding/src/main/groovy/grails/databinding/SimpleMapDataBindingSource.groovy
+++ b/grails-databinding/src/main/groovy/grails/databinding/SimpleMapDataBindingSource.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/main/groovy/grails/databinding/StructuredBindingEditor.java b/grails-databinding/src/main/groovy/grails/databinding/StructuredBindingEditor.java
index 612f3b335a8..1dd09b71e40 100644
--- a/grails-databinding/src/main/groovy/grails/databinding/StructuredBindingEditor.java
+++ b/grails-databinding/src/main/groovy/grails/databinding/StructuredBindingEditor.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/main/groovy/grails/databinding/TypedStructuredBindingEditor.java b/grails-databinding/src/main/groovy/grails/databinding/TypedStructuredBindingEditor.java
index 6ff99bcbfc2..a55f492c7d6 100644
--- a/grails-databinding/src/main/groovy/grails/databinding/TypedStructuredBindingEditor.java
+++ b/grails-databinding/src/main/groovy/grails/databinding/TypedStructuredBindingEditor.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/main/groovy/grails/databinding/converters/FormattedValueConverter.java b/grails-databinding/src/main/groovy/grails/databinding/converters/FormattedValueConverter.java
index 70f85cee805..ab3f5b1d0e7 100644
--- a/grails-databinding/src/main/groovy/grails/databinding/converters/FormattedValueConverter.java
+++ b/grails-databinding/src/main/groovy/grails/databinding/converters/FormattedValueConverter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/main/groovy/grails/databinding/converters/ValueConverter.java b/grails-databinding/src/main/groovy/grails/databinding/converters/ValueConverter.java
index 4330fdf3694..f1f9bb7e45e 100755
--- a/grails-databinding/src/main/groovy/grails/databinding/converters/ValueConverter.java
+++ b/grails-databinding/src/main/groovy/grails/databinding/converters/ValueConverter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/main/groovy/grails/databinding/errors/BindingError.java b/grails-databinding/src/main/groovy/grails/databinding/errors/BindingError.java
index b6db4ec1492..daaf60a4d65 100755
--- a/grails-databinding/src/main/groovy/grails/databinding/errors/BindingError.java
+++ b/grails-databinding/src/main/groovy/grails/databinding/errors/BindingError.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/main/groovy/grails/databinding/events/DataBindingListener.java b/grails-databinding/src/main/groovy/grails/databinding/events/DataBindingListener.java
index bfdce65bc5f..68c7247c023 100755
--- a/grails-databinding/src/main/groovy/grails/databinding/events/DataBindingListener.java
+++ b/grails-databinding/src/main/groovy/grails/databinding/events/DataBindingListener.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/main/groovy/grails/databinding/events/DataBindingListenerAdapter.java b/grails-databinding/src/main/groovy/grails/databinding/events/DataBindingListenerAdapter.java
index aa9ece77632..b1a017f3f97 100755
--- a/grails-databinding/src/main/groovy/grails/databinding/events/DataBindingListenerAdapter.java
+++ b/grails-databinding/src/main/groovy/grails/databinding/events/DataBindingListenerAdapter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/main/groovy/grails/databinding/initializers/ValueInitializer.java b/grails-databinding/src/main/groovy/grails/databinding/initializers/ValueInitializer.java
index 1ae07ed6c35..fa1711cb946 100644
--- a/grails-databinding/src/main/groovy/grails/databinding/initializers/ValueInitializer.java
+++ b/grails-databinding/src/main/groovy/grails/databinding/initializers/ValueInitializer.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.databinding.initializers;
diff --git a/grails-databinding/src/main/groovy/org/grails/databinding/ClosureValueConverter.groovy b/grails-databinding/src/main/groovy/org/grails/databinding/ClosureValueConverter.groovy
index 3890b0e0425..b64196c9ce8 100755
--- a/grails-databinding/src/main/groovy/org/grails/databinding/ClosureValueConverter.groovy
+++ b/grails-databinding/src/main/groovy/org/grails/databinding/ClosureValueConverter.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/main/groovy/org/grails/databinding/ClosureValueInitializer.groovy b/grails-databinding/src/main/groovy/org/grails/databinding/ClosureValueInitializer.groovy
index b2adae26da6..4955ba15119 100644
--- a/grails-databinding/src/main/groovy/org/grails/databinding/ClosureValueInitializer.groovy
+++ b/grails-databinding/src/main/groovy/org/grails/databinding/ClosureValueInitializer.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.databinding
import grails.databinding.initializers.ValueInitializer
diff --git a/grails-databinding/src/main/groovy/org/grails/databinding/IndexedPropertyReferenceDescriptor.groovy b/grails-databinding/src/main/groovy/org/grails/databinding/IndexedPropertyReferenceDescriptor.groovy
index da8d2e97698..e6152b4400b 100644
--- a/grails-databinding/src/main/groovy/org/grails/databinding/IndexedPropertyReferenceDescriptor.groovy
+++ b/grails-databinding/src/main/groovy/org/grails/databinding/IndexedPropertyReferenceDescriptor.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/main/groovy/org/grails/databinding/compiler/BindingFormatASTTransformation.java b/grails-databinding/src/main/groovy/org/grails/databinding/compiler/BindingFormatASTTransformation.java
index 9a1a12fda93..beb1d8bfe9c 100644
--- a/grails-databinding/src/main/groovy/org/grails/databinding/compiler/BindingFormatASTTransformation.java
+++ b/grails-databinding/src/main/groovy/org/grails/databinding/compiler/BindingFormatASTTransformation.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.databinding.compiler;
import java.util.Map;
diff --git a/grails-databinding/src/main/groovy/org/grails/databinding/converters/AbstractStructuredDateBindingEditor.groovy b/grails-databinding/src/main/groovy/org/grails/databinding/converters/AbstractStructuredDateBindingEditor.groovy
index 7a6a6893670..72af6aebdc7 100644
--- a/grails-databinding/src/main/groovy/org/grails/databinding/converters/AbstractStructuredDateBindingEditor.groovy
+++ b/grails-databinding/src/main/groovy/org/grails/databinding/converters/AbstractStructuredDateBindingEditor.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-databinding/src/main/groovy/org/grails/databinding/converters/ConversionService.java b/grails-databinding/src/main/groovy/org/grails/databinding/converters/ConversionService.java
index 6f4ac60ee01..dc7c6767edf 100644
--- a/grails-databinding/src/main/groovy/org/grails/databinding/converters/ConversionService.java
+++ b/grails-databinding/src/main/groovy/org/grails/databinding/converters/ConversionService.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/main/groovy/org/grails/databinding/converters/CurrencyValueConverter.groovy b/grails-databinding/src/main/groovy/org/grails/databinding/converters/CurrencyValueConverter.groovy
index 12dc696c496..c79c859eca1 100644
--- a/grails-databinding/src/main/groovy/org/grails/databinding/converters/CurrencyValueConverter.groovy
+++ b/grails-databinding/src/main/groovy/org/grails/databinding/converters/CurrencyValueConverter.groovy
@@ -1,4 +1,5 @@
-/* Copyright 2014 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/main/groovy/org/grails/databinding/converters/DateConversionHelper.groovy b/grails-databinding/src/main/groovy/org/grails/databinding/converters/DateConversionHelper.groovy
index 3a48494ddae..c57bd2d8b16 100644
--- a/grails-databinding/src/main/groovy/org/grails/databinding/converters/DateConversionHelper.groovy
+++ b/grails-databinding/src/main/groovy/org/grails/databinding/converters/DateConversionHelper.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/main/groovy/org/grails/databinding/converters/FormattedDateValueConverter.groovy b/grails-databinding/src/main/groovy/org/grails/databinding/converters/FormattedDateValueConverter.groovy
index 019a2493a18..2677e646305 100644
--- a/grails-databinding/src/main/groovy/org/grails/databinding/converters/FormattedDateValueConverter.groovy
+++ b/grails-databinding/src/main/groovy/org/grails/databinding/converters/FormattedDateValueConverter.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/main/groovy/org/grails/databinding/converters/FormattedLocalDateTimeValueConverter.groovy b/grails-databinding/src/main/groovy/org/grails/databinding/converters/FormattedLocalDateTimeValueConverter.groovy
index bffb5ecec2e..223eb608a7c 100644
--- a/grails-databinding/src/main/groovy/org/grails/databinding/converters/FormattedLocalDateTimeValueConverter.groovy
+++ b/grails-databinding/src/main/groovy/org/grails/databinding/converters/FormattedLocalDateTimeValueConverter.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/main/groovy/org/grails/databinding/converters/LocalDateTimeConverter.groovy b/grails-databinding/src/main/groovy/org/grails/databinding/converters/LocalDateTimeConverter.groovy
index 4548362aee6..7f5ad0834af 100644
--- a/grails-databinding/src/main/groovy/org/grails/databinding/converters/LocalDateTimeConverter.groovy
+++ b/grails-databinding/src/main/groovy/org/grails/databinding/converters/LocalDateTimeConverter.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/main/groovy/org/grails/databinding/converters/StructuredCalendarBindingEditor.groovy b/grails-databinding/src/main/groovy/org/grails/databinding/converters/StructuredCalendarBindingEditor.groovy
index 43f48214cef..e983aa22022 100644
--- a/grails-databinding/src/main/groovy/org/grails/databinding/converters/StructuredCalendarBindingEditor.groovy
+++ b/grails-databinding/src/main/groovy/org/grails/databinding/converters/StructuredCalendarBindingEditor.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/main/groovy/org/grails/databinding/converters/StructuredDateBindingEditor.groovy b/grails-databinding/src/main/groovy/org/grails/databinding/converters/StructuredDateBindingEditor.groovy
index b0388a8a053..5d76077a13b 100644
--- a/grails-databinding/src/main/groovy/org/grails/databinding/converters/StructuredDateBindingEditor.groovy
+++ b/grails-databinding/src/main/groovy/org/grails/databinding/converters/StructuredDateBindingEditor.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/main/groovy/org/grails/databinding/converters/StructuredSqlDateBindingEditor.groovy b/grails-databinding/src/main/groovy/org/grails/databinding/converters/StructuredSqlDateBindingEditor.groovy
index fda54d1873f..e310f3d6be8 100644
--- a/grails-databinding/src/main/groovy/org/grails/databinding/converters/StructuredSqlDateBindingEditor.groovy
+++ b/grails-databinding/src/main/groovy/org/grails/databinding/converters/StructuredSqlDateBindingEditor.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/main/groovy/org/grails/databinding/converters/TimeZoneConverter.groovy b/grails-databinding/src/main/groovy/org/grails/databinding/converters/TimeZoneConverter.groovy
index 0fafe66250f..e37aa99ee23 100644
--- a/grails-databinding/src/main/groovy/org/grails/databinding/converters/TimeZoneConverter.groovy
+++ b/grails-databinding/src/main/groovy/org/grails/databinding/converters/TimeZoneConverter.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/main/groovy/org/grails/databinding/converters/UUIDConverter.groovy b/grails-databinding/src/main/groovy/org/grails/databinding/converters/UUIDConverter.groovy
index c40920d14f8..238a7eacbe0 100644
--- a/grails-databinding/src/main/groovy/org/grails/databinding/converters/UUIDConverter.groovy
+++ b/grails-databinding/src/main/groovy/org/grails/databinding/converters/UUIDConverter.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2018 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/main/groovy/org/grails/databinding/errors/SimpleBindingError.java b/grails-databinding/src/main/groovy/org/grails/databinding/errors/SimpleBindingError.java
index 29931564648..fca8fe9ceca 100755
--- a/grails-databinding/src/main/groovy/org/grails/databinding/errors/SimpleBindingError.java
+++ b/grails-databinding/src/main/groovy/org/grails/databinding/errors/SimpleBindingError.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/main/groovy/org/grails/databinding/xml/GPathResultCollectionDataBindingSource.groovy b/grails-databinding/src/main/groovy/org/grails/databinding/xml/GPathResultCollectionDataBindingSource.groovy
index af021abf3ac..b45b4202eb2 100644
--- a/grails-databinding/src/main/groovy/org/grails/databinding/xml/GPathResultCollectionDataBindingSource.groovy
+++ b/grails-databinding/src/main/groovy/org/grails/databinding/xml/GPathResultCollectionDataBindingSource.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/main/groovy/org/grails/databinding/xml/GPathResultMap.groovy b/grails-databinding/src/main/groovy/org/grails/databinding/xml/GPathResultMap.groovy
index cee3a6716da..e5ac01a4166 100755
--- a/grails-databinding/src/main/groovy/org/grails/databinding/xml/GPathResultMap.groovy
+++ b/grails-databinding/src/main/groovy/org/grails/databinding/xml/GPathResultMap.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/test/groovy/grails/databinding/BindInitializerSpec.groovy b/grails-databinding/src/test/groovy/grails/databinding/BindInitializerSpec.groovy
index 02965501c85..b66e1ece603 100644
--- a/grails-databinding/src/test/groovy/grails/databinding/BindInitializerSpec.groovy
+++ b/grails-databinding/src/test/groovy/grails/databinding/BindInitializerSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.databinding
import spock.lang.Specification
diff --git a/grails-databinding/src/test/groovy/grails/databinding/BindUsingSpec.groovy b/grails-databinding/src/test/groovy/grails/databinding/BindUsingSpec.groovy
index 516bc057394..5c60f066daa 100755
--- a/grails-databinding/src/test/groovy/grails/databinding/BindUsingSpec.groovy
+++ b/grails-databinding/src/test/groovy/grails/databinding/BindUsingSpec.groovy
@@ -1,4 +1,5 @@
-/* Copyright 2013 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/test/groovy/grails/databinding/BindingErrorSpec.groovy b/grails-databinding/src/test/groovy/grails/databinding/BindingErrorSpec.groovy
index 6d5d3ef72ff..1618388b757 100755
--- a/grails-databinding/src/test/groovy/grails/databinding/BindingErrorSpec.groovy
+++ b/grails-databinding/src/test/groovy/grails/databinding/BindingErrorSpec.groovy
@@ -1,4 +1,5 @@
-/* Copyright 2013 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/test/groovy/grails/databinding/BindingFormatSpec.groovy b/grails-databinding/src/test/groovy/grails/databinding/BindingFormatSpec.groovy
index b5ff7e57251..88a3f85f41d 100644
--- a/grails-databinding/src/test/groovy/grails/databinding/BindingFormatSpec.groovy
+++ b/grails-databinding/src/test/groovy/grails/databinding/BindingFormatSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.databinding
import grails.databinding.errors.BindingError
diff --git a/grails-databinding/src/test/groovy/grails/databinding/BindingListenerSpec.groovy b/grails-databinding/src/test/groovy/grails/databinding/BindingListenerSpec.groovy
index 88a3645aecb..fd3e16d837f 100755
--- a/grails-databinding/src/test/groovy/grails/databinding/BindingListenerSpec.groovy
+++ b/grails-databinding/src/test/groovy/grails/databinding/BindingListenerSpec.groovy
@@ -1,4 +1,5 @@
-/* Copyright 2013 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/test/groovy/grails/databinding/CollectionBindingSpec.groovy b/grails-databinding/src/test/groovy/grails/databinding/CollectionBindingSpec.groovy
index 5ac37eef1e3..4fdfdf32803 100755
--- a/grails-databinding/src/test/groovy/grails/databinding/CollectionBindingSpec.groovy
+++ b/grails-databinding/src/test/groovy/grails/databinding/CollectionBindingSpec.groovy
@@ -1,4 +1,5 @@
-/* Copyright 2013 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/test/groovy/grails/databinding/CustomTypeConverterSpec.groovy b/grails-databinding/src/test/groovy/grails/databinding/CustomTypeConverterSpec.groovy
index 1429a1df475..9c09dd77d2a 100755
--- a/grails-databinding/src/test/groovy/grails/databinding/CustomTypeConverterSpec.groovy
+++ b/grails-databinding/src/test/groovy/grails/databinding/CustomTypeConverterSpec.groovy
@@ -1,4 +1,5 @@
-/* Copyright 2013 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/test/groovy/grails/databinding/IncludeExcludeBindingSpec.groovy b/grails-databinding/src/test/groovy/grails/databinding/IncludeExcludeBindingSpec.groovy
index 342af89dfc0..55c866953ed 100755
--- a/grails-databinding/src/test/groovy/grails/databinding/IncludeExcludeBindingSpec.groovy
+++ b/grails-databinding/src/test/groovy/grails/databinding/IncludeExcludeBindingSpec.groovy
@@ -1,4 +1,5 @@
-/* Copyright 2013 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/test/groovy/grails/databinding/SimpleDataBinderEnumBindingSpec.groovy b/grails-databinding/src/test/groovy/grails/databinding/SimpleDataBinderEnumBindingSpec.groovy
index b4db508f111..f1efc3a207e 100644
--- a/grails-databinding/src/test/groovy/grails/databinding/SimpleDataBinderEnumBindingSpec.groovy
+++ b/grails-databinding/src/test/groovy/grails/databinding/SimpleDataBinderEnumBindingSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.databinding
import grails.databinding.SimpleDataBinder;
diff --git a/grails-databinding/src/test/groovy/grails/databinding/SimpleDataBinderEnumValueConverterSpec.groovy b/grails-databinding/src/test/groovy/grails/databinding/SimpleDataBinderEnumValueConverterSpec.groovy
index 1add29a8fb2..bcefe27d672 100644
--- a/grails-databinding/src/test/groovy/grails/databinding/SimpleDataBinderEnumValueConverterSpec.groovy
+++ b/grails-databinding/src/test/groovy/grails/databinding/SimpleDataBinderEnumValueConverterSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.databinding
import grails.databinding.SimpleDataBinder;
diff --git a/grails-databinding/src/test/groovy/grails/databinding/SimpleDataBinderSpec.groovy b/grails-databinding/src/test/groovy/grails/databinding/SimpleDataBinderSpec.groovy
index 0f18c41e9f3..a937c58339d 100755
--- a/grails-databinding/src/test/groovy/grails/databinding/SimpleDataBinderSpec.groovy
+++ b/grails-databinding/src/test/groovy/grails/databinding/SimpleDataBinderSpec.groovy
@@ -1,4 +1,5 @@
-/* Copyright 2013 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/test/groovy/grails/databinding/XMLBindingSpec.groovy b/grails-databinding/src/test/groovy/grails/databinding/XMLBindingSpec.groovy
index f038b15f988..3c866e9e0ba 100755
--- a/grails-databinding/src/test/groovy/grails/databinding/XMLBindingSpec.groovy
+++ b/grails-databinding/src/test/groovy/grails/databinding/XMLBindingSpec.groovy
@@ -1,4 +1,5 @@
-/* Copyright 2013 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-databinding/src/test/groovy/org/grails/databinding/compiler/BindingFormatCompilationErrorsSpec.groovy b/grails-databinding/src/test/groovy/org/grails/databinding/compiler/BindingFormatCompilationErrorsSpec.groovy
index 79e5febae1f..ee23c312ecb 100644
--- a/grails-databinding/src/test/groovy/org/grails/databinding/compiler/BindingFormatCompilationErrorsSpec.groovy
+++ b/grails-databinding/src/test/groovy/org/grails/databinding/compiler/BindingFormatCompilationErrorsSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.databinding.compiler
import org.codehaus.groovy.control.MultipleCompilationErrorsException
diff --git a/grails-databinding/src/test/groovy/org/grails/databinding/converters/CurrencyConversionSpec.groovy b/grails-databinding/src/test/groovy/org/grails/databinding/converters/CurrencyConversionSpec.groovy
index 28928128050..40691c1959d 100644
--- a/grails-databinding/src/test/groovy/org/grails/databinding/converters/CurrencyConversionSpec.groovy
+++ b/grails-databinding/src/test/groovy/org/grails/databinding/converters/CurrencyConversionSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.databinding.converters
import grails.databinding.SimpleMapDataBindingSource
diff --git a/grails-databinding/src/test/groovy/org/grails/databinding/converters/DateConversionHelperSpec.groovy b/grails-databinding/src/test/groovy/org/grails/databinding/converters/DateConversionHelperSpec.groovy
index 8cc0e3dac45..44ed4f26a39 100644
--- a/grails-databinding/src/test/groovy/org/grails/databinding/converters/DateConversionHelperSpec.groovy
+++ b/grails-databinding/src/test/groovy/org/grails/databinding/converters/DateConversionHelperSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.databinding.converters
import spock.lang.Issue
diff --git a/grails-databinding/src/test/groovy/org/grails/databinding/converters/UUIDConversionSpec.groovy b/grails-databinding/src/test/groovy/org/grails/databinding/converters/UUIDConversionSpec.groovy
index bb0c3d2be71..55bacb966eb 100644
--- a/grails-databinding/src/test/groovy/org/grails/databinding/converters/UUIDConversionSpec.groovy
+++ b/grails-databinding/src/test/groovy/org/grails/databinding/converters/UUIDConversionSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.databinding.converters
diff --git a/grails-databinding/src/test/groovy/org/grails/databinding/xml/GPathCollectionDataBindingSourceSpec.groovy b/grails-databinding/src/test/groovy/org/grails/databinding/xml/GPathCollectionDataBindingSourceSpec.groovy
index cd415375f04..f68553a412c 100644
--- a/grails-databinding/src/test/groovy/org/grails/databinding/xml/GPathCollectionDataBindingSourceSpec.groovy
+++ b/grails-databinding/src/test/groovy/org/grails/databinding/xml/GPathCollectionDataBindingSourceSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.databinding.xml
import grails.databinding.DataBindingSource;
diff --git a/grails-databinding/src/test/groovy/org/grails/databinding/xml/GPathResultMapSpec.groovy b/grails-databinding/src/test/groovy/org/grails/databinding/xml/GPathResultMapSpec.groovy
index 9992a995884..bcfa4b03b81 100755
--- a/grails-databinding/src/test/groovy/org/grails/databinding/xml/GPathResultMapSpec.groovy
+++ b/grails-databinding/src/test/groovy/org/grails/databinding/xml/GPathResultMapSpec.groovy
@@ -1,4 +1,5 @@
-/* Copyright 2013 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-docs/src/main/groovy/grails/doc/DocEngine.groovy b/grails-docs/src/main/groovy/grails/doc/DocEngine.groovy
index 4a2b5ba45f8..08d3f3a4f2a 100644
--- a/grails-docs/src/main/groovy/grails/doc/DocEngine.groovy
+++ b/grails-docs/src/main/groovy/grails/doc/DocEngine.groovy
@@ -1,10 +1,11 @@
-/* Copyright 2004-2005 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-docs/src/main/groovy/grails/doc/DocPublisher.groovy b/grails-docs/src/main/groovy/grails/doc/DocPublisher.groovy
index f67a2c6acf1..1fd51e8a465 100644
--- a/grails-docs/src/main/groovy/grails/doc/DocPublisher.groovy
+++ b/grails-docs/src/main/groovy/grails/doc/DocPublisher.groovy
@@ -1,10 +1,11 @@
-/* Copyright 2004-2005 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
@@ -12,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package grails.doc
import grails.doc.asciidoc.AsciiDocEngine
diff --git a/grails-docs/src/main/groovy/grails/doc/LegacyDocMigrator.groovy b/grails-docs/src/main/groovy/grails/doc/LegacyDocMigrator.groovy
index e4c8e3aa87a..c275792e554 100644
--- a/grails-docs/src/main/groovy/grails/doc/LegacyDocMigrator.groovy
+++ b/grails-docs/src/main/groovy/grails/doc/LegacyDocMigrator.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.doc
import grails.doc.internal.LegacyTocStrategy
diff --git a/grails-docs/src/main/groovy/grails/doc/PdfBuilder.groovy b/grails-docs/src/main/groovy/grails/doc/PdfBuilder.groovy
index 286fe570d78..2384885498e 100644
--- a/grails-docs/src/main/groovy/grails/doc/PdfBuilder.groovy
+++ b/grails-docs/src/main/groovy/grails/doc/PdfBuilder.groovy
@@ -1,10 +1,11 @@
-/* Copyright 2004-2005 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-docs/src/main/groovy/grails/doc/PdfPublisher.groovy b/grails-docs/src/main/groovy/grails/doc/PdfPublisher.groovy
index edd1f978bf8..4d957185dd4 100644
--- a/grails-docs/src/main/groovy/grails/doc/PdfPublisher.groovy
+++ b/grails-docs/src/main/groovy/grails/doc/PdfPublisher.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.doc
import groovy.transform.CompileStatic
diff --git a/grails-docs/src/main/groovy/grails/doc/ant/DocPublisherTask.groovy b/grails-docs/src/main/groovy/grails/doc/ant/DocPublisherTask.groovy
index 72be8fd31c7..a6798fcea1d 100644
--- a/grails-docs/src/main/groovy/grails/doc/ant/DocPublisherTask.groovy
+++ b/grails-docs/src/main/groovy/grails/doc/ant/DocPublisherTask.groovy
@@ -1,10 +1,11 @@
-/* Copyright 2004-2005 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-docs/src/main/groovy/grails/doc/asciidoc/AsciiDocEngine.groovy b/grails-docs/src/main/groovy/grails/doc/asciidoc/AsciiDocEngine.groovy
index 7b3c4d79583..fa4618569bb 100644
--- a/grails-docs/src/main/groovy/grails/doc/asciidoc/AsciiDocEngine.groovy
+++ b/grails-docs/src/main/groovy/grails/doc/asciidoc/AsciiDocEngine.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.doc.asciidoc
import grails.doc.DocEngine
diff --git a/grails-docs/src/main/groovy/grails/doc/dropdown/CreateReleaseDropDownTask.groovy b/grails-docs/src/main/groovy/grails/doc/dropdown/CreateReleaseDropDownTask.groovy
index 917c2bc74b0..31f4e951bfa 100644
--- a/grails-docs/src/main/groovy/grails/doc/dropdown/CreateReleaseDropDownTask.groovy
+++ b/grails-docs/src/main/groovy/grails/doc/dropdown/CreateReleaseDropDownTask.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.doc.dropdown
import groovy.json.JsonSlurper
diff --git a/grails-docs/src/main/groovy/grails/doc/dropdown/Snapshot.groovy b/grails-docs/src/main/groovy/grails/doc/dropdown/Snapshot.groovy
index ad225665da2..16bb3d1c439 100644
--- a/grails-docs/src/main/groovy/grails/doc/dropdown/Snapshot.groovy
+++ b/grails-docs/src/main/groovy/grails/doc/dropdown/Snapshot.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.doc.dropdown
diff --git a/grails-docs/src/main/groovy/grails/doc/dropdown/SoftwareVersion.groovy b/grails-docs/src/main/groovy/grails/doc/dropdown/SoftwareVersion.groovy
index 044b7d4acfb..d020ff1001c 100644
--- a/grails-docs/src/main/groovy/grails/doc/dropdown/SoftwareVersion.groovy
+++ b/grails-docs/src/main/groovy/grails/doc/dropdown/SoftwareVersion.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.doc.dropdown
class SoftwareVersion implements Comparable {
diff --git a/grails-docs/src/main/groovy/grails/doc/filters/HeaderFilter.groovy b/grails-docs/src/main/groovy/grails/doc/filters/HeaderFilter.groovy
index adf09d0ded9..41c7bd73f69 100644
--- a/grails-docs/src/main/groovy/grails/doc/filters/HeaderFilter.groovy
+++ b/grails-docs/src/main/groovy/grails/doc/filters/HeaderFilter.groovy
@@ -1,10 +1,11 @@
-/* Copyright 2004-2005 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-docs/src/main/groovy/grails/doc/filters/LinkTestFilter.groovy b/grails-docs/src/main/groovy/grails/doc/filters/LinkTestFilter.groovy
index ec994b0f7d0..32b3cfb1a35 100644
--- a/grails-docs/src/main/groovy/grails/doc/filters/LinkTestFilter.groovy
+++ b/grails-docs/src/main/groovy/grails/doc/filters/LinkTestFilter.groovy
@@ -1,10 +1,11 @@
-/* Copyright 2004-2005 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-docs/src/main/groovy/grails/doc/filters/ListFilter.groovy b/grails-docs/src/main/groovy/grails/doc/filters/ListFilter.groovy
index b674d442723..c33d648855d 100644
--- a/grails-docs/src/main/groovy/grails/doc/filters/ListFilter.groovy
+++ b/grails-docs/src/main/groovy/grails/doc/filters/ListFilter.groovy
@@ -1,10 +1,11 @@
-/* Copyright 2004-2005 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-docs/src/main/groovy/grails/doc/gradle/MigrateLegacyDocs.groovy b/grails-docs/src/main/groovy/grails/doc/gradle/MigrateLegacyDocs.groovy
index fad36140fc0..6104c9f8dda 100644
--- a/grails-docs/src/main/groovy/grails/doc/gradle/MigrateLegacyDocs.groovy
+++ b/grails-docs/src/main/groovy/grails/doc/gradle/MigrateLegacyDocs.groovy
@@ -1,10 +1,11 @@
-/* Copyright 2004-2005 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-docs/src/main/groovy/grails/doc/gradle/PublishGuide.groovy b/grails-docs/src/main/groovy/grails/doc/gradle/PublishGuide.groovy
index 312a94e2ebc..0a1e79432e3 100644
--- a/grails-docs/src/main/groovy/grails/doc/gradle/PublishGuide.groovy
+++ b/grails-docs/src/main/groovy/grails/doc/gradle/PublishGuide.groovy
@@ -1,10 +1,11 @@
-/* Copyright 2004-2005 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-docs/src/main/groovy/grails/doc/gradle/PublishPdf.groovy b/grails-docs/src/main/groovy/grails/doc/gradle/PublishPdf.groovy
index bca397f6e31..f78173058a8 100644
--- a/grails-docs/src/main/groovy/grails/doc/gradle/PublishPdf.groovy
+++ b/grails-docs/src/main/groovy/grails/doc/gradle/PublishPdf.groovy
@@ -1,10 +1,11 @@
-/* Copyright 2004-2005 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-docs/src/main/groovy/grails/doc/internal/FileResourceChecker.groovy b/grails-docs/src/main/groovy/grails/doc/internal/FileResourceChecker.groovy
index 1c7ae269411..7362d2b7e41 100644
--- a/grails-docs/src/main/groovy/grails/doc/internal/FileResourceChecker.groovy
+++ b/grails-docs/src/main/groovy/grails/doc/internal/FileResourceChecker.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.doc.internal
/**
diff --git a/grails-docs/src/main/groovy/grails/doc/internal/LegacyTocStrategy.groovy b/grails-docs/src/main/groovy/grails/doc/internal/LegacyTocStrategy.groovy
index 88607a34004..c3717f8d137 100644
--- a/grails-docs/src/main/groovy/grails/doc/internal/LegacyTocStrategy.groovy
+++ b/grails-docs/src/main/groovy/grails/doc/internal/LegacyTocStrategy.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.doc.internal
class LegacyTocStrategy {
diff --git a/grails-docs/src/main/groovy/grails/doc/internal/StringEscapeCategory.java b/grails-docs/src/main/groovy/grails/doc/internal/StringEscapeCategory.java
index 486a574429d..20e8a873a2d 100644
--- a/grails-docs/src/main/groovy/grails/doc/internal/StringEscapeCategory.java
+++ b/grails-docs/src/main/groovy/grails/doc/internal/StringEscapeCategory.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.doc.internal;
import java.net.URI;
diff --git a/grails-docs/src/main/groovy/grails/doc/internal/UserGuideNode.groovy b/grails-docs/src/main/groovy/grails/doc/internal/UserGuideNode.groovy
index d8ec434aaa3..bd7d4fc2a92 100644
--- a/grails-docs/src/main/groovy/grails/doc/internal/UserGuideNode.groovy
+++ b/grails-docs/src/main/groovy/grails/doc/internal/UserGuideNode.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.doc.internal
import groovy.transform.ToString
diff --git a/grails-docs/src/main/groovy/grails/doc/internal/YamlTocStrategy.groovy b/grails-docs/src/main/groovy/grails/doc/internal/YamlTocStrategy.groovy
index 07689b58c4c..11a9f877f2b 100644
--- a/grails-docs/src/main/groovy/grails/doc/internal/YamlTocStrategy.groovy
+++ b/grails-docs/src/main/groovy/grails/doc/internal/YamlTocStrategy.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.doc.internal
import org.yaml.snakeyaml.LoaderOptions
diff --git a/grails-docs/src/main/groovy/grails/doc/macros/GspTagSourceMacro.groovy b/grails-docs/src/main/groovy/grails/doc/macros/GspTagSourceMacro.groovy
index b1ee11195ea..ce50880d1b7 100644
--- a/grails-docs/src/main/groovy/grails/doc/macros/GspTagSourceMacro.groovy
+++ b/grails-docs/src/main/groovy/grails/doc/macros/GspTagSourceMacro.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2004-2015 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-docs/src/main/groovy/grails/doc/macros/HiddenMacro.groovy b/grails-docs/src/main/groovy/grails/doc/macros/HiddenMacro.groovy
index fbb72f8ca19..f0cc56b147d 100644
--- a/grails-docs/src/main/groovy/grails/doc/macros/HiddenMacro.groovy
+++ b/grails-docs/src/main/groovy/grails/doc/macros/HiddenMacro.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.doc.macros
import org.gradle.api.tasks.Input
diff --git a/grails-docs/src/test/groovy/grails/doc/PdfBuilderSpec.groovy b/grails-docs/src/test/groovy/grails/doc/PdfBuilderSpec.groovy
index cf0299bde7a..1c976ac35b2 100644
--- a/grails-docs/src/test/groovy/grails/doc/PdfBuilderSpec.groovy
+++ b/grails-docs/src/test/groovy/grails/doc/PdfBuilderSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.doc
import spock.lang.Specification
diff --git a/grails-docs/src/test/groovy/grails/doc/PdfPublisherSpec.groovy b/grails-docs/src/test/groovy/grails/doc/PdfPublisherSpec.groovy
index 407f2067971..a3f473fc6ae 100644
--- a/grails-docs/src/test/groovy/grails/doc/PdfPublisherSpec.groovy
+++ b/grails-docs/src/test/groovy/grails/doc/PdfPublisherSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.doc
import spock.lang.Specification
diff --git a/grails-docs/src/test/groovy/grails/doc/dropdown/SoftwareVersionSpec.groovy b/grails-docs/src/test/groovy/grails/doc/dropdown/SoftwareVersionSpec.groovy
index b3d5b231911..2f621bbbaf7 100644
--- a/grails-docs/src/test/groovy/grails/doc/dropdown/SoftwareVersionSpec.groovy
+++ b/grails-docs/src/test/groovy/grails/doc/dropdown/SoftwareVersionSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.doc.dropdown
import spock.lang.Specification
diff --git a/grails-docs/src/test/groovy/grails/doc/internal/LegacyTocStrategySpec.groovy b/grails-docs/src/test/groovy/grails/doc/internal/LegacyTocStrategySpec.groovy
index 23a7f45597b..d7fb659800d 100644
--- a/grails-docs/src/test/groovy/grails/doc/internal/LegacyTocStrategySpec.groovy
+++ b/grails-docs/src/test/groovy/grails/doc/internal/LegacyTocStrategySpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.doc.internal
import spock.lang.Specification
diff --git a/grails-docs/src/test/groovy/grails/doc/internal/StringEscapeCategoryTests.groovy b/grails-docs/src/test/groovy/grails/doc/internal/StringEscapeCategoryTests.groovy
index 810195dad81..484cb0948b8 100644
--- a/grails-docs/src/test/groovy/grails/doc/internal/StringEscapeCategoryTests.groovy
+++ b/grails-docs/src/test/groovy/grails/doc/internal/StringEscapeCategoryTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.doc.internal
import org.junit.jupiter.api.Test
diff --git a/grails-docs/src/test/groovy/grails/doc/internal/YamlTocStrategySpec.groovy b/grails-docs/src/test/groovy/grails/doc/internal/YamlTocStrategySpec.groovy
index aa03e9c1661..ec88dbbb9a1 100644
--- a/grails-docs/src/test/groovy/grails/doc/internal/YamlTocStrategySpec.groovy
+++ b/grails-docs/src/test/groovy/grails/doc/internal/YamlTocStrategySpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.doc.internal
import spock.lang.Specification
diff --git a/grails-docs/src/test/groovy/grails/doc/macros/GspTagSourceMacroTest.groovy b/grails-docs/src/test/groovy/grails/doc/macros/GspTagSourceMacroTest.groovy
index 33b2c1c2674..54b330dbd9e 100644
--- a/grails-docs/src/test/groovy/grails/doc/macros/GspTagSourceMacroTest.groovy
+++ b/grails-docs/src/test/groovy/grails/doc/macros/GspTagSourceMacroTest.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2015 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/buffer/CodecPrintWriter.java b/grails-encoder/src/main/groovy/org/grails/buffer/CodecPrintWriter.java
index ca5ba1bdbf9..efc25f762e0 100644
--- a/grails-encoder/src/main/groovy/org/grails/buffer/CodecPrintWriter.java
+++ b/grails-encoder/src/main/groovy/org/grails/buffer/CodecPrintWriter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/buffer/FastStringPrintWriter.java b/grails-encoder/src/main/groovy/org/grails/buffer/FastStringPrintWriter.java
index 7ecb688d979..929afdc6d71 100644
--- a/grails-encoder/src/main/groovy/org/grails/buffer/FastStringPrintWriter.java
+++ b/grails-encoder/src/main/groovy/org/grails/buffer/FastStringPrintWriter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/buffer/FastStringWriter.java b/grails-encoder/src/main/groovy/org/grails/buffer/FastStringWriter.java
index 97be0cb8c1a..ac91cf2c497 100644
--- a/grails-encoder/src/main/groovy/org/grails/buffer/FastStringWriter.java
+++ b/grails-encoder/src/main/groovy/org/grails/buffer/FastStringWriter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/buffer/GrailsLazyProxyPrintWriter.java b/grails-encoder/src/main/groovy/org/grails/buffer/GrailsLazyProxyPrintWriter.java
index 46a5aa5b2cd..1865d87b19a 100644
--- a/grails-encoder/src/main/groovy/org/grails/buffer/GrailsLazyProxyPrintWriter.java
+++ b/grails-encoder/src/main/groovy/org/grails/buffer/GrailsLazyProxyPrintWriter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/buffer/GrailsPrintWriter.java b/grails-encoder/src/main/groovy/org/grails/buffer/GrailsPrintWriter.java
index 747723cf877..09e391ac48d 100644
--- a/grails-encoder/src/main/groovy/org/grails/buffer/GrailsPrintWriter.java
+++ b/grails-encoder/src/main/groovy/org/grails/buffer/GrailsPrintWriter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2009 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/buffer/GrailsPrintWriterAdapter.java b/grails-encoder/src/main/groovy/org/grails/buffer/GrailsPrintWriterAdapter.java
index 047ff4e1ccf..9133e30866f 100644
--- a/grails-encoder/src/main/groovy/org/grails/buffer/GrailsPrintWriterAdapter.java
+++ b/grails-encoder/src/main/groovy/org/grails/buffer/GrailsPrintWriterAdapter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/buffer/GrailsRoutablePrintWriter.java b/grails-encoder/src/main/groovy/org/grails/buffer/GrailsRoutablePrintWriter.java
index 7cfe779df9b..b4ab4c83ec0 100644
--- a/grails-encoder/src/main/groovy/org/grails/buffer/GrailsRoutablePrintWriter.java
+++ b/grails-encoder/src/main/groovy/org/grails/buffer/GrailsRoutablePrintWriter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/buffer/GrailsWrappedWriter.java b/grails-encoder/src/main/groovy/org/grails/buffer/GrailsWrappedWriter.java
index d8e82f8ce64..af58867fef0 100644
--- a/grails-encoder/src/main/groovy/org/grails/buffer/GrailsWrappedWriter.java
+++ b/grails-encoder/src/main/groovy/org/grails/buffer/GrailsWrappedWriter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/buffer/StreamByteBuffer.java b/grails-encoder/src/main/groovy/org/grails/buffer/StreamByteBuffer.java
index d2fa5447d00..31637353bd4 100644
--- a/grails-encoder/src/main/groovy/org/grails/buffer/StreamByteBuffer.java
+++ b/grails-encoder/src/main/groovy/org/grails/buffer/StreamByteBuffer.java
@@ -1,438 +1,438 @@
-/*
- * Copyright 2009 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.grails.buffer;
-
-import grails.util.GrailsArrayUtils;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.nio.ByteBuffer;
-import java.nio.CharBuffer;
-import java.nio.charset.CharacterCodingException;
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CoderResult;
-import java.nio.charset.CodingErrorAction;
-import java.util.Iterator;
-import java.util.LinkedList;
-
-
-/**
- * An in-memory buffer that provides OutputStream and InputStream interfaces.
- *
- * This is more efficient than using ByteArrayOutputStream/ByteArrayInputStream
- *
- * This is not thread-safe, it is intended to be used by a single Thread.
- *
- * @author Lari Hotari, Sagire Software Oy
- */
-public class StreamByteBuffer {
-
- private static final int DEFAULT_CHUNK_SIZE = 8192;
-
- private LinkedList chunks = new LinkedList();
- private StreamByteBufferChunk currentWriteChunk;
- private StreamByteBufferChunk currentReadChunk = null;
- private int chunkSize;
- private StreamByteBufferOutputStream output;
- private StreamByteBufferInputStream input;
- private int totalBytesUnreadInList = 0;
- private int totalBytesUnreadInIterator = 0;
- private ReadMode readMode;
- private Iterator readIterator;
-
- public enum ReadMode {
- REMOVE_AFTER_READING,
- RETAIN_AFTER_READING
- }
-
- public StreamByteBuffer() {
- this(DEFAULT_CHUNK_SIZE);
- }
-
- public StreamByteBuffer(int chunkSize) {
- this(chunkSize, ReadMode.REMOVE_AFTER_READING);
- }
-
- public StreamByteBuffer(int chunkSize, ReadMode readMode) {
- this.chunkSize = chunkSize;
- this.readMode = readMode;
- currentWriteChunk = new StreamByteBufferChunk(chunkSize);
- output = new StreamByteBufferOutputStream();
- input = new StreamByteBufferInputStream();
- }
-
- public OutputStream getOutputStream() {
- return output;
- }
-
- public InputStream getInputStream() {
- return input;
- }
-
- public void writeTo(OutputStream target) throws IOException {
- while (prepareRead() != -1) {
- currentReadChunk.writeTo(target);
- }
- }
-
- public byte[] readAsByteArray() {
- byte[] buf = new byte[totalBytesUnread()];
- input.readImpl(buf, 0, buf.length);
- return buf;
- }
-
- public String readAsString(String encoding) throws CharacterCodingException {
- Charset charset = Charset.forName(encoding);
- return readAsString(charset);
- }
-
- public String readAsString(Charset charset) throws CharacterCodingException {
- int unreadSize = totalBytesUnread();
- if (unreadSize > 0) {
- CharsetDecoder decoder = charset.newDecoder().onMalformedInput(
- CodingErrorAction.REPLACE).onUnmappableCharacter(
- CodingErrorAction.REPLACE);
- CharBuffer charbuffer = CharBuffer.allocate(unreadSize);
- ByteBuffer buf = null;
- while (prepareRead() != -1) {
- buf = currentReadChunk.readToNioBuffer();
- boolean endOfInput = (prepareRead() == -1);
- CoderResult result = decoder.decode(buf, charbuffer, endOfInput);
- if (endOfInput) {
- if (!result.isUnderflow()) {
- result.throwException();
- }
- }
- }
- CoderResult result = decoder.flush(charbuffer);
- if (buf.hasRemaining()) {
- throw new IllegalStateException("There's a bug here, buffer wasn't read fully.");
- }
- if (!result.isUnderflow()) {
- result.throwException();
- }
- charbuffer.flip();
- String str;
- if (charbuffer.hasArray()) {
- int len = charbuffer.remaining();
- char[] ch = charbuffer.array();
- if (len != ch.length) {
- ch = (char[])GrailsArrayUtils.subarray(ch, 0, len);
- }
- str = StringCharArrayAccessor.createString(ch);
- }
- else {
- str = charbuffer.toString();
- }
- return str;
- }
- return null;
- }
-
- public int totalBytesUnread() {
- int total = 0;
- if (readMode == ReadMode.REMOVE_AFTER_READING) {
- total = totalBytesUnreadInList;
- }
- else if (readMode == ReadMode.RETAIN_AFTER_READING) {
- prepareRetainAfterReading();
- total = totalBytesUnreadInIterator;
- }
- if (currentReadChunk != null) {
- total += currentReadChunk.bytesUnread();
- }
- if (currentWriteChunk != currentReadChunk && currentWriteChunk != null) {
- if (readMode == ReadMode.REMOVE_AFTER_READING) {
- total += currentWriteChunk.bytesUnread();
- }
- else if (readMode == ReadMode.RETAIN_AFTER_READING) {
- total += currentWriteChunk.bytesUsed();
- }
- }
- return total;
- }
-
- protected int allocateSpace() {
- int spaceLeft = currentWriteChunk.spaceLeft();
- if (spaceLeft == 0) {
- chunks.add(currentWriteChunk);
- totalBytesUnreadInList += currentWriteChunk.bytesUnread();
- currentWriteChunk = new StreamByteBufferChunk(chunkSize);
- spaceLeft = currentWriteChunk.spaceLeft();
- }
- return spaceLeft;
- }
-
- protected int prepareRead() {
- prepareRetainAfterReading();
- int bytesUnread = (currentReadChunk != null) ? currentReadChunk.bytesUnread() : 0;
- if (bytesUnread == 0) {
- if (readMode == ReadMode.REMOVE_AFTER_READING && !chunks.isEmpty()) {
- currentReadChunk = chunks.removeFirst();
- bytesUnread = currentReadChunk.bytesUnread();
- totalBytesUnreadInList -= bytesUnread;
- }
- else if (readMode == ReadMode.RETAIN_AFTER_READING && readIterator.hasNext()) {
- currentReadChunk = readIterator.next();
- currentReadChunk.reset();
- bytesUnread = currentReadChunk.bytesUnread();
- totalBytesUnreadInIterator -= bytesUnread;
- }
- else if (currentReadChunk != currentWriteChunk) {
- currentReadChunk = currentWriteChunk;
- bytesUnread = currentReadChunk.bytesUnread();
- }
- else {
- bytesUnread = -1;
- }
- }
- return bytesUnread;
- }
-
- public void reset() {
- if (readMode == ReadMode.RETAIN_AFTER_READING) {
- readIterator = null;
- prepareRetainAfterReading();
- if (currentWriteChunk != null) {
- currentWriteChunk.reset();
- }
- }
- }
-
- private void prepareRetainAfterReading() {
- if (readMode == ReadMode.RETAIN_AFTER_READING && readIterator == null) {
- readIterator = chunks.iterator();
- totalBytesUnreadInIterator = totalBytesUnreadInList;
- currentReadChunk = null;
- }
- }
-
- public ReadMode getReadMode() {
- return readMode;
- }
-
- public void setReadMode(ReadMode readMode) {
- this.readMode = readMode;
- }
-
- public void retainAfterReadingMode() {
- setReadMode(ReadMode.RETAIN_AFTER_READING);
- }
-
- class StreamByteBufferChunk {
- private int pointer = 0;
- private byte[] buffer;
- private int size;
- private int used = 0;
-
- public StreamByteBufferChunk(int size) {
- this.size = size;
- buffer = new byte[size];
- }
-
- public ByteBuffer readToNioBuffer() {
- if (pointer < used) {
- ByteBuffer result;
- if (pointer > 0 || used < size) {
- result = ByteBuffer.wrap(buffer, pointer, used - pointer);
- }
- else {
- result = ByteBuffer.wrap(buffer);
- }
- pointer = used;
- return result;
- }
-
- return null;
- }
-
- public boolean write(byte b) {
- if (used < size) {
- buffer[used++] = b;
- return true;
- }
-
- return false;
- }
-
- public void write(byte[] b, int off, int len) {
- System.arraycopy(b, off, buffer, used, len);
- used = used + len;
- }
-
- public void read(byte[] b, int off, int len) {
- System.arraycopy(buffer, pointer, b, off, len);
- pointer = pointer + len;
- }
-
- public void writeTo(OutputStream target) throws IOException {
- if (pointer < used) {
- target.write(buffer, pointer, used - pointer);
- pointer = used;
- }
- }
-
- public void reset() {
- pointer = 0;
- }
-
- public int bytesUsed() {
- return used;
- }
-
- public int bytesUnread() {
- return used - pointer;
- }
-
- public int read() {
- if (pointer < used) {
- return buffer[pointer++] & 0xff;
- }
-
- return -1;
- }
-
- public int spaceLeft() {
- return size - used;
- }
- }
-
- class StreamByteBufferOutputStream extends OutputStream {
- private boolean closed = false;
-
- @Override
- public void write(byte[] b, int off, int len) throws IOException {
- if (b == null) {
- throw new NullPointerException();
- }
-
- if ((off < 0) || (off > b.length) || (len < 0) ||
- ((off + len) > b.length) || ((off + len) < 0)) {
- throw new IndexOutOfBoundsException();
- }
-
- if (len == 0) {
- return;
- }
-
- int bytesLeft = len;
- int currentOffset = off;
- while (bytesLeft > 0) {
- int spaceLeft = allocateSpace();
- int writeBytes = Math.min(spaceLeft, bytesLeft);
- currentWriteChunk.write(b, currentOffset, writeBytes);
- bytesLeft -= writeBytes;
- currentOffset += writeBytes;
- }
- }
-
- @Override
- public void close() throws IOException {
- closed = true;
- }
-
- public boolean isClosed() {
- return closed;
- }
-
- @Override
- public void write(int b) throws IOException {
- allocateSpace();
- currentWriteChunk.write((byte) b);
- }
-
- public StreamByteBuffer getBuffer() {
- return StreamByteBuffer.this;
- }
- }
-
- class StreamByteBufferInputStream extends InputStream {
- @Override
- public int read() throws IOException {
- prepareRead();
- return currentReadChunk.read();
- }
-
- @Override
- public int read(byte[] b, int off, int len) throws IOException {
- return readImpl(b, off, len);
- }
-
- int readImpl(byte[] b, int off, int len) {
- if (b == null) {
- throw new NullPointerException();
- }
-
- if ((off < 0) || (off > b.length) || (len < 0) ||
- ((off + len) > b.length) || ((off + len) < 0)) {
- throw new IndexOutOfBoundsException();
- }
-
- if (len == 0) {
- return 0;
- }
-
- int bytesLeft = len;
- int currentOffset = off;
- int bytesUnread = prepareRead();
- int totalBytesRead = 0;
- while (bytesLeft > 0 && bytesUnread != -1) {
- int readBytes = Math.min(bytesUnread, bytesLeft);
- currentReadChunk.read(b, currentOffset, readBytes);
- bytesLeft -= readBytes;
- currentOffset += readBytes;
- totalBytesRead += readBytes;
- bytesUnread = prepareRead();
- }
- if (totalBytesRead > 0) {
- return totalBytesRead;
- }
-
- return -1;
- }
-
- @Override
- public synchronized void reset() throws IOException {
- if (readMode==ReadMode.RETAIN_AFTER_READING) {
- StreamByteBuffer.this.reset();
- }
- else {
- // reset isn't supported in ReadMode.REMOVE_AFTER_READING
- super.reset();
- }
- }
-
- @Override
- public int available() throws IOException {
- return totalBytesUnread();
- }
-
- public StreamByteBuffer getBuffer() {
- return StreamByteBuffer.this;
- }
- }
-
- public void clear() {
- chunks.clear();
- currentReadChunk = null;
- totalBytesUnreadInList = 0;
- totalBytesUnreadInIterator = 0;
- currentWriteChunk = new StreamByteBufferChunk(chunkSize);
- readIterator = null;
- }
-}
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.grails.buffer;
+
+import grails.util.GrailsArrayUtils;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.CharacterCodingException;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CoderResult;
+import java.nio.charset.CodingErrorAction;
+import java.util.Iterator;
+import java.util.LinkedList;
+
+
+/**
+ * An in-memory buffer that provides OutputStream and InputStream interfaces.
+ *
+ * This is more efficient than using ByteArrayOutputStream/ByteArrayInputStream
+ *
+ * This is not thread-safe, it is intended to be used by a single Thread.
+ *
+ * @author Lari Hotari, Sagire Software Oy
+ */
+public class StreamByteBuffer {
+
+ private static final int DEFAULT_CHUNK_SIZE = 8192;
+
+ private LinkedList chunks = new LinkedList();
+ private StreamByteBufferChunk currentWriteChunk;
+ private StreamByteBufferChunk currentReadChunk = null;
+ private int chunkSize;
+ private StreamByteBufferOutputStream output;
+ private StreamByteBufferInputStream input;
+ private int totalBytesUnreadInList = 0;
+ private int totalBytesUnreadInIterator = 0;
+ private ReadMode readMode;
+ private Iterator readIterator;
+
+ public enum ReadMode {
+ REMOVE_AFTER_READING,
+ RETAIN_AFTER_READING
+ }
+
+ public StreamByteBuffer() {
+ this(DEFAULT_CHUNK_SIZE);
+ }
+
+ public StreamByteBuffer(int chunkSize) {
+ this(chunkSize, ReadMode.REMOVE_AFTER_READING);
+ }
+
+ public StreamByteBuffer(int chunkSize, ReadMode readMode) {
+ this.chunkSize = chunkSize;
+ this.readMode = readMode;
+ currentWriteChunk = new StreamByteBufferChunk(chunkSize);
+ output = new StreamByteBufferOutputStream();
+ input = new StreamByteBufferInputStream();
+ }
+
+ public OutputStream getOutputStream() {
+ return output;
+ }
+
+ public InputStream getInputStream() {
+ return input;
+ }
+
+ public void writeTo(OutputStream target) throws IOException {
+ while (prepareRead() != -1) {
+ currentReadChunk.writeTo(target);
+ }
+ }
+
+ public byte[] readAsByteArray() {
+ byte[] buf = new byte[totalBytesUnread()];
+ input.readImpl(buf, 0, buf.length);
+ return buf;
+ }
+
+ public String readAsString(String encoding) throws CharacterCodingException {
+ Charset charset = Charset.forName(encoding);
+ return readAsString(charset);
+ }
+
+ public String readAsString(Charset charset) throws CharacterCodingException {
+ int unreadSize = totalBytesUnread();
+ if (unreadSize > 0) {
+ CharsetDecoder decoder = charset.newDecoder().onMalformedInput(
+ CodingErrorAction.REPLACE).onUnmappableCharacter(
+ CodingErrorAction.REPLACE);
+ CharBuffer charbuffer = CharBuffer.allocate(unreadSize);
+ ByteBuffer buf = null;
+ while (prepareRead() != -1) {
+ buf = currentReadChunk.readToNioBuffer();
+ boolean endOfInput = (prepareRead() == -1);
+ CoderResult result = decoder.decode(buf, charbuffer, endOfInput);
+ if (endOfInput) {
+ if (!result.isUnderflow()) {
+ result.throwException();
+ }
+ }
+ }
+ CoderResult result = decoder.flush(charbuffer);
+ if (buf.hasRemaining()) {
+ throw new IllegalStateException("There's a bug here, buffer wasn't read fully.");
+ }
+ if (!result.isUnderflow()) {
+ result.throwException();
+ }
+ charbuffer.flip();
+ String str;
+ if (charbuffer.hasArray()) {
+ int len = charbuffer.remaining();
+ char[] ch = charbuffer.array();
+ if (len != ch.length) {
+ ch = (char[])GrailsArrayUtils.subarray(ch, 0, len);
+ }
+ str = StringCharArrayAccessor.createString(ch);
+ }
+ else {
+ str = charbuffer.toString();
+ }
+ return str;
+ }
+ return null;
+ }
+
+ public int totalBytesUnread() {
+ int total = 0;
+ if (readMode == ReadMode.REMOVE_AFTER_READING) {
+ total = totalBytesUnreadInList;
+ }
+ else if (readMode == ReadMode.RETAIN_AFTER_READING) {
+ prepareRetainAfterReading();
+ total = totalBytesUnreadInIterator;
+ }
+ if (currentReadChunk != null) {
+ total += currentReadChunk.bytesUnread();
+ }
+ if (currentWriteChunk != currentReadChunk && currentWriteChunk != null) {
+ if (readMode == ReadMode.REMOVE_AFTER_READING) {
+ total += currentWriteChunk.bytesUnread();
+ }
+ else if (readMode == ReadMode.RETAIN_AFTER_READING) {
+ total += currentWriteChunk.bytesUsed();
+ }
+ }
+ return total;
+ }
+
+ protected int allocateSpace() {
+ int spaceLeft = currentWriteChunk.spaceLeft();
+ if (spaceLeft == 0) {
+ chunks.add(currentWriteChunk);
+ totalBytesUnreadInList += currentWriteChunk.bytesUnread();
+ currentWriteChunk = new StreamByteBufferChunk(chunkSize);
+ spaceLeft = currentWriteChunk.spaceLeft();
+ }
+ return spaceLeft;
+ }
+
+ protected int prepareRead() {
+ prepareRetainAfterReading();
+ int bytesUnread = (currentReadChunk != null) ? currentReadChunk.bytesUnread() : 0;
+ if (bytesUnread == 0) {
+ if (readMode == ReadMode.REMOVE_AFTER_READING && !chunks.isEmpty()) {
+ currentReadChunk = chunks.removeFirst();
+ bytesUnread = currentReadChunk.bytesUnread();
+ totalBytesUnreadInList -= bytesUnread;
+ }
+ else if (readMode == ReadMode.RETAIN_AFTER_READING && readIterator.hasNext()) {
+ currentReadChunk = readIterator.next();
+ currentReadChunk.reset();
+ bytesUnread = currentReadChunk.bytesUnread();
+ totalBytesUnreadInIterator -= bytesUnread;
+ }
+ else if (currentReadChunk != currentWriteChunk) {
+ currentReadChunk = currentWriteChunk;
+ bytesUnread = currentReadChunk.bytesUnread();
+ }
+ else {
+ bytesUnread = -1;
+ }
+ }
+ return bytesUnread;
+ }
+
+ public void reset() {
+ if (readMode == ReadMode.RETAIN_AFTER_READING) {
+ readIterator = null;
+ prepareRetainAfterReading();
+ if (currentWriteChunk != null) {
+ currentWriteChunk.reset();
+ }
+ }
+ }
+
+ private void prepareRetainAfterReading() {
+ if (readMode == ReadMode.RETAIN_AFTER_READING && readIterator == null) {
+ readIterator = chunks.iterator();
+ totalBytesUnreadInIterator = totalBytesUnreadInList;
+ currentReadChunk = null;
+ }
+ }
+
+ public ReadMode getReadMode() {
+ return readMode;
+ }
+
+ public void setReadMode(ReadMode readMode) {
+ this.readMode = readMode;
+ }
+
+ public void retainAfterReadingMode() {
+ setReadMode(ReadMode.RETAIN_AFTER_READING);
+ }
+
+ class StreamByteBufferChunk {
+ private int pointer = 0;
+ private byte[] buffer;
+ private int size;
+ private int used = 0;
+
+ public StreamByteBufferChunk(int size) {
+ this.size = size;
+ buffer = new byte[size];
+ }
+
+ public ByteBuffer readToNioBuffer() {
+ if (pointer < used) {
+ ByteBuffer result;
+ if (pointer > 0 || used < size) {
+ result = ByteBuffer.wrap(buffer, pointer, used - pointer);
+ }
+ else {
+ result = ByteBuffer.wrap(buffer);
+ }
+ pointer = used;
+ return result;
+ }
+
+ return null;
+ }
+
+ public boolean write(byte b) {
+ if (used < size) {
+ buffer[used++] = b;
+ return true;
+ }
+
+ return false;
+ }
+
+ public void write(byte[] b, int off, int len) {
+ System.arraycopy(b, off, buffer, used, len);
+ used = used + len;
+ }
+
+ public void read(byte[] b, int off, int len) {
+ System.arraycopy(buffer, pointer, b, off, len);
+ pointer = pointer + len;
+ }
+
+ public void writeTo(OutputStream target) throws IOException {
+ if (pointer < used) {
+ target.write(buffer, pointer, used - pointer);
+ pointer = used;
+ }
+ }
+
+ public void reset() {
+ pointer = 0;
+ }
+
+ public int bytesUsed() {
+ return used;
+ }
+
+ public int bytesUnread() {
+ return used - pointer;
+ }
+
+ public int read() {
+ if (pointer < used) {
+ return buffer[pointer++] & 0xff;
+ }
+
+ return -1;
+ }
+
+ public int spaceLeft() {
+ return size - used;
+ }
+ }
+
+ class StreamByteBufferOutputStream extends OutputStream {
+ private boolean closed = false;
+
+ @Override
+ public void write(byte[] b, int off, int len) throws IOException {
+ if (b == null) {
+ throw new NullPointerException();
+ }
+
+ if ((off < 0) || (off > b.length) || (len < 0) ||
+ ((off + len) > b.length) || ((off + len) < 0)) {
+ throw new IndexOutOfBoundsException();
+ }
+
+ if (len == 0) {
+ return;
+ }
+
+ int bytesLeft = len;
+ int currentOffset = off;
+ while (bytesLeft > 0) {
+ int spaceLeft = allocateSpace();
+ int writeBytes = Math.min(spaceLeft, bytesLeft);
+ currentWriteChunk.write(b, currentOffset, writeBytes);
+ bytesLeft -= writeBytes;
+ currentOffset += writeBytes;
+ }
+ }
+
+ @Override
+ public void close() throws IOException {
+ closed = true;
+ }
+
+ public boolean isClosed() {
+ return closed;
+ }
+
+ @Override
+ public void write(int b) throws IOException {
+ allocateSpace();
+ currentWriteChunk.write((byte) b);
+ }
+
+ public StreamByteBuffer getBuffer() {
+ return StreamByteBuffer.this;
+ }
+ }
+
+ class StreamByteBufferInputStream extends InputStream {
+ @Override
+ public int read() throws IOException {
+ prepareRead();
+ return currentReadChunk.read();
+ }
+
+ @Override
+ public int read(byte[] b, int off, int len) throws IOException {
+ return readImpl(b, off, len);
+ }
+
+ int readImpl(byte[] b, int off, int len) {
+ if (b == null) {
+ throw new NullPointerException();
+ }
+
+ if ((off < 0) || (off > b.length) || (len < 0) ||
+ ((off + len) > b.length) || ((off + len) < 0)) {
+ throw new IndexOutOfBoundsException();
+ }
+
+ if (len == 0) {
+ return 0;
+ }
+
+ int bytesLeft = len;
+ int currentOffset = off;
+ int bytesUnread = prepareRead();
+ int totalBytesRead = 0;
+ while (bytesLeft > 0 && bytesUnread != -1) {
+ int readBytes = Math.min(bytesUnread, bytesLeft);
+ currentReadChunk.read(b, currentOffset, readBytes);
+ bytesLeft -= readBytes;
+ currentOffset += readBytes;
+ totalBytesRead += readBytes;
+ bytesUnread = prepareRead();
+ }
+ if (totalBytesRead > 0) {
+ return totalBytesRead;
+ }
+
+ return -1;
+ }
+
+ @Override
+ public synchronized void reset() throws IOException {
+ if (readMode==ReadMode.RETAIN_AFTER_READING) {
+ StreamByteBuffer.this.reset();
+ }
+ else {
+ // reset isn't supported in ReadMode.REMOVE_AFTER_READING
+ super.reset();
+ }
+ }
+
+ @Override
+ public int available() throws IOException {
+ return totalBytesUnread();
+ }
+
+ public StreamByteBuffer getBuffer() {
+ return StreamByteBuffer.this;
+ }
+ }
+
+ public void clear() {
+ chunks.clear();
+ currentReadChunk = null;
+ totalBytesUnreadInList = 0;
+ totalBytesUnreadInIterator = 0;
+ currentWriteChunk = new StreamByteBufferChunk(chunkSize);
+ readIterator = null;
+ }
+}
diff --git a/grails-encoder/src/main/groovy/org/grails/buffer/StreamCharBuffer.java b/grails-encoder/src/main/groovy/org/grails/buffer/StreamCharBuffer.java
index 5f79b260c4a..fa11840b5e8 100644
--- a/grails-encoder/src/main/groovy/org/grails/buffer/StreamCharBuffer.java
+++ b/grails-encoder/src/main/groovy/org/grails/buffer/StreamCharBuffer.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2009 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/buffer/StreamCharBufferMetaUtils.groovy b/grails-encoder/src/main/groovy/org/grails/buffer/StreamCharBufferMetaUtils.groovy
index 515551d8bf6..e454188a988 100644
--- a/grails-encoder/src/main/groovy/org/grails/buffer/StreamCharBufferMetaUtils.groovy
+++ b/grails-encoder/src/main/groovy/org/grails/buffer/StreamCharBufferMetaUtils.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.buffer
class StreamCharBufferMetaUtils {
diff --git a/grails-encoder/src/main/groovy/org/grails/buffer/StringCharArrayAccessor.java b/grails-encoder/src/main/groovy/org/grails/buffer/StringCharArrayAccessor.java
index f893458fe9a..9a6a79d446d 100644
--- a/grails-encoder/src/main/groovy/org/grails/buffer/StringCharArrayAccessor.java
+++ b/grails-encoder/src/main/groovy/org/grails/buffer/StringCharArrayAccessor.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2009 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/charsequences/CharArrayAccessible.java b/grails-encoder/src/main/groovy/org/grails/charsequences/CharArrayAccessible.java
index feed2a340a0..222a7e38efd 100644
--- a/grails-encoder/src/main/groovy/org/grails/charsequences/CharArrayAccessible.java
+++ b/grails-encoder/src/main/groovy/org/grails/charsequences/CharArrayAccessible.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/charsequences/CharArrayCharSequence.java b/grails-encoder/src/main/groovy/org/grails/charsequences/CharArrayCharSequence.java
index b23b5b7e0a2..503d7300600 100644
--- a/grails-encoder/src/main/groovy/org/grails/charsequences/CharArrayCharSequence.java
+++ b/grails-encoder/src/main/groovy/org/grails/charsequences/CharArrayCharSequence.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/charsequences/CharSequences.java b/grails-encoder/src/main/groovy/org/grails/charsequences/CharSequences.java
index a14222bda7f..e7f4a5a54fa 100644
--- a/grails-encoder/src/main/groovy/org/grails/charsequences/CharSequences.java
+++ b/grails-encoder/src/main/groovy/org/grails/charsequences/CharSequences.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/charsequences/SingleCharCharSequence.java b/grails-encoder/src/main/groovy/org/grails/charsequences/SingleCharCharSequence.java
index 104cc225046..b7b2f45e29b 100644
--- a/grails-encoder/src/main/groovy/org/grails/charsequences/SingleCharCharSequence.java
+++ b/grails-encoder/src/main/groovy/org/grails/charsequences/SingleCharCharSequence.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/charsequences/SubCharSequence.java b/grails-encoder/src/main/groovy/org/grails/charsequences/SubCharSequence.java
index 7e3a29c3317..0faa3d8394b 100644
--- a/grails-encoder/src/main/groovy/org/grails/charsequences/SubCharSequence.java
+++ b/grails-encoder/src/main/groovy/org/grails/charsequences/SubCharSequence.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/AbstractCharReplacementEncoder.java b/grails-encoder/src/main/groovy/org/grails/encoder/AbstractCharReplacementEncoder.java
index 7f7344af8fa..c05c7da9ad3 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/AbstractCharReplacementEncoder.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/AbstractCharReplacementEncoder.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/AbstractEncodedAppender.java b/grails-encoder/src/main/groovy/org/grails/encoder/AbstractEncodedAppender.java
index d9de24393b8..6c36cd2cc1f 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/AbstractEncodedAppender.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/AbstractEncodedAppender.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/ChainedDecoder.java b/grails-encoder/src/main/groovy/org/grails/encoder/ChainedDecoder.java
index 293bd180e05..d744505fcf6 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/ChainedDecoder.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/ChainedDecoder.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/ChainedEncoder.java b/grails-encoder/src/main/groovy/org/grails/encoder/ChainedEncoder.java
index 7482ed2ccf6..347ac2ad7b0 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/ChainedEncoder.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/ChainedEncoder.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/ChainedEncoders.java b/grails-encoder/src/main/groovy/org/grails/encoder/ChainedEncoders.java
index ff965ed78a0..ab22422f436 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/ChainedEncoders.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/ChainedEncoders.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/CodecFactory.java b/grails-encoder/src/main/groovy/org/grails/encoder/CodecFactory.java
index 77575d1ac3c..d049e5edea3 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/CodecFactory.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/CodecFactory.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/CodecIdentifier.java b/grails-encoder/src/main/groovy/org/grails/encoder/CodecIdentifier.java
index 6eb3bfa1da0..32150939bcd 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/CodecIdentifier.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/CodecIdentifier.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/CodecIdentifierProvider.java b/grails-encoder/src/main/groovy/org/grails/encoder/CodecIdentifierProvider.java
index 87588044f1b..7696a964d3d 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/CodecIdentifierProvider.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/CodecIdentifierProvider.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/CodecLookup.java b/grails-encoder/src/main/groovy/org/grails/encoder/CodecLookup.java
index dc7b40fd3c8..3a88e9e0c44 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/CodecLookup.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/CodecLookup.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/CodecLookupHelper.java b/grails-encoder/src/main/groovy/org/grails/encoder/CodecLookupHelper.java
index b2988dcfcf7..499d497defe 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/CodecLookupHelper.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/CodecLookupHelper.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/CodecMetaClassSupport.groovy b/grails-encoder/src/main/groovy/org/grails/encoder/CodecMetaClassSupport.groovy
index ccceeca45a3..f2d87f95621 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/CodecMetaClassSupport.groovy
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/CodecMetaClassSupport.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/CombinedCodecIdentifier.java b/grails-encoder/src/main/groovy/org/grails/encoder/CombinedCodecIdentifier.java
index 0b790a35e79..5744131e60c 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/CombinedCodecIdentifier.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/CombinedCodecIdentifier.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/Decoder.java b/grails-encoder/src/main/groovy/org/grails/encoder/Decoder.java
index d3248bc6990..943fd4d5631 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/Decoder.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/Decoder.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/DefaultCodecIdentifier.java b/grails-encoder/src/main/groovy/org/grails/encoder/DefaultCodecIdentifier.java
index 2982f3129e0..103c6bd7e9d 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/DefaultCodecIdentifier.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/DefaultCodecIdentifier.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/DefaultEncodingStateRegistry.java b/grails-encoder/src/main/groovy/org/grails/encoder/DefaultEncodingStateRegistry.java
index 4cbd49b29b9..932c941057a 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/DefaultEncodingStateRegistry.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/DefaultEncodingStateRegistry.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/Encodeable.java b/grails-encoder/src/main/groovy/org/grails/encoder/Encodeable.java
index 00eaa1c9fd7..ad3ac5fc0b3 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/Encodeable.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/Encodeable.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/EncodedAppender.java b/grails-encoder/src/main/groovy/org/grails/encoder/EncodedAppender.java
index a93db0eee12..3c1a3775632 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/EncodedAppender.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/EncodedAppender.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/EncodedAppenderFactory.java b/grails-encoder/src/main/groovy/org/grails/encoder/EncodedAppenderFactory.java
index ab942854328..b7c550dedb0 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/EncodedAppenderFactory.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/EncodedAppenderFactory.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/EncodedAppenderWriter.java b/grails-encoder/src/main/groovy/org/grails/encoder/EncodedAppenderWriter.java
index 5981ec89a99..e9fc286358c 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/EncodedAppenderWriter.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/EncodedAppenderWriter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/EncodedAppenderWriterFactory.java b/grails-encoder/src/main/groovy/org/grails/encoder/EncodedAppenderWriterFactory.java
index b3591e2481e..4ca8a514df0 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/EncodedAppenderWriterFactory.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/EncodedAppenderWriterFactory.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/Encoder.java b/grails-encoder/src/main/groovy/org/grails/encoder/Encoder.java
index 7854545d918..b57a615bfed 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/Encoder.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/Encoder.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/EncoderAware.java b/grails-encoder/src/main/groovy/org/grails/encoder/EncoderAware.java
index 7be89194bab..52f1bcfc6ef 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/EncoderAware.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/EncoderAware.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/EncodesToWriter.java b/grails-encoder/src/main/groovy/org/grails/encoder/EncodesToWriter.java
index 40056b2f9d3..4b43c285667 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/EncodesToWriter.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/EncodesToWriter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/EncodesToWriterAdapter.java b/grails-encoder/src/main/groovy/org/grails/encoder/EncodesToWriterAdapter.java
index e7d06417ec2..8181d7d23da 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/EncodesToWriterAdapter.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/EncodesToWriterAdapter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/EncodingState.java b/grails-encoder/src/main/groovy/org/grails/encoder/EncodingState.java
index 4a1d67a0684..4c287f2b75f 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/EncodingState.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/EncodingState.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/EncodingStateImpl.java b/grails-encoder/src/main/groovy/org/grails/encoder/EncodingStateImpl.java
index 2159a5efe19..1cbcf2e6a6c 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/EncodingStateImpl.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/EncodingStateImpl.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/EncodingStateRegistry.java b/grails-encoder/src/main/groovy/org/grails/encoder/EncodingStateRegistry.java
index e4a336b4ba5..739d924122a 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/EncodingStateRegistry.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/EncodingStateRegistry.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/EncodingStateRegistryLookup.java b/grails-encoder/src/main/groovy/org/grails/encoder/EncodingStateRegistryLookup.java
index 4752877409a..f27dc96796c 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/EncodingStateRegistryLookup.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/EncodingStateRegistryLookup.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/EncodingStateRegistryLookupHolder.java b/grails-encoder/src/main/groovy/org/grails/encoder/EncodingStateRegistryLookupHolder.java
index 8376af4a470..1877073f62e 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/EncodingStateRegistryLookupHolder.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/EncodingStateRegistryLookupHolder.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/StreamEncodeable.java b/grails-encoder/src/main/groovy/org/grails/encoder/StreamEncodeable.java
index f8711f47fc8..d19bded9ce7 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/StreamEncodeable.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/StreamEncodeable.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/StreamingEncoder.java b/grails-encoder/src/main/groovy/org/grails/encoder/StreamingEncoder.java
index 9171b58c1d7..937bf54c9a5 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/StreamingEncoder.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/StreamingEncoder.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/StreamingEncoderEncodedAppender.java b/grails-encoder/src/main/groovy/org/grails/encoder/StreamingEncoderEncodedAppender.java
index 4178cc0d201..337d3b807c5 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/StreamingEncoderEncodedAppender.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/StreamingEncoderEncodedAppender.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/StreamingEncoderWritable.java b/grails-encoder/src/main/groovy/org/grails/encoder/StreamingEncoderWritable.java
index a50f714aff9..1981a85581c 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/StreamingEncoderWritable.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/StreamingEncoderWritable.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/StreamingEncoderWriter.java b/grails-encoder/src/main/groovy/org/grails/encoder/StreamingEncoderWriter.java
index 087f5e72cae..6944d2d5560 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/StreamingEncoderWriter.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/StreamingEncoderWriter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/WriterEncodedAppender.java b/grails-encoder/src/main/groovy/org/grails/encoder/WriterEncodedAppender.java
index 19286c67328..f8cfc4fe6ad 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/WriterEncodedAppender.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/WriterEncodedAppender.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/impl/BasicCodecLookup.java b/grails-encoder/src/main/groovy/org/grails/encoder/impl/BasicCodecLookup.java
index 3781fb8328a..4623f6b11e5 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/impl/BasicCodecLookup.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/impl/BasicCodecLookup.java
@@ -1,4 +1,5 @@
-/* Copyright 2014 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/impl/BasicJSONEncoder.java b/grails-encoder/src/main/groovy/org/grails/encoder/impl/BasicJSONEncoder.java
index d6319a7b600..d8b594004ce 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/impl/BasicJSONEncoder.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/impl/BasicJSONEncoder.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/impl/BasicXMLEncoder.java b/grails-encoder/src/main/groovy/org/grails/encoder/impl/BasicXMLEncoder.java
index afbec27f45c..7ad5598458b 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/impl/BasicXMLEncoder.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/impl/BasicXMLEncoder.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/impl/HTML4Codec.java b/grails-encoder/src/main/groovy/org/grails/encoder/impl/HTML4Codec.java
index 929958a5bda..7019460a404 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/impl/HTML4Codec.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/impl/HTML4Codec.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/impl/HTML4Decoder.java b/grails-encoder/src/main/groovy/org/grails/encoder/impl/HTML4Decoder.java
index afcb33cb343..977f2f780c0 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/impl/HTML4Decoder.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/impl/HTML4Decoder.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/impl/HTML4Encoder.java b/grails-encoder/src/main/groovy/org/grails/encoder/impl/HTML4Encoder.java
index 50003cce1e6..31db0a54291 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/impl/HTML4Encoder.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/impl/HTML4Encoder.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/impl/HTMLCodecFactory.groovy b/grails-encoder/src/main/groovy/org/grails/encoder/impl/HTMLCodecFactory.groovy
index 7dcb55141b3..65c511146e7 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/impl/HTMLCodecFactory.groovy
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/impl/HTMLCodecFactory.groovy
@@ -1,4 +1,5 @@
-/* Copyright 2014 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/impl/HTMLEncoder.java b/grails-encoder/src/main/groovy/org/grails/encoder/impl/HTMLEncoder.java
index d4cc43c14f3..83311d9d445 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/impl/HTMLEncoder.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/impl/HTMLEncoder.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/impl/HTMLJSCodec.java b/grails-encoder/src/main/groovy/org/grails/encoder/impl/HTMLJSCodec.java
index 6d969e9b1c1..35e044e5479 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/impl/HTMLJSCodec.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/impl/HTMLJSCodec.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.encoder.impl;
import org.grails.encoder.ChainedDecoder;
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/impl/JSONCodecFactory.groovy b/grails-encoder/src/main/groovy/org/grails/encoder/impl/JSONCodecFactory.groovy
index 104f95dec22..2ded9a2dc1e 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/impl/JSONCodecFactory.groovy
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/impl/JSONCodecFactory.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/impl/JavaScriptCodec.groovy b/grails-encoder/src/main/groovy/org/grails/encoder/impl/JavaScriptCodec.groovy
index 3a6ac30c82e..9573700453d 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/impl/JavaScriptCodec.groovy
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/impl/JavaScriptCodec.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/impl/JavaScriptEncoder.java b/grails-encoder/src/main/groovy/org/grails/encoder/impl/JavaScriptEncoder.java
index af28f19d550..e14f709c455 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/impl/JavaScriptEncoder.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/impl/JavaScriptEncoder.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/impl/NoneEncoder.java b/grails-encoder/src/main/groovy/org/grails/encoder/impl/NoneEncoder.java
index 7e93f05f6a7..11f8143f8a0 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/impl/NoneEncoder.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/impl/NoneEncoder.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/impl/RawCodec.java b/grails-encoder/src/main/groovy/org/grails/encoder/impl/RawCodec.java
index 6c699be8688..08f54839b13 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/impl/RawCodec.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/impl/RawCodec.java
@@ -1,4 +1,5 @@
-/* Copyright 2013 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/impl/StandaloneCodecLookup.groovy b/grails-encoder/src/main/groovy/org/grails/encoder/impl/StandaloneCodecLookup.groovy
index e92fb7e0579..d0a533d7f03 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/impl/StandaloneCodecLookup.groovy
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/impl/StandaloneCodecLookup.groovy
@@ -1,4 +1,5 @@
-/* Copyright 2014 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/impl/URLCodecFactory.groovy b/grails-encoder/src/main/groovy/org/grails/encoder/impl/URLCodecFactory.groovy
index 818ec77db7c..704312aa5fb 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/impl/URLCodecFactory.groovy
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/impl/URLCodecFactory.groovy
@@ -1,76 +1,76 @@
-/*
- * Copyright 2004-2005 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.grails.encoder.impl;
-
-import groovy.transform.CompileStatic
-import org.grails.encoder.CodecFactory
-import org.grails.encoder.CodecIdentifier
-import org.grails.encoder.Decoder
-import org.grails.encoder.DefaultCodecIdentifier
-import org.grails.encoder.Encoder
-
-/**
- * Implements the 'www-form-urlencoded' encoding scheme, also misleadingly known as URL encoding.
- *
- * @see Chapter 17.13.4 Form content types
- * of the HTML 4.01 Specification
- *
- * @since 2.4
- */
-@CompileStatic
-public class URLCodecFactory implements CodecFactory {
- static final CodecIdentifier URL_CODEC_IDENTIFIER = new DefaultCodecIdentifier("URL");
-
- Encoder encoder = new Encoder() {
- @Override
- public CodecIdentifier getCodecIdentifier() {
- URL_CODEC_IDENTIFIER;
- }
-
- public Object encode(Object o) {
- if(o==null) return o;
- URLEncoder.encode(String.valueOf(o), resolveEncoding());
- }
-
- public boolean isApplyToSafelyEncoded() {
- true;
- }
-
- public boolean isSafe() {
- true;
- }
-
- public void markEncoded(CharSequence string) {
-
- }
- };
-
- Decoder decoder = new Decoder() {
- public CodecIdentifier getCodecIdentifier() {
- URL_CODEC_IDENTIFIER;
- }
-
- @Override
- public Object decode(Object o) {
- if(o==null) return o;
- URLDecoder.decode(String.valueOf(o), resolveEncoding());
- }
- };
-
- protected String resolveEncoding() {
- 'UTF-8'
- }
-}
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.grails.encoder.impl;
+
+import groovy.transform.CompileStatic
+import org.grails.encoder.CodecFactory
+import org.grails.encoder.CodecIdentifier
+import org.grails.encoder.Decoder
+import org.grails.encoder.DefaultCodecIdentifier
+import org.grails.encoder.Encoder
+
+/**
+ * Implements the 'www-form-urlencoded' encoding scheme, also misleadingly known as URL encoding.
+ *
+ * @see Chapter 17.13.4 Form content types
+ * of the HTML 4.01 Specification
+ *
+ * @since 2.4
+ */
+@CompileStatic
+public class URLCodecFactory implements CodecFactory {
+ static final CodecIdentifier URL_CODEC_IDENTIFIER = new DefaultCodecIdentifier("URL");
+
+ Encoder encoder = new Encoder() {
+ @Override
+ public CodecIdentifier getCodecIdentifier() {
+ URL_CODEC_IDENTIFIER;
+ }
+
+ public Object encode(Object o) {
+ if(o==null) return o;
+ URLEncoder.encode(String.valueOf(o), resolveEncoding());
+ }
+
+ public boolean isApplyToSafelyEncoded() {
+ true;
+ }
+
+ public boolean isSafe() {
+ true;
+ }
+
+ public void markEncoded(CharSequence string) {
+
+ }
+ };
+
+ Decoder decoder = new Decoder() {
+ public CodecIdentifier getCodecIdentifier() {
+ URL_CODEC_IDENTIFIER;
+ }
+
+ @Override
+ public Object decode(Object o) {
+ if(o==null) return o;
+ URLDecoder.decode(String.valueOf(o), resolveEncoding());
+ }
+ };
+
+ protected String resolveEncoding() {
+ 'UTF-8'
+ }
+}
diff --git a/grails-encoder/src/main/groovy/org/grails/encoder/impl/XMLCodecFactory.java b/grails-encoder/src/main/groovy/org/grails/encoder/impl/XMLCodecFactory.java
index d3fc23a9772..e7c169f0036 100644
--- a/grails-encoder/src/main/groovy/org/grails/encoder/impl/XMLCodecFactory.java
+++ b/grails-encoder/src/main/groovy/org/grails/encoder/impl/XMLCodecFactory.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/test/groovy/org/grails/buffer/StreamCharBufferGroovyTests.groovy b/grails-encoder/src/test/groovy/org/grails/buffer/StreamCharBufferGroovyTests.groovy
index 6451d1688f1..ab7ebe48b59 100644
--- a/grails-encoder/src/test/groovy/org/grails/buffer/StreamCharBufferGroovyTests.groovy
+++ b/grails-encoder/src/test/groovy/org/grails/buffer/StreamCharBufferGroovyTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.buffer
import org.grails.buffer.StreamCharBuffer
diff --git a/grails-encoder/src/test/groovy/org/grails/buffer/StreamCharBufferTests.java b/grails-encoder/src/test/groovy/org/grails/buffer/StreamCharBufferTests.java
index cd739bc51bd..612989c67f0 100644
--- a/grails-encoder/src/test/groovy/org/grails/buffer/StreamCharBufferTests.java
+++ b/grails-encoder/src/test/groovy/org/grails/buffer/StreamCharBufferTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2009 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/test/groovy/org/grails/charsequences/CharSequencesSpec.groovy b/grails-encoder/src/test/groovy/org/grails/charsequences/CharSequencesSpec.groovy
index 7af37c4ff66..dbf14978c35 100644
--- a/grails-encoder/src/test/groovy/org/grails/charsequences/CharSequencesSpec.groovy
+++ b/grails-encoder/src/test/groovy/org/grails/charsequences/CharSequencesSpec.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/test/groovy/org/grails/encoder/ChainedEncodersSpec.groovy b/grails-encoder/src/test/groovy/org/grails/encoder/ChainedEncodersSpec.groovy
index 26dcf503738..1a1dfddf12c 100644
--- a/grails-encoder/src/test/groovy/org/grails/encoder/ChainedEncodersSpec.groovy
+++ b/grails-encoder/src/test/groovy/org/grails/encoder/ChainedEncodersSpec.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/test/groovy/org/grails/encoder/DefaultEncodingStateRegistrySpec.groovy b/grails-encoder/src/test/groovy/org/grails/encoder/DefaultEncodingStateRegistrySpec.groovy
index c00b70d477a..9d2cb487808 100644
--- a/grails-encoder/src/test/groovy/org/grails/encoder/DefaultEncodingStateRegistrySpec.groovy
+++ b/grails-encoder/src/test/groovy/org/grails/encoder/DefaultEncodingStateRegistrySpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.encoder
import org.grails.encoder.impl.HTMLEncoder
diff --git a/grails-encoder/src/test/groovy/org/grails/encoder/impl/BasicCodecLookupSpec.groovy b/grails-encoder/src/test/groovy/org/grails/encoder/impl/BasicCodecLookupSpec.groovy
index a86ea1e4a39..32b0ee28208 100644
--- a/grails-encoder/src/test/groovy/org/grails/encoder/impl/BasicCodecLookupSpec.groovy
+++ b/grails-encoder/src/test/groovy/org/grails/encoder/impl/BasicCodecLookupSpec.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/test/groovy/org/grails/encoder/impl/HTMLEncoderSpec.groovy b/grails-encoder/src/test/groovy/org/grails/encoder/impl/HTMLEncoderSpec.groovy
index f675a79c282..587900af01e 100644
--- a/grails-encoder/src/test/groovy/org/grails/encoder/impl/HTMLEncoderSpec.groovy
+++ b/grails-encoder/src/test/groovy/org/grails/encoder/impl/HTMLEncoderSpec.groovy
@@ -1,4 +1,5 @@
-/* Copyright 2013 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-encoder/src/test/groovy/org/grails/encoder/impl/JavaScriptCodecTests.groovy b/grails-encoder/src/test/groovy/org/grails/encoder/impl/JavaScriptCodecTests.groovy
index 7d8211aa51a..47ab8c27f49 100644
--- a/grails-encoder/src/test/groovy/org/grails/encoder/impl/JavaScriptCodecTests.groovy
+++ b/grails-encoder/src/test/groovy/org/grails/encoder/impl/JavaScriptCodecTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.encoder.impl
import org.grails.encoder.impl.JavaScriptEncoder
diff --git a/grails-gradle-model/src/main/groovy/org/grails/gradle/plugin/model/DefaultGrailsClasspath.groovy b/grails-gradle-model/src/main/groovy/org/grails/gradle/plugin/model/DefaultGrailsClasspath.groovy
index 3047be7a760..35111ddaecd 100644
--- a/grails-gradle-model/src/main/groovy/org/grails/gradle/plugin/model/DefaultGrailsClasspath.groovy
+++ b/grails-gradle-model/src/main/groovy/org/grails/gradle/plugin/model/DefaultGrailsClasspath.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2015 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.grails.gradle.plugin.model
import groovy.transform.CompileStatic
diff --git a/grails-gradle-model/src/main/groovy/org/grails/gradle/plugin/model/GrailsClasspath.groovy b/grails-gradle-model/src/main/groovy/org/grails/gradle/plugin/model/GrailsClasspath.groovy
index 7ceb69f352a..2e3169f3c25 100644
--- a/grails-gradle-model/src/main/groovy/org/grails/gradle/plugin/model/GrailsClasspath.groovy
+++ b/grails-gradle-model/src/main/groovy/org/grails/gradle/plugin/model/GrailsClasspath.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2015 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.grails.gradle.plugin.model
import groovy.transform.CompileStatic
diff --git a/grails-logging/src/main/groovy/org/grails/compiler/logging/LoggingTransformer.java b/grails-logging/src/main/groovy/org/grails/compiler/logging/LoggingTransformer.java
index d71474a4a9b..2485ad8d23c 100644
--- a/grails-logging/src/main/groovy/org/grails/compiler/logging/LoggingTransformer.java
+++ b/grails-logging/src/main/groovy/org/grails/compiler/logging/LoggingTransformer.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-logging/src/test/groovy/org/grails/compiler/logging/LoggingTransformerSpec.groovy b/grails-logging/src/test/groovy/org/grails/compiler/logging/LoggingTransformerSpec.groovy
index aab4567cc28..c36852d8ea3 100644
--- a/grails-logging/src/test/groovy/org/grails/compiler/logging/LoggingTransformerSpec.groovy
+++ b/grails-logging/src/test/groovy/org/grails/compiler/logging/LoggingTransformerSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.compiler.logging
import org.slf4j.Logger
diff --git a/grails-plugin-codecs/src/main/groovy/org/grails/commons/CodecArtefactHandler.java b/grails-plugin-codecs/src/main/groovy/org/grails/commons/CodecArtefactHandler.java
index 69719780048..1f134ee6f3f 100644
--- a/grails-plugin-codecs/src/main/groovy/org/grails/commons/CodecArtefactHandler.java
+++ b/grails-plugin-codecs/src/main/groovy/org/grails/commons/CodecArtefactHandler.java
@@ -1,38 +1,38 @@
-/*
- * Copyright 2004-2005 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.grails.commons;
-
-import grails.core.ArtefactHandlerAdapter;
-import org.grails.core.artefact.DomainClassArtefactHandler;
-
-/**
- * @author Marc Palmer (marc@anyware.co.uk)
- */
-public class CodecArtefactHandler extends ArtefactHandlerAdapter {
-
- public static final String TYPE = "Codec";
-
- public CodecArtefactHandler() {
- super(TYPE, GrailsCodecClass.class, DefaultGrailsCodecClass.class, TYPE);
- }
-
- @Override
- public boolean isArtefactClass(@SuppressWarnings("rawtypes") Class clazz) {
- if (clazz == null) return false;
-
- return clazz.getName().endsWith(DefaultGrailsCodecClass.CODEC) && !DomainClassArtefactHandler.isDomainClass(clazz);
- }
-}
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.grails.commons;
+
+import grails.core.ArtefactHandlerAdapter;
+import org.grails.core.artefact.DomainClassArtefactHandler;
+
+/**
+ * @author Marc Palmer (marc@anyware.co.uk)
+ */
+public class CodecArtefactHandler extends ArtefactHandlerAdapter {
+
+ public static final String TYPE = "Codec";
+
+ public CodecArtefactHandler() {
+ super(TYPE, GrailsCodecClass.class, DefaultGrailsCodecClass.class, TYPE);
+ }
+
+ @Override
+ public boolean isArtefactClass(@SuppressWarnings("rawtypes") Class clazz) {
+ if (clazz == null) return false;
+
+ return clazz.getName().endsWith(DefaultGrailsCodecClass.CODEC) && !DomainClassArtefactHandler.isDomainClass(clazz);
+ }
+}
diff --git a/grails-plugin-codecs/src/main/groovy/org/grails/commons/DefaultGrailsCodecClass.java b/grails-plugin-codecs/src/main/groovy/org/grails/commons/DefaultGrailsCodecClass.java
index 7039410d35c..22d752975a6 100644
--- a/grails-plugin-codecs/src/main/groovy/org/grails/commons/DefaultGrailsCodecClass.java
+++ b/grails-plugin-codecs/src/main/groovy/org/grails/commons/DefaultGrailsCodecClass.java
@@ -1,11 +1,11 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-plugin-codecs/src/main/groovy/org/grails/commons/GrailsCodecClass.java b/grails-plugin-codecs/src/main/groovy/org/grails/commons/GrailsCodecClass.java
index 880ec8bf4c3..297cf32bc13 100644
--- a/grails-plugin-codecs/src/main/groovy/org/grails/commons/GrailsCodecClass.java
+++ b/grails-plugin-codecs/src/main/groovy/org/grails/commons/GrailsCodecClass.java
@@ -1,11 +1,11 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-plugin-codecs/src/main/groovy/org/grails/plugins/CodecsGrailsPlugin.groovy b/grails-plugin-codecs/src/main/groovy/org/grails/plugins/CodecsGrailsPlugin.groovy
index a25b548acc7..fac489f80d5 100644
--- a/grails-plugin-codecs/src/main/groovy/org/grails/plugins/CodecsGrailsPlugin.groovy
+++ b/grails-plugin-codecs/src/main/groovy/org/grails/plugins/CodecsGrailsPlugin.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-plugin-codecs/src/main/groovy/org/grails/plugins/codecs/CodecsConfiguration.java b/grails-plugin-codecs/src/main/groovy/org/grails/plugins/codecs/CodecsConfiguration.java
index 7be24dffc7c..a4ba61ca81d 100644
--- a/grails-plugin-codecs/src/main/groovy/org/grails/plugins/codecs/CodecsConfiguration.java
+++ b/grails-plugin-codecs/src/main/groovy/org/grails/plugins/codecs/CodecsConfiguration.java
@@ -1,11 +1,11 @@
/*
- * Copyright 2004-2019 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.grails.plugins.codecs;
import grails.core.GrailsApplication;
diff --git a/grails-plugin-codecs/src/main/groovy/org/grails/plugins/codecs/CodecsGrailsPlugin.groovy b/grails-plugin-codecs/src/main/groovy/org/grails/plugins/codecs/CodecsGrailsPlugin.groovy
index 014f27a76a4..bdaca399832 100644
--- a/grails-plugin-codecs/src/main/groovy/org/grails/plugins/codecs/CodecsGrailsPlugin.groovy
+++ b/grails-plugin-codecs/src/main/groovy/org/grails/plugins/codecs/CodecsGrailsPlugin.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-plugin-codecs/src/main/groovy/org/grails/plugins/codecs/DefaultCodecLookup.java b/grails-plugin-codecs/src/main/groovy/org/grails/plugins/codecs/DefaultCodecLookup.java
index 4e7142da780..19a797c3ae4 100644
--- a/grails-plugin-codecs/src/main/groovy/org/grails/plugins/codecs/DefaultCodecLookup.java
+++ b/grails-plugin-codecs/src/main/groovy/org/grails/plugins/codecs/DefaultCodecLookup.java
@@ -1,11 +1,11 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-plugin-codecs/src/main/groovy/org/grails/plugins/codecs/HTMLCodec.java b/grails-plugin-codecs/src/main/groovy/org/grails/plugins/codecs/HTMLCodec.java
index 36ea9d42e81..1121ebb96aa 100644
--- a/grails-plugin-codecs/src/main/groovy/org/grails/plugins/codecs/HTMLCodec.java
+++ b/grails-plugin-codecs/src/main/groovy/org/grails/plugins/codecs/HTMLCodec.java
@@ -1,11 +1,11 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-plugin-codecs/src/main/groovy/org/grails/plugins/codecs/URLCodec.groovy b/grails-plugin-codecs/src/main/groovy/org/grails/plugins/codecs/URLCodec.groovy
index 22a189095cc..09b9e96aeff 100644
--- a/grails-plugin-codecs/src/main/groovy/org/grails/plugins/codecs/URLCodec.groovy
+++ b/grails-plugin-codecs/src/main/groovy/org/grails/plugins/codecs/URLCodec.groovy
@@ -1,31 +1,31 @@
-/*
- * Copyright 2004-2005 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.grails.plugins.codecs
-
-import org.grails.encoder.impl.URLCodecFactory
-import org.springframework.web.context.request.RequestContextHolder
-
-/**
- * A codec that encodes and decodes Objects to and from URL encoded strings.
- *
- * @author Marc Palmer
- * @since 0.5
- */
-class URLCodec extends URLCodecFactory {
- protected String resolveEncoding() {
- RequestContextHolder.getRequestAttributes()?.request?.characterEncoding ?: 'UTF-8'
- }
-}
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.grails.plugins.codecs
+
+import org.grails.encoder.impl.URLCodecFactory
+import org.springframework.web.context.request.RequestContextHolder
+
+/**
+ * A codec that encodes and decodes Objects to and from URL encoded strings.
+ *
+ * @author Marc Palmer
+ * @since 0.5
+ */
+class URLCodec extends URLCodecFactory {
+ protected String resolveEncoding() {
+ RequestContextHolder.getRequestAttributes()?.request?.characterEncoding ?: 'UTF-8'
+ }
+}
diff --git a/grails-plugin-codecs/src/test/groovy/org/grails/web/codecs/HTMLCodecTests.groovy b/grails-plugin-codecs/src/test/groovy/org/grails/web/codecs/HTMLCodecTests.groovy
index 96795019c85..cba6a499f0d 100644
--- a/grails-plugin-codecs/src/test/groovy/org/grails/web/codecs/HTMLCodecTests.groovy
+++ b/grails-plugin-codecs/src/test/groovy/org/grails/web/codecs/HTMLCodecTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.codecs
import grails.core.DefaultGrailsApplication
diff --git a/grails-plugin-codecs/src/test/groovy/org/grails/web/codecs/HTMLJSCodecSpec.groovy b/grails-plugin-codecs/src/test/groovy/org/grails/web/codecs/HTMLJSCodecSpec.groovy
index d78039ca3fb..4fc061a5fb9 100644
--- a/grails-plugin-codecs/src/test/groovy/org/grails/web/codecs/HTMLJSCodecSpec.groovy
+++ b/grails-plugin-codecs/src/test/groovy/org/grails/web/codecs/HTMLJSCodecSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.codecs;
import org.grails.encoder.impl.HTMLJSCodec
diff --git a/grails-plugin-codecs/src/test/groovy/org/grails/web/codecs/URLCodecTests.groovy b/grails-plugin-codecs/src/test/groovy/org/grails/web/codecs/URLCodecTests.groovy
index 36a5d0ec641..06aa197e1f1 100644
--- a/grails-plugin-codecs/src/test/groovy/org/grails/web/codecs/URLCodecTests.groovy
+++ b/grails-plugin-codecs/src/test/groovy/org/grails/web/codecs/URLCodecTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.codecs
import org.grails.plugins.codecs.URLCodec
diff --git a/grails-plugin-controllers/src/main/groovy/grails/artefact/Controller.groovy b/grails-plugin-controllers/src/main/groovy/grails/artefact/Controller.groovy
index 2bc68060ed8..53cc83b815c 100644
--- a/grails-plugin-controllers/src/main/groovy/grails/artefact/Controller.groovy
+++ b/grails-plugin-controllers/src/main/groovy/grails/artefact/Controller.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-controllers/src/main/groovy/grails/artefact/controller/support/AllowedMethodsHelper.groovy b/grails-plugin-controllers/src/main/groovy/grails/artefact/controller/support/AllowedMethodsHelper.groovy
index 5abef58d29c..941490632e9 100644
--- a/grails-plugin-controllers/src/main/groovy/grails/artefact/controller/support/AllowedMethodsHelper.groovy
+++ b/grails-plugin-controllers/src/main/groovy/grails/artefact/controller/support/AllowedMethodsHelper.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-controllers/src/main/groovy/grails/artefact/controller/support/RequestForwarder.groovy b/grails-plugin-controllers/src/main/groovy/grails/artefact/controller/support/RequestForwarder.groovy
index da39ea18522..dc0f0d668d2 100644
--- a/grails-plugin-controllers/src/main/groovy/grails/artefact/controller/support/RequestForwarder.groovy
+++ b/grails-plugin-controllers/src/main/groovy/grails/artefact/controller/support/RequestForwarder.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2015 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-controllers/src/main/groovy/grails/artefact/controller/support/ResponseRedirector.groovy b/grails-plugin-controllers/src/main/groovy/grails/artefact/controller/support/ResponseRedirector.groovy
index 8cde928d886..640aac9e893 100644
--- a/grails-plugin-controllers/src/main/groovy/grails/artefact/controller/support/ResponseRedirector.groovy
+++ b/grails-plugin-controllers/src/main/groovy/grails/artefact/controller/support/ResponseRedirector.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2015 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-controllers/src/main/groovy/grails/artefact/controller/support/ResponseRenderer.groovy b/grails-plugin-controllers/src/main/groovy/grails/artefact/controller/support/ResponseRenderer.groovy
index c1e40da9956..c21c8ab409a 100644
--- a/grails-plugin-controllers/src/main/groovy/grails/artefact/controller/support/ResponseRenderer.groovy
+++ b/grails-plugin-controllers/src/main/groovy/grails/artefact/controller/support/ResponseRenderer.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-controllers/src/main/groovy/grails/compiler/traits/ControllerTraitInjector.groovy b/grails-plugin-controllers/src/main/groovy/grails/compiler/traits/ControllerTraitInjector.groovy
index d19db33e5f4..16f921fa0ef 100644
--- a/grails-plugin-controllers/src/main/groovy/grails/compiler/traits/ControllerTraitInjector.groovy
+++ b/grails-plugin-controllers/src/main/groovy/grails/compiler/traits/ControllerTraitInjector.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-controllers/src/main/groovy/grails/web/Controller.groovy b/grails-plugin-controllers/src/main/groovy/grails/web/Controller.groovy
index 0443fa9c99f..e306d235409 100644
--- a/grails-plugin-controllers/src/main/groovy/grails/web/Controller.groovy
+++ b/grails-plugin-controllers/src/main/groovy/grails/web/Controller.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.web
import org.codehaus.groovy.transform.GroovyASTTransformationClass
diff --git a/grails-plugin-controllers/src/main/groovy/org/grails/compiler/web/ControllerActionTransformer.java b/grails-plugin-controllers/src/main/groovy/org/grails/compiler/web/ControllerActionTransformer.java
index 3cbc4ecd8a7..4d95d7ae965 100644
--- a/grails-plugin-controllers/src/main/groovy/org/grails/compiler/web/ControllerActionTransformer.java
+++ b/grails-plugin-controllers/src/main/groovy/org/grails/compiler/web/ControllerActionTransformer.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-controllers/src/main/groovy/org/grails/compiler/web/ControllerArtefactTypeTransformation.java b/grails-plugin-controllers/src/main/groovy/org/grails/compiler/web/ControllerArtefactTypeTransformation.java
index 9edc6a262be..1552a1df1e0 100644
--- a/grails-plugin-controllers/src/main/groovy/org/grails/compiler/web/ControllerArtefactTypeTransformation.java
+++ b/grails-plugin-controllers/src/main/groovy/org/grails/compiler/web/ControllerArtefactTypeTransformation.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.compiler.web;
import grails.web.Controller;
diff --git a/grails-plugin-controllers/src/main/groovy/org/grails/compiler/web/ControllerDomainTransformer.java b/grails-plugin-controllers/src/main/groovy/org/grails/compiler/web/ControllerDomainTransformer.java
index 60dae399d2f..d64b0142fbb 100644
--- a/grails-plugin-controllers/src/main/groovy/org/grails/compiler/web/ControllerDomainTransformer.java
+++ b/grails-plugin-controllers/src/main/groovy/org/grails/compiler/web/ControllerDomainTransformer.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-controllers/src/main/groovy/org/grails/plugins/web/controllers/ControllerExceptionHandlerMetaData.java b/grails-plugin-controllers/src/main/groovy/org/grails/plugins/web/controllers/ControllerExceptionHandlerMetaData.java
index d8de2da7b6e..5f3d866fbd6 100644
--- a/grails-plugin-controllers/src/main/groovy/org/grails/plugins/web/controllers/ControllerExceptionHandlerMetaData.java
+++ b/grails-plugin-controllers/src/main/groovy/org/grails/plugins/web/controllers/ControllerExceptionHandlerMetaData.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-controllers/src/main/groovy/org/grails/plugins/web/controllers/ControllersGrailsPlugin.groovy b/grails-plugin-controllers/src/main/groovy/org/grails/plugins/web/controllers/ControllersGrailsPlugin.groovy
index 8578c87c1f3..12ff8e4b798 100644
--- a/grails-plugin-controllers/src/main/groovy/org/grails/plugins/web/controllers/ControllersGrailsPlugin.groovy
+++ b/grails-plugin-controllers/src/main/groovy/org/grails/plugins/web/controllers/ControllersGrailsPlugin.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-controllers/src/main/groovy/org/grails/plugins/web/controllers/DefaultControllerExceptionHandlerMetaData.groovy b/grails-plugin-controllers/src/main/groovy/org/grails/plugins/web/controllers/DefaultControllerExceptionHandlerMetaData.groovy
index 13f62dadbe8..68b5ee0d0ae 100644
--- a/grails-plugin-controllers/src/main/groovy/org/grails/plugins/web/controllers/DefaultControllerExceptionHandlerMetaData.groovy
+++ b/grails-plugin-controllers/src/main/groovy/org/grails/plugins/web/controllers/DefaultControllerExceptionHandlerMetaData.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-controllers/src/main/groovy/org/grails/plugins/web/controllers/api/ControllersDomainBindingApi.java b/grails-plugin-controllers/src/main/groovy/org/grails/plugins/web/controllers/api/ControllersDomainBindingApi.java
index 2b2948ec169..accc04c15f4 100644
--- a/grails-plugin-controllers/src/main/groovy/org/grails/plugins/web/controllers/api/ControllersDomainBindingApi.java
+++ b/grails-plugin-controllers/src/main/groovy/org/grails/plugins/web/controllers/api/ControllersDomainBindingApi.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-controllers/src/main/groovy/org/grails/plugins/web/controllers/metaclass/RenderDynamicMethod.java b/grails-plugin-controllers/src/main/groovy/org/grails/plugins/web/controllers/metaclass/RenderDynamicMethod.java
index e6f798a8f79..86c7a7c2e26 100644
--- a/grails-plugin-controllers/src/main/groovy/org/grails/plugins/web/controllers/metaclass/RenderDynamicMethod.java
+++ b/grails-plugin-controllers/src/main/groovy/org/grails/plugins/web/controllers/metaclass/RenderDynamicMethod.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-controllers/src/main/groovy/org/grails/plugins/web/servlet/context/BootStrapClassRunner.groovy b/grails-plugin-controllers/src/main/groovy/org/grails/plugins/web/servlet/context/BootStrapClassRunner.groovy
index 6e0802b31ce..e79f8f4ff2a 100644
--- a/grails-plugin-controllers/src/main/groovy/org/grails/plugins/web/servlet/context/BootStrapClassRunner.groovy
+++ b/grails-plugin-controllers/src/main/groovy/org/grails/plugins/web/servlet/context/BootStrapClassRunner.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-controllers/src/main/groovy/org/grails/plugins/web/servlet/mvc/InvalidResponseHandler.groovy b/grails-plugin-controllers/src/main/groovy/org/grails/plugins/web/servlet/mvc/InvalidResponseHandler.groovy
index 4bf073adabb..4469728aace 100644
--- a/grails-plugin-controllers/src/main/groovy/org/grails/plugins/web/servlet/mvc/InvalidResponseHandler.groovy
+++ b/grails-plugin-controllers/src/main/groovy/org/grails/plugins/web/servlet/mvc/InvalidResponseHandler.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.grails.plugins.web.servlet.mvc
import groovy.transform.CompileStatic
diff --git a/grails-plugin-controllers/src/main/groovy/org/grails/plugins/web/servlet/mvc/ValidResponseHandler.groovy b/grails-plugin-controllers/src/main/groovy/org/grails/plugins/web/servlet/mvc/ValidResponseHandler.groovy
index 217e0e5e653..a5c3b1da443 100644
--- a/grails-plugin-controllers/src/main/groovy/org/grails/plugins/web/servlet/mvc/ValidResponseHandler.groovy
+++ b/grails-plugin-controllers/src/main/groovy/org/grails/plugins/web/servlet/mvc/ValidResponseHandler.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-controllers/src/test/groovy/grails/artefact/ControllerTraitGeneratedSpec.groovy b/grails-plugin-controllers/src/test/groovy/grails/artefact/ControllerTraitGeneratedSpec.groovy
index 79ad7858216..cfb9fbc3479 100644
--- a/grails-plugin-controllers/src/test/groovy/grails/artefact/ControllerTraitGeneratedSpec.groovy
+++ b/grails-plugin-controllers/src/test/groovy/grails/artefact/ControllerTraitGeneratedSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.artefact
import groovy.transform.Generated
diff --git a/grails-plugin-controllers/src/test/groovy/grails/artefact/controller/support/AllowedMethodsHelperSpec.groovy b/grails-plugin-controllers/src/test/groovy/grails/artefact/controller/support/AllowedMethodsHelperSpec.groovy
index 1eb18a34f1f..93f939b0ca4 100644
--- a/grails-plugin-controllers/src/test/groovy/grails/artefact/controller/support/AllowedMethodsHelperSpec.groovy
+++ b/grails-plugin-controllers/src/test/groovy/grails/artefact/controller/support/AllowedMethodsHelperSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.artefact.controller.support
import javax.servlet.http.HttpServletRequest
diff --git a/grails-plugin-controllers/src/test/groovy/grails/artefact/controller/support/RequestForwarderSpec.groovy b/grails-plugin-controllers/src/test/groovy/grails/artefact/controller/support/RequestForwarderSpec.groovy
index de315e354c2..89dd8ed32fc 100644
--- a/grails-plugin-controllers/src/test/groovy/grails/artefact/controller/support/RequestForwarderSpec.groovy
+++ b/grails-plugin-controllers/src/test/groovy/grails/artefact/controller/support/RequestForwarderSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.artefact.controller.support
import grails.util.GrailsWebMockUtil
diff --git a/grails-plugin-controllers/src/test/groovy/org/grails/compiler/web/ControllerActionTransformerClosureActionOverridingSpec.groovy b/grails-plugin-controllers/src/test/groovy/org/grails/compiler/web/ControllerActionTransformerClosureActionOverridingSpec.groovy
index 374711c5924..fa68c534a2d 100644
--- a/grails-plugin-controllers/src/test/groovy/org/grails/compiler/web/ControllerActionTransformerClosureActionOverridingSpec.groovy
+++ b/grails-plugin-controllers/src/test/groovy/org/grails/compiler/web/ControllerActionTransformerClosureActionOverridingSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.compiler.web
import grails.compiler.ast.ClassInjector
diff --git a/grails-plugin-controllers/src/test/groovy/org/grails/compiler/web/ControllerActionTransformerCompilationErrorsSpec.groovy b/grails-plugin-controllers/src/test/groovy/org/grails/compiler/web/ControllerActionTransformerCompilationErrorsSpec.groovy
index d379c33291d..d8726ad3447 100644
--- a/grails-plugin-controllers/src/test/groovy/org/grails/compiler/web/ControllerActionTransformerCompilationErrorsSpec.groovy
+++ b/grails-plugin-controllers/src/test/groovy/org/grails/compiler/web/ControllerActionTransformerCompilationErrorsSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.compiler.web
import grails.compiler.ast.ClassInjector
diff --git a/grails-plugin-controllers/src/test/groovy/org/grails/compiler/web/ControllerActionTransformerSpec.groovy b/grails-plugin-controllers/src/test/groovy/org/grails/compiler/web/ControllerActionTransformerSpec.groovy
index 67dad2399b1..3b5e1b4c918 100644
--- a/grails-plugin-controllers/src/test/groovy/org/grails/compiler/web/ControllerActionTransformerSpec.groovy
+++ b/grails-plugin-controllers/src/test/groovy/org/grails/compiler/web/ControllerActionTransformerSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.compiler.web
import grails.compiler.ast.ClassInjector
diff --git a/grails-plugin-databinding/src/main/groovy/org/grails/databinding/converters/DefaultConvertersConfiguration.java b/grails-plugin-databinding/src/main/groovy/org/grails/databinding/converters/DefaultConvertersConfiguration.java
index 70134a217c5..26e871c86c3 100644
--- a/grails-plugin-databinding/src/main/groovy/org/grails/databinding/converters/DefaultConvertersConfiguration.java
+++ b/grails-plugin-databinding/src/main/groovy/org/grails/databinding/converters/DefaultConvertersConfiguration.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2019 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.grails.databinding.converters;
import grails.core.GrailsApplication;
diff --git a/grails-plugin-databinding/src/main/groovy/org/grails/databinding/converters/Jsr310ConvertersConfiguration.groovy b/grails-plugin-databinding/src/main/groovy/org/grails/databinding/converters/Jsr310ConvertersConfiguration.groovy
index fb3cd6ad0b1..9a94c5e41ae 100644
--- a/grails-plugin-databinding/src/main/groovy/org/grails/databinding/converters/Jsr310ConvertersConfiguration.groovy
+++ b/grails-plugin-databinding/src/main/groovy/org/grails/databinding/converters/Jsr310ConvertersConfiguration.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.databinding.converters;
import grails.databinding.TypedStructuredBindingEditor
diff --git a/grails-plugin-databinding/src/main/groovy/org/grails/databinding/converters/web/LocaleAwareBigDecimalConverter.groovy b/grails-plugin-databinding/src/main/groovy/org/grails/databinding/converters/web/LocaleAwareBigDecimalConverter.groovy
index 6bee9e7495f..1cc5998821f 100644
--- a/grails-plugin-databinding/src/main/groovy/org/grails/databinding/converters/web/LocaleAwareBigDecimalConverter.groovy
+++ b/grails-plugin-databinding/src/main/groovy/org/grails/databinding/converters/web/LocaleAwareBigDecimalConverter.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-databinding/src/main/groovy/org/grails/databinding/converters/web/LocaleAwareNumberConverter.groovy b/grails-plugin-databinding/src/main/groovy/org/grails/databinding/converters/web/LocaleAwareNumberConverter.groovy
index a6b2d43bf8c..25256cb617f 100644
--- a/grails-plugin-databinding/src/main/groovy/org/grails/databinding/converters/web/LocaleAwareNumberConverter.groovy
+++ b/grails-plugin-databinding/src/main/groovy/org/grails/databinding/converters/web/LocaleAwareNumberConverter.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-databinding/src/main/groovy/org/grails/plugins/databinding/AbstractDataBindingGrailsPlugin.groovy b/grails-plugin-databinding/src/main/groovy/org/grails/plugins/databinding/AbstractDataBindingGrailsPlugin.groovy
index 12c3b324fc0..fb27b105111 100644
--- a/grails-plugin-databinding/src/main/groovy/org/grails/plugins/databinding/AbstractDataBindingGrailsPlugin.groovy
+++ b/grails-plugin-databinding/src/main/groovy/org/grails/plugins/databinding/AbstractDataBindingGrailsPlugin.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-databinding/src/main/groovy/org/grails/plugins/databinding/DataBindingConfiguration.java b/grails-plugin-databinding/src/main/groovy/org/grails/plugins/databinding/DataBindingConfiguration.java
index 25c1e6a3b77..de129ec1865 100644
--- a/grails-plugin-databinding/src/main/groovy/org/grails/plugins/databinding/DataBindingConfiguration.java
+++ b/grails-plugin-databinding/src/main/groovy/org/grails/plugins/databinding/DataBindingConfiguration.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins.databinding;
import grails.core.GrailsApplication;
diff --git a/grails-plugin-databinding/src/main/groovy/org/grails/plugins/databinding/DataBindingConfigurationProperties.java b/grails-plugin-databinding/src/main/groovy/org/grails/plugins/databinding/DataBindingConfigurationProperties.java
index 39bcd169865..5edb6fd6cb2 100644
--- a/grails-plugin-databinding/src/main/groovy/org/grails/plugins/databinding/DataBindingConfigurationProperties.java
+++ b/grails-plugin-databinding/src/main/groovy/org/grails/plugins/databinding/DataBindingConfigurationProperties.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2019 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.grails.plugins.databinding;
import org.springframework.boot.context.properties.ConfigurationProperties;
diff --git a/grails-plugin-databinding/src/main/groovy/org/grails/plugins/databinding/DataBindingGrailsPlugin.java b/grails-plugin-databinding/src/main/groovy/org/grails/plugins/databinding/DataBindingGrailsPlugin.java
index 3ce4794fc6a..1701fea1e55 100644
--- a/grails-plugin-databinding/src/main/groovy/org/grails/plugins/databinding/DataBindingGrailsPlugin.java
+++ b/grails-plugin-databinding/src/main/groovy/org/grails/plugins/databinding/DataBindingGrailsPlugin.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins.databinding;
import groovy.lang.Closure;
diff --git a/grails-plugin-databinding/src/test/groovy/org/grails/databinding/converters/Jsr310ConvertersConfigurationSpec.groovy b/grails-plugin-databinding/src/test/groovy/org/grails/databinding/converters/Jsr310ConvertersConfigurationSpec.groovy
index 0f9a1113010..ee5e2894818 100644
--- a/grails-plugin-databinding/src/test/groovy/org/grails/databinding/converters/Jsr310ConvertersConfigurationSpec.groovy
+++ b/grails-plugin-databinding/src/test/groovy/org/grails/databinding/converters/Jsr310ConvertersConfigurationSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.databinding.converters
import org.grails.plugins.databinding.AbstractDataBindingGrailsPlugin
diff --git a/grails-plugin-databinding/src/test/groovy/org/grails/plugins/databinding/DataBindingConfigurationSpec.groovy b/grails-plugin-databinding/src/test/groovy/org/grails/plugins/databinding/DataBindingConfigurationSpec.groovy
index ea85ffa4479..6c05352dcec 100644
--- a/grails-plugin-databinding/src/test/groovy/org/grails/plugins/databinding/DataBindingConfigurationSpec.groovy
+++ b/grails-plugin-databinding/src/test/groovy/org/grails/plugins/databinding/DataBindingConfigurationSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins.databinding
import grails.databinding.converters.ValueConverter
diff --git a/grails-plugin-databinding/src/test/groovy/org/grails/plugins/databinding/GroovyConfigPropertySourceLoaderSpec.groovy b/grails-plugin-databinding/src/test/groovy/org/grails/plugins/databinding/GroovyConfigPropertySourceLoaderSpec.groovy
index 5484b3bab80..1078476eb29 100644
--- a/grails-plugin-databinding/src/test/groovy/org/grails/plugins/databinding/GroovyConfigPropertySourceLoaderSpec.groovy
+++ b/grails-plugin-databinding/src/test/groovy/org/grails/plugins/databinding/GroovyConfigPropertySourceLoaderSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins.databinding
diff --git a/grails-plugin-datasource/src/main/groovy/org/grails/plugins/datasource/DataSourceConnectionSourcesFactoryBean.groovy b/grails-plugin-datasource/src/main/groovy/org/grails/plugins/datasource/DataSourceConnectionSourcesFactoryBean.groovy
index ea05be87615..6b4c5512a15 100644
--- a/grails-plugin-datasource/src/main/groovy/org/grails/plugins/datasource/DataSourceConnectionSourcesFactoryBean.groovy
+++ b/grails-plugin-datasource/src/main/groovy/org/grails/plugins/datasource/DataSourceConnectionSourcesFactoryBean.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins.datasource
import groovy.transform.CompileStatic
diff --git a/grails-plugin-datasource/src/main/groovy/org/grails/plugins/datasource/DataSourceGrailsPlugin.groovy b/grails-plugin-datasource/src/main/groovy/org/grails/plugins/datasource/DataSourceGrailsPlugin.groovy
index 6f19f57ae65..217fe430645 100644
--- a/grails-plugin-datasource/src/main/groovy/org/grails/plugins/datasource/DataSourceGrailsPlugin.groovy
+++ b/grails-plugin-datasource/src/main/groovy/org/grails/plugins/datasource/DataSourceGrailsPlugin.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-datasource/src/main/groovy/org/grails/plugins/datasource/DataSourceUtils.groovy b/grails-plugin-datasource/src/main/groovy/org/grails/plugins/datasource/DataSourceUtils.groovy
index c8565c89d07..f75223094a2 100644
--- a/grails-plugin-datasource/src/main/groovy/org/grails/plugins/datasource/DataSourceUtils.groovy
+++ b/grails-plugin-datasource/src/main/groovy/org/grails/plugins/datasource/DataSourceUtils.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-datasource/src/main/groovy/org/grails/plugins/datasource/EmbeddedDatabaseShutdownHook.groovy b/grails-plugin-datasource/src/main/groovy/org/grails/plugins/datasource/EmbeddedDatabaseShutdownHook.groovy
index ae667371e63..50aaf7437a7 100644
--- a/grails-plugin-datasource/src/main/groovy/org/grails/plugins/datasource/EmbeddedDatabaseShutdownHook.groovy
+++ b/grails-plugin-datasource/src/main/groovy/org/grails/plugins/datasource/EmbeddedDatabaseShutdownHook.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins.datasource
import groovy.sql.Sql
diff --git a/grails-plugin-datasource/src/main/groovy/org/grails/plugins/datasource/ReadOnlyDriverManagerDataSource.java b/grails-plugin-datasource/src/main/groovy/org/grails/plugins/datasource/ReadOnlyDriverManagerDataSource.java
index 4225ae57d2a..e2b4fe4b976 100644
--- a/grails-plugin-datasource/src/main/groovy/org/grails/plugins/datasource/ReadOnlyDriverManagerDataSource.java
+++ b/grails-plugin-datasource/src/main/groovy/org/grails/plugins/datasource/ReadOnlyDriverManagerDataSource.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-datasource/src/main/groovy/org/grails/plugins/datasource/TomcatJDBCPoolMBeanExporter.groovy b/grails-plugin-datasource/src/main/groovy/org/grails/plugins/datasource/TomcatJDBCPoolMBeanExporter.groovy
index 11fb2b65d1d..8aceba287fa 100644
--- a/grails-plugin-datasource/src/main/groovy/org/grails/plugins/datasource/TomcatJDBCPoolMBeanExporter.groovy
+++ b/grails-plugin-datasource/src/main/groovy/org/grails/plugins/datasource/TomcatJDBCPoolMBeanExporter.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins.datasource
import groovy.transform.CompileStatic
diff --git a/grails-plugin-datasource/src/test/groovy/org/grails/plugins/datasource/DataSourceGrailsPluginSpec.groovy b/grails-plugin-datasource/src/test/groovy/org/grails/plugins/datasource/DataSourceGrailsPluginSpec.groovy
index 04b629d12cf..12e8376f778 100644
--- a/grails-plugin-datasource/src/test/groovy/org/grails/plugins/datasource/DataSourceGrailsPluginSpec.groovy
+++ b/grails-plugin-datasource/src/test/groovy/org/grails/plugins/datasource/DataSourceGrailsPluginSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins.datasource
import grails.core.GrailsApplication
diff --git a/grails-plugin-domain-class/src/main/groovy/grails/artefact/DomainClass.groovy b/grails-plugin-domain-class/src/main/groovy/grails/artefact/DomainClass.groovy
index 3efaf7afb20..8ce66e29340 100644
--- a/grails-plugin-domain-class/src/main/groovy/grails/artefact/DomainClass.groovy
+++ b/grails-plugin-domain-class/src/main/groovy/grails/artefact/DomainClass.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-plugin-domain-class/src/main/groovy/grails/compiler/traits/DomainClassTraitInjector.groovy b/grails-plugin-domain-class/src/main/groovy/grails/compiler/traits/DomainClassTraitInjector.groovy
index 330967825fc..c4058dba014 100644
--- a/grails-plugin-domain-class/src/main/groovy/grails/compiler/traits/DomainClassTraitInjector.groovy
+++ b/grails-plugin-domain-class/src/main/groovy/grails/compiler/traits/DomainClassTraitInjector.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-plugin-domain-class/src/main/groovy/org/grails/plugins/domain/DomainClassGrailsPlugin.groovy b/grails-plugin-domain-class/src/main/groovy/org/grails/plugins/domain/DomainClassGrailsPlugin.groovy
index bdacf42f55f..49e9c10754e 100644
--- a/grails-plugin-domain-class/src/main/groovy/org/grails/plugins/domain/DomainClassGrailsPlugin.groovy
+++ b/grails-plugin-domain-class/src/main/groovy/org/grails/plugins/domain/DomainClassGrailsPlugin.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-plugin-domain-class/src/main/groovy/org/grails/plugins/domain/support/ConstraintEvaluatorAdapter.java b/grails-plugin-domain-class/src/main/groovy/org/grails/plugins/domain/support/ConstraintEvaluatorAdapter.java
index 4e4b858813e..b65f3b33d7d 100644
--- a/grails-plugin-domain-class/src/main/groovy/org/grails/plugins/domain/support/ConstraintEvaluatorAdapter.java
+++ b/grails-plugin-domain-class/src/main/groovy/org/grails/plugins/domain/support/ConstraintEvaluatorAdapter.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins.domain.support;
import grails.gorm.validation.ConstrainedProperty;
diff --git a/grails-plugin-domain-class/src/main/groovy/org/grails/plugins/domain/support/DefaultConstraintEvaluatorFactoryBean.groovy b/grails-plugin-domain-class/src/main/groovy/org/grails/plugins/domain/support/DefaultConstraintEvaluatorFactoryBean.groovy
index 624ccb99946..7ad9432095d 100644
--- a/grails-plugin-domain-class/src/main/groovy/org/grails/plugins/domain/support/DefaultConstraintEvaluatorFactoryBean.groovy
+++ b/grails-plugin-domain-class/src/main/groovy/org/grails/plugins/domain/support/DefaultConstraintEvaluatorFactoryBean.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins.domain.support
import grails.core.GrailsApplication
diff --git a/grails-plugin-domain-class/src/main/groovy/org/grails/plugins/domain/support/DefaultMappingContextFactoryBean.groovy b/grails-plugin-domain-class/src/main/groovy/org/grails/plugins/domain/support/DefaultMappingContextFactoryBean.groovy
index 39e0d516414..05f789b92c3 100644
--- a/grails-plugin-domain-class/src/main/groovy/org/grails/plugins/domain/support/DefaultMappingContextFactoryBean.groovy
+++ b/grails-plugin-domain-class/src/main/groovy/org/grails/plugins/domain/support/DefaultMappingContextFactoryBean.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins.domain.support
import grails.core.GrailsApplication
diff --git a/grails-plugin-domain-class/src/main/groovy/org/grails/plugins/domain/support/ValidatorRegistryFactoryBean.groovy b/grails-plugin-domain-class/src/main/groovy/org/grails/plugins/domain/support/ValidatorRegistryFactoryBean.groovy
index 6b79e8c40ad..239871c61d8 100644
--- a/grails-plugin-domain-class/src/main/groovy/org/grails/plugins/domain/support/ValidatorRegistryFactoryBean.groovy
+++ b/grails-plugin-domain-class/src/main/groovy/org/grails/plugins/domain/support/ValidatorRegistryFactoryBean.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins.domain.support
import groovy.transform.CompileStatic
diff --git a/grails-plugin-domain-class/src/test/groovy/grails/persistence/DomainClassTraitSpec.groovy b/grails-plugin-domain-class/src/test/groovy/grails/persistence/DomainClassTraitSpec.groovy
index bbdb3413f8a..d7aa499d77b 100644
--- a/grails-plugin-domain-class/src/test/groovy/grails/persistence/DomainClassTraitSpec.groovy
+++ b/grails-plugin-domain-class/src/test/groovy/grails/persistence/DomainClassTraitSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.persistence
import grails.artefact.DomainClass
diff --git a/grails-plugin-domain-class/src/test/groovy/grails/persistence/EntityTransformIncludesGormApiSpec.groovy b/grails-plugin-domain-class/src/test/groovy/grails/persistence/EntityTransformIncludesGormApiSpec.groovy
index 58b68509df9..55026f0426e 100644
--- a/grails-plugin-domain-class/src/test/groovy/grails/persistence/EntityTransformIncludesGormApiSpec.groovy
+++ b/grails-plugin-domain-class/src/test/groovy/grails/persistence/EntityTransformIncludesGormApiSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.persistence
import spock.lang.Specification
diff --git a/grails-plugin-domain-class/src/test/groovy/org/grails/core/support/MappingContextBuilder.groovy b/grails-plugin-domain-class/src/test/groovy/org/grails/core/support/MappingContextBuilder.groovy
index 5125c5057e7..c80fd2f10a9 100644
--- a/grails-plugin-domain-class/src/test/groovy/org/grails/core/support/MappingContextBuilder.groovy
+++ b/grails-plugin-domain-class/src/test/groovy/org/grails/core/support/MappingContextBuilder.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.core.support
import grails.core.GrailsApplication
diff --git a/grails-plugin-i18n/src/main/groovy/org/grails/plugins/i18n/I18nGrailsPlugin.groovy b/grails-plugin-i18n/src/main/groovy/org/grails/plugins/i18n/I18nGrailsPlugin.groovy
index 34d97d4356e..df13c867a5a 100644
--- a/grails-plugin-i18n/src/main/groovy/org/grails/plugins/i18n/I18nGrailsPlugin.groovy
+++ b/grails-plugin-i18n/src/main/groovy/org/grails/plugins/i18n/I18nGrailsPlugin.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-interceptors/src/main/groovy/grails/artefact/Interceptor.groovy b/grails-plugin-interceptors/src/main/groovy/grails/artefact/Interceptor.groovy
index c402fb4da04..9eacc066872 100644
--- a/grails-plugin-interceptors/src/main/groovy/grails/artefact/Interceptor.groovy
+++ b/grails-plugin-interceptors/src/main/groovy/grails/artefact/Interceptor.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2015 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-interceptors/src/main/groovy/grails/compiler/traits/InterceptorTraitInjector.groovy b/grails-plugin-interceptors/src/main/groovy/grails/compiler/traits/InterceptorTraitInjector.groovy
index dd6807de704..fd46e88f119 100644
--- a/grails-plugin-interceptors/src/main/groovy/grails/compiler/traits/InterceptorTraitInjector.groovy
+++ b/grails-plugin-interceptors/src/main/groovy/grails/compiler/traits/InterceptorTraitInjector.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2015 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-interceptors/src/main/groovy/grails/interceptors/Matcher.groovy b/grails-plugin-interceptors/src/main/groovy/grails/interceptors/Matcher.groovy
index fcd373e6414..1c3554bb393 100644
--- a/grails-plugin-interceptors/src/main/groovy/grails/interceptors/Matcher.groovy
+++ b/grails-plugin-interceptors/src/main/groovy/grails/interceptors/Matcher.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2015 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-interceptors/src/main/groovy/org/grails/plugins/web/interceptors/GrailsInterceptorHandlerInterceptorAdapter.groovy b/grails-plugin-interceptors/src/main/groovy/org/grails/plugins/web/interceptors/GrailsInterceptorHandlerInterceptorAdapter.groovy
index 080727e9ab3..8cd03a4ed47 100644
--- a/grails-plugin-interceptors/src/main/groovy/org/grails/plugins/web/interceptors/GrailsInterceptorHandlerInterceptorAdapter.groovy
+++ b/grails-plugin-interceptors/src/main/groovy/org/grails/plugins/web/interceptors/GrailsInterceptorHandlerInterceptorAdapter.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2015 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-interceptors/src/main/groovy/org/grails/plugins/web/interceptors/InterceptorArtefactHandler.groovy b/grails-plugin-interceptors/src/main/groovy/org/grails/plugins/web/interceptors/InterceptorArtefactHandler.groovy
index 7a56fd571fd..eb65594741b 100644
--- a/grails-plugin-interceptors/src/main/groovy/org/grails/plugins/web/interceptors/InterceptorArtefactHandler.groovy
+++ b/grails-plugin-interceptors/src/main/groovy/org/grails/plugins/web/interceptors/InterceptorArtefactHandler.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2015 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-interceptors/src/main/groovy/org/grails/plugins/web/interceptors/InterceptorsGrailsPlugin.groovy b/grails-plugin-interceptors/src/main/groovy/org/grails/plugins/web/interceptors/InterceptorsGrailsPlugin.groovy
index acf67fed625..d8a35cc6fb5 100644
--- a/grails-plugin-interceptors/src/main/groovy/org/grails/plugins/web/interceptors/InterceptorsGrailsPlugin.groovy
+++ b/grails-plugin-interceptors/src/main/groovy/org/grails/plugins/web/interceptors/InterceptorsGrailsPlugin.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2015 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-interceptors/src/main/groovy/org/grails/plugins/web/interceptors/UrlMappingMatcher.groovy b/grails-plugin-interceptors/src/main/groovy/org/grails/plugins/web/interceptors/UrlMappingMatcher.groovy
index 7781bae9f17..ac1b68178f5 100644
--- a/grails-plugin-interceptors/src/main/groovy/org/grails/plugins/web/interceptors/UrlMappingMatcher.groovy
+++ b/grails-plugin-interceptors/src/main/groovy/org/grails/plugins/web/interceptors/UrlMappingMatcher.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-interceptors/src/test/groovy/grails/artefact/GrailsInterceptorHandlerInterceptorAdapterSpec.groovy b/grails-plugin-interceptors/src/test/groovy/grails/artefact/GrailsInterceptorHandlerInterceptorAdapterSpec.groovy
index a98de2aca0e..966ea0ed091 100644
--- a/grails-plugin-interceptors/src/test/groovy/grails/artefact/GrailsInterceptorHandlerInterceptorAdapterSpec.groovy
+++ b/grails-plugin-interceptors/src/test/groovy/grails/artefact/GrailsInterceptorHandlerInterceptorAdapterSpec.groovy
@@ -1,16 +1,5 @@
-package grails.artefact
-
-import grails.interceptors.Matcher
-import grails.util.GrailsWebMockUtil
-import org.grails.plugins.web.interceptors.GrailsInterceptorHandlerInterceptorAdapter
-import org.grails.web.servlet.mvc.GrailsWebRequest
-import org.springframework.web.context.request.RequestContextHolder
-import org.springframework.web.servlet.ModelAndView
-import spock.lang.Issue
-import spock.lang.Specification
-
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -24,6 +13,16 @@ import spock.lang.Specification
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+package grails.artefact
+
+import grails.interceptors.Matcher
+import grails.util.GrailsWebMockUtil
+import org.grails.plugins.web.interceptors.GrailsInterceptorHandlerInterceptorAdapter
+import org.grails.web.servlet.mvc.GrailsWebRequest
+import org.springframework.web.context.request.RequestContextHolder
+import org.springframework.web.servlet.ModelAndView
+import spock.lang.Issue
+import spock.lang.Specification
/**
* @author graemerocher
diff --git a/grails-plugin-interceptors/src/test/groovy/grails/artefact/InterceptorSpec.groovy b/grails-plugin-interceptors/src/test/groovy/grails/artefact/InterceptorSpec.groovy
index 3c78965fafd..a10486c8f64 100644
--- a/grails-plugin-interceptors/src/test/groovy/grails/artefact/InterceptorSpec.groovy
+++ b/grails-plugin-interceptors/src/test/groovy/grails/artefact/InterceptorSpec.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-interceptors/src/test/groovy/org/grails/plugins/web/interceptors/UrlMappingMatcherSpec.groovy b/grails-plugin-interceptors/src/test/groovy/org/grails/plugins/web/interceptors/UrlMappingMatcherSpec.groovy
index 29f423d7e27..38941b1a157 100644
--- a/grails-plugin-interceptors/src/test/groovy/org/grails/plugins/web/interceptors/UrlMappingMatcherSpec.groovy
+++ b/grails-plugin-interceptors/src/test/groovy/org/grails/plugins/web/interceptors/UrlMappingMatcherSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins.web.interceptors
import grails.artefact.Interceptor
diff --git a/grails-plugin-mimetypes/src/main/groovy/grails/web/mime/AcceptHeaderParser.groovy b/grails-plugin-mimetypes/src/main/groovy/grails/web/mime/AcceptHeaderParser.groovy
index fffe0240abb..910f7bbbe98 100644
--- a/grails-plugin-mimetypes/src/main/groovy/grails/web/mime/AcceptHeaderParser.groovy
+++ b/grails-plugin-mimetypes/src/main/groovy/grails/web/mime/AcceptHeaderParser.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-mimetypes/src/main/groovy/grails/web/mime/MimeUtility.java b/grails-plugin-mimetypes/src/main/groovy/grails/web/mime/MimeUtility.java
index cb8cd9cce4e..e84daf4fb2a 100644
--- a/grails-plugin-mimetypes/src/main/groovy/grails/web/mime/MimeUtility.java
+++ b/grails-plugin-mimetypes/src/main/groovy/grails/web/mime/MimeUtility.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-mimetypes/src/main/groovy/org/grails/plugins/web/api/MimeTypesApiSupport.groovy b/grails-plugin-mimetypes/src/main/groovy/org/grails/plugins/web/api/MimeTypesApiSupport.groovy
index 0e86fa3cd79..1e3a5344f2e 100644
--- a/grails-plugin-mimetypes/src/main/groovy/org/grails/plugins/web/api/MimeTypesApiSupport.groovy
+++ b/grails-plugin-mimetypes/src/main/groovy/org/grails/plugins/web/api/MimeTypesApiSupport.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-mimetypes/src/main/groovy/org/grails/plugins/web/mime/AbstractMimeTypesGrailsPlugin.groovy b/grails-plugin-mimetypes/src/main/groovy/org/grails/plugins/web/mime/AbstractMimeTypesGrailsPlugin.groovy
index 016cd6d2e2a..7065d3e03ad 100644
--- a/grails-plugin-mimetypes/src/main/groovy/org/grails/plugins/web/mime/AbstractMimeTypesGrailsPlugin.groovy
+++ b/grails-plugin-mimetypes/src/main/groovy/org/grails/plugins/web/mime/AbstractMimeTypesGrailsPlugin.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2019 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-mimetypes/src/main/groovy/org/grails/plugins/web/mime/FormatInterceptor.groovy b/grails-plugin-mimetypes/src/main/groovy/org/grails/plugins/web/mime/FormatInterceptor.groovy
index caf695fbdd6..a5e7bc42138 100644
--- a/grails-plugin-mimetypes/src/main/groovy/org/grails/plugins/web/mime/FormatInterceptor.groovy
+++ b/grails-plugin-mimetypes/src/main/groovy/org/grails/plugins/web/mime/FormatInterceptor.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-mimetypes/src/main/groovy/org/grails/plugins/web/mime/MimeTypesConfiguration.groovy b/grails-plugin-mimetypes/src/main/groovy/org/grails/plugins/web/mime/MimeTypesConfiguration.groovy
index cec71f7c5d0..43445a54890 100644
--- a/grails-plugin-mimetypes/src/main/groovy/org/grails/plugins/web/mime/MimeTypesConfiguration.groovy
+++ b/grails-plugin-mimetypes/src/main/groovy/org/grails/plugins/web/mime/MimeTypesConfiguration.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2019 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.grails.plugins.web.mime
import grails.config.Config
diff --git a/grails-plugin-mimetypes/src/main/groovy/org/grails/plugins/web/mime/MimeTypesFactoryBean.groovy b/grails-plugin-mimetypes/src/main/groovy/org/grails/plugins/web/mime/MimeTypesFactoryBean.groovy
index 2f256b626ce..6298545f71e 100644
--- a/grails-plugin-mimetypes/src/main/groovy/org/grails/plugins/web/mime/MimeTypesFactoryBean.groovy
+++ b/grails-plugin-mimetypes/src/main/groovy/org/grails/plugins/web/mime/MimeTypesFactoryBean.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-mimetypes/src/main/groovy/org/grails/plugins/web/mime/MimeTypesGrailsPlugin.groovy b/grails-plugin-mimetypes/src/main/groovy/org/grails/plugins/web/mime/MimeTypesGrailsPlugin.groovy
index dd80eff0f2b..6d430e49a7d 100644
--- a/grails-plugin-mimetypes/src/main/groovy/org/grails/plugins/web/mime/MimeTypesGrailsPlugin.groovy
+++ b/grails-plugin-mimetypes/src/main/groovy/org/grails/plugins/web/mime/MimeTypesGrailsPlugin.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2019 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-mimetypes/src/main/groovy/org/grails/plugins/web/mime/MimeTypesHolder.groovy b/grails-plugin-mimetypes/src/main/groovy/org/grails/plugins/web/mime/MimeTypesHolder.groovy
index 3d40b65c362..d9c6398ff3d 100644
--- a/grails-plugin-mimetypes/src/main/groovy/org/grails/plugins/web/mime/MimeTypesHolder.groovy
+++ b/grails-plugin-mimetypes/src/main/groovy/org/grails/plugins/web/mime/MimeTypesHolder.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins.web.mime
import grails.web.mime.MimeType
diff --git a/grails-plugin-mimetypes/src/main/groovy/org/grails/web/mime/DefaultAcceptHeaderParser.groovy b/grails-plugin-mimetypes/src/main/groovy/org/grails/web/mime/DefaultAcceptHeaderParser.groovy
index 9cbe6fbe89e..d7bbda4899c 100644
--- a/grails-plugin-mimetypes/src/main/groovy/org/grails/web/mime/DefaultAcceptHeaderParser.groovy
+++ b/grails-plugin-mimetypes/src/main/groovy/org/grails/web/mime/DefaultAcceptHeaderParser.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-mimetypes/src/main/groovy/org/grails/web/mime/DefaultMimeTypeResolver.groovy b/grails-plugin-mimetypes/src/main/groovy/org/grails/web/mime/DefaultMimeTypeResolver.groovy
index 4f2488d44d8..52516234220 100644
--- a/grails-plugin-mimetypes/src/main/groovy/org/grails/web/mime/DefaultMimeTypeResolver.groovy
+++ b/grails-plugin-mimetypes/src/main/groovy/org/grails/web/mime/DefaultMimeTypeResolver.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-mimetypes/src/main/groovy/org/grails/web/mime/DefaultMimeUtility.java b/grails-plugin-mimetypes/src/main/groovy/org/grails/web/mime/DefaultMimeUtility.java
index d13de7fb7be..470d56b648e 100644
--- a/grails-plugin-mimetypes/src/main/groovy/org/grails/web/mime/DefaultMimeUtility.java
+++ b/grails-plugin-mimetypes/src/main/groovy/org/grails/web/mime/DefaultMimeUtility.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-mimetypes/src/main/groovy/org/grails/web/mime/HttpServletRequestExtension.groovy b/grails-plugin-mimetypes/src/main/groovy/org/grails/web/mime/HttpServletRequestExtension.groovy
index 4f67d0a3a1a..be95cbf7c97 100644
--- a/grails-plugin-mimetypes/src/main/groovy/org/grails/web/mime/HttpServletRequestExtension.groovy
+++ b/grails-plugin-mimetypes/src/main/groovy/org/grails/web/mime/HttpServletRequestExtension.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-mimetypes/src/main/groovy/org/grails/web/mime/HttpServletResponseExtension.groovy b/grails-plugin-mimetypes/src/main/groovy/org/grails/web/mime/HttpServletResponseExtension.groovy
index 50d50e4084b..ca53dd79adf 100755
--- a/grails-plugin-mimetypes/src/main/groovy/org/grails/web/mime/HttpServletResponseExtension.groovy
+++ b/grails-plugin-mimetypes/src/main/groovy/org/grails/web/mime/HttpServletResponseExtension.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-mimetypes/src/test/groovy/grails/web/mime/MimeUtilitySpec.groovy b/grails-plugin-mimetypes/src/test/groovy/grails/web/mime/MimeUtilitySpec.groovy
index 4b619fe90f6..3c0396d808b 100644
--- a/grails-plugin-mimetypes/src/test/groovy/grails/web/mime/MimeUtilitySpec.groovy
+++ b/grails-plugin-mimetypes/src/test/groovy/grails/web/mime/MimeUtilitySpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.web.mime
import grails.web.mime.MimeUtility
diff --git a/grails-plugin-mimetypes/src/test/groovy/org/grails/plugins/web/mime/MimeTypesConfigurationSpec.groovy b/grails-plugin-mimetypes/src/test/groovy/org/grails/plugins/web/mime/MimeTypesConfigurationSpec.groovy
index 7ac91d7a91b..88416a199b5 100644
--- a/grails-plugin-mimetypes/src/test/groovy/org/grails/plugins/web/mime/MimeTypesConfigurationSpec.groovy
+++ b/grails-plugin-mimetypes/src/test/groovy/org/grails/plugins/web/mime/MimeTypesConfigurationSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins.web.mime
import grails.core.DefaultGrailsApplication
diff --git a/grails-plugin-mimetypes/src/test/groovy/org/grails/web/mime/AcceptHeaderParserTests.groovy b/grails-plugin-mimetypes/src/test/groovy/org/grails/web/mime/AcceptHeaderParserTests.groovy
index c72fccee58c..3d9ce2e739e 100644
--- a/grails-plugin-mimetypes/src/test/groovy/org/grails/web/mime/AcceptHeaderParserTests.groovy
+++ b/grails-plugin-mimetypes/src/test/groovy/org/grails/web/mime/AcceptHeaderParserTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mime
import grails.core.DefaultGrailsApplication
diff --git a/grails-plugin-mimetypes/src/test/groovy/org/grails/web/servlet/mvc/RequestAndResponseMimeTypesApiSpec.groovy b/grails-plugin-mimetypes/src/test/groovy/org/grails/web/servlet/mvc/RequestAndResponseMimeTypesApiSpec.groovy
index af826e41f0c..211e2e807ca 100644
--- a/grails-plugin-mimetypes/src/test/groovy/org/grails/web/servlet/mvc/RequestAndResponseMimeTypesApiSpec.groovy
+++ b/grails-plugin-mimetypes/src/test/groovy/org/grails/web/servlet/mvc/RequestAndResponseMimeTypesApiSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.servlet.mvc
import grails.config.Config
import grails.core.DefaultGrailsApplication
diff --git a/grails-plugin-rest/src/main/groovy/grails/artefact/controller/RestResponder.groovy b/grails-plugin-rest/src/main/groovy/grails/artefact/controller/RestResponder.groovy
index a74617cef0e..0e07405f8db 100644
--- a/grails-plugin-rest/src/main/groovy/grails/artefact/controller/RestResponder.groovy
+++ b/grails-plugin-rest/src/main/groovy/grails/artefact/controller/RestResponder.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-rest/src/main/groovy/grails/compiler/traits/RestResponderTraitInjector.groovy b/grails-plugin-rest/src/main/groovy/grails/compiler/traits/RestResponderTraitInjector.groovy
index 7a670057bfe..6befce11985 100644
--- a/grails-plugin-rest/src/main/groovy/grails/compiler/traits/RestResponderTraitInjector.groovy
+++ b/grails-plugin-rest/src/main/groovy/grails/compiler/traits/RestResponderTraitInjector.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-rest/src/main/groovy/grails/rest/Link.groovy b/grails-plugin-rest/src/main/groovy/grails/rest/Link.groovy
index 93aa8ab700b..8fced2c15b7 100644
--- a/grails-plugin-rest/src/main/groovy/grails/rest/Link.groovy
+++ b/grails-plugin-rest/src/main/groovy/grails/rest/Link.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-plugin-rest/src/main/groovy/grails/rest/Linkable.groovy b/grails-plugin-rest/src/main/groovy/grails/rest/Linkable.groovy
index af1f3b1f035..91973aea768 100644
--- a/grails-plugin-rest/src/main/groovy/grails/rest/Linkable.groovy
+++ b/grails-plugin-rest/src/main/groovy/grails/rest/Linkable.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-plugin-rest/src/main/groovy/grails/rest/Resource.groovy b/grails-plugin-rest/src/main/groovy/grails/rest/Resource.groovy
index b0df852ebab..2c84c61bd09 100644
--- a/grails-plugin-rest/src/main/groovy/grails/rest/Resource.groovy
+++ b/grails-plugin-rest/src/main/groovy/grails/rest/Resource.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package grails.rest
import java.lang.annotation.ElementType
diff --git a/grails-plugin-rest/src/main/groovy/grails/rest/RestfulController.groovy b/grails-plugin-rest/src/main/groovy/grails/rest/RestfulController.groovy
index 434dae6f82a..954d346719d 100644
--- a/grails-plugin-rest/src/main/groovy/grails/rest/RestfulController.groovy
+++ b/grails-plugin-rest/src/main/groovy/grails/rest/RestfulController.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-plugin-rest/src/main/groovy/grails/rest/render/AbstractIncludeExcludeRenderer.groovy b/grails-plugin-rest/src/main/groovy/grails/rest/render/AbstractIncludeExcludeRenderer.groovy
index 264de1e5ad7..b8a21653609 100644
--- a/grails-plugin-rest/src/main/groovy/grails/rest/render/AbstractIncludeExcludeRenderer.groovy
+++ b/grails-plugin-rest/src/main/groovy/grails/rest/render/AbstractIncludeExcludeRenderer.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-rest/src/main/groovy/grails/rest/render/AbstractRenderContext.groovy b/grails-plugin-rest/src/main/groovy/grails/rest/render/AbstractRenderContext.groovy
index de78b017f53..9472015097a 100644
--- a/grails-plugin-rest/src/main/groovy/grails/rest/render/AbstractRenderContext.groovy
+++ b/grails-plugin-rest/src/main/groovy/grails/rest/render/AbstractRenderContext.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2012 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package grails.rest.render
import groovy.transform.CompileStatic
diff --git a/grails-plugin-rest/src/main/groovy/grails/rest/render/AbstractRenderer.groovy b/grails-plugin-rest/src/main/groovy/grails/rest/render/AbstractRenderer.groovy
index cb66fa87335..63bf368d07c 100644
--- a/grails-plugin-rest/src/main/groovy/grails/rest/render/AbstractRenderer.groovy
+++ b/grails-plugin-rest/src/main/groovy/grails/rest/render/AbstractRenderer.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2012 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-plugin-rest/src/main/groovy/grails/rest/render/ContainerRenderer.groovy b/grails-plugin-rest/src/main/groovy/grails/rest/render/ContainerRenderer.groovy
index 25d5d99c149..4860b86c508 100644
--- a/grails-plugin-rest/src/main/groovy/grails/rest/render/ContainerRenderer.groovy
+++ b/grails-plugin-rest/src/main/groovy/grails/rest/render/ContainerRenderer.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-rest/src/main/groovy/grails/rest/render/RenderContext.groovy b/grails-plugin-rest/src/main/groovy/grails/rest/render/RenderContext.groovy
index c3b374e416d..be75b0e1240 100644
--- a/grails-plugin-rest/src/main/groovy/grails/rest/render/RenderContext.groovy
+++ b/grails-plugin-rest/src/main/groovy/grails/rest/render/RenderContext.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-plugin-rest/src/main/groovy/grails/rest/render/Renderer.groovy b/grails-plugin-rest/src/main/groovy/grails/rest/render/Renderer.groovy
index e8a20fe8b77..22b9cdc6002 100644
--- a/grails-plugin-rest/src/main/groovy/grails/rest/render/Renderer.groovy
+++ b/grails-plugin-rest/src/main/groovy/grails/rest/render/Renderer.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-rest/src/main/groovy/grails/rest/render/RendererRegistry.groovy b/grails-plugin-rest/src/main/groovy/grails/rest/render/RendererRegistry.groovy
index 529a56e8259..bc147953a13 100644
--- a/grails-plugin-rest/src/main/groovy/grails/rest/render/RendererRegistry.groovy
+++ b/grails-plugin-rest/src/main/groovy/grails/rest/render/RendererRegistry.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package grails.rest.render
import grails.web.mime.MimeType
diff --git a/grails-plugin-rest/src/main/groovy/grails/rest/render/atom/AtomCollectionRenderer.groovy b/grails-plugin-rest/src/main/groovy/grails/rest/render/atom/AtomCollectionRenderer.groovy
index 234918c3089..e95a0c7d38f 100644
--- a/grails-plugin-rest/src/main/groovy/grails/rest/render/atom/AtomCollectionRenderer.groovy
+++ b/grails-plugin-rest/src/main/groovy/grails/rest/render/atom/AtomCollectionRenderer.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-rest/src/main/groovy/grails/rest/render/atom/AtomRenderer.groovy b/grails-plugin-rest/src/main/groovy/grails/rest/render/atom/AtomRenderer.groovy
index c14aa0f3275..16779b693df 100644
--- a/grails-plugin-rest/src/main/groovy/grails/rest/render/atom/AtomRenderer.groovy
+++ b/grails-plugin-rest/src/main/groovy/grails/rest/render/atom/AtomRenderer.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-rest/src/main/groovy/grails/rest/render/errors/AbstractVndErrorRenderer.groovy b/grails-plugin-rest/src/main/groovy/grails/rest/render/errors/AbstractVndErrorRenderer.groovy
index 7193d972d99..5ed236ecd05 100644
--- a/grails-plugin-rest/src/main/groovy/grails/rest/render/errors/AbstractVndErrorRenderer.groovy
+++ b/grails-plugin-rest/src/main/groovy/grails/rest/render/errors/AbstractVndErrorRenderer.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-rest/src/main/groovy/grails/rest/render/errors/VndErrorJsonRenderer.groovy b/grails-plugin-rest/src/main/groovy/grails/rest/render/errors/VndErrorJsonRenderer.groovy
index 33b3db55dbd..2e7b8bbae75 100644
--- a/grails-plugin-rest/src/main/groovy/grails/rest/render/errors/VndErrorJsonRenderer.groovy
+++ b/grails-plugin-rest/src/main/groovy/grails/rest/render/errors/VndErrorJsonRenderer.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-rest/src/main/groovy/grails/rest/render/errors/VndErrorXmlRenderer.groovy b/grails-plugin-rest/src/main/groovy/grails/rest/render/errors/VndErrorXmlRenderer.groovy
index a2b5c8e0e5d..24d6f2ecaa1 100644
--- a/grails-plugin-rest/src/main/groovy/grails/rest/render/errors/VndErrorXmlRenderer.groovy
+++ b/grails-plugin-rest/src/main/groovy/grails/rest/render/errors/VndErrorXmlRenderer.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-rest/src/main/groovy/grails/rest/render/hal/HalJsonCollectionRenderer.groovy b/grails-plugin-rest/src/main/groovy/grails/rest/render/hal/HalJsonCollectionRenderer.groovy
index 346e5eca2b2..5d51b88ccfb 100644
--- a/grails-plugin-rest/src/main/groovy/grails/rest/render/hal/HalJsonCollectionRenderer.groovy
+++ b/grails-plugin-rest/src/main/groovy/grails/rest/render/hal/HalJsonCollectionRenderer.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-rest/src/main/groovy/grails/rest/render/hal/HalJsonRenderer.groovy b/grails-plugin-rest/src/main/groovy/grails/rest/render/hal/HalJsonRenderer.groovy
index a0ebf955332..79ab67d3356 100644
--- a/grails-plugin-rest/src/main/groovy/grails/rest/render/hal/HalJsonRenderer.groovy
+++ b/grails-plugin-rest/src/main/groovy/grails/rest/render/hal/HalJsonRenderer.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-rest/src/main/groovy/grails/rest/render/hal/HalXmlCollectionRenderer.groovy b/grails-plugin-rest/src/main/groovy/grails/rest/render/hal/HalXmlCollectionRenderer.groovy
index db38a7d18d0..681835d2274 100644
--- a/grails-plugin-rest/src/main/groovy/grails/rest/render/hal/HalXmlCollectionRenderer.groovy
+++ b/grails-plugin-rest/src/main/groovy/grails/rest/render/hal/HalXmlCollectionRenderer.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-rest/src/main/groovy/grails/rest/render/hal/HalXmlRenderer.groovy b/grails-plugin-rest/src/main/groovy/grails/rest/render/hal/HalXmlRenderer.groovy
index d96fed5c43d..e2bf072893e 100644
--- a/grails-plugin-rest/src/main/groovy/grails/rest/render/hal/HalXmlRenderer.groovy
+++ b/grails-plugin-rest/src/main/groovy/grails/rest/render/hal/HalXmlRenderer.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-rest/src/main/groovy/grails/rest/render/json/JsonCollectionRenderer.groovy b/grails-plugin-rest/src/main/groovy/grails/rest/render/json/JsonCollectionRenderer.groovy
index be5d0d5dbac..35dd8ee5375 100644
--- a/grails-plugin-rest/src/main/groovy/grails/rest/render/json/JsonCollectionRenderer.groovy
+++ b/grails-plugin-rest/src/main/groovy/grails/rest/render/json/JsonCollectionRenderer.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-rest/src/main/groovy/grails/rest/render/json/JsonRenderer.groovy b/grails-plugin-rest/src/main/groovy/grails/rest/render/json/JsonRenderer.groovy
index be9621e24ff..c4ba0e4eca5 100644
--- a/grails-plugin-rest/src/main/groovy/grails/rest/render/json/JsonRenderer.groovy
+++ b/grails-plugin-rest/src/main/groovy/grails/rest/render/json/JsonRenderer.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-rest/src/main/groovy/grails/rest/render/util/AbstractLinkingRenderer.groovy b/grails-plugin-rest/src/main/groovy/grails/rest/render/util/AbstractLinkingRenderer.groovy
index c30b4c7bb9f..b1567920e88 100644
--- a/grails-plugin-rest/src/main/groovy/grails/rest/render/util/AbstractLinkingRenderer.groovy
+++ b/grails-plugin-rest/src/main/groovy/grails/rest/render/util/AbstractLinkingRenderer.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-rest/src/main/groovy/grails/rest/render/xml/XmlCollectionRenderer.groovy b/grails-plugin-rest/src/main/groovy/grails/rest/render/xml/XmlCollectionRenderer.groovy
index 153df7aa453..bc6f2ffeec0 100644
--- a/grails-plugin-rest/src/main/groovy/grails/rest/render/xml/XmlCollectionRenderer.groovy
+++ b/grails-plugin-rest/src/main/groovy/grails/rest/render/xml/XmlCollectionRenderer.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-rest/src/main/groovy/grails/rest/render/xml/XmlRenderer.groovy b/grails-plugin-rest/src/main/groovy/grails/rest/render/xml/XmlRenderer.groovy
index 020ee486ee4..e03b3423dc7 100644
--- a/grails-plugin-rest/src/main/groovy/grails/rest/render/xml/XmlRenderer.groovy
+++ b/grails-plugin-rest/src/main/groovy/grails/rest/render/xml/XmlRenderer.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-rest/src/main/groovy/org/grails/plugins/web/rest/plugin/RestResponderGrailsPlugin.groovy b/grails-plugin-rest/src/main/groovy/org/grails/plugins/web/rest/plugin/RestResponderGrailsPlugin.groovy
index d0a94c6f2c6..830bee9c20f 100644
--- a/grails-plugin-rest/src/main/groovy/org/grails/plugins/web/rest/plugin/RestResponderGrailsPlugin.groovy
+++ b/grails-plugin-rest/src/main/groovy/org/grails/plugins/web/rest/plugin/RestResponderGrailsPlugin.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-plugin-rest/src/main/groovy/org/grails/plugins/web/rest/render/DefaultRendererRegistry.groovy b/grails-plugin-rest/src/main/groovy/org/grails/plugins/web/rest/render/DefaultRendererRegistry.groovy
index 5f9b234003a..3425e400578 100644
--- a/grails-plugin-rest/src/main/groovy/org/grails/plugins/web/rest/render/DefaultRendererRegistry.groovy
+++ b/grails-plugin-rest/src/main/groovy/org/grails/plugins/web/rest/render/DefaultRendererRegistry.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-plugin-rest/src/main/groovy/org/grails/plugins/web/rest/render/ServletRenderContext.groovy b/grails-plugin-rest/src/main/groovy/org/grails/plugins/web/rest/render/ServletRenderContext.groovy
index e9cca804956..b311d751f8f 100644
--- a/grails-plugin-rest/src/main/groovy/org/grails/plugins/web/rest/render/ServletRenderContext.groovy
+++ b/grails-plugin-rest/src/main/groovy/org/grails/plugins/web/rest/render/ServletRenderContext.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2012 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-plugin-rest/src/main/groovy/org/grails/plugins/web/rest/render/html/DefaultHtmlRenderer.groovy b/grails-plugin-rest/src/main/groovy/org/grails/plugins/web/rest/render/html/DefaultHtmlRenderer.groovy
index cf1f927e87c..eb2710786b6 100644
--- a/grails-plugin-rest/src/main/groovy/org/grails/plugins/web/rest/render/html/DefaultHtmlRenderer.groovy
+++ b/grails-plugin-rest/src/main/groovy/org/grails/plugins/web/rest/render/html/DefaultHtmlRenderer.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2012 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-plugin-rest/src/main/groovy/org/grails/plugins/web/rest/render/json/DefaultJsonRenderer.groovy b/grails-plugin-rest/src/main/groovy/org/grails/plugins/web/rest/render/json/DefaultJsonRenderer.groovy
index 3e6f736d373..248a01d7312 100644
--- a/grails-plugin-rest/src/main/groovy/org/grails/plugins/web/rest/render/json/DefaultJsonRenderer.groovy
+++ b/grails-plugin-rest/src/main/groovy/org/grails/plugins/web/rest/render/json/DefaultJsonRenderer.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-plugin-rest/src/main/groovy/org/grails/plugins/web/rest/render/xml/DefaultXmlRenderer.groovy b/grails-plugin-rest/src/main/groovy/org/grails/plugins/web/rest/render/xml/DefaultXmlRenderer.groovy
index 163d9639759..8551c7159c9 100644
--- a/grails-plugin-rest/src/main/groovy/org/grails/plugins/web/rest/render/xml/DefaultXmlRenderer.groovy
+++ b/grails-plugin-rest/src/main/groovy/org/grails/plugins/web/rest/render/xml/DefaultXmlRenderer.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-plugin-rest/src/main/groovy/org/grails/plugins/web/rest/transform/LinkableTransform.groovy b/grails-plugin-rest/src/main/groovy/org/grails/plugins/web/rest/transform/LinkableTransform.groovy
index 9ead6fba867..007fbab2af6 100644
--- a/grails-plugin-rest/src/main/groovy/org/grails/plugins/web/rest/transform/LinkableTransform.groovy
+++ b/grails-plugin-rest/src/main/groovy/org/grails/plugins/web/rest/transform/LinkableTransform.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-plugin-rest/src/main/groovy/org/grails/plugins/web/rest/transform/ResourceTransform.groovy b/grails-plugin-rest/src/main/groovy/org/grails/plugins/web/rest/transform/ResourceTransform.groovy
index 310e610d7fb..49a27dcfc28 100644
--- a/grails-plugin-rest/src/main/groovy/org/grails/plugins/web/rest/transform/ResourceTransform.groovy
+++ b/grails-plugin-rest/src/main/groovy/org/grails/plugins/web/rest/transform/ResourceTransform.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2012 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-plugin-rest/src/test/groovy/grails/artefact/controller/RestResponderTraitGeneratedSpec.groovy b/grails-plugin-rest/src/test/groovy/grails/artefact/controller/RestResponderTraitGeneratedSpec.groovy
index 0188e3d5fda..465610494b3 100644
--- a/grails-plugin-rest/src/test/groovy/grails/artefact/controller/RestResponderTraitGeneratedSpec.groovy
+++ b/grails-plugin-rest/src/test/groovy/grails/artefact/controller/RestResponderTraitGeneratedSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.artefact.controller
import groovy.transform.Generated
diff --git a/grails-plugin-rest/src/test/groovy/org/grails/plugins/web/rest/render/DefaultRendererRegistrySpec.groovy b/grails-plugin-rest/src/test/groovy/org/grails/plugins/web/rest/render/DefaultRendererRegistrySpec.groovy
index 873710d5382..7acfacc2cea 100644
--- a/grails-plugin-rest/src/test/groovy/org/grails/plugins/web/rest/render/DefaultRendererRegistrySpec.groovy
+++ b/grails-plugin-rest/src/test/groovy/org/grails/plugins/web/rest/render/DefaultRendererRegistrySpec.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2012 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.grails.plugins.web.rest.render
import grails.rest.render.AbstractRenderer
diff --git a/grails-plugin-rest/src/test/groovy/org/grails/plugins/web/rest/render/VndErrorRenderingSpec.groovy b/grails-plugin-rest/src/test/groovy/org/grails/plugins/web/rest/render/VndErrorRenderingSpec.groovy
index 71a824d60c0..588843e90d4 100644
--- a/grails-plugin-rest/src/test/groovy/org/grails/plugins/web/rest/render/VndErrorRenderingSpec.groovy
+++ b/grails-plugin-rest/src/test/groovy/org/grails/plugins/web/rest/render/VndErrorRenderingSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins.web.rest.render
import grails.core.DefaultGrailsApplication
diff --git a/grails-plugin-rest/src/test/groovy/org/grails/plugins/web/rest/render/hal/HalJsonRendererSpec.groovy b/grails-plugin-rest/src/test/groovy/org/grails/plugins/web/rest/render/hal/HalJsonRendererSpec.groovy
index 67e2a442567..36c14b8a942 100644
--- a/grails-plugin-rest/src/test/groovy/org/grails/plugins/web/rest/render/hal/HalJsonRendererSpec.groovy
+++ b/grails-plugin-rest/src/test/groovy/org/grails/plugins/web/rest/render/hal/HalJsonRendererSpec.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2012 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.grails.plugins.web.rest.render.hal
import grails.config.Config
diff --git a/grails-plugin-rest/src/test/groovy/org/grails/plugins/web/rest/render/html/HtmlRendererSpec.groovy b/grails-plugin-rest/src/test/groovy/org/grails/plugins/web/rest/render/html/HtmlRendererSpec.groovy
index c477252bc85..a17c873b035 100644
--- a/grails-plugin-rest/src/test/groovy/org/grails/plugins/web/rest/render/html/HtmlRendererSpec.groovy
+++ b/grails-plugin-rest/src/test/groovy/org/grails/plugins/web/rest/render/html/HtmlRendererSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins.web.rest.render.html
import grails.persistence.Entity
diff --git a/grails-plugin-rest/src/test/groovy/org/grails/plugins/web/rest/render/json/JsonRendererSpec.groovy b/grails-plugin-rest/src/test/groovy/org/grails/plugins/web/rest/render/json/JsonRendererSpec.groovy
index 90ee02c9fc5..12f84bc2024 100644
--- a/grails-plugin-rest/src/test/groovy/org/grails/plugins/web/rest/render/json/JsonRendererSpec.groovy
+++ b/grails-plugin-rest/src/test/groovy/org/grails/plugins/web/rest/render/json/JsonRendererSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins.web.rest.render.json
import grails.core.DefaultGrailsApplication
diff --git a/grails-plugin-rest/src/test/groovy/org/grails/plugins/web/rest/transform/LinkableTransformSpec.groovy b/grails-plugin-rest/src/test/groovy/org/grails/plugins/web/rest/transform/LinkableTransformSpec.groovy
index 5a13456f2e5..c22d949578d 100644
--- a/grails-plugin-rest/src/test/groovy/org/grails/plugins/web/rest/transform/LinkableTransformSpec.groovy
+++ b/grails-plugin-rest/src/test/groovy/org/grails/plugins/web/rest/transform/LinkableTransformSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins.web.rest.transform
import grails.web.Action
diff --git a/grails-plugin-rest/src/test/groovy/org/grails/plugins/web/rest/transform/ResourceTransformSpec.groovy b/grails-plugin-rest/src/test/groovy/org/grails/plugins/web/rest/transform/ResourceTransformSpec.groovy
index bc4b8976ee9..0bf0db6e4e5 100644
--- a/grails-plugin-rest/src/test/groovy/org/grails/plugins/web/rest/transform/ResourceTransformSpec.groovy
+++ b/grails-plugin-rest/src/test/groovy/org/grails/plugins/web/rest/transform/ResourceTransformSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins.web.rest.transform
import grails.artefact.Artefact
diff --git a/grails-plugin-services/src/main/groovy/org/grails/plugins/services/ServiceBeanAliasPostProcessor.groovy b/grails-plugin-services/src/main/groovy/org/grails/plugins/services/ServiceBeanAliasPostProcessor.groovy
index dcee9fe974a..9e519249eda 100644
--- a/grails-plugin-services/src/main/groovy/org/grails/plugins/services/ServiceBeanAliasPostProcessor.groovy
+++ b/grails-plugin-services/src/main/groovy/org/grails/plugins/services/ServiceBeanAliasPostProcessor.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-services/src/main/groovy/org/grails/plugins/services/ServicesGrailsPlugin.groovy b/grails-plugin-services/src/main/groovy/org/grails/plugins/services/ServicesGrailsPlugin.groovy
index 1c2f4886e10..7bbc80c2664 100644
--- a/grails-plugin-services/src/main/groovy/org/grails/plugins/services/ServicesGrailsPlugin.groovy
+++ b/grails-plugin-services/src/main/groovy/org/grails/plugins/services/ServicesGrailsPlugin.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-url-mappings/src/main/groovy/org/grails/plugins/web/mapping/UrlMappingsGrailsPlugin.groovy b/grails-plugin-url-mappings/src/main/groovy/org/grails/plugins/web/mapping/UrlMappingsGrailsPlugin.groovy
index 9b0afee2301..d4c59ff4003 100644
--- a/grails-plugin-url-mappings/src/main/groovy/org/grails/plugins/web/mapping/UrlMappingsGrailsPlugin.groovy
+++ b/grails-plugin-url-mappings/src/main/groovy/org/grails/plugins/web/mapping/UrlMappingsGrailsPlugin.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-url-mappings/src/main/groovy/org/grails/plugins/web/mapping/factory/UrlMappingFactoryBean.java b/grails-plugin-url-mappings/src/main/groovy/org/grails/plugins/web/mapping/factory/UrlMappingFactoryBean.java
index a16d35907bf..411972ca17c 100644
--- a/grails-plugin-url-mappings/src/main/groovy/org/grails/plugins/web/mapping/factory/UrlMappingFactoryBean.java
+++ b/grails-plugin-url-mappings/src/main/groovy/org/grails/plugins/web/mapping/factory/UrlMappingFactoryBean.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-validation/src/main/groovy/grails/validation/ASTValidateableHelper.java b/grails-plugin-validation/src/main/groovy/grails/validation/ASTValidateableHelper.java
index b22e12dc48f..dd3033b3974 100644
--- a/grails-plugin-validation/src/main/groovy/grails/validation/ASTValidateableHelper.java
+++ b/grails-plugin-validation/src/main/groovy/grails/validation/ASTValidateableHelper.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-validation/src/main/groovy/grails/validation/ConstrainedDelegate.groovy b/grails-plugin-validation/src/main/groovy/grails/validation/ConstrainedDelegate.groovy
index 422ca801e8c..ec7957d2373 100644
--- a/grails-plugin-validation/src/main/groovy/grails/validation/ConstrainedDelegate.groovy
+++ b/grails-plugin-validation/src/main/groovy/grails/validation/ConstrainedDelegate.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.validation
import grails.gorm.validation.ConstrainedProperty
diff --git a/grails-plugin-validation/src/main/groovy/grails/validation/DefaultASTValidateableHelper.java b/grails-plugin-validation/src/main/groovy/grails/validation/DefaultASTValidateableHelper.java
index 6278b4d13a6..89e1c8a2a28 100644
--- a/grails-plugin-validation/src/main/groovy/grails/validation/DefaultASTValidateableHelper.java
+++ b/grails-plugin-validation/src/main/groovy/grails/validation/DefaultASTValidateableHelper.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-validation/src/main/groovy/grails/validation/Validateable.groovy b/grails-plugin-validation/src/main/groovy/grails/validation/Validateable.groovy
index d1f2b02947f..b33655ac830 100644
--- a/grails-plugin-validation/src/main/groovy/grails/validation/Validateable.groovy
+++ b/grails-plugin-validation/src/main/groovy/grails/validation/Validateable.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-validation/src/main/groovy/org/grails/web/plugins/support/DefaultConstrainedDiscovery.groovy b/grails-plugin-validation/src/main/groovy/org/grails/web/plugins/support/DefaultConstrainedDiscovery.groovy
index 2cf3feb9f9a..5d07efcbe18 100644
--- a/grails-plugin-validation/src/main/groovy/org/grails/web/plugins/support/DefaultConstrainedDiscovery.groovy
+++ b/grails-plugin-validation/src/main/groovy/org/grails/web/plugins/support/DefaultConstrainedDiscovery.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.plugins.support
import grails.gorm.validation.ConstrainedEntity
diff --git a/grails-plugin-validation/src/main/groovy/org/grails/web/plugins/support/ValidationSupport.groovy b/grails-plugin-validation/src/main/groovy/org/grails/web/plugins/support/ValidationSupport.groovy
index 7c70e569556..34e34f0db16 100644
--- a/grails-plugin-validation/src/main/groovy/org/grails/web/plugins/support/ValidationSupport.groovy
+++ b/grails-plugin-validation/src/main/groovy/org/grails/web/plugins/support/ValidationSupport.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-plugin-validation/src/test/groovy/grails/validation/CommandObjectConstraintGettersSpec.groovy b/grails-plugin-validation/src/test/groovy/grails/validation/CommandObjectConstraintGettersSpec.groovy
index 55946e7fff4..372006c9b4d 100644
--- a/grails-plugin-validation/src/test/groovy/grails/validation/CommandObjectConstraintGettersSpec.groovy
+++ b/grails-plugin-validation/src/test/groovy/grails/validation/CommandObjectConstraintGettersSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.validation
import spock.lang.Ignore
diff --git a/grails-plugin-validation/src/test/groovy/grails/validation/DefaultASTValidateableHelperSpec.groovy b/grails-plugin-validation/src/test/groovy/grails/validation/DefaultASTValidateableHelperSpec.groovy
index f1d104d4d8f..0c6ab333557 100644
--- a/grails-plugin-validation/src/test/groovy/grails/validation/DefaultASTValidateableHelperSpec.groovy
+++ b/grails-plugin-validation/src/test/groovy/grails/validation/DefaultASTValidateableHelperSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.validation
import grails.util.Holders
diff --git a/grails-plugin-validation/src/test/groovy/grails/validation/MappingContextBuilder.groovy b/grails-plugin-validation/src/test/groovy/grails/validation/MappingContextBuilder.groovy
index af7eefbc881..30612939207 100644
--- a/grails-plugin-validation/src/test/groovy/grails/validation/MappingContextBuilder.groovy
+++ b/grails-plugin-validation/src/test/groovy/grails/validation/MappingContextBuilder.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.validation
import grails.core.GrailsApplication
diff --git a/grails-plugin-validation/src/test/groovy/grails/validation/SerializableValidateableSpec.groovy b/grails-plugin-validation/src/test/groovy/grails/validation/SerializableValidateableSpec.groovy
index b4d6d4a7fea..782e1528e9b 100644
--- a/grails-plugin-validation/src/test/groovy/grails/validation/SerializableValidateableSpec.groovy
+++ b/grails-plugin-validation/src/test/groovy/grails/validation/SerializableValidateableSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.validation
import spock.lang.Issue
diff --git a/grails-plugin-validation/src/test/groovy/grails/validation/SomeJavaClass.java b/grails-plugin-validation/src/test/groovy/grails/validation/SomeJavaClass.java
index 65f5c93d01b..698354a4bcc 100644
--- a/grails-plugin-validation/src/test/groovy/grails/validation/SomeJavaClass.java
+++ b/grails-plugin-validation/src/test/groovy/grails/validation/SomeJavaClass.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.validation;
diff --git a/grails-plugin-validation/src/test/groovy/grails/validation/TestClass.java b/grails-plugin-validation/src/test/groovy/grails/validation/TestClass.java
index 2d402401642..dc69b212df3 100644
--- a/grails-plugin-validation/src/test/groovy/grails/validation/TestClass.java
+++ b/grails-plugin-validation/src/test/groovy/grails/validation/TestClass.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package grails.validation;
import java.math.BigDecimal;
diff --git a/grails-plugin-validation/src/test/groovy/grails/validation/ValidateableMockSpec.groovy b/grails-plugin-validation/src/test/groovy/grails/validation/ValidateableMockSpec.groovy
index 38a01b992eb..cb2cfc7a9ec 100644
--- a/grails-plugin-validation/src/test/groovy/grails/validation/ValidateableMockSpec.groovy
+++ b/grails-plugin-validation/src/test/groovy/grails/validation/ValidateableMockSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.validation
import spock.lang.Issue
diff --git a/grails-plugin-validation/src/test/groovy/grails/validation/ValidateableTraitAdHocSpec.groovy b/grails-plugin-validation/src/test/groovy/grails/validation/ValidateableTraitAdHocSpec.groovy
index 12f18487df0..6b39cfdf7ea 100644
--- a/grails-plugin-validation/src/test/groovy/grails/validation/ValidateableTraitAdHocSpec.groovy
+++ b/grails-plugin-validation/src/test/groovy/grails/validation/ValidateableTraitAdHocSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.validation
import grails.util.ClosureToMapPopulator
diff --git a/grails-plugin-validation/src/test/groovy/grails/validation/ValidateableTraitSpec.groovy b/grails-plugin-validation/src/test/groovy/grails/validation/ValidateableTraitSpec.groovy
index d160ad881c5..0a49f2d8783 100644
--- a/grails-plugin-validation/src/test/groovy/grails/validation/ValidateableTraitSpec.groovy
+++ b/grails-plugin-validation/src/test/groovy/grails/validation/ValidateableTraitSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.validation
import grails.util.ClosureToMapPopulator
diff --git a/grails-spring/src/main/groovy/grails/spring/BeanBuilder.java b/grails-spring/src/main/groovy/grails/spring/BeanBuilder.java
index 51dd35e6ac6..b1d7b650edb 100644
--- a/grails-spring/src/main/groovy/grails/spring/BeanBuilder.java
+++ b/grails-spring/src/main/groovy/grails/spring/BeanBuilder.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-spring/src/main/groovy/grails/spring/DynamicElementReader.groovy b/grails-spring/src/main/groovy/grails/spring/DynamicElementReader.groovy
index 7e5815f5c7f..cf56d695117 100644
--- a/grails-spring/src/main/groovy/grails/spring/DynamicElementReader.groovy
+++ b/grails-spring/src/main/groovy/grails/spring/DynamicElementReader.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-spring/src/main/groovy/org/grails/spring/BeanConfiguration.java b/grails-spring/src/main/groovy/org/grails/spring/BeanConfiguration.java
index a483adc406c..3bc887e3a20 100644
--- a/grails-spring/src/main/groovy/org/grails/spring/BeanConfiguration.java
+++ b/grails-spring/src/main/groovy/org/grails/spring/BeanConfiguration.java
@@ -1,141 +1,141 @@
-/*
- * Copyright 2004-2005 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.grails.spring;
-
-import org.springframework.beans.factory.config.BeanDefinition;
-import org.springframework.beans.factory.support.AbstractBeanDefinition;
-
-/**
- * Represents a runtime bean configuration.
- *
- * Credit must go to Solomon Duskis and the
- * article: http://jroller.com/page/Solomon?entry=programmatic_configuration_in_spring
- *
- * @author Graeme
- * @since 0.3
- */
-public interface BeanConfiguration {
-
- String AUTOWIRE_BY_TYPE = "byType";
- String AUTOWIRE_BY_NAME = "byName";
-
- /**
- * @return The name of the bean
- */
- String getName();
-
- /**
- * @return true if the bean is singleton
- */
- boolean isSingleton();
-
- /**
- * @return The Spring bean definition instance
- */
- AbstractBeanDefinition getBeanDefinition();
-
- /**
- * Adds a property value to this bean.
- * @param propertyName The name of the property
- * @param propertyValue The value of the property
- *
- * @return Returns this bean configuration
- */
- BeanConfiguration addProperty(String propertyName, Object propertyValue);
-
- /**
- * Sets the name of the method to call when destroying the bean.
- *
- * @param methodName The method name
- * @return This bean configuration
- */
- BeanConfiguration setDestroyMethod(String methodName);
-
- /**
- * Sets the names of the beans this bean configuration depends on
- *
- * @param dependsOn Bean names it depends on
- * @return This bean configuration
- */
- BeanConfiguration setDependsOn(String[] dependsOn);
-
- /**
- *
- * @param beanName
- * @return This BeanConfiguration
- */
- BeanConfiguration setFactoryBean(String beanName);
-
- /**
- *
- * @param methodName
- * @return This BeanConfiguration
- */
- BeanConfiguration setFactoryMethod(String methodName);
-
- /**
- * Sets the autowire type, either "byType" or "byName"
- *
- * @param type The type
- * @return This BeanConfiguration
- */
- BeanConfiguration setAutowire(String type);
-
- /**
- * Sets the name of the bean in the app ctx.
- * @param beanName The bean name
- */
- void setName(String beanName);
-
- /**
- * Returns true if the bean config has the name property set.
- * @param name The name of the property
- * @return true if it does have a property with the given name
- */
- boolean hasProperty(String name);
-
- /**
- * Returns the value of the given property or throws a MissingPropertyException.
- *
- * @param name The name of the property
- * @return The value of the property
- */
- Object getPropertyValue(String name);
-
- /**
- * Sets a property value on the bean configuration
- *
- * @param property The name of the property
- * @param newValue The value
- */
- void setPropertyValue(String property, Object newValue);
-
- /**
- * Sets the BeanConfiguration as an Abstract bean definition
- * @param isAbstract Whether its abstract or not
- * @return This BeanConfiguration object
- */
- BeanConfiguration setAbstract(boolean isAbstract);
-
- /**
- * Sets the name of the parent bean.
- *
- * @param name Either a string which is the name of the bean, a RuntimeBeanReference or a BeanConfiguration
- */
- void setParent(Object name);
-
- void setBeanDefinition(BeanDefinition definition);
-}
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.grails.spring;
+
+import org.springframework.beans.factory.config.BeanDefinition;
+import org.springframework.beans.factory.support.AbstractBeanDefinition;
+
+/**
+ * Represents a runtime bean configuration.
+ *
+ * Credit must go to Solomon Duskis and the
+ * article: http://jroller.com/page/Solomon?entry=programmatic_configuration_in_spring
+ *
+ * @author Graeme
+ * @since 0.3
+ */
+public interface BeanConfiguration {
+
+ String AUTOWIRE_BY_TYPE = "byType";
+ String AUTOWIRE_BY_NAME = "byName";
+
+ /**
+ * @return The name of the bean
+ */
+ String getName();
+
+ /**
+ * @return true if the bean is singleton
+ */
+ boolean isSingleton();
+
+ /**
+ * @return The Spring bean definition instance
+ */
+ AbstractBeanDefinition getBeanDefinition();
+
+ /**
+ * Adds a property value to this bean.
+ * @param propertyName The name of the property
+ * @param propertyValue The value of the property
+ *
+ * @return Returns this bean configuration
+ */
+ BeanConfiguration addProperty(String propertyName, Object propertyValue);
+
+ /**
+ * Sets the name of the method to call when destroying the bean.
+ *
+ * @param methodName The method name
+ * @return This bean configuration
+ */
+ BeanConfiguration setDestroyMethod(String methodName);
+
+ /**
+ * Sets the names of the beans this bean configuration depends on
+ *
+ * @param dependsOn Bean names it depends on
+ * @return This bean configuration
+ */
+ BeanConfiguration setDependsOn(String[] dependsOn);
+
+ /**
+ *
+ * @param beanName
+ * @return This BeanConfiguration
+ */
+ BeanConfiguration setFactoryBean(String beanName);
+
+ /**
+ *
+ * @param methodName
+ * @return This BeanConfiguration
+ */
+ BeanConfiguration setFactoryMethod(String methodName);
+
+ /**
+ * Sets the autowire type, either "byType" or "byName"
+ *
+ * @param type The type
+ * @return This BeanConfiguration
+ */
+ BeanConfiguration setAutowire(String type);
+
+ /**
+ * Sets the name of the bean in the app ctx.
+ * @param beanName The bean name
+ */
+ void setName(String beanName);
+
+ /**
+ * Returns true if the bean config has the name property set.
+ * @param name The name of the property
+ * @return true if it does have a property with the given name
+ */
+ boolean hasProperty(String name);
+
+ /**
+ * Returns the value of the given property or throws a MissingPropertyException.
+ *
+ * @param name The name of the property
+ * @return The value of the property
+ */
+ Object getPropertyValue(String name);
+
+ /**
+ * Sets a property value on the bean configuration
+ *
+ * @param property The name of the property
+ * @param newValue The value
+ */
+ void setPropertyValue(String property, Object newValue);
+
+ /**
+ * Sets the BeanConfiguration as an Abstract bean definition
+ * @param isAbstract Whether its abstract or not
+ * @return This BeanConfiguration object
+ */
+ BeanConfiguration setAbstract(boolean isAbstract);
+
+ /**
+ * Sets the name of the parent bean.
+ *
+ * @param name Either a string which is the name of the bean, a RuntimeBeanReference or a BeanConfiguration
+ */
+ void setParent(Object name);
+
+ void setBeanDefinition(BeanDefinition definition);
+}
diff --git a/grails-spring/src/main/groovy/org/grails/spring/DefaultBeanConfiguration.java b/grails-spring/src/main/groovy/org/grails/spring/DefaultBeanConfiguration.java
index b7ec269684d..e0665defad3 100644
--- a/grails-spring/src/main/groovy/org/grails/spring/DefaultBeanConfiguration.java
+++ b/grails-spring/src/main/groovy/org/grails/spring/DefaultBeanConfiguration.java
@@ -1,317 +1,317 @@
-/*
- * Copyright 2004-2005 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.grails.spring;
-
-import groovy.lang.GroovyObjectSupport;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
-import org.springframework.beans.BeanWrapper;
-import org.springframework.beans.BeanWrapperImpl;
-import org.springframework.beans.PropertyValue;
-import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
-import org.springframework.beans.factory.config.BeanDefinition;
-import org.springframework.beans.factory.config.ConstructorArgumentValues;
-import org.springframework.beans.factory.config.RuntimeBeanReference;
-import org.springframework.beans.factory.support.AbstractBeanDefinition;
-import org.springframework.beans.factory.support.GenericBeanDefinition;
-import org.springframework.context.annotation.Lazy;
-import org.springframework.util.Assert;
-
-/**
- * Default implementation of the BeanConfiguration interface .
- *
- * Credit must go to Solomon Duskis and the
- * article: http://jroller.com/page/Solomon?entry=programmatic_configuration_in_spring
- *
- * @author Graeme
- * @since 0.3
- */
-public class DefaultBeanConfiguration extends GroovyObjectSupport implements BeanConfiguration {
-
- private static final String AUTOWIRE = "autowire";
- private static final String SINGLETON = "singleton";
- private static final String CONSTRUCTOR_ARGS = "constructorArgs";
- private static final String DESTROY_METHOD = "destroyMethod";
- private static final String FACTORY_BEAN = "factoryBean";
- private static final String FACTORY_METHOD = "factoryMethod";
- private static final String INIT_METHOD = "initMethod";
- private static final String BY_NAME = "byName";
- private static final String PARENT = "parent";
- private static final String BY_TYPE = "byType";
- private static final String BY_CONSTRUCTOR = "constructor";
- private static final List DYNAMIC_PROPS = Arrays.asList(
- AUTOWIRE,
- CONSTRUCTOR_ARGS,
- DESTROY_METHOD,
- FACTORY_BEAN,
- FACTORY_METHOD,
- INIT_METHOD,
- BY_NAME,
- BY_TYPE,
- BY_CONSTRUCTOR);
-
- private String parentName;
-
- @Override
- public Object getProperty(String property) {
- @SuppressWarnings("unused")
- AbstractBeanDefinition bd = getBeanDefinition();
- if (wrapper.isReadableProperty(property)) {
- return wrapper.getPropertyValue(property);
- }
- if (DYNAMIC_PROPS.contains(property)) {
- return null;
- }
- return super.getProperty(property);
- }
-
- @Override
- public void setProperty(String property, Object newValue) {
- if (PARENT.equals(property)) {
- setParent(newValue);
- return;
- }
-
- AbstractBeanDefinition bd = getBeanDefinition();
- if (AUTOWIRE.equals(property)) {
- if (BY_NAME.equals(newValue)) {
- bd.setAutowireMode(AutowireCapableBeanFactory.AUTOWIRE_BY_NAME);
- }
- else if (BY_TYPE.equals(newValue)) {
- bd.setAutowireMode(AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE);
- }
- else if (Boolean.TRUE.equals(newValue)) {
- bd.setAutowireMode(AutowireCapableBeanFactory.AUTOWIRE_BY_NAME);
- }
- else if (BY_CONSTRUCTOR.equals(newValue)) {
- bd.setAutowireMode(AutowireCapableBeanFactory.AUTOWIRE_CONSTRUCTOR);
- }
- }
- // constructorArgs
- else if (CONSTRUCTOR_ARGS.equals(property) && newValue instanceof List>) {
- ConstructorArgumentValues cav = new ConstructorArgumentValues();
- for (Object e : (List>)newValue) {
- cav.addGenericArgumentValue(e);
- }
- bd.setConstructorArgumentValues(cav);
- }
- // destroyMethod
- else if (DESTROY_METHOD.equals(property)) {
- if (newValue != null) {
- bd.setDestroyMethodName(newValue.toString());
- }
- }
- // factoryBean
- else if (FACTORY_BEAN.equals(property)) {
- if (newValue != null) {
- bd.setFactoryBeanName(newValue.toString());
- }
- }
- // factoryMethod
- else if (FACTORY_METHOD.equals(property)) {
- if (newValue != null) {
- bd.setFactoryMethodName(newValue.toString());
- }
- }
- // initMethod
- else if (INIT_METHOD.equals(property)) {
- if (newValue != null) {
- bd.setInitMethodName(newValue.toString());
- }
- }
- // singleton property
- else if(SINGLETON.equals(property)) {
- bd.setScope(Boolean.TRUE.equals(newValue) ? BeanDefinition.SCOPE_SINGLETON : BeanDefinition.SCOPE_PROTOTYPE);
- }
- else if (wrapper.isWritableProperty(property)) {
- wrapper.setPropertyValue(property, newValue);
- }
- // autowire
- else {
- super.setProperty(property, newValue);
- }
- }
-
- private Class> clazz;
- private String name;
- private boolean singleton = true;
- private AbstractBeanDefinition definition;
- private Collection> constructorArgs = Collections.emptyList();
- private BeanWrapper wrapper;
-
- public DefaultBeanConfiguration(String name, Class> clazz) {
- this.name = name;
- this.clazz = clazz;
- }
-
- public DefaultBeanConfiguration(String name, Class> clazz, boolean prototype) {
- this(name,clazz, Collections.emptyList());
- singleton = !prototype;
- }
-
- public DefaultBeanConfiguration(String name) {
- this(name,null, Collections.emptyList());
- }
-
- public DefaultBeanConfiguration(Class> clazz2) {
- clazz = clazz2;
- }
-
- public DefaultBeanConfiguration(String name2, Class> clazz2, Collection> args) {
- name = name2;
- clazz = clazz2;
- constructorArgs = args;
- }
-
- public DefaultBeanConfiguration(String name2, boolean prototype) {
- this(name2,null, Collections.emptyList());
- singleton = !prototype;
- }
-
- public DefaultBeanConfiguration(Class> clazz2, Collection> constructorArguments) {
- clazz = clazz2;
- constructorArgs = constructorArguments;
- }
-
- public String getName() {
- return name;
- }
-
- public boolean isSingleton() {
- return singleton;
- }
-
- public AbstractBeanDefinition getBeanDefinition() {
- if (definition == null) {
- definition = createBeanDefinition();
- }
- return definition;
- }
-
- public void setBeanDefinition(BeanDefinition definition) {
- this.definition = (AbstractBeanDefinition)definition;
- }
-
- protected AbstractBeanDefinition createBeanDefinition() {
- AbstractBeanDefinition bd = new GenericBeanDefinition();
- if (!constructorArgs.isEmpty()) {
- ConstructorArgumentValues cav = new ConstructorArgumentValues();
- for (Object constructorArg : constructorArgs) {
- cav.addGenericArgumentValue(constructorArg);
- }
- bd.setConstructorArgumentValues(cav);
- }
- if(clazz != null) {
- bd.setLazyInit( clazz.getAnnotation(Lazy.class) != null);
- bd.setBeanClass(clazz);
- }
- bd.setScope(singleton ? AbstractBeanDefinition.SCOPE_SINGLETON : AbstractBeanDefinition.SCOPE_PROTOTYPE);
- if (parentName != null) {
- bd.setParentName(parentName);
- }
- wrapper = new BeanWrapperImpl(bd);
- return bd;
- }
-
- public BeanConfiguration addProperty(String propertyName, Object propertyValue) {
- if (propertyValue instanceof BeanConfiguration) {
- propertyValue = ((BeanConfiguration)propertyValue).getBeanDefinition();
- }
- getBeanDefinition()
- .getPropertyValues()
- .addPropertyValue(propertyName,propertyValue);
-
- return this;
- }
-
- public BeanConfiguration setDestroyMethod(String methodName) {
- getBeanDefinition().setDestroyMethodName(methodName);
- return this;
- }
-
- public BeanConfiguration setDependsOn(String[] dependsOn) {
- getBeanDefinition().setDependsOn(dependsOn);
- return this;
- }
-
- public BeanConfiguration setFactoryBean(String beanName) {
- getBeanDefinition().setFactoryBeanName(beanName);
- return this;
- }
-
- public BeanConfiguration setFactoryMethod(String methodName) {
- getBeanDefinition().setFactoryMethodName(methodName);
- return this;
- }
-
- public BeanConfiguration setAutowire(String type) {
- if ("byName".equals(type)) {
- getBeanDefinition().setAutowireMode(AbstractBeanDefinition.AUTOWIRE_BY_NAME);
- }
- else if ("byType".equals(type)) {
- getBeanDefinition().setAutowireMode(AbstractBeanDefinition.AUTOWIRE_BY_TYPE);
- }
- return this;
- }
-
- public void setName(String beanName) {
- name = beanName;
- }
-
- public Object getPropertyValue(String propName) {
- PropertyValue propertyValue = getBeanDefinition()
- .getPropertyValues()
- .getPropertyValue(propName);
- if (propertyValue == null) {
- return null;
- }
-
- return propertyValue.getValue();
- }
-
- public boolean hasProperty(String propName) {
- return getBeanDefinition().getPropertyValues().contains(propName);
- }
-
- public void setPropertyValue(String property, Object newValue) {
- getBeanDefinition().getPropertyValues().addPropertyValue(property, newValue);
- }
-
- public BeanConfiguration setAbstract(boolean isAbstract) {
- getBeanDefinition().setAbstract(isAbstract);
- return this;
- }
-
- public void setParent(Object obj) {
- Assert.notNull(obj, "Parent bean cannot be set to a null runtime bean reference!");
-
- if (obj instanceof String) {
- parentName = (String)obj;
- }
- else if (obj instanceof RuntimeBeanReference) {
- parentName = ((RuntimeBeanReference)obj).getBeanName();
- }
- else if (obj instanceof BeanConfiguration) {
- parentName = ((BeanConfiguration)obj).getName();
- }
- getBeanDefinition().setParentName(parentName);
- setAbstract(false);
- }
-}
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.grails.spring;
+
+import groovy.lang.GroovyObjectSupport;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+import org.springframework.beans.BeanWrapper;
+import org.springframework.beans.BeanWrapperImpl;
+import org.springframework.beans.PropertyValue;
+import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
+import org.springframework.beans.factory.config.BeanDefinition;
+import org.springframework.beans.factory.config.ConstructorArgumentValues;
+import org.springframework.beans.factory.config.RuntimeBeanReference;
+import org.springframework.beans.factory.support.AbstractBeanDefinition;
+import org.springframework.beans.factory.support.GenericBeanDefinition;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.util.Assert;
+
+/**
+ * Default implementation of the BeanConfiguration interface .
+ *
+ * Credit must go to Solomon Duskis and the
+ * article: http://jroller.com/page/Solomon?entry=programmatic_configuration_in_spring
+ *
+ * @author Graeme
+ * @since 0.3
+ */
+public class DefaultBeanConfiguration extends GroovyObjectSupport implements BeanConfiguration {
+
+ private static final String AUTOWIRE = "autowire";
+ private static final String SINGLETON = "singleton";
+ private static final String CONSTRUCTOR_ARGS = "constructorArgs";
+ private static final String DESTROY_METHOD = "destroyMethod";
+ private static final String FACTORY_BEAN = "factoryBean";
+ private static final String FACTORY_METHOD = "factoryMethod";
+ private static final String INIT_METHOD = "initMethod";
+ private static final String BY_NAME = "byName";
+ private static final String PARENT = "parent";
+ private static final String BY_TYPE = "byType";
+ private static final String BY_CONSTRUCTOR = "constructor";
+ private static final List DYNAMIC_PROPS = Arrays.asList(
+ AUTOWIRE,
+ CONSTRUCTOR_ARGS,
+ DESTROY_METHOD,
+ FACTORY_BEAN,
+ FACTORY_METHOD,
+ INIT_METHOD,
+ BY_NAME,
+ BY_TYPE,
+ BY_CONSTRUCTOR);
+
+ private String parentName;
+
+ @Override
+ public Object getProperty(String property) {
+ @SuppressWarnings("unused")
+ AbstractBeanDefinition bd = getBeanDefinition();
+ if (wrapper.isReadableProperty(property)) {
+ return wrapper.getPropertyValue(property);
+ }
+ if (DYNAMIC_PROPS.contains(property)) {
+ return null;
+ }
+ return super.getProperty(property);
+ }
+
+ @Override
+ public void setProperty(String property, Object newValue) {
+ if (PARENT.equals(property)) {
+ setParent(newValue);
+ return;
+ }
+
+ AbstractBeanDefinition bd = getBeanDefinition();
+ if (AUTOWIRE.equals(property)) {
+ if (BY_NAME.equals(newValue)) {
+ bd.setAutowireMode(AutowireCapableBeanFactory.AUTOWIRE_BY_NAME);
+ }
+ else if (BY_TYPE.equals(newValue)) {
+ bd.setAutowireMode(AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE);
+ }
+ else if (Boolean.TRUE.equals(newValue)) {
+ bd.setAutowireMode(AutowireCapableBeanFactory.AUTOWIRE_BY_NAME);
+ }
+ else if (BY_CONSTRUCTOR.equals(newValue)) {
+ bd.setAutowireMode(AutowireCapableBeanFactory.AUTOWIRE_CONSTRUCTOR);
+ }
+ }
+ // constructorArgs
+ else if (CONSTRUCTOR_ARGS.equals(property) && newValue instanceof List>) {
+ ConstructorArgumentValues cav = new ConstructorArgumentValues();
+ for (Object e : (List>)newValue) {
+ cav.addGenericArgumentValue(e);
+ }
+ bd.setConstructorArgumentValues(cav);
+ }
+ // destroyMethod
+ else if (DESTROY_METHOD.equals(property)) {
+ if (newValue != null) {
+ bd.setDestroyMethodName(newValue.toString());
+ }
+ }
+ // factoryBean
+ else if (FACTORY_BEAN.equals(property)) {
+ if (newValue != null) {
+ bd.setFactoryBeanName(newValue.toString());
+ }
+ }
+ // factoryMethod
+ else if (FACTORY_METHOD.equals(property)) {
+ if (newValue != null) {
+ bd.setFactoryMethodName(newValue.toString());
+ }
+ }
+ // initMethod
+ else if (INIT_METHOD.equals(property)) {
+ if (newValue != null) {
+ bd.setInitMethodName(newValue.toString());
+ }
+ }
+ // singleton property
+ else if(SINGLETON.equals(property)) {
+ bd.setScope(Boolean.TRUE.equals(newValue) ? BeanDefinition.SCOPE_SINGLETON : BeanDefinition.SCOPE_PROTOTYPE);
+ }
+ else if (wrapper.isWritableProperty(property)) {
+ wrapper.setPropertyValue(property, newValue);
+ }
+ // autowire
+ else {
+ super.setProperty(property, newValue);
+ }
+ }
+
+ private Class> clazz;
+ private String name;
+ private boolean singleton = true;
+ private AbstractBeanDefinition definition;
+ private Collection> constructorArgs = Collections.emptyList();
+ private BeanWrapper wrapper;
+
+ public DefaultBeanConfiguration(String name, Class> clazz) {
+ this.name = name;
+ this.clazz = clazz;
+ }
+
+ public DefaultBeanConfiguration(String name, Class> clazz, boolean prototype) {
+ this(name,clazz, Collections.emptyList());
+ singleton = !prototype;
+ }
+
+ public DefaultBeanConfiguration(String name) {
+ this(name,null, Collections.emptyList());
+ }
+
+ public DefaultBeanConfiguration(Class> clazz2) {
+ clazz = clazz2;
+ }
+
+ public DefaultBeanConfiguration(String name2, Class> clazz2, Collection> args) {
+ name = name2;
+ clazz = clazz2;
+ constructorArgs = args;
+ }
+
+ public DefaultBeanConfiguration(String name2, boolean prototype) {
+ this(name2,null, Collections.emptyList());
+ singleton = !prototype;
+ }
+
+ public DefaultBeanConfiguration(Class> clazz2, Collection> constructorArguments) {
+ clazz = clazz2;
+ constructorArgs = constructorArguments;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public boolean isSingleton() {
+ return singleton;
+ }
+
+ public AbstractBeanDefinition getBeanDefinition() {
+ if (definition == null) {
+ definition = createBeanDefinition();
+ }
+ return definition;
+ }
+
+ public void setBeanDefinition(BeanDefinition definition) {
+ this.definition = (AbstractBeanDefinition)definition;
+ }
+
+ protected AbstractBeanDefinition createBeanDefinition() {
+ AbstractBeanDefinition bd = new GenericBeanDefinition();
+ if (!constructorArgs.isEmpty()) {
+ ConstructorArgumentValues cav = new ConstructorArgumentValues();
+ for (Object constructorArg : constructorArgs) {
+ cav.addGenericArgumentValue(constructorArg);
+ }
+ bd.setConstructorArgumentValues(cav);
+ }
+ if(clazz != null) {
+ bd.setLazyInit( clazz.getAnnotation(Lazy.class) != null);
+ bd.setBeanClass(clazz);
+ }
+ bd.setScope(singleton ? AbstractBeanDefinition.SCOPE_SINGLETON : AbstractBeanDefinition.SCOPE_PROTOTYPE);
+ if (parentName != null) {
+ bd.setParentName(parentName);
+ }
+ wrapper = new BeanWrapperImpl(bd);
+ return bd;
+ }
+
+ public BeanConfiguration addProperty(String propertyName, Object propertyValue) {
+ if (propertyValue instanceof BeanConfiguration) {
+ propertyValue = ((BeanConfiguration)propertyValue).getBeanDefinition();
+ }
+ getBeanDefinition()
+ .getPropertyValues()
+ .addPropertyValue(propertyName,propertyValue);
+
+ return this;
+ }
+
+ public BeanConfiguration setDestroyMethod(String methodName) {
+ getBeanDefinition().setDestroyMethodName(methodName);
+ return this;
+ }
+
+ public BeanConfiguration setDependsOn(String[] dependsOn) {
+ getBeanDefinition().setDependsOn(dependsOn);
+ return this;
+ }
+
+ public BeanConfiguration setFactoryBean(String beanName) {
+ getBeanDefinition().setFactoryBeanName(beanName);
+ return this;
+ }
+
+ public BeanConfiguration setFactoryMethod(String methodName) {
+ getBeanDefinition().setFactoryMethodName(methodName);
+ return this;
+ }
+
+ public BeanConfiguration setAutowire(String type) {
+ if ("byName".equals(type)) {
+ getBeanDefinition().setAutowireMode(AbstractBeanDefinition.AUTOWIRE_BY_NAME);
+ }
+ else if ("byType".equals(type)) {
+ getBeanDefinition().setAutowireMode(AbstractBeanDefinition.AUTOWIRE_BY_TYPE);
+ }
+ return this;
+ }
+
+ public void setName(String beanName) {
+ name = beanName;
+ }
+
+ public Object getPropertyValue(String propName) {
+ PropertyValue propertyValue = getBeanDefinition()
+ .getPropertyValues()
+ .getPropertyValue(propName);
+ if (propertyValue == null) {
+ return null;
+ }
+
+ return propertyValue.getValue();
+ }
+
+ public boolean hasProperty(String propName) {
+ return getBeanDefinition().getPropertyValues().contains(propName);
+ }
+
+ public void setPropertyValue(String property, Object newValue) {
+ getBeanDefinition().getPropertyValues().addPropertyValue(property, newValue);
+ }
+
+ public BeanConfiguration setAbstract(boolean isAbstract) {
+ getBeanDefinition().setAbstract(isAbstract);
+ return this;
+ }
+
+ public void setParent(Object obj) {
+ Assert.notNull(obj, "Parent bean cannot be set to a null runtime bean reference!");
+
+ if (obj instanceof String) {
+ parentName = (String)obj;
+ }
+ else if (obj instanceof RuntimeBeanReference) {
+ parentName = ((RuntimeBeanReference)obj).getBeanName();
+ }
+ else if (obj instanceof BeanConfiguration) {
+ parentName = ((BeanConfiguration)obj).getName();
+ }
+ getBeanDefinition().setParentName(parentName);
+ setAbstract(false);
+ }
+}
diff --git a/grails-spring/src/main/groovy/org/grails/spring/DefaultRuntimeSpringConfiguration.java b/grails-spring/src/main/groovy/org/grails/spring/DefaultRuntimeSpringConfiguration.java
index d0ccd2aca95..8f97393e612 100644
--- a/grails-spring/src/main/groovy/org/grails/spring/DefaultRuntimeSpringConfiguration.java
+++ b/grails-spring/src/main/groovy/org/grails/spring/DefaultRuntimeSpringConfiguration.java
@@ -1,363 +1,363 @@
-/*
- * Copyright 2004-2005 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.grails.spring;
-
-import groovy.lang.GroovySystem;
-import groovy.lang.MetaClass;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.springframework.beans.PropertyValue;
-import org.springframework.beans.factory.ListableBeanFactory;
-import org.springframework.beans.factory.config.BeanDefinition;
-import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
-import org.springframework.beans.factory.support.AbstractBeanDefinition;
-import org.springframework.beans.factory.support.BeanDefinitionRegistry;
-import org.springframework.beans.factory.support.DefaultListableBeanFactory;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.support.GenericApplicationContext;
-import org.springframework.util.Assert;
-
-/**
- * A programmable runtime Spring configuration that allows a spring ApplicationContext
- * to be constructed at runtime.
- *
- * Credit must go to Solomon Duskis and the
- * article: http://jroller.com/page/Solomon?entry=programmatic_configuration_in_spring
- *
- * @author Graeme
- * @since 0.3
- */
-public class DefaultRuntimeSpringConfiguration implements RuntimeSpringConfiguration {
-
- private static final Log LOG = LogFactory.getLog(DefaultRuntimeSpringConfiguration.class);
- protected GenericApplicationContext context;
- private Map beanConfigs = new HashMap();
- private Map beanDefinitions = new HashMap();
- private Set beanNames = new LinkedHashSet();
- protected ApplicationContext parent;
- protected ClassLoader classLoader;
- protected Map> aliases = new HashMap>();
- protected ListableBeanFactory beanFactory;
-
- /**
- * Creates the ApplicationContext instance. Subclasses can override to customise the used ApplicationContext
- *
- * @param parentCtx The parent ApplicationContext instance. Can be null.
- *
- * @return An instance of GenericApplicationContext
- */
- protected GenericApplicationContext createApplicationContext(ApplicationContext parentCtx) {
- if (parentCtx != null && beanFactory != null) {
- Assert.isInstanceOf(DefaultListableBeanFactory.class, beanFactory,
- "ListableBeanFactory set must be a subclass of DefaultListableBeanFactory");
-
- return new GrailsApplicationContext((DefaultListableBeanFactory) beanFactory,parentCtx);
- }
-
- if (beanFactory != null) {
- Assert.isInstanceOf(DefaultListableBeanFactory.class, beanFactory,
- "ListableBeanFactory set must be a subclass of DefaultListableBeanFactory");
-
- return new GrailsApplicationContext((DefaultListableBeanFactory) beanFactory);
- }
-
- if (parentCtx != null) {
- return new GrailsApplicationContext(parentCtx);
- }
-
- return new GrailsApplicationContext();
- }
-
- public DefaultRuntimeSpringConfiguration() {
- super();
- }
-
- public DefaultRuntimeSpringConfiguration(ApplicationContext parent) {
- this(parent, null);
- }
-
- public DefaultRuntimeSpringConfiguration(ApplicationContext parent, ClassLoader cl) {
- this.parent = parent;
- classLoader = cl;
- }
-
- private void trySettingClassLoaderOnContextIfFoundInParent(ApplicationContext parentCtx) {
- if (parentCtx.containsBean("classLoader")) {
- Object cl = parentCtx.getBean("classLoader");
- if (cl instanceof ClassLoader) {
- setClassLoaderOnContext((ClassLoader)cl);
- }
- }
- }
-
- private void setClassLoaderOnContext(ClassLoader cl) {
- context.setClassLoader(cl);
- context.getBeanFactory().setBeanClassLoader(cl);
- }
-
- /**
- * Initialises the ApplicationContext instance.
- */
- protected void initialiseApplicationContext() {
- if (context != null) {
- return;
- }
-
- context = createApplicationContext(parent);
-
- if (parent != null && classLoader == null) {
- trySettingClassLoaderOnContextIfFoundInParent(parent);
- }
- else if (classLoader != null) {
- setClassLoaderOnContext(classLoader);
- }
-
- Assert.notNull(context, "ApplicationContext cannot be null");
- }
-
- public BeanConfiguration addSingletonBean(String name, @SuppressWarnings("rawtypes") Class clazz) {
- BeanConfiguration bc = new DefaultBeanConfiguration(name,clazz);
- registerBeanConfiguration(name, bc);
- return bc;
- }
-
- public BeanConfiguration addPrototypeBean(String name, @SuppressWarnings("rawtypes") Class clazz) {
- BeanConfiguration bc = new DefaultBeanConfiguration(name,clazz,true);
- registerBeanConfiguration(name, bc);
- return bc;
- }
-
- public ApplicationContext getApplicationContext() {
- long now = LOG.isDebugEnabled() ? System.currentTimeMillis() : 0;
- initialiseApplicationContext();
- registerBeansWithContext(context);
- context.refresh();
- if (LOG.isDebugEnabled()) {
- LOG.debug("Created ApplicationContext in " + (System.currentTimeMillis() - now) + "ms");
- }
- return context;
- }
-
- public ApplicationContext getUnrefreshedApplicationContext() {
- initialiseApplicationContext();
- return context;
- }
-
- public BeanConfiguration addSingletonBean(String name) {
- BeanConfiguration bc = new DefaultBeanConfiguration(name);
- registerBeanConfiguration(name, bc);
- return bc;
- }
-
- public BeanConfiguration createSingletonBean(@SuppressWarnings("rawtypes") Class clazz) {
- return new DefaultBeanConfiguration(clazz);
- }
-
- @SuppressWarnings("rawtypes")
- public BeanConfiguration addSingletonBean(String name, Class clazz, Collection args) {
- BeanConfiguration bc = new DefaultBeanConfiguration(name,clazz,args);
- registerBeanConfiguration(name, bc);
- return bc;
- }
-
- public BeanConfiguration addPrototypeBean(String name) {
- BeanConfiguration bc = new DefaultBeanConfiguration(name,true);
- registerBeanConfiguration(name, bc);
- return bc;
- }
-
- private void registerBeanConfiguration(String name, BeanConfiguration bc) {
- beanConfigs.put(name,bc);
- beanNames.add(name);
- }
-
- @SuppressWarnings("rawtypes")
- public BeanConfiguration createSingletonBean(Class clazz, Collection constructorArguments) {
- return new DefaultBeanConfiguration(clazz, constructorArguments);
- }
-
- public BeanConfiguration createPrototypeBean(String name) {
- return new DefaultBeanConfiguration(name,true);
- }
-
- public BeanConfiguration createSingletonBean(String name) {
- return new DefaultBeanConfiguration(name);
- }
-
- public void addBeanConfiguration(String beanName, BeanConfiguration beanConfiguration) {
- beanConfiguration.setName(beanName);
- registerBeanConfiguration(beanName, beanConfiguration);
- }
-
- public void addBeanDefinition(String name, BeanDefinition bd) {
- beanDefinitions.put(name,bd);
- beanConfigs.remove(name);
- beanNames.add(name);
- }
-
- public boolean containsBean(String name) {
- return beanNames.contains(name);
- }
-
- public BeanConfiguration getBeanConfig(String name) {
- return beanConfigs.get(name);
- }
-
- public AbstractBeanDefinition createBeanDefinition(String name) {
- if (containsBean(name)) {
- if (beanDefinitions.containsKey(name)) {
- return (AbstractBeanDefinition)beanDefinitions.get(name);
- }
- if (beanConfigs.containsKey(name)) {
- return beanConfigs.get(name).getBeanDefinition();
- }
- }
- return null;
- }
-
- public void registerPostProcessor(BeanFactoryPostProcessor processor) {
- initialiseApplicationContext();
- context.addBeanFactoryPostProcessor(processor);
- }
-
- public List getBeanNames() {
- return Collections.unmodifiableList(new ArrayList(beanNames));
- }
-
- public void registerBeansWithContext(GenericApplicationContext applicationContext) {
- registerBeansWithRegistry(applicationContext);
- }
-
- public void registerBeansWithRegistry(BeanDefinitionRegistry registry) {
- registerUnrefreshedBeansWithRegistry(registry);
- registerBeanConfigsWithRegistry(registry);
- registerBeanDefinitionsWithRegistry(registry);
- registerBeanAliasesWithRegistry(registry);
- }
-
- private void registerUnrefreshedBeansWithRegistry(BeanDefinitionRegistry registry) {
- if (context != null) {
- for (String beanName : context.getBeanDefinitionNames()) {
- registry.registerBeanDefinition(beanName, context.getBeanDefinition(beanName));
- }
- }
- }
-
- private void registerBeanConfigsWithRegistry(BeanDefinitionRegistry registry) {
- for (BeanConfiguration bc : beanConfigs.values()) {
- String beanName = bc.getName();
- if (LOG.isDebugEnabled()) {
- LOG.debug("[RuntimeConfiguration] Registering bean [" + beanName + "]");
- if (LOG.isTraceEnabled()) {
- PropertyValue[] pvs = bc.getBeanDefinition()
- .getPropertyValues()
- .getPropertyValues();
- for (PropertyValue pv : pvs) {
- LOG.trace("[RuntimeConfiguration] With property [" + pv.getName() + "] set to [" + pv.getValue() + "]");
- }
- }
- }
-
- registry.registerBeanDefinition(beanName, bc.getBeanDefinition());
- }
- }
-
- private void registerBeanDefinitionsWithRegistry(BeanDefinitionRegistry registry) {
- for (Object key : beanDefinitions.keySet()) {
- BeanDefinition bd = beanDefinitions.get(key);
- if (LOG.isDebugEnabled()) {
- LOG.debug("[RuntimeConfiguration] Registering bean [" + key + "]");
- if (LOG.isTraceEnabled()) {
- PropertyValue[] pvs = bd.getPropertyValues().getPropertyValues();
- for (PropertyValue pv : pvs) {
- LOG.trace("[RuntimeConfiguration] With property [" + pv.getName() + "] set to [" + pv.getValue() + "]");
- }
- }
- }
- final String beanName = key.toString();
- registry.registerBeanDefinition(beanName, bd);
- }
- }
-
- public void registerBeansWithConfig(RuntimeSpringConfiguration targetSpringConfig) {
- if (targetSpringConfig == null) {
- return;
- }
-
- ApplicationContext ctx = targetSpringConfig.getUnrefreshedApplicationContext();
- if (ctx instanceof BeanDefinitionRegistry) {
- final BeanDefinitionRegistry registry = (BeanDefinitionRegistry) ctx;
- registerUnrefreshedBeansWithRegistry(registry);
- registerBeansWithRegistry(registry);
- }
- for (Map.Entry beanEntry : beanConfigs.entrySet()) {
- targetSpringConfig.addBeanConfiguration(beanEntry.getKey(), beanEntry.getValue());
- }
- }
-
- private void registerBeanAliasesWithRegistry(BeanDefinitionRegistry beanDefinitionRegistry) {
- for (Map.Entry> entry : aliases.entrySet()) {
- String beanName = entry.getKey();
- List beanAliases = entry.getValue();
- if (beanAliases != null && !beanAliases.isEmpty()) {
- for (String alias : beanAliases) {
- beanDefinitionRegistry.registerAlias(beanName, alias);
- }
- }
- }
- }
-
- private void removeBeanDefinition(BeanDefinitionRegistry registry, String beanName) {
- MetaClass mc = GroovySystem.getMetaClassRegistry().getMetaClass(registry.getClass());
- if (!mc.respondsTo(registry, "removeBeanDefinition").isEmpty()) {
- mc.invokeMethod(registry, "removeBeanDefinition", new Object[] { beanName });
- }
- }
-
- public BeanConfiguration addAbstractBean(String name) {
- BeanConfiguration bc = new DefaultBeanConfiguration(name);
- bc.setAbstract(true);
- registerBeanConfiguration(name, bc);
- return bc;
- }
-
- public void addAlias(String alias, String beanName) {
- List beanAliases = aliases.get(beanName);
- if (beanAliases == null) {
- beanAliases = new ArrayList();
- aliases.put(beanName, beanAliases);
- }
- beanAliases.add(alias);
- }
-
- public BeanDefinition getBeanDefinition(String beanName) {
- return beanDefinitions.get(beanName);
- }
-
- public void setBeanFactory(ListableBeanFactory beanFactory) {
- this.beanFactory = beanFactory;
- }
-}
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.grails.spring;
+
+import groovy.lang.GroovySystem;
+import groovy.lang.MetaClass;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.PropertyValue;
+import org.springframework.beans.factory.ListableBeanFactory;
+import org.springframework.beans.factory.config.BeanDefinition;
+import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
+import org.springframework.beans.factory.support.AbstractBeanDefinition;
+import org.springframework.beans.factory.support.BeanDefinitionRegistry;
+import org.springframework.beans.factory.support.DefaultListableBeanFactory;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.support.GenericApplicationContext;
+import org.springframework.util.Assert;
+
+/**
+ * A programmable runtime Spring configuration that allows a spring ApplicationContext
+ * to be constructed at runtime.
+ *
+ * Credit must go to Solomon Duskis and the
+ * article: http://jroller.com/page/Solomon?entry=programmatic_configuration_in_spring
+ *
+ * @author Graeme
+ * @since 0.3
+ */
+public class DefaultRuntimeSpringConfiguration implements RuntimeSpringConfiguration {
+
+ private static final Log LOG = LogFactory.getLog(DefaultRuntimeSpringConfiguration.class);
+ protected GenericApplicationContext context;
+ private Map beanConfigs = new HashMap();
+ private Map beanDefinitions = new HashMap();
+ private Set beanNames = new LinkedHashSet();
+ protected ApplicationContext parent;
+ protected ClassLoader classLoader;
+ protected Map> aliases = new HashMap>();
+ protected ListableBeanFactory beanFactory;
+
+ /**
+ * Creates the ApplicationContext instance. Subclasses can override to customise the used ApplicationContext
+ *
+ * @param parentCtx The parent ApplicationContext instance. Can be null.
+ *
+ * @return An instance of GenericApplicationContext
+ */
+ protected GenericApplicationContext createApplicationContext(ApplicationContext parentCtx) {
+ if (parentCtx != null && beanFactory != null) {
+ Assert.isInstanceOf(DefaultListableBeanFactory.class, beanFactory,
+ "ListableBeanFactory set must be a subclass of DefaultListableBeanFactory");
+
+ return new GrailsApplicationContext((DefaultListableBeanFactory) beanFactory,parentCtx);
+ }
+
+ if (beanFactory != null) {
+ Assert.isInstanceOf(DefaultListableBeanFactory.class, beanFactory,
+ "ListableBeanFactory set must be a subclass of DefaultListableBeanFactory");
+
+ return new GrailsApplicationContext((DefaultListableBeanFactory) beanFactory);
+ }
+
+ if (parentCtx != null) {
+ return new GrailsApplicationContext(parentCtx);
+ }
+
+ return new GrailsApplicationContext();
+ }
+
+ public DefaultRuntimeSpringConfiguration() {
+ super();
+ }
+
+ public DefaultRuntimeSpringConfiguration(ApplicationContext parent) {
+ this(parent, null);
+ }
+
+ public DefaultRuntimeSpringConfiguration(ApplicationContext parent, ClassLoader cl) {
+ this.parent = parent;
+ classLoader = cl;
+ }
+
+ private void trySettingClassLoaderOnContextIfFoundInParent(ApplicationContext parentCtx) {
+ if (parentCtx.containsBean("classLoader")) {
+ Object cl = parentCtx.getBean("classLoader");
+ if (cl instanceof ClassLoader) {
+ setClassLoaderOnContext((ClassLoader)cl);
+ }
+ }
+ }
+
+ private void setClassLoaderOnContext(ClassLoader cl) {
+ context.setClassLoader(cl);
+ context.getBeanFactory().setBeanClassLoader(cl);
+ }
+
+ /**
+ * Initialises the ApplicationContext instance.
+ */
+ protected void initialiseApplicationContext() {
+ if (context != null) {
+ return;
+ }
+
+ context = createApplicationContext(parent);
+
+ if (parent != null && classLoader == null) {
+ trySettingClassLoaderOnContextIfFoundInParent(parent);
+ }
+ else if (classLoader != null) {
+ setClassLoaderOnContext(classLoader);
+ }
+
+ Assert.notNull(context, "ApplicationContext cannot be null");
+ }
+
+ public BeanConfiguration addSingletonBean(String name, @SuppressWarnings("rawtypes") Class clazz) {
+ BeanConfiguration bc = new DefaultBeanConfiguration(name,clazz);
+ registerBeanConfiguration(name, bc);
+ return bc;
+ }
+
+ public BeanConfiguration addPrototypeBean(String name, @SuppressWarnings("rawtypes") Class clazz) {
+ BeanConfiguration bc = new DefaultBeanConfiguration(name,clazz,true);
+ registerBeanConfiguration(name, bc);
+ return bc;
+ }
+
+ public ApplicationContext getApplicationContext() {
+ long now = LOG.isDebugEnabled() ? System.currentTimeMillis() : 0;
+ initialiseApplicationContext();
+ registerBeansWithContext(context);
+ context.refresh();
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Created ApplicationContext in " + (System.currentTimeMillis() - now) + "ms");
+ }
+ return context;
+ }
+
+ public ApplicationContext getUnrefreshedApplicationContext() {
+ initialiseApplicationContext();
+ return context;
+ }
+
+ public BeanConfiguration addSingletonBean(String name) {
+ BeanConfiguration bc = new DefaultBeanConfiguration(name);
+ registerBeanConfiguration(name, bc);
+ return bc;
+ }
+
+ public BeanConfiguration createSingletonBean(@SuppressWarnings("rawtypes") Class clazz) {
+ return new DefaultBeanConfiguration(clazz);
+ }
+
+ @SuppressWarnings("rawtypes")
+ public BeanConfiguration addSingletonBean(String name, Class clazz, Collection args) {
+ BeanConfiguration bc = new DefaultBeanConfiguration(name,clazz,args);
+ registerBeanConfiguration(name, bc);
+ return bc;
+ }
+
+ public BeanConfiguration addPrototypeBean(String name) {
+ BeanConfiguration bc = new DefaultBeanConfiguration(name,true);
+ registerBeanConfiguration(name, bc);
+ return bc;
+ }
+
+ private void registerBeanConfiguration(String name, BeanConfiguration bc) {
+ beanConfigs.put(name,bc);
+ beanNames.add(name);
+ }
+
+ @SuppressWarnings("rawtypes")
+ public BeanConfiguration createSingletonBean(Class clazz, Collection constructorArguments) {
+ return new DefaultBeanConfiguration(clazz, constructorArguments);
+ }
+
+ public BeanConfiguration createPrototypeBean(String name) {
+ return new DefaultBeanConfiguration(name,true);
+ }
+
+ public BeanConfiguration createSingletonBean(String name) {
+ return new DefaultBeanConfiguration(name);
+ }
+
+ public void addBeanConfiguration(String beanName, BeanConfiguration beanConfiguration) {
+ beanConfiguration.setName(beanName);
+ registerBeanConfiguration(beanName, beanConfiguration);
+ }
+
+ public void addBeanDefinition(String name, BeanDefinition bd) {
+ beanDefinitions.put(name,bd);
+ beanConfigs.remove(name);
+ beanNames.add(name);
+ }
+
+ public boolean containsBean(String name) {
+ return beanNames.contains(name);
+ }
+
+ public BeanConfiguration getBeanConfig(String name) {
+ return beanConfigs.get(name);
+ }
+
+ public AbstractBeanDefinition createBeanDefinition(String name) {
+ if (containsBean(name)) {
+ if (beanDefinitions.containsKey(name)) {
+ return (AbstractBeanDefinition)beanDefinitions.get(name);
+ }
+ if (beanConfigs.containsKey(name)) {
+ return beanConfigs.get(name).getBeanDefinition();
+ }
+ }
+ return null;
+ }
+
+ public void registerPostProcessor(BeanFactoryPostProcessor processor) {
+ initialiseApplicationContext();
+ context.addBeanFactoryPostProcessor(processor);
+ }
+
+ public List getBeanNames() {
+ return Collections.unmodifiableList(new ArrayList(beanNames));
+ }
+
+ public void registerBeansWithContext(GenericApplicationContext applicationContext) {
+ registerBeansWithRegistry(applicationContext);
+ }
+
+ public void registerBeansWithRegistry(BeanDefinitionRegistry registry) {
+ registerUnrefreshedBeansWithRegistry(registry);
+ registerBeanConfigsWithRegistry(registry);
+ registerBeanDefinitionsWithRegistry(registry);
+ registerBeanAliasesWithRegistry(registry);
+ }
+
+ private void registerUnrefreshedBeansWithRegistry(BeanDefinitionRegistry registry) {
+ if (context != null) {
+ for (String beanName : context.getBeanDefinitionNames()) {
+ registry.registerBeanDefinition(beanName, context.getBeanDefinition(beanName));
+ }
+ }
+ }
+
+ private void registerBeanConfigsWithRegistry(BeanDefinitionRegistry registry) {
+ for (BeanConfiguration bc : beanConfigs.values()) {
+ String beanName = bc.getName();
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("[RuntimeConfiguration] Registering bean [" + beanName + "]");
+ if (LOG.isTraceEnabled()) {
+ PropertyValue[] pvs = bc.getBeanDefinition()
+ .getPropertyValues()
+ .getPropertyValues();
+ for (PropertyValue pv : pvs) {
+ LOG.trace("[RuntimeConfiguration] With property [" + pv.getName() + "] set to [" + pv.getValue() + "]");
+ }
+ }
+ }
+
+ registry.registerBeanDefinition(beanName, bc.getBeanDefinition());
+ }
+ }
+
+ private void registerBeanDefinitionsWithRegistry(BeanDefinitionRegistry registry) {
+ for (Object key : beanDefinitions.keySet()) {
+ BeanDefinition bd = beanDefinitions.get(key);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("[RuntimeConfiguration] Registering bean [" + key + "]");
+ if (LOG.isTraceEnabled()) {
+ PropertyValue[] pvs = bd.getPropertyValues().getPropertyValues();
+ for (PropertyValue pv : pvs) {
+ LOG.trace("[RuntimeConfiguration] With property [" + pv.getName() + "] set to [" + pv.getValue() + "]");
+ }
+ }
+ }
+ final String beanName = key.toString();
+ registry.registerBeanDefinition(beanName, bd);
+ }
+ }
+
+ public void registerBeansWithConfig(RuntimeSpringConfiguration targetSpringConfig) {
+ if (targetSpringConfig == null) {
+ return;
+ }
+
+ ApplicationContext ctx = targetSpringConfig.getUnrefreshedApplicationContext();
+ if (ctx instanceof BeanDefinitionRegistry) {
+ final BeanDefinitionRegistry registry = (BeanDefinitionRegistry) ctx;
+ registerUnrefreshedBeansWithRegistry(registry);
+ registerBeansWithRegistry(registry);
+ }
+ for (Map.Entry beanEntry : beanConfigs.entrySet()) {
+ targetSpringConfig.addBeanConfiguration(beanEntry.getKey(), beanEntry.getValue());
+ }
+ }
+
+ private void registerBeanAliasesWithRegistry(BeanDefinitionRegistry beanDefinitionRegistry) {
+ for (Map.Entry> entry : aliases.entrySet()) {
+ String beanName = entry.getKey();
+ List beanAliases = entry.getValue();
+ if (beanAliases != null && !beanAliases.isEmpty()) {
+ for (String alias : beanAliases) {
+ beanDefinitionRegistry.registerAlias(beanName, alias);
+ }
+ }
+ }
+ }
+
+ private void removeBeanDefinition(BeanDefinitionRegistry registry, String beanName) {
+ MetaClass mc = GroovySystem.getMetaClassRegistry().getMetaClass(registry.getClass());
+ if (!mc.respondsTo(registry, "removeBeanDefinition").isEmpty()) {
+ mc.invokeMethod(registry, "removeBeanDefinition", new Object[] { beanName });
+ }
+ }
+
+ public BeanConfiguration addAbstractBean(String name) {
+ BeanConfiguration bc = new DefaultBeanConfiguration(name);
+ bc.setAbstract(true);
+ registerBeanConfiguration(name, bc);
+ return bc;
+ }
+
+ public void addAlias(String alias, String beanName) {
+ List beanAliases = aliases.get(beanName);
+ if (beanAliases == null) {
+ beanAliases = new ArrayList();
+ aliases.put(beanName, beanAliases);
+ }
+ beanAliases.add(alias);
+ }
+
+ public BeanDefinition getBeanDefinition(String beanName) {
+ return beanDefinitions.get(beanName);
+ }
+
+ public void setBeanFactory(ListableBeanFactory beanFactory) {
+ this.beanFactory = beanFactory;
+ }
+}
diff --git a/grails-spring/src/main/groovy/org/grails/spring/GrailsApplicationContext.java b/grails-spring/src/main/groovy/org/grails/spring/GrailsApplicationContext.java
index a89963c26d1..bd5c23619e6 100644
--- a/grails-spring/src/main/groovy/org/grails/spring/GrailsApplicationContext.java
+++ b/grails-spring/src/main/groovy/org/grails/spring/GrailsApplicationContext.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-spring/src/main/groovy/org/grails/spring/GrailsContextEvent.java b/grails-spring/src/main/groovy/org/grails/spring/GrailsContextEvent.java
index bd32b3f700b..8b0fe5adead 100644
--- a/grails-spring/src/main/groovy/org/grails/spring/GrailsContextEvent.java
+++ b/grails-spring/src/main/groovy/org/grails/spring/GrailsContextEvent.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-spring/src/main/groovy/org/grails/spring/RuntimeSpringConfiguration.java b/grails-spring/src/main/groovy/org/grails/spring/RuntimeSpringConfiguration.java
index 1bccb27ff34..f562544b263 100644
--- a/grails-spring/src/main/groovy/org/grails/spring/RuntimeSpringConfiguration.java
+++ b/grails-spring/src/main/groovy/org/grails/spring/RuntimeSpringConfiguration.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-spring/src/main/groovy/org/grails/spring/TypeSpecifyableTransactionProxyFactoryBean.java b/grails-spring/src/main/groovy/org/grails/spring/TypeSpecifyableTransactionProxyFactoryBean.java
index bb6d91f6fdb..eec54cb0ad8 100644
--- a/grails-spring/src/main/groovy/org/grails/spring/TypeSpecifyableTransactionProxyFactoryBean.java
+++ b/grails-spring/src/main/groovy/org/grails/spring/TypeSpecifyableTransactionProxyFactoryBean.java
@@ -1,11 +1,11 @@
/*
- * Copyright 2010 Luke Daley
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-test-suite-base/src/main/groovy/grails/util/MockHttpServletResponse.java b/grails-test-suite-base/src/main/groovy/grails/util/MockHttpServletResponse.java
index 835977ac122..2d98a6f3598 100644
--- a/grails-test-suite-base/src/main/groovy/grails/util/MockHttpServletResponse.java
+++ b/grails-test-suite-base/src/main/groovy/grails/util/MockHttpServletResponse.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.util;
/**
diff --git a/grails-test-suite-base/src/main/groovy/grails/util/MockRequestDataValueProcessor.java b/grails-test-suite-base/src/main/groovy/grails/util/MockRequestDataValueProcessor.java
index b86a6d73813..4d25ec5e8d1 100644
--- a/grails-test-suite-base/src/main/groovy/grails/util/MockRequestDataValueProcessor.java
+++ b/grails-test-suite-base/src/main/groovy/grails/util/MockRequestDataValueProcessor.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.util;
import java.util.HashMap;
diff --git a/grails-test-suite-base/src/main/groovy/org/grails/commons/test/AbstractGrailsMockTests.java b/grails-test-suite-base/src/main/groovy/org/grails/commons/test/AbstractGrailsMockTests.java
index 0a99766625e..37f283e8541 100644
--- a/grails-test-suite-base/src/main/groovy/org/grails/commons/test/AbstractGrailsMockTests.java
+++ b/grails-test-suite-base/src/main/groovy/org/grails/commons/test/AbstractGrailsMockTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-test-suite-base/src/main/groovy/org/grails/support/MockApplicationContext.java b/grails-test-suite-base/src/main/groovy/org/grails/support/MockApplicationContext.java
index a08742293b9..cd86dc6a927 100644
--- a/grails-test-suite-base/src/main/groovy/org/grails/support/MockApplicationContext.java
+++ b/grails-test-suite-base/src/main/groovy/org/grails/support/MockApplicationContext.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-test-suite-base/src/main/groovy/org/grails/web/servlet/mvc/HibernateProxy.java b/grails-test-suite-base/src/main/groovy/org/grails/web/servlet/mvc/HibernateProxy.java
index 405bf7f9120..2392938184d 100644
--- a/grails-test-suite-base/src/main/groovy/org/grails/web/servlet/mvc/HibernateProxy.java
+++ b/grails-test-suite-base/src/main/groovy/org/grails/web/servlet/mvc/HibernateProxy.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.servlet.mvc;
import java.io.Serializable;
diff --git a/grails-test-suite-base/src/main/groovy/org/grails/web/servlet/mvc/LazyInitializer.java b/grails-test-suite-base/src/main/groovy/org/grails/web/servlet/mvc/LazyInitializer.java
index 6dc278b23ce..bd434882bc6 100644
--- a/grails-test-suite-base/src/main/groovy/org/grails/web/servlet/mvc/LazyInitializer.java
+++ b/grails-test-suite-base/src/main/groovy/org/grails/web/servlet/mvc/LazyInitializer.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.servlet.mvc;
public interface LazyInitializer {
diff --git a/grails-test-suite-base/src/main/groovy/org/grails/web/servlet/mvc/MockHibernateProxyHandler.java b/grails-test-suite-base/src/main/groovy/org/grails/web/servlet/mvc/MockHibernateProxyHandler.java
index 26596aba228..0238074d47b 100644
--- a/grails-test-suite-base/src/main/groovy/org/grails/web/servlet/mvc/MockHibernateProxyHandler.java
+++ b/grails-test-suite-base/src/main/groovy/org/grails/web/servlet/mvc/MockHibernateProxyHandler.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.servlet.mvc;
import grails.core.support.proxy.EntityProxyHandler;
diff --git a/grails-test-suite-persistence/src/test/groovy/grails/artefact/DomainClassTraitSpec.groovy b/grails-test-suite-persistence/src/test/groovy/grails/artefact/DomainClassTraitSpec.groovy
index 136bf898905..df7e87fcb40 100644
--- a/grails-test-suite-persistence/src/test/groovy/grails/artefact/DomainClassTraitSpec.groovy
+++ b/grails-test-suite-persistence/src/test/groovy/grails/artefact/DomainClassTraitSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.artefact
import grails.persistence.Entity
diff --git a/grails-test-suite-persistence/src/test/groovy/grails/gorm/criteri/WithCriteriaReadOnlySpec.groovy b/grails-test-suite-persistence/src/test/groovy/grails/gorm/criteri/WithCriteriaReadOnlySpec.groovy
index 014f6c70d14..d9830c10dfb 100644
--- a/grails-test-suite-persistence/src/test/groovy/grails/gorm/criteri/WithCriteriaReadOnlySpec.groovy
+++ b/grails-test-suite-persistence/src/test/groovy/grails/gorm/criteri/WithCriteriaReadOnlySpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.gorm.criteri
import grails.persistence.Entity
diff --git a/grails-test-suite-persistence/src/test/groovy/grails/test/mixin/domain/DomainClassUnitTestMixinTests.groovy b/grails-test-suite-persistence/src/test/groovy/grails/test/mixin/domain/DomainClassUnitTestMixinTests.groovy
index 34ce7d03acc..adc9d8c76b7 100644
--- a/grails-test-suite-persistence/src/test/groovy/grails/test/mixin/domain/DomainClassUnitTestMixinTests.groovy
+++ b/grails-test-suite-persistence/src/test/groovy/grails/test/mixin/domain/DomainClassUnitTestMixinTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin.domain
import grails.persistence.Entity
diff --git a/grails-test-suite-persistence/src/test/groovy/grails/test/mixin/domain/SaveDomainSpec.groovy b/grails-test-suite-persistence/src/test/groovy/grails/test/mixin/domain/SaveDomainSpec.groovy
index c7d35080e72..212e9a67c35 100644
--- a/grails-test-suite-persistence/src/test/groovy/grails/test/mixin/domain/SaveDomainSpec.groovy
+++ b/grails-test-suite-persistence/src/test/groovy/grails/test/mixin/domain/SaveDomainSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin.domain
import grails.persistence.Entity
diff --git a/grails-test-suite-persistence/src/test/groovy/grails/web/databinding/GrailsWebDataBinderBindingXmlSpec.groovy b/grails-test-suite-persistence/src/test/groovy/grails/web/databinding/GrailsWebDataBinderBindingXmlSpec.groovy
index 8f0e3fa0ac3..8bd31b10b98 100644
--- a/grails-test-suite-persistence/src/test/groovy/grails/web/databinding/GrailsWebDataBinderBindingXmlSpec.groovy
+++ b/grails-test-suite-persistence/src/test/groovy/grails/web/databinding/GrailsWebDataBinderBindingXmlSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.web.databinding
import grails.persistence.Entity
diff --git a/grails-test-suite-persistence/src/test/groovy/grails/web/databinding/GrailsWebDataBinderConfigurationSpec.groovy b/grails-test-suite-persistence/src/test/groovy/grails/web/databinding/GrailsWebDataBinderConfigurationSpec.groovy
index 005268dcebd..4d7ba99640b 100644
--- a/grails-test-suite-persistence/src/test/groovy/grails/web/databinding/GrailsWebDataBinderConfigurationSpec.groovy
+++ b/grails-test-suite-persistence/src/test/groovy/grails/web/databinding/GrailsWebDataBinderConfigurationSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.web.databinding
import grails.databinding.SimpleMapDataBindingSource;
diff --git a/grails-test-suite-persistence/src/test/groovy/grails/web/databinding/GrailsWebDataBinderListenerSpec.groovy b/grails-test-suite-persistence/src/test/groovy/grails/web/databinding/GrailsWebDataBinderListenerSpec.groovy
index 872152cab83..8135a3a400e 100644
--- a/grails-test-suite-persistence/src/test/groovy/grails/web/databinding/GrailsWebDataBinderListenerSpec.groovy
+++ b/grails-test-suite-persistence/src/test/groovy/grails/web/databinding/GrailsWebDataBinderListenerSpec.groovy
@@ -1,4 +1,5 @@
-/* Copyright 2013 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-test-suite-persistence/src/test/groovy/grails/web/databinding/GrailsWebDataBinderSpec.groovy b/grails-test-suite-persistence/src/test/groovy/grails/web/databinding/GrailsWebDataBinderSpec.groovy
index 43339a64e35..df37dd13dfd 100644
--- a/grails-test-suite-persistence/src/test/groovy/grails/web/databinding/GrailsWebDataBinderSpec.groovy
+++ b/grails-test-suite-persistence/src/test/groovy/grails/web/databinding/GrailsWebDataBinderSpec.groovy
@@ -1,4 +1,5 @@
-/* Copyright 2013 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-test-suite-persistence/src/test/groovy/grails/web/databinding/GrailsWebDataBindingListenerSpec.groovy b/grails-test-suite-persistence/src/test/groovy/grails/web/databinding/GrailsWebDataBindingListenerSpec.groovy
index f6c9ebbae96..b3f2c19fb4e 100644
--- a/grails-test-suite-persistence/src/test/groovy/grails/web/databinding/GrailsWebDataBindingListenerSpec.groovy
+++ b/grails-test-suite-persistence/src/test/groovy/grails/web/databinding/GrailsWebDataBindingListenerSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.web.databinding
import grails.databinding.SimpleMapDataBindingSource
diff --git a/grails-test-suite-persistence/src/test/groovy/grails/web/databinding/GrailsWebDataBindingStructuredEditorSpec.groovy b/grails-test-suite-persistence/src/test/groovy/grails/web/databinding/GrailsWebDataBindingStructuredEditorSpec.groovy
index 637d9a4d277..8feaf1aa80e 100644
--- a/grails-test-suite-persistence/src/test/groovy/grails/web/databinding/GrailsWebDataBindingStructuredEditorSpec.groovy
+++ b/grails-test-suite-persistence/src/test/groovy/grails/web/databinding/GrailsWebDataBindingStructuredEditorSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.web.databinding
import grails.databinding.DataBindingSource;
diff --git a/grails-test-suite-persistence/src/test/groovy/org/grails/domain/compiler/DomainPropertiesAccessorSpec.groovy b/grails-test-suite-persistence/src/test/groovy/org/grails/domain/compiler/DomainPropertiesAccessorSpec.groovy
index e7dd7426158..8873436e920 100644
--- a/grails-test-suite-persistence/src/test/groovy/org/grails/domain/compiler/DomainPropertiesAccessorSpec.groovy
+++ b/grails-test-suite-persistence/src/test/groovy/org/grails/domain/compiler/DomainPropertiesAccessorSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.domain.compiler
import grails.persistence.Entity
diff --git a/grails-test-suite-persistence/src/test/groovy/org/grails/orm/support/TransactionManagerPostProcessorTests.groovy b/grails-test-suite-persistence/src/test/groovy/org/grails/orm/support/TransactionManagerPostProcessorTests.groovy
index c1d4d6de8c4..bc5d8aca76f 100644
--- a/grails-test-suite-persistence/src/test/groovy/org/grails/orm/support/TransactionManagerPostProcessorTests.groovy
+++ b/grails-test-suite-persistence/src/test/groovy/org/grails/orm/support/TransactionManagerPostProcessorTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.orm.support
import grails.spring.BeanBuilder
diff --git a/grails-test-suite-persistence/src/test/groovy/org/grails/plugins/MockHibernateGrailsPlugin.groovy b/grails-test-suite-persistence/src/test/groovy/org/grails/plugins/MockHibernateGrailsPlugin.groovy
index 76287dce761..5d7aa407e53 100644
--- a/grails-test-suite-persistence/src/test/groovy/org/grails/plugins/MockHibernateGrailsPlugin.groovy
+++ b/grails-test-suite-persistence/src/test/groovy/org/grails/plugins/MockHibernateGrailsPlugin.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins
import grails.util.GrailsUtil
diff --git a/grails-test-suite-persistence/src/test/groovy/org/grails/plugins/services/DataSourcesGrailsPluginTests.groovy b/grails-test-suite-persistence/src/test/groovy/org/grails/plugins/services/DataSourcesGrailsPluginTests.groovy
index e237a6ab208..eab68e7247b 100644
--- a/grails-test-suite-persistence/src/test/groovy/org/grails/plugins/services/DataSourcesGrailsPluginTests.groovy
+++ b/grails-test-suite-persistence/src/test/groovy/org/grails/plugins/services/DataSourcesGrailsPluginTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins.services
import org.grails.commons.test.AbstractGrailsMockTests
diff --git a/grails-test-suite-persistence/src/test/groovy/org/grails/plugins/services/ScopedProxyAndServiceClassTests.groovy b/grails-test-suite-persistence/src/test/groovy/org/grails/plugins/services/ScopedProxyAndServiceClassTests.groovy
index 0207c95b3bc..38d205b9d11 100644
--- a/grails-test-suite-persistence/src/test/groovy/org/grails/plugins/services/ScopedProxyAndServiceClassTests.groovy
+++ b/grails-test-suite-persistence/src/test/groovy/org/grails/plugins/services/ScopedProxyAndServiceClassTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins.services
import grails.spring.WebBeanBuilder
diff --git a/grails-test-suite-uber/src/test/groovy/grails/compiler/DomainClassWithInnerClassUsingStaticCompilationSpec.groovy b/grails-test-suite-uber/src/test/groovy/grails/compiler/DomainClassWithInnerClassUsingStaticCompilationSpec.groovy
index 0c30723d0e7..9712ea19b0e 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/compiler/DomainClassWithInnerClassUsingStaticCompilationSpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/compiler/DomainClassWithInnerClassUsingStaticCompilationSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.compiler
import grails.compiler.GrailsCompileStatic
diff --git a/grails-test-suite-uber/src/test/groovy/grails/compiler/GrailsCompileStaticCompilationErrorsSpec.groovy b/grails-test-suite-uber/src/test/groovy/grails/compiler/GrailsCompileStaticCompilationErrorsSpec.groovy
index d232113b8cc..d7576242452 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/compiler/GrailsCompileStaticCompilationErrorsSpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/compiler/GrailsCompileStaticCompilationErrorsSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.compiler
import grails.persistence.Entity
diff --git a/grails-test-suite-uber/src/test/groovy/grails/compiler/GrailsTypeCheckedCompilationErrorsSpec.groovy b/grails-test-suite-uber/src/test/groovy/grails/compiler/GrailsTypeCheckedCompilationErrorsSpec.groovy
index f329178eec1..6327bdae920 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/compiler/GrailsTypeCheckedCompilationErrorsSpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/compiler/GrailsTypeCheckedCompilationErrorsSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.compiler
import grails.persistence.Entity
diff --git a/grails-test-suite-uber/src/test/groovy/grails/persistence/EntityTransformTests.groovy b/grails-test-suite-uber/src/test/groovy/grails/persistence/EntityTransformTests.groovy
index 6384eef0e1c..954959b71e5 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/persistence/EntityTransformTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/persistence/EntityTransformTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.persistence
import org.junit.jupiter.api.BeforeEach
diff --git a/grails-test-suite-uber/src/test/groovy/grails/plugins/DefaultGrailsPluginManagerTests.java b/grails-test-suite-uber/src/test/groovy/grails/plugins/DefaultGrailsPluginManagerTests.java
index 5320f523883..10819dfbc50 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/plugins/DefaultGrailsPluginManagerTests.java
+++ b/grails-test-suite-uber/src/test/groovy/grails/plugins/DefaultGrailsPluginManagerTests.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.plugins;
import grails.core.DefaultGrailsApplication;
diff --git a/grails-test-suite-uber/src/test/groovy/grails/spring/BeanBuilderTests.groovy b/grails-test-suite-uber/src/test/groovy/grails/spring/BeanBuilderTests.groovy
index 105b08f12af..d4d90777aab 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/spring/BeanBuilderTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/spring/BeanBuilderTests.groovy
@@ -1,7 +1,7 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
- * Licensed under the Apache License, Version 2.0 (the "License")
+ * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
diff --git a/grails-test-suite-uber/src/test/groovy/grails/spring/DynamicElementReaderTests.groovy b/grails-test-suite-uber/src/test/groovy/grails/spring/DynamicElementReaderTests.groovy
index 6cf723670c6..29ba98715a9 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/spring/DynamicElementReaderTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/spring/DynamicElementReaderTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.spring
import org.junit.jupiter.api.Test
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/MetaTestHelper.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/MetaTestHelper.groovy
index 93cc5251ea4..05a71767708 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/MetaTestHelper.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/MetaTestHelper.groovy
@@ -1,4 +1,5 @@
-/* Copyright 2008 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/AddToAndServiceInjectionTests.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/AddToAndServiceInjectionTests.groovy
index 7f37a2ad93e..5252256f109 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/AddToAndServiceInjectionTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/AddToAndServiceInjectionTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import grails.persistence.Entity
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/AnotherController.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/AnotherController.groovy
index 941e0557d3b..142488f582d 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/AnotherController.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/AnotherController.groovy
@@ -1,15 +1,5 @@
-package grails.test.mixin
-
-import grails.artefact.Controller
-import grails.converters.JSON
-import grails.converters.XML
-import grails.web.mime.MimeUtility
-import org.springframework.beans.factory.annotation.Autowired
-import org.springframework.context.MessageSource
-import org.springframework.web.multipart.MultipartFile
-
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -23,6 +13,15 @@ import org.springframework.web.multipart.MultipartFile
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+package grails.test.mixin
+
+import grails.artefact.Controller
+import grails.converters.JSON
+import grails.converters.XML
+import grails.web.mime.MimeUtility
+import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.context.MessageSource
+import org.springframework.web.multipart.MultipartFile
/**
* @author graemerocher
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/AstEnhancedControllerUnitTestMixinTests.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/AstEnhancedControllerUnitTestMixinTests.groovy
index 63b3be90fd3..56d721332a0 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/AstEnhancedControllerUnitTestMixinTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/AstEnhancedControllerUnitTestMixinTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import grails.testing.web.controllers.ControllerUnitTest
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/AutowireServiceViaDefineBeansTests.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/AutowireServiceViaDefineBeansTests.groovy
index 2f2bfd21fde..6f0c4fb6279 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/AutowireServiceViaDefineBeansTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/AutowireServiceViaDefineBeansTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import grails.artefact.Artefact
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/BidirectionalOneToManyUnitTestTests.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/BidirectionalOneToManyUnitTestTests.groovy
index 36c4c657683..53306330ea5 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/BidirectionalOneToManyUnitTestTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/BidirectionalOneToManyUnitTestTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import grails.persistence.Entity
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/CascadeValidationForEmbeddedSpec.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/CascadeValidationForEmbeddedSpec.groovy
index 1cc51763736..cf9ded8f7d3 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/CascadeValidationForEmbeddedSpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/CascadeValidationForEmbeddedSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import grails.persistence.Entity
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/ControllerAndGroovyPageMixinTests.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/ControllerAndGroovyPageMixinTests.groovy
index c960836871c..39f8d946467 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/ControllerAndGroovyPageMixinTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/ControllerAndGroovyPageMixinTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import grails.artefact.Artefact
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/ControllerMockWithMultipleControllersSpec.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/ControllerMockWithMultipleControllersSpec.groovy
index a891b1cd894..68e200a93df 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/ControllerMockWithMultipleControllersSpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/ControllerMockWithMultipleControllersSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import grails.testing.web.GrailsWebUnitTest
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/ControllerTestForTests.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/ControllerTestForTests.groovy
index 7b2d68ce4bc..5569b347e5d 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/ControllerTestForTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/ControllerTestForTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import grails.artefact.Artefact
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/ControllerUnitTestMixinTests.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/ControllerUnitTestMixinTests.groovy
index 99f56f65644..3ced50de51e 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/ControllerUnitTestMixinTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/ControllerUnitTestMixinTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import grails.artefact.Artefact
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/ControllerWithMockCollabTests.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/ControllerWithMockCollabTests.groovy
index 2b901a71870..08843f74936 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/ControllerWithMockCollabTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/ControllerWithMockCollabTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import grails.artefact.Artefact
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/DomainClassAnnotatedSetupMethodTests.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/DomainClassAnnotatedSetupMethodTests.groovy
index 783e7d52416..d0947f2711f 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/DomainClassAnnotatedSetupMethodTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/DomainClassAnnotatedSetupMethodTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import grails.testing.gorm.DomainUnitTest
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/DomainClassControllerUnitTestMixinTests.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/DomainClassControllerUnitTestMixinTests.groovy
index c25d9033bc2..e0b37db6dfe 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/DomainClassControllerUnitTestMixinTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/DomainClassControllerUnitTestMixinTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import grails.artefact.Artefact
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/DomainClassDeepValidationSpec.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/DomainClassDeepValidationSpec.groovy
index 27ae64bf3c4..2cdadc98c68 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/DomainClassDeepValidationSpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/DomainClassDeepValidationSpec.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package grails.test.mixin
import grails.testing.gorm.DataTest
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/DomainClassSetupMethodTests.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/DomainClassSetupMethodTests.groovy
index c718923e336..2664d003e7a 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/DomainClassSetupMethodTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/DomainClassSetupMethodTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import grails.testing.gorm.DomainUnitTest
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/DomainClassWithAutoTimestampSpec.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/DomainClassWithAutoTimestampSpec.groovy
index d3835a11d88..4b18e949ce3 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/DomainClassWithAutoTimestampSpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/DomainClassWithAutoTimestampSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import grails.persistence.Entity
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/DomainClassWithCustomValidatorTests.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/DomainClassWithCustomValidatorTests.groovy
index ed35c0c10f0..613826aaea3 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/DomainClassWithCustomValidatorTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/DomainClassWithCustomValidatorTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import grails.persistence.Entity
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/DomainClassWithDefaultConstraintsUnitTestMixinTests.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/DomainClassWithDefaultConstraintsUnitTestMixinTests.groovy
index f1699630fbf..2ce379a66d9 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/DomainClassWithDefaultConstraintsUnitTestMixinTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/DomainClassWithDefaultConstraintsUnitTestMixinTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import grails.persistence.Entity
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/DomainClassWithUniqueConstraintSpec.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/DomainClassWithUniqueConstraintSpec.groovy
index 65987e784e4..082f00da2f6 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/DomainClassWithUniqueConstraintSpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/DomainClassWithUniqueConstraintSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import grails.persistence.Entity
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/FirstController.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/FirstController.groovy
index ee879f8c137..4ba2900025e 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/FirstController.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/FirstController.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import grails.web.Controller
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/GroovyPageUnitTestMixinTests.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/GroovyPageUnitTestMixinTests.groovy
index 2edc99dbf85..b8ff1d99467 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/GroovyPageUnitTestMixinTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/GroovyPageUnitTestMixinTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import grails.artefact.Artefact
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/GroovyPageUnitTestMixinWithCustomViewDirSpec.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/GroovyPageUnitTestMixinWithCustomViewDirSpec.groovy
index b0a7804a9da..b9468c23aa5 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/GroovyPageUnitTestMixinWithCustomViewDirSpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/GroovyPageUnitTestMixinWithCustomViewDirSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import grails.testing.web.GrailsWebUnitTest
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/InheritanceWithValidationTests.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/InheritanceWithValidationTests.groovy
index 0fb817a0631..1266494557c 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/InheritanceWithValidationTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/InheritanceWithValidationTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import grails.persistence.Entity
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/InterceptorUnitTestMixinSpec.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/InterceptorUnitTestMixinSpec.groovy
index a12e43c76f0..f127e0185aa 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/InterceptorUnitTestMixinSpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/InterceptorUnitTestMixinSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import grails.artefact.Interceptor
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/MainContextTests.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/MainContextTests.groovy
index 4b4da158be7..24fc5be336f 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/MainContextTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/MainContextTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import org.grails.testing.GrailsUnitTest
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/MyService.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/MyService.groovy
index 6aec1b93872..5a83f44e01d 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/MyService.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/MyService.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
class MyService {
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/PartialMockWithManyToManySpec.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/PartialMockWithManyToManySpec.groovy
index 3b3de3d4305..5c0dd996345 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/PartialMockWithManyToManySpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/PartialMockWithManyToManySpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import grails.persistence.Entity
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/ResourceAnnotationRestfulControllerSpec.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/ResourceAnnotationRestfulControllerSpec.groovy
index 718ea493bef..51b1713a4f2 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/ResourceAnnotationRestfulControllerSpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/ResourceAnnotationRestfulControllerSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import grails.artefact.Controller
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/RestfulControllerSpec.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/RestfulControllerSpec.groovy
index 22e10e9610a..0a1812732c0 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/RestfulControllerSpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/RestfulControllerSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import grails.gorm.transactions.Transactional
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/RestfulControllerSubclassSpec.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/RestfulControllerSubclassSpec.groovy
index 40cac039cc8..b4d223246dc 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/RestfulControllerSubclassSpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/RestfulControllerSubclassSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import grails.artefact.Artefact
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/RestfulControllerSuperClassSpec.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/RestfulControllerSuperClassSpec.groovy
index c1a083a3b79..8b5e65ba28d 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/RestfulControllerSuperClassSpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/RestfulControllerSuperClassSpec.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package grails.test.mixin
import grails.artefact.Artefact
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/ServiceTestMixinInheritanceSpec.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/ServiceTestMixinInheritanceSpec.groovy
index bcc78a7d8dc..51102aa7b60 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/ServiceTestMixinInheritanceSpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/ServiceTestMixinInheritanceSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import grails.artefact.Artefact
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/SetupTeardownInvokeTests.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/SetupTeardownInvokeTests.groovy
index f8bbfd95e34..f7f27e803e7 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/SetupTeardownInvokeTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/SetupTeardownInvokeTests.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package grails.test.mixin
import grails.testing.web.controllers.ControllerUnitTest
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/SpyBeanSpec.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/SpyBeanSpec.groovy
index 9cbd23b93cb..c435089dddf 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/SpyBeanSpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/SpyBeanSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import grails.databinding.SimpleMapDataBindingSource
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/StaticCallbacksSpec.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/StaticCallbacksSpec.groovy
index 7638d80a046..2b592a6ae76 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/StaticCallbacksSpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/StaticCallbacksSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import org.grails.testing.GrailsUnitTest
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/TagLibraryInvokeBodySpec.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/TagLibraryInvokeBodySpec.groovy
index 8fdbb2b4a37..92687aae9ec 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/TagLibraryInvokeBodySpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/TagLibraryInvokeBodySpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import grails.artefact.TagLibrary
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/TestForControllerWithoutMockDomainTests.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/TestForControllerWithoutMockDomainTests.groovy
index 88263af58f8..11e2a4d1dca 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/TestForControllerWithoutMockDomainTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/TestForControllerWithoutMockDomainTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import grails.artefact.Artefact
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/TestInstanceCallbacksSpec.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/TestInstanceCallbacksSpec.groovy
index 6cff44f2cea..b0e966e13d5 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/TestInstanceCallbacksSpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/TestInstanceCallbacksSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import org.grails.testing.GrailsUnitTest
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/TestMixinSetupTeardownInvokeTests.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/TestMixinSetupTeardownInvokeTests.groovy
index e2572e4abe8..7f3ecff01d1 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/TestMixinSetupTeardownInvokeTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/TestMixinSetupTeardownInvokeTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import spock.lang.Specification
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/UnitTestDataBindingAssociatonTests.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/UnitTestDataBindingAssociatonTests.groovy
index ffb75dc6aac..884645a585b 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/UnitTestDataBindingAssociatonTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/UnitTestDataBindingAssociatonTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import grails.testing.gorm.DataTest
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/UnitTestEmbeddedPropertyQuery.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/UnitTestEmbeddedPropertyQuery.groovy
index 8d1a0e6cfd4..bf719110c28 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/UnitTestEmbeddedPropertyQuery.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/UnitTestEmbeddedPropertyQuery.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import grails.persistence.Entity
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/UrlMappingsTestMixinTests.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/UrlMappingsTestMixinTests.groovy
index 7cd03c2872d..d9a4eb0217f 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/UrlMappingsTestMixinTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/UrlMappingsTestMixinTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import grails.artefact.Artefact
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/User.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/User.groovy
index 8ab2209d24f..9e8bb08d643 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/User.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/User.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import grails.persistence.Entity
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/cascade/CascadeCircularSpec.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/cascade/CascadeCircularSpec.groovy
index f49123e2a74..f7785b8bcec 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/cascade/CascadeCircularSpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/cascade/CascadeCircularSpec.groovy
@@ -1,17 +1,17 @@
/*
- * Copyright 2017 original authors
- *
+ * Copyright 2024 original authors
+ *
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
- * limitations under the License.
+ * limitations under the License.
*/
package grails.test.mixin.cascade
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/support/GrailsUnitTestMixinGrailsApplicationAwareSpec.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/support/GrailsUnitTestMixinGrailsApplicationAwareSpec.groovy
index e9683685f01..876f8fce142 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/support/GrailsUnitTestMixinGrailsApplicationAwareSpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/support/GrailsUnitTestMixinGrailsApplicationAwareSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin.support
import grails.core.GrailsApplication
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/unique/UniqueConstraintOnHasOneSpec.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/unique/UniqueConstraintOnHasOneSpec.groovy
index 430444e1312..2a8e0b41c22 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/mixin/unique/UniqueConstraintOnHasOneSpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/mixin/unique/UniqueConstraintOnHasOneSpec.groovy
@@ -1,13 +1,5 @@
-package grails.test.mixin.unique
-
-import grails.persistence.Entity
-import grails.testing.gorm.DomainUnitTest
-import groovy.transform.NotYetImplemented
-import spock.lang.Ignore
-import spock.lang.Specification
-
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -21,6 +13,13 @@ import spock.lang.Specification
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+package grails.test.mixin.unique
+
+import grails.persistence.Entity
+import grails.testing.gorm.DomainUnitTest
+import groovy.transform.NotYetImplemented
+import spock.lang.Ignore
+import spock.lang.Specification
/**
* @author graemerocher
diff --git a/grails-test-suite-uber/src/test/groovy/grails/test/runtime/DirtiesRuntimeSpec.groovy b/grails-test-suite-uber/src/test/groovy/grails/test/runtime/DirtiesRuntimeSpec.groovy
index a180551feac..1b455daa1cc 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/test/runtime/DirtiesRuntimeSpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/test/runtime/DirtiesRuntimeSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.runtime
import spock.lang.Issue
diff --git a/grails-test-suite-uber/src/test/groovy/grails/util/ClosureToMapPopulatorTests.groovy b/grails-test-suite-uber/src/test/groovy/grails/util/ClosureToMapPopulatorTests.groovy
index 6bedfd2abec..4a0227c6a7b 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/util/ClosureToMapPopulatorTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/util/ClosureToMapPopulatorTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.util
import org.junit.jupiter.api.Test
diff --git a/grails-test-suite-uber/src/test/groovy/grails/util/CollectionUtilsTests.groovy b/grails-test-suite-uber/src/test/groovy/grails/util/CollectionUtilsTests.groovy
index ea06812f4e5..e4aee339a19 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/util/CollectionUtilsTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/util/CollectionUtilsTests.groovy
@@ -1,7 +1,7 @@
/*
- * Copyright 2011 SpringSource.
+ * Copyright 2024 original authors
*
- * Licensed under the Apache License, Version 2.0 (the "License")
+ * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
diff --git a/grails-test-suite-uber/src/test/groovy/grails/util/DomainBuilderTests.java b/grails-test-suite-uber/src/test/groovy/grails/util/DomainBuilderTests.java
index 80d3c019e1d..f33a6728dc8 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/util/DomainBuilderTests.java
+++ b/grails-test-suite-uber/src/test/groovy/grails/util/DomainBuilderTests.java
@@ -1,4 +1,5 @@
-/* Copyright 2004-2005 Graeme Rocher
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-test-suite-uber/src/test/groovy/grails/validation/DomainConstraintGettersSpec.groovy b/grails-test-suite-uber/src/test/groovy/grails/validation/DomainConstraintGettersSpec.groovy
index ca0a010dfa9..f4949fb1c43 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/validation/DomainConstraintGettersSpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/validation/DomainConstraintGettersSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.validation
import grails.testing.gorm.DataTest
diff --git a/grails-test-suite-uber/src/test/groovy/grails/web/JSONBuilderTests.groovy b/grails-test-suite-uber/src/test/groovy/grails/web/JSONBuilderTests.groovy
index f7dde788ff5..23efd506f94 100644
--- a/grails-test-suite-uber/src/test/groovy/grails/web/JSONBuilderTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/grails/web/JSONBuilderTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.web
import grails.core.DefaultGrailsApplication
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/cli/ScriptNameResolverTests.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/cli/ScriptNameResolverTests.groovy
index 08e595fdf98..2b233056592 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/cli/ScriptNameResolverTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/cli/ScriptNameResolverTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.cli
import org.grails.build.parsing.ScriptNameResolver
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/commons/BootStrapArtefactHandlerTests.java b/grails-test-suite-uber/src/test/groovy/org/grails/commons/BootStrapArtefactHandlerTests.java
index d4696969d65..f60ffdb8faa 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/commons/BootStrapArtefactHandlerTests.java
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/commons/BootStrapArtefactHandlerTests.java
@@ -1,4 +1,5 @@
-/* Copyright 2004-2005 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/commons/CodecArtefactHandlerTests.java b/grails-test-suite-uber/src/test/groovy/org/grails/commons/CodecArtefactHandlerTests.java
index 49680596eaf..9bf3bff137c 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/commons/CodecArtefactHandlerTests.java
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/commons/CodecArtefactHandlerTests.java
@@ -1,4 +1,5 @@
-/* Copyright 2004-2005 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/commons/ControllerArtefactHandlerTests.java b/grails-test-suite-uber/src/test/groovy/org/grails/commons/ControllerArtefactHandlerTests.java
index c86f3a1c3fc..ee735861e2b 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/commons/ControllerArtefactHandlerTests.java
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/commons/ControllerArtefactHandlerTests.java
@@ -1,4 +1,5 @@
-/* Copyright 2004-2005 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/commons/DefaultArtefactInfoTests.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/commons/DefaultArtefactInfoTests.groovy
index c1b9563ffe7..69587058e1c 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/commons/DefaultArtefactInfoTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/commons/DefaultArtefactInfoTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.commons
import grails.core.DefaultArtefactInfo
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/commons/DefaultGrailsCodecClassTests.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/commons/DefaultGrailsCodecClassTests.groovy
index 676bc49e7ea..6b5f897b7d8 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/commons/DefaultGrailsCodecClassTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/commons/DefaultGrailsCodecClassTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.commons
import org.junit.jupiter.api.AfterEach
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/commons/DomainClassArtefactHandlerTests.java b/grails-test-suite-uber/src/test/groovy/org/grails/commons/DomainClassArtefactHandlerTests.java
index c8c023c50ad..fdd9d9fa231 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/commons/DomainClassArtefactHandlerTests.java
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/commons/DomainClassArtefactHandlerTests.java
@@ -1,4 +1,5 @@
-/* Copyright 2004-2005 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/commons/GrailsClassTests.java b/grails-test-suite-uber/src/test/groovy/org/grails/commons/GrailsClassTests.java
index 55e4665ab59..6dd80988ab1 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/commons/GrailsClassTests.java
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/commons/GrailsClassTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/commons/GrailsClassUtilsTests.java b/grails-test-suite-uber/src/test/groovy/org/grails/commons/GrailsClassUtilsTests.java
index 9e8466e449d..2a944486b21 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/commons/GrailsClassUtilsTests.java
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/commons/GrailsClassUtilsTests.java
@@ -1,4 +1,5 @@
-/* Copyright 2004-2005 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/commons/GrailsMetaClassUtilsTests.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/commons/GrailsMetaClassUtilsTests.groovy
index 91b976d39ee..b7c812eb47a 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/commons/GrailsMetaClassUtilsTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/commons/GrailsMetaClassUtilsTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.commons
import grails.util.GrailsMetaClassUtils
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/commons/GrailsPluginManagerTests.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/commons/GrailsPluginManagerTests.groovy
index 256c1906e57..1cee21de12a 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/commons/GrailsPluginManagerTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/commons/GrailsPluginManagerTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.commons
import grails.core.GrailsApplication
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/commons/MultipleClassesPerFileTests.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/commons/MultipleClassesPerFileTests.groovy
index 75cbddc59d2..ced65be0dc9 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/commons/MultipleClassesPerFileTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/commons/MultipleClassesPerFileTests.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/commons/ServiceArtefactHandlerTests.java b/grails-test-suite-uber/src/test/groovy/org/grails/commons/ServiceArtefactHandlerTests.java
index d2fac2ce6c8..1065ffc3ac8 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/commons/ServiceArtefactHandlerTests.java
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/commons/ServiceArtefactHandlerTests.java
@@ -1,4 +1,5 @@
-/* Copyright 2004-2005 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/commons/SomeGroovyClass.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/commons/SomeGroovyClass.groovy
index 2c1b3d73fcc..cbb03d3f26a 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/commons/SomeGroovyClass.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/commons/SomeGroovyClass.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.commons
class SomeGroovyClass {
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/commons/TagLibArtefactHandlerTests.java b/grails-test-suite-uber/src/test/groovy/org/grails/commons/TagLibArtefactHandlerTests.java
index 64b889bd76c..3cb02e170f2 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/commons/TagLibArtefactHandlerTests.java
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/commons/TagLibArtefactHandlerTests.java
@@ -1,4 +1,5 @@
-/* Copyright 2004-2005 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/commons/TestBean.java b/grails-test-suite-uber/src/test/groovy/org/grails/commons/TestBean.java
index 5f0f134c18f..be227a9df83 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/commons/TestBean.java
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/commons/TestBean.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.commons;
/**
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/commons/TestReload.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/commons/TestReload.groovy
index 83fc6ae07ca..964a02030e2 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/commons/TestReload.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/commons/TestReload.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.commons
class TestReload {
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/commons/UrlMappingsArtefactHandlerTests.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/commons/UrlMappingsArtefactHandlerTests.groovy
index 555df600f1f..364f927fa0b 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/commons/UrlMappingsArtefactHandlerTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/commons/UrlMappingsArtefactHandlerTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.commons
import org.grails.core.artefact.UrlMappingsArtefactHandler
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/commons/cfg/ExampleConfigClassObject.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/commons/cfg/ExampleConfigClassObject.groovy
index f105c33f814..76e702426ee 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/commons/cfg/ExampleConfigClassObject.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/commons/cfg/ExampleConfigClassObject.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.commons.cfg
d = 1
\ No newline at end of file
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/commons/cfg/ExampleConfigCompiledClass.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/commons/cfg/ExampleConfigCompiledClass.groovy
index 9e09e9d478d..d9ec8045988 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/commons/cfg/ExampleConfigCompiledClass.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/commons/cfg/ExampleConfigCompiledClass.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.commons.cfg
b = 1
\ No newline at end of file
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/commons/metaclass/LazyMetaPropertyMapSpec.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/commons/metaclass/LazyMetaPropertyMapSpec.groovy
index ea902339418..4dbd6897aed 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/commons/metaclass/LazyMetaPropertyMapSpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/commons/metaclass/LazyMetaPropertyMapSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.commons.metaclass
import grails.beans.util.LazyMetaPropertyMap
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/commons/metaclass/LazyMetaPropertyMapTests.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/commons/metaclass/LazyMetaPropertyMapTests.groovy
index b226745f2fc..4af391c986a 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/commons/metaclass/LazyMetaPropertyMapTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/commons/metaclass/LazyMetaPropertyMapTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.commons.metaclass
import grails.beans.util.LazyMetaPropertyMap
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/commons/spring/GrailsMockDependantObject.java b/grails-test-suite-uber/src/test/groovy/org/grails/commons/spring/GrailsMockDependantObject.java
index d0ecd71c869..8f0151c002f 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/commons/spring/GrailsMockDependantObject.java
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/commons/spring/GrailsMockDependantObject.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.commons.spring;
import grails.core.GrailsApplication;
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/domain/CircularRelationship.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/domain/CircularRelationship.groovy
index 735b1bdd5c5..0d132509f6a 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/domain/CircularRelationship.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/domain/CircularRelationship.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.domain
class CircularRelationship {
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/domain/ManyToManyTest.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/domain/ManyToManyTest.groovy
index ea66fa8e341..b092770e193 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/domain/ManyToManyTest.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/domain/ManyToManyTest.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.domain
class ManyToManyTest {
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/domain/OneToManyTest2.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/domain/OneToManyTest2.groovy
index 3ac1a2c1a41..62cef580b57 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/domain/OneToManyTest2.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/domain/OneToManyTest2.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.domain;
class OneToManyTest2 {
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/domain/OneToOneTest.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/domain/OneToOneTest.groovy
index 8471f60122b..c27805827c9 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/domain/OneToOneTest.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/domain/OneToOneTest.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.domain
class OneToOneTest {
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/domain/RelationshipsTest.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/domain/RelationshipsTest.groovy
index d428091e3e3..afea8aaea33 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/domain/RelationshipsTest.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/domain/RelationshipsTest.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.domain
class RelationshipsTest {
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/domain/Test1.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/domain/Test1.groovy
index 0d13d737a45..83195b12795 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/domain/Test1.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/domain/Test1.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.domain
class Test1 {
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/domain/Test2.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/domain/Test2.groovy
index 5f675b867ae..e5b385a5063 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/domain/Test2.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/domain/Test2.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.domain;
class Test2 {
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/domain/UniOneToManyTest.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/domain/UniOneToManyTest.groovy
index a8e390e6e9a..89764991ca0 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/domain/UniOneToManyTest.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/domain/UniOneToManyTest.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.domain;
class UniOneToManyTest {
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/io/support/GrailsResourceUtilsSpec.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/io/support/GrailsResourceUtilsSpec.groovy
index 7f0de254707..136b3f1539f 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/io/support/GrailsResourceUtilsSpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/io/support/GrailsResourceUtilsSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.io.support
import grails.util.BuildSettings
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/io/support/GrailsResourceUtilsTests.java b/grails-test-suite-uber/src/test/groovy/org/grails/io/support/GrailsResourceUtilsTests.java
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/plugins/CoreGrailsPluginTests.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/plugins/CoreGrailsPluginTests.groovy
index 586c8b3e8c3..7cbdd2e1aa4 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/plugins/CoreGrailsPluginTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/plugins/CoreGrailsPluginTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins
import grails.plugins.GrailsPlugin
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/plugins/DefaultGrailsPluginTests.java b/grails-test-suite-uber/src/test/groovy/org/grails/plugins/DefaultGrailsPluginTests.java
index 4f695ae9c80..f2d8fb39d1b 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/plugins/DefaultGrailsPluginTests.java
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/plugins/DefaultGrailsPluginTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2023 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/plugins/PluginFilterFactoryTests.java b/grails-test-suite-uber/src/test/groovy/org/grails/plugins/PluginFilterFactoryTests.java
index b78cae8dce4..f900ae33636 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/plugins/PluginFilterFactoryTests.java
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/plugins/PluginFilterFactoryTests.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins;
import grails.plugins.PluginFilter;
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/plugins/PluginLoadOrderTests.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/plugins/PluginLoadOrderTests.groovy
index ca2e8d7453a..3a08f930791 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/plugins/PluginLoadOrderTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/plugins/PluginLoadOrderTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins
import grails.core.DefaultGrailsApplication
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/plugins/PluginTests.java b/grails-test-suite-uber/src/test/groovy/org/grails/plugins/PluginTests.java
index b486a2913b6..eb7b0a199c3 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/plugins/PluginTests.java
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/plugins/PluginTests.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins;
import junit.framework.TestCase;
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/plugins/grails-app/conf/NonPooledApplicationDataSource.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/plugins/grails-app/conf/NonPooledApplicationDataSource.groovy
index a657ebf4218..5194fa5a9f6 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/plugins/grails-app/conf/NonPooledApplicationDataSource.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/plugins/grails-app/conf/NonPooledApplicationDataSource.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
class NonPooledApplicationDataSource {
boolean pooling = false
String dbCreate = "create-drop" // one of 'create', 'create-drop','update'
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/plugins/grails-app/conf/PooledApplicationDataSource.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/plugins/grails-app/conf/PooledApplicationDataSource.groovy
index e8c6f588f5c..e9ef4d1a75d 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/plugins/grails-app/conf/PooledApplicationDataSource.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/plugins/grails-app/conf/PooledApplicationDataSource.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
class PooledApplicationDataSource {
boolean pooling = true
String dbCreate = "create-drop" // one of 'create', 'create-drop','update'
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/plugins/grails-app/services/TestService.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/plugins/grails-app/services/TestService.groovy
index 1c73bf0dcfe..6b773df62f5 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/plugins/grails-app/services/TestService.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/plugins/grails-app/services/TestService.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
class TestService {
}
\ No newline at end of file
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/plugins/metadata/GrailsPluginMetadataTests.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/plugins/metadata/GrailsPluginMetadataTests.groovy
index 0d8737f218e..ba6a74e9ed8 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/plugins/metadata/GrailsPluginMetadataTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/plugins/metadata/GrailsPluginMetadataTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins.metadata
import grails.core.DefaultGrailsApplication
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/plugins/testing/GrailsMockHttpServletRequestSpec.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/plugins/testing/GrailsMockHttpServletRequestSpec.groovy
index 08cdb5a6394..b3651c38e1a 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/plugins/testing/GrailsMockHttpServletRequestSpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/plugins/testing/GrailsMockHttpServletRequestSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins.testing
import grails.converters.XML
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/plugins/testing/GrailsMockHttpServletRequestTests.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/plugins/testing/GrailsMockHttpServletRequestTests.groovy
index f33d788bb9d..77c4fb9fb19 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/plugins/testing/GrailsMockHttpServletRequestTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/plugins/testing/GrailsMockHttpServletRequestTests.groovy
@@ -1,4 +1,5 @@
-/* Copyright 2009 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/plugins/testing/GrailsMockHttpServletResponseTests.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/plugins/testing/GrailsMockHttpServletResponseTests.groovy
index 3b6d69aa27d..f3a30618843 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/plugins/testing/GrailsMockHttpServletResponseTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/plugins/testing/GrailsMockHttpServletResponseTests.groovy
@@ -1,4 +1,5 @@
-/* Copyright 2008 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/plugins/testing/GrailsMockHttpSessionTests.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/plugins/testing/GrailsMockHttpSessionTests.groovy
index 286ae60f999..af5aec6254e 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/plugins/testing/GrailsMockHttpSessionTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/plugins/testing/GrailsMockHttpSessionTests.groovy
@@ -1,4 +1,5 @@
-/* Copyright 2008 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/plugins/web/rest/render/atom/AtomDomainClassRendererSpec.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/plugins/web/rest/render/atom/AtomDomainClassRendererSpec.groovy
index 6a1bed45b2e..ac69759780d 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/plugins/web/rest/render/atom/AtomDomainClassRendererSpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/plugins/web/rest/render/atom/AtomDomainClassRendererSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins.web.rest.render.atom
import grails.config.Config
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/plugins/web/rest/render/hal/HalDomainClassJsonRendererSpec.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/plugins/web/rest/render/hal/HalDomainClassJsonRendererSpec.groovy
index 1ba46e7a9cd..bdd5fd83a6d 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/plugins/web/rest/render/hal/HalDomainClassJsonRendererSpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/plugins/web/rest/render/hal/HalDomainClassJsonRendererSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins.web.rest.render.hal
import grails.config.Config
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/plugins/web/rest/render/hal/HalDomainClassXmlRendererSpec.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/plugins/web/rest/render/hal/HalDomainClassXmlRendererSpec.groovy
index 6ab98b9dc2e..c7cf01c711a 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/plugins/web/rest/render/hal/HalDomainClassXmlRendererSpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/plugins/web/rest/render/hal/HalDomainClassXmlRendererSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins.web.rest.render.hal
import grails.config.Config
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/reload/SpringProxiedBeanReloadTests.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/reload/SpringProxiedBeanReloadTests.groovy
index a1bb23647fa..3dde0e799f2 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/reload/SpringProxiedBeanReloadTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/reload/SpringProxiedBeanReloadTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.reload
import grails.spring.BeanBuilder
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/support/StaticResourceLoaderTests.java b/grails-test-suite-uber/src/test/groovy/org/grails/support/StaticResourceLoaderTests.java
index e8a49884093..2d5c6b902a7 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/support/StaticResourceLoaderTests.java
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/support/StaticResourceLoaderTests.java
@@ -1,4 +1,5 @@
-/* Copyright 2004-2005 Graeme Rocher
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/test/support/ControllerNameExtractorTests.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/test/support/ControllerNameExtractorTests.groovy
index c087b4ec375..4834367fac1 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/test/support/ControllerNameExtractorTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/test/support/ControllerNameExtractorTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.test.support
import org.grails.test.support.ControllerNameExtractor
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/test/support/MockHibernatePluginHelper.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/test/support/MockHibernatePluginHelper.groovy
index abb6ce92b90..4ce0cd2bd68 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/test/support/MockHibernatePluginHelper.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/test/support/MockHibernatePluginHelper.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.test.support
import grails.plugins.GrailsPlugin
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/validation/CascadingErrorCountSpec.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/validation/CascadingErrorCountSpec.groovy
index ce3edb5ba28..28b8bcaea7e 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/validation/CascadingErrorCountSpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/validation/CascadingErrorCountSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.validation
import grails.persistence.Entity
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/validation/ConstrainedPropertyBuilderForCommandsTests.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/validation/ConstrainedPropertyBuilderForCommandsTests.groovy
index 22ef56d5550..9630bde9e77 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/validation/ConstrainedPropertyBuilderForCommandsTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/validation/ConstrainedPropertyBuilderForCommandsTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.validation
import grails.persistence.Entity
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/validation/TestConstraints.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/validation/TestConstraints.groovy
index 294527d72f8..5c442492fe3 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/validation/TestConstraints.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/validation/TestConstraints.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.validation
constraints = {
name(blank:false)
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/validation/TestingValidationSpec.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/validation/TestingValidationSpec.groovy
index 611d0eeb7d5..41a2d900706 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/validation/TestingValidationSpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/validation/TestingValidationSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.validation
import grails.persistence.Entity
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/validation/UrlConstrainedPropertyBuilderForCommandsTests.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/validation/UrlConstrainedPropertyBuilderForCommandsTests.groovy
index 907ad2c553f..748e474ac8d 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/validation/UrlConstrainedPropertyBuilderForCommandsTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/validation/UrlConstrainedPropertyBuilderForCommandsTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.validation
import grails.persistence.Entity
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/codecs/HTMLJSCodecIntegrationSpec.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/web/codecs/HTMLJSCodecIntegrationSpec.groovy
index f18dc168fd2..0d043287912 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/codecs/HTMLJSCodecIntegrationSpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/codecs/HTMLJSCodecIntegrationSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.codecs
import grails.core.GrailsApplication;
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/errors/GrailsExceptionResolverTests.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/web/errors/GrailsExceptionResolverTests.groovy
index aa73015c878..460eb034700 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/errors/GrailsExceptionResolverTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/errors/GrailsExceptionResolverTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.errors
import grails.core.DefaultGrailsApplication
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/filters/HiddenHttpMethodFilterTests.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/web/filters/HiddenHttpMethodFilterTests.groovy
index cbb5b13d572..ef7472969d6 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/filters/HiddenHttpMethodFilterTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/filters/HiddenHttpMethodFilterTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.filters
import org.grails.web.filters.HiddenHttpMethodFilter
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/i18n/ParamsAwareLocaleChangeInterceptorTests.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/web/i18n/ParamsAwareLocaleChangeInterceptorTests.groovy
index 6d2df3e3092..dba7689c013 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/i18n/ParamsAwareLocaleChangeInterceptorTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/i18n/ParamsAwareLocaleChangeInterceptorTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.i18n
import grails.util.GrailsWebMockUtil
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/json/JSONObjectTests.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/web/json/JSONObjectTests.groovy
index 25a3f910740..662f83f0e18 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/json/JSONObjectTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/json/JSONObjectTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.json
import org.junit.jupiter.api.Test
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/metaclass/ChainMethodTests.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/web/metaclass/ChainMethodTests.groovy
index e6b3eba34cc..c029c45a702 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/metaclass/ChainMethodTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/metaclass/ChainMethodTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.metaclass
import grails.testing.gorm.DomainUnitTest
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/metaclass/ChainMethodWithRequestDataValueProcessorSpec.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/web/metaclass/ChainMethodWithRequestDataValueProcessorSpec.groovy
index bdf2cd1dde4..9dbf7b46399 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/metaclass/ChainMethodWithRequestDataValueProcessorSpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/metaclass/ChainMethodWithRequestDataValueProcessorSpec.groovy
@@ -1,5 +1,18 @@
-
-
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.metaclass
import grails.testing.gorm.DomainUnitTest
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/metaclass/ForwardMethodTests.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/web/metaclass/ForwardMethodTests.groovy
index 9f11c357f7c..bd768063ad7 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/metaclass/ForwardMethodTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/metaclass/ForwardMethodTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.metaclass
import grails.artefact.Artefact
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/metaclass/ForwardMethodspec.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/web/metaclass/ForwardMethodspec.groovy
index 243a2033911..dba626f10a6 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/metaclass/ForwardMethodspec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/metaclass/ForwardMethodspec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.metaclass
import grails.artefact.Controller
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/metaclass/WithFormMethodTests.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/web/metaclass/WithFormMethodTests.groovy
index c8d72255a97..25bd8796fb6 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/metaclass/WithFormMethodTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/metaclass/WithFormMethodTests.groovy
@@ -1,4 +1,5 @@
-/* Copyright 2004-2005 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -12,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.grails.web.metaclass
import grails.artefact.Controller
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/plugins/support/MyHandlerInterceptor.java b/grails-test-suite-uber/src/test/groovy/org/grails/web/plugins/support/MyHandlerInterceptor.java
index e41b5acef39..eee8b49e33d 100755
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/plugins/support/MyHandlerInterceptor.java
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/plugins/support/MyHandlerInterceptor.java
@@ -1,22 +1,37 @@
-package org.grails.web.plugins.support;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.springframework.web.servlet.HandlerInterceptor;
-import org.springframework.web.servlet.ModelAndView;
-
-public class MyHandlerInterceptor implements HandlerInterceptor {
-
- public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
- // do nothing
- }
-
- public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
- // do nothing
- }
-
- public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
- return false;
- }
-}
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.grails.web.plugins.support;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.web.servlet.HandlerInterceptor;
+import org.springframework.web.servlet.ModelAndView;
+
+public class MyHandlerInterceptor implements HandlerInterceptor {
+
+ public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
+ // do nothing
+ }
+
+ public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
+ // do nothing
+ }
+
+ public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
+ return false;
+ }
+}
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/plugins/support/MyWebRequestInterceptor.java b/grails-test-suite-uber/src/test/groovy/org/grails/web/plugins/support/MyWebRequestInterceptor.java
index 2cbcda367cc..c8b6fb7a9c9 100755
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/plugins/support/MyWebRequestInterceptor.java
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/plugins/support/MyWebRequestInterceptor.java
@@ -1,20 +1,35 @@
-package org.grails.web.plugins.support;
-
-import org.springframework.ui.ModelMap;
-import org.springframework.web.context.request.WebRequest;
-import org.springframework.web.context.request.WebRequestInterceptor;
-
-public class MyWebRequestInterceptor implements WebRequestInterceptor {
-
- public void afterCompletion(WebRequest request, Exception ex) {
- // do nothing
- }
-
- public void postHandle(WebRequest request, ModelMap model) {
- // do nothing
- }
-
- public void preHandle(WebRequest request) throws Exception {
- // do nothing
- }
-}
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.grails.web.plugins.support;
+
+import org.springframework.ui.ModelMap;
+import org.springframework.web.context.request.WebRequest;
+import org.springframework.web.context.request.WebRequestInterceptor;
+
+public class MyWebRequestInterceptor implements WebRequestInterceptor {
+
+ public void afterCompletion(WebRequest request, Exception ex) {
+ // do nothing
+ }
+
+ public void postHandle(WebRequest request, ModelMap model) {
+ // do nothing
+ }
+
+ public void preHandle(WebRequest request) throws Exception {
+ // do nothing
+ }
+}
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/DefaultGrailsApplicationAttributesTests.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/DefaultGrailsApplicationAttributesTests.groovy
index 6f4e90d25c8..a35d94763ed 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/DefaultGrailsApplicationAttributesTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/DefaultGrailsApplicationAttributesTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.servlet
import org.grails.buffer.StreamCharBuffer
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/FlashScopeWithErrorsTests.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/FlashScopeWithErrorsTests.groovy
index 48f52440e7b..4d5cbd92c99 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/FlashScopeWithErrorsTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/FlashScopeWithErrorsTests.groovy
@@ -1,4 +1,5 @@
-/* Copyright 2004-2005 Graeme Rocher
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -12,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.grails.web.servlet
import grails.persistence.Entity
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/GrailsApplicationAttributesTests.java b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/GrailsApplicationAttributesTests.java
index b0f14fb5c5f..36d8177d91a 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/GrailsApplicationAttributesTests.java
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/GrailsApplicationAttributesTests.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.servlet;
import org.grails.web.util.GrailsApplicationAttributes;
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/GrailsFlashScopeTests.java b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/GrailsFlashScopeTests.java
index 7bcca741ab2..3f64ee09194 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/GrailsFlashScopeTests.java
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/GrailsFlashScopeTests.java
@@ -1,4 +1,5 @@
-/* Copyright 2004-2005 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/MultipleRenderCallsContentTypeTests.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/MultipleRenderCallsContentTypeTests.groovy
index a9cd3d46e1b..6e946cece65 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/MultipleRenderCallsContentTypeTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/MultipleRenderCallsContentTypeTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.servlet
import grails.testing.web.controllers.ControllerUnitTest
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/RenderMethodTests.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/RenderMethodTests.groovy
index 4c23735d5ea..747a0ca1d0d 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/RenderMethodTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/RenderMethodTests.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/ControllerInheritanceTests.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/ControllerInheritanceTests.groovy
index 19624929317..c556a32fe66 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/ControllerInheritanceTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/ControllerInheritanceTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.servlet.mvc
import grails.artefact.Artefact
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/ParamsObjectTests.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/ParamsObjectTests.groovy
index 001d35dec06..02fa87b2398 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/ParamsObjectTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/ParamsObjectTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.servlet.mvc
import grails.web.servlet.mvc.GrailsParameterMap
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/PermanentRedirectSpec.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/PermanentRedirectSpec.groovy
index 1ae1232022c..d9029dab5fe 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/PermanentRedirectSpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/PermanentRedirectSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.servlet.mvc
import grails.testing.web.controllers.ControllerUnitTest
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/RedirectController.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/RedirectController.groovy
index 1706f36a7c9..3bf32f374b3 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/RedirectController.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/RedirectController.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.servlet.mvc
import grails.artefact.Artefact
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/RedirectMethodTests.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/RedirectMethodTests.groovy
index 5c05db9c273..7ba0f86fe25 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/RedirectMethodTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/RedirectMethodTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.servlet.mvc
import grails.testing.web.GrailsWebUnitTest
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/RedirectMethodWithRequestDataValueProcessorSpec.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/RedirectMethodWithRequestDataValueProcessorSpec.groovy
index 0aee195b08f..c2eca417afd 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/RedirectMethodWithRequestDataValueProcessorSpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/RedirectMethodWithRequestDataValueProcessorSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.servlet.mvc
import grails.testing.web.controllers.ControllerUnitTest
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/RedirectToDefaultActionTests.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/RedirectToDefaultActionTests.groovy
index 4d3935b4f8b..328369925be 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/RedirectToDefaultActionTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/RedirectToDefaultActionTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.servlet.mvc
import grails.testing.web.GrailsWebUnitTest
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/RenderDynamicMethodTests.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/RenderDynamicMethodTests.groovy
index d315b4c92e2..62937d5ef29 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/RenderDynamicMethodTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/RenderDynamicMethodTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.servlet.mvc
import grails.testing.web.controllers.ControllerUnitTest
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/ReturnModelAndViewController.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/ReturnModelAndViewController.groovy
index c38c28f560b..e609502ac91 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/ReturnModelAndViewController.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/ReturnModelAndViewController.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.servlet.mvc
import org.springframework.web.servlet.ModelAndView
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/TagLibDynamicMethodsTests.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/TagLibDynamicMethodsTests.groovy
index ce96e046d80..da9556e2123 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/TagLibDynamicMethodsTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/TagLibDynamicMethodsTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.servlet.mvc
import grails.artefact.Artefact
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/alpha/AnotherNamespacedController.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/alpha/AnotherNamespacedController.groovy
index 663c427ede2..c168280ff81 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/alpha/AnotherNamespacedController.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/alpha/AnotherNamespacedController.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.servlet.mvc.alpha
class AnotherNamespacedController {
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/alpha/NamespacedController.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/alpha/NamespacedController.groovy
index 90f13716eff..5268c3c8485 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/alpha/NamespacedController.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/alpha/NamespacedController.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.servlet.mvc.alpha
import grails.artefact.Artefact
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/beta/AnotherNamespacedController.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/beta/AnotherNamespacedController.groovy
index 4c7c36a9270..54283cb4dde 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/beta/AnotherNamespacedController.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/beta/AnotherNamespacedController.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.servlet.mvc.beta
class AnotherNamespacedController {
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/beta/NamespacedController.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/beta/NamespacedController.groovy
index e474a4af13c..17fb79264cb 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/beta/NamespacedController.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/beta/NamespacedController.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.servlet.mvc.beta
import grails.artefact.Artefact
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/controller1.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/controller1.groovy
index 38338811c55..10fdc579078 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/controller1.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/controller1.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.servlet.mvc
class TestController {
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/controller2.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/controller2.groovy
index 84e9132cfac..70832ce57c1 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/controller2.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/controller2.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.servlet.mvc
class SimpleController {
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/controller4.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/controller4.groovy
index 046e27d0707..b3b8caff220 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/controller4.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/controller4.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.servlet.mvc
class ParameterController {
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/util/BoundedCharsAsEncodedBytesCounterTest.java b/grails-test-suite-uber/src/test/groovy/org/grails/web/util/BoundedCharsAsEncodedBytesCounterTest.java
index 1dbfcb475e5..70ff904cb5b 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/util/BoundedCharsAsEncodedBytesCounterTest.java
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/util/BoundedCharsAsEncodedBytesCounterTest.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.util;
import org.junit.jupiter.api.Test;
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/util/CodecPrintWriterTest.java b/grails-test-suite-uber/src/test/groovy/org/grails/web/util/CodecPrintWriterTest.java
index 03895676f7e..f264fce673c 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/util/CodecPrintWriterTest.java
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/util/CodecPrintWriterTest.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.util;
import static org.junit.Assert.assertEquals;
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/util/CodecWithClosureProperties.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/web/util/CodecWithClosureProperties.groovy
index 3244f65596c..ea96eb74875 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/util/CodecWithClosureProperties.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/util/CodecWithClosureProperties.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.util
class CodecWithClosureProperties {
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/util/StreamByteBufferTest.java b/grails-test-suite-uber/src/test/groovy/org/grails/web/util/StreamByteBufferTest.java
index eae555d5ccb..d92362894c8 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/util/StreamByteBufferTest.java
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/util/StreamByteBufferTest.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.util;
import org.grails.buffer.StreamByteBuffer;
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/util/StreamCharBufferSpec.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/web/util/StreamCharBufferSpec.groovy
index 3c01956cccb..0d48f500c08 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/util/StreamCharBufferSpec.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/util/StreamCharBufferSpec.groovy
@@ -1,4 +1,5 @@
-/* Copyright 2013 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/web/util/WebUtilsTests.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/web/util/WebUtilsTests.groovy
index 66695be4d40..71fd13985f7 100644
--- a/grails-test-suite-uber/src/test/groovy/org/grails/web/util/WebUtilsTests.groovy
+++ b/grails-test-suite-uber/src/test/groovy/org/grails/web/util/WebUtilsTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.util
import grails.core.DefaultGrailsApplication
diff --git a/grails-test-suite-web/src/test/groovy/grails/artefact/ControllerTraitSpec.groovy b/grails-test-suite-web/src/test/groovy/grails/artefact/ControllerTraitSpec.groovy
index be23f158d4c..1bcbca2acab 100644
--- a/grails-test-suite-web/src/test/groovy/grails/artefact/ControllerTraitSpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/grails/artefact/ControllerTraitSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.artefact
import grails.artefact.controller.RestResponder
diff --git a/grails-test-suite-web/src/test/groovy/grails/rest/web/RespondMethodSpec.groovy b/grails-test-suite-web/src/test/groovy/grails/rest/web/RespondMethodSpec.groovy
index ee0188ee8fe..3bfbe4e3467 100644
--- a/grails-test-suite-web/src/test/groovy/grails/rest/web/RespondMethodSpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/grails/rest/web/RespondMethodSpec.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package grails.rest.web
import grails.artefact.Artefact
diff --git a/grails-test-suite-web/src/test/groovy/grails/test/mixin/TagLibWithServiceMockTests.groovy b/grails-test-suite-web/src/test/groovy/grails/test/mixin/TagLibWithServiceMockTests.groovy
index 30fc4204bc2..b323dd5ce24 100644
--- a/grails-test-suite-web/src/test/groovy/grails/test/mixin/TagLibWithServiceMockTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/grails/test/mixin/TagLibWithServiceMockTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import grails.artefact.Artefact
diff --git a/grails-test-suite-web/src/test/groovy/grails/test/mixin/TestForControllerWithNamePropertySpec.groovy b/grails-test-suite-web/src/test/groovy/grails/test/mixin/TestForControllerWithNamePropertySpec.groovy
index da2f524c74a..e127ea843bc 100644
--- a/grails-test-suite-web/src/test/groovy/grails/test/mixin/TestForControllerWithNamePropertySpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/grails/test/mixin/TestForControllerWithNamePropertySpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import grails.artefact.Artefact
diff --git a/grails-test-suite-web/src/test/groovy/grails/test/mixin/UrlMappingsTestForTests.groovy b/grails-test-suite-web/src/test/groovy/grails/test/mixin/UrlMappingsTestForTests.groovy
index 1ffafeae847..7b8e85aa071 100644
--- a/grails-test-suite-web/src/test/groovy/grails/test/mixin/UrlMappingsTestForTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/grails/test/mixin/UrlMappingsTestForTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.mixin
import grails.artefact.Artefact
diff --git a/grails-test-suite-web/src/test/groovy/grails/test/web/FordedUrlSpec.groovy b/grails-test-suite-web/src/test/groovy/grails/test/web/FordedUrlSpec.groovy
index bfc53e81def..7f8368e130a 100644
--- a/grails-test-suite-web/src/test/groovy/grails/test/web/FordedUrlSpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/grails/test/web/FordedUrlSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.web
import grails.artefact.Artefact
diff --git a/grails-test-suite-web/src/test/groovy/grails/test/web/GetHeadersFromResponseSpec.groovy b/grails-test-suite-web/src/test/groovy/grails/test/web/GetHeadersFromResponseSpec.groovy
index abdc4eab04b..32fcc8cbca0 100644
--- a/grails-test-suite-web/src/test/groovy/grails/test/web/GetHeadersFromResponseSpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/grails/test/web/GetHeadersFromResponseSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.web
import grails.artefact.Artefact
diff --git a/grails-test-suite-web/src/test/groovy/grails/test/web/RedirectToDomainSpec.groovy b/grails-test-suite-web/src/test/groovy/grails/test/web/RedirectToDomainSpec.groovy
index 930e1e3af3e..3ef52688434 100644
--- a/grails-test-suite-web/src/test/groovy/grails/test/web/RedirectToDomainSpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/grails/test/web/RedirectToDomainSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.test.web
import grails.artefact.Artefact
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/compiler/web/ControllerActionTransformerAllowedMethodsSpec.groovy b/grails-test-suite-web/src/test/groovy/org/grails/compiler/web/ControllerActionTransformerAllowedMethodsSpec.groovy
index 220015e37c2..801e6f524b4 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/compiler/web/ControllerActionTransformerAllowedMethodsSpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/compiler/web/ControllerActionTransformerAllowedMethodsSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.compiler.web
import grails.artefact.Artefact
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/compiler/web/WithFormatSpec.groovy b/grails-test-suite-web/src/test/groovy/org/grails/compiler/web/WithFormatSpec.groovy
index eeb3497719c..d99e41ab8b5 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/compiler/web/WithFormatSpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/compiler/web/WithFormatSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.compiler.web
import grails.artefact.Artefact
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/compiler/web/converters/ConvertersControllersApiSpec.groovy b/grails-test-suite-web/src/test/groovy/org/grails/compiler/web/converters/ConvertersControllersApiSpec.groovy
index 1bf105dd33d..b12d2fe6cd5 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/compiler/web/converters/ConvertersControllersApiSpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/compiler/web/converters/ConvertersControllersApiSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.compiler.web.converters
import grails.artefact.Artefact
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/plugins/web/rest/render/xml/DefaultXmlRendererSpec.groovy b/grails-test-suite-web/src/test/groovy/org/grails/plugins/web/rest/render/xml/DefaultXmlRendererSpec.groovy
index 0631bede51d..532c0ff9d86 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/plugins/web/rest/render/xml/DefaultXmlRendererSpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/plugins/web/rest/render/xml/DefaultXmlRendererSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.plugins.web.rest.render.xml
import grails.converters.XML
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/BindCommandObjectsSpec.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/BindCommandObjectsSpec.groovy
index 198fa88c677..4f43d19ee29 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/BindCommandObjectsSpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/BindCommandObjectsSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.binding
import grails.artefact.Artefact
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/BindStringArrayToGenericListTests.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/BindStringArrayToGenericListTests.groovy
index 4b5a05a5dcb..fee83f2c141 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/BindStringArrayToGenericListTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/BindStringArrayToGenericListTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.binding
import grails.artefact.Artefact
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/BindToEnumTests.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/BindToEnumTests.groovy
index 0bce5ab3332..fc14883d18a 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/BindToEnumTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/BindToEnumTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.binding
import grails.artefact.Artefact
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/BindToObjectWithEmbeddableTests.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/BindToObjectWithEmbeddableTests.groovy
index 8bba29a8406..825f63a92b0 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/BindToObjectWithEmbeddableTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/BindToObjectWithEmbeddableTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.binding
import grails.artefact.Artefact
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/BindToPropertyThatIsNotReadableTests.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/BindToPropertyThatIsNotReadableTests.groovy
index 550e69d83e8..d7dac1be6d3 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/BindToPropertyThatIsNotReadableTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/BindToPropertyThatIsNotReadableTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.binding
import grails.persistence.Entity
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/BindXmlWithAssociationTests.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/BindXmlWithAssociationTests.groovy
index 487409ec174..b3eb8468a27 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/BindXmlWithAssociationTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/BindXmlWithAssociationTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.binding
import grails.artefact.Artefact
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/BindingExcludeTests.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/BindingExcludeTests.groovy
index 1e2cd5126bd..29d2d2a1d72 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/BindingExcludeTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/BindingExcludeTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.binding
import grails.artefact.Artefact
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/BindingRequestMethodSpec.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/BindingRequestMethodSpec.groovy
index 67d093b0a6b..4a8cae31633 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/BindingRequestMethodSpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/BindingRequestMethodSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.binding
import grails.artefact.Artefact
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/BindingToNullableTests.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/BindingToNullableTests.groovy
index d78c98303de..5c0981514c5 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/BindingToNullableTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/BindingToNullableTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.binding
import grails.testing.gorm.DomainUnitTest
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/CheckboxBindingTests.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/CheckboxBindingTests.groovy
index c7e3bfeabda..073690bbd97 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/CheckboxBindingTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/CheckboxBindingTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.binding
import grails.artefact.Artefact
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/ControllerActionParameterBindingSpec.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/ControllerActionParameterBindingSpec.groovy
index c36cecdcb0a..a36ef409ee3 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/ControllerActionParameterBindingSpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/ControllerActionParameterBindingSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.binding
import grails.artefact.Artefact
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/DataBindingLazyMetaPropertyMapTests.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/DataBindingLazyMetaPropertyMapTests.groovy
index 909490b0e75..9216a7b4c2f 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/DataBindingLazyMetaPropertyMapTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/DataBindingLazyMetaPropertyMapTests.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.grails.web.binding
import org.grails.web.databinding.DataBindingLazyMetaPropertyMap
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/DataBindingTests.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/DataBindingTests.groovy
index 1550422939c..5871f5c9fb9 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/DataBindingTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/DataBindingTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.binding
import grails.artefact.Artefact
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/DefaultASTDatabindingHelperDomainClassSpecialPropertiesSpec.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/DefaultASTDatabindingHelperDomainClassSpecialPropertiesSpec.groovy
index 9f430f8bfb1..fac8140ff3c 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/DefaultASTDatabindingHelperDomainClassSpecialPropertiesSpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/DefaultASTDatabindingHelperDomainClassSpecialPropertiesSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.binding
import grails.persistence.Entity
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/EnumBindingTests.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/EnumBindingTests.groovy
index 9f438833a9c..92e26c566e0 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/EnumBindingTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/EnumBindingTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.binding
import grails.testing.gorm.DomainUnitTest
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/GrailsParameterMapBindingSpec.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/GrailsParameterMapBindingSpec.groovy
index 1160322674c..18eb1c06b22 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/GrailsParameterMapBindingSpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/GrailsParameterMapBindingSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.binding
import grails.artefact.Artefact
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/JSONBindingToNullTests.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/JSONBindingToNullTests.groovy
index 0f57d47d9db..ec9e65cae21 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/JSONBindingToNullTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/JSONBindingToNullTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.binding
import grails.artefact.Artefact
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/JSONRequestToResponseRenderingSpec.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/JSONRequestToResponseRenderingSpec.groovy
index 3296fc6d618..3e58e2c4fda 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/JSONRequestToResponseRenderingSpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/JSONRequestToResponseRenderingSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.binding
import grails.artefact.Artefact
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/NestedXmlBindingTests.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/NestedXmlBindingTests.groovy
index 6cfbf47b2f6..eb68025efeb 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/NestedXmlBindingTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/NestedXmlBindingTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.binding
import grails.persistence.Entity
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/hal/json/HalJsonBindingSpec.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/hal/json/HalJsonBindingSpec.groovy
index 5e0f5870db2..50c6e418cd0 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/hal/json/HalJsonBindingSpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/hal/json/HalJsonBindingSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.binding.hal.json
import grails.persistence.Entity
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/hal/xml/HalXmlBindingSpec.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/hal/xml/HalXmlBindingSpec.groovy
index 4a8ceb19e35..5dd7f034b2e 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/hal/xml/HalXmlBindingSpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/hal/xml/HalXmlBindingSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.binding.hal.xml
import grails.persistence.Entity
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/json/JsonBindingSpec.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/json/JsonBindingSpec.groovy
index f9ac23c3c2b..31be70c71ee 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/json/JsonBindingSpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/json/JsonBindingSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.binding.json
import grails.artefact.Artefact
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/json/JsonBindingWithExceptionHandlerSpec.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/json/JsonBindingWithExceptionHandlerSpec.groovy
index 7bae41beb86..3e6e09cd3f6 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/json/JsonBindingWithExceptionHandlerSpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/json/JsonBindingWithExceptionHandlerSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.binding.json
import grails.artefact.Artefact
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/xml/XmlBindingSpec.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/xml/XmlBindingSpec.groovy
index 6f807b3fd1b..98ca29a7d93 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/binding/xml/XmlBindingSpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/binding/xml/XmlBindingSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.binding.xml
import grails.artefact.Artefact
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/codecs/CodecSpec.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/codecs/CodecSpec.groovy
index d1bc4ec10a3..2673d0e3cbc 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/codecs/CodecSpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/codecs/CodecSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.codecs
import grails.converters.XML
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/commandobjects/ClassWithNoValidateMethod.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/commandobjects/ClassWithNoValidateMethod.groovy
index ffd4a09cdd7..a5376083814 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/commandobjects/ClassWithNoValidateMethod.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/commandobjects/ClassWithNoValidateMethod.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.commandobjects
class ClassWithNoValidateMethod {
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/commandobjects/CommandObjectInstantiationSpec.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/commandobjects/CommandObjectInstantiationSpec.groovy
index 45f03b3f60c..40e77c306d9 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/commandobjects/CommandObjectInstantiationSpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/commandobjects/CommandObjectInstantiationSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.commandobjects
import grails.artefact.Artefact
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/commandobjects/CommandObjectNoDataSpec.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/commandobjects/CommandObjectNoDataSpec.groovy
index 63c8909e75e..e13c73af9ba 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/commandobjects/CommandObjectNoDataSpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/commandobjects/CommandObjectNoDataSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.commandobjects
import grails.testing.web.GrailsWebUnitTest
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/commandobjects/CommandObjectNullabilitySpec.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/commandobjects/CommandObjectNullabilitySpec.groovy
index 833a1f02907..ebfb5c7f875 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/commandobjects/CommandObjectNullabilitySpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/commandobjects/CommandObjectNullabilitySpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.commandobjects
import grails.artefact.Artefact
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/commandobjects/CommandObjectsSpec.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/commandobjects/CommandObjectsSpec.groovy
index ac90beeaf59..fd09a10f3f9 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/commandobjects/CommandObjectsSpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/commandobjects/CommandObjectsSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.commandobjects
import grails.artefact.Artefact
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/commandobjects/NonValidateableCommand.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/commandobjects/NonValidateableCommand.groovy
index 4ebc0c09b19..316c3906859 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/commandobjects/NonValidateableCommand.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/commandobjects/NonValidateableCommand.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.commandobjects
class NonValidateableCommand {
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/commandobjects/SomeValidateableClass.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/commandobjects/SomeValidateableClass.groovy
index 2e114fca5c0..27e1a47644a 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/commandobjects/SomeValidateableClass.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/commandobjects/SomeValidateableClass.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.commandobjects
import grails.validation.Validateable
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/controllers/ContentNegotiationSpec.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/controllers/ContentNegotiationSpec.groovy
index 56cfd2ad7f4..880d0c39a0a 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/controllers/ContentNegotiationSpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/controllers/ContentNegotiationSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.controllers
import grails.artefact.Artefact
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/controllers/ControllerExceptionHandlerCompilationErrorsSpec.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/controllers/ControllerExceptionHandlerCompilationErrorsSpec.groovy
index 3244b8b2c6f..357cba8ea13 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/controllers/ControllerExceptionHandlerCompilationErrorsSpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/controllers/ControllerExceptionHandlerCompilationErrorsSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.controllers
import org.codehaus.groovy.control.MultipleCompilationErrorsException
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/controllers/ControllerExceptionHandlerInheritanceSpec.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/controllers/ControllerExceptionHandlerInheritanceSpec.groovy
index 1eef5a98688..4bbf5819609 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/controllers/ControllerExceptionHandlerInheritanceSpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/controllers/ControllerExceptionHandlerInheritanceSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.controllers
import grails.artefact.Artefact
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/controllers/ControllerExceptionHandlerSpec.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/controllers/ControllerExceptionHandlerSpec.groovy
index 052a17bfc8f..7f2886110bc 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/controllers/ControllerExceptionHandlerSpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/controllers/ControllerExceptionHandlerSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.controllers
import grails.artefact.Artefact
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/controllers/ControllerMetaProgrammingSpec.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/controllers/ControllerMetaProgrammingSpec.groovy
index ab2290dc3f4..fb3805ca950 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/controllers/ControllerMetaProgrammingSpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/controllers/ControllerMetaProgrammingSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.controllers
import grails.artefact.Artefact
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/converters/Author.java b/grails-test-suite-web/src/test/groovy/org/grails/web/converters/Author.java
index ff6567b4eba..52692304d9b 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/converters/Author.java
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/converters/Author.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.converters;
/**
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/converters/ControllerWithXmlConvertersTests.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/converters/ControllerWithXmlConvertersTests.groovy
index 8f99f1df9a1..b7c631dc0e3 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/converters/ControllerWithXmlConvertersTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/converters/ControllerWithXmlConvertersTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.converters
import grails.artefact.Artefact
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/converters/ConverterConfigurationTests.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/converters/ConverterConfigurationTests.groovy
index 8deb3bff720..d518b559e5e 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/converters/ConverterConfigurationTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/converters/ConverterConfigurationTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.converters
import grails.converters.JSON
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/converters/JSONArrayTests.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/converters/JSONArrayTests.groovy
index b34a090d355..7141a988e9a 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/converters/JSONArrayTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/converters/JSONArrayTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.converters
import static org.junit.Assert.assertEquals
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/converters/JSONConverterTests.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/converters/JSONConverterTests.groovy
index c288617179b..68d19cdf27b 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/converters/JSONConverterTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/converters/JSONConverterTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.converters
import grails.testing.gorm.DomainUnitTest
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/converters/MarshallerRegistrarSpec.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/converters/MarshallerRegistrarSpec.groovy
index 4b135e77cc2..9cb12d7f661 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/converters/MarshallerRegistrarSpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/converters/MarshallerRegistrarSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.converters
import grails.artefact.Artefact
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/includes/IncludeHandlingSpec.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/includes/IncludeHandlingSpec.groovy
index 4396680d63c..d018d88bdb6 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/includes/IncludeHandlingSpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/includes/IncludeHandlingSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.includes
import grails.testing.web.GrailsWebUnitTest
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/json/DomainClassCollectionRenderingSpec.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/json/DomainClassCollectionRenderingSpec.groovy
index 38106604675..eb26199864a 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/json/DomainClassCollectionRenderingSpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/json/DomainClassCollectionRenderingSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.json
import grails.persistence.Entity
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/json/JSONWriterSpec.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/json/JSONWriterSpec.groovy
index 5f7ec854c92..a934be07f78 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/json/JSONWriterSpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/json/JSONWriterSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.json
import groovy.transform.CompileStatic
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/AdditionalParamsMappingTests.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/AdditionalParamsMappingTests.groovy
index 2eccecde75b..be8b0933d5c 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/AdditionalParamsMappingTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/AdditionalParamsMappingTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mapping
import grails.testing.web.UrlMappingsUnitTest
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/DoubleWildcardUrlMappingTests.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/DoubleWildcardUrlMappingTests.groovy
index 0be61894648..0827c5db3a0 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/DoubleWildcardUrlMappingTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/DoubleWildcardUrlMappingTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mapping
import grails.testing.web.UrlMappingsUnitTest
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/DynamicActionNameEvaluatingTests.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/DynamicActionNameEvaluatingTests.groovy
index fc941f87c2f..32f7f09e257 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/DynamicActionNameEvaluatingTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/DynamicActionNameEvaluatingTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mapping
import grails.testing.web.UrlMappingsUnitTest
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/DynamicParameterValuesTests.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/DynamicParameterValuesTests.groovy
index 0c035b1cb2a..6df5bd82857 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/DynamicParameterValuesTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/DynamicParameterValuesTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mapping
import grails.testing.web.UrlMappingsUnitTest
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/IdUrlMappingTests.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/IdUrlMappingTests.groovy
index 35733e70ba2..ea245e1d70c 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/IdUrlMappingTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/IdUrlMappingTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mapping
import grails.testing.web.UrlMappingsUnitTest
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/OverlappingUrlMappingTests.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/OverlappingUrlMappingTests.groovy
index 101c30124d9..e8bc749290d 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/OverlappingUrlMappingTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/OverlappingUrlMappingTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mapping
import grails.testing.web.UrlMappingsUnitTest
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/RegexUrlMappingTests.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/RegexUrlMappingTests.groovy
index 5a658bc555f..37e0aad945e 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/RegexUrlMappingTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/RegexUrlMappingTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mapping
import grails.core.DefaultGrailsApplication
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/ResponseCodeUrlMappingTests.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/ResponseCodeUrlMappingTests.groovy
index b7ceea3361d..9198459eccc 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/ResponseCodeUrlMappingTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/ResponseCodeUrlMappingTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mapping
import grails.testing.web.UrlMappingsUnitTest
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/RestfulMappingTests.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/RestfulMappingTests.groovy
index d6db71677c0..636618db39e 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/RestfulMappingTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/RestfulMappingTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mapping
import grails.testing.web.UrlMappingsUnitTest
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/UriUrlMappingTests.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/UriUrlMappingTests.groovy
index d18eea6ee96..fd4614cf55a 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/UriUrlMappingTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/UriUrlMappingTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mapping
import grails.core.DefaultGrailsApplication
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/UrlMappingEvaluatorTests.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/UrlMappingEvaluatorTests.groovy
index 1592e1b321f..e39a4a8c6c9 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/UrlMappingEvaluatorTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/UrlMappingEvaluatorTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mapping
import grails.testing.web.GrailsWebUnitTest
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/UrlMappingParameterTests.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/UrlMappingParameterTests.groovy
index 46d04ec131a..fdc271eb971 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/UrlMappingParameterTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/UrlMappingParameterTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mapping
import grails.testing.web.UrlMappingsUnitTest
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/UrlMappingTests.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/UrlMappingTests.groovy
index 30e5ea874ab..f5d05834316 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/UrlMappingTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/UrlMappingTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mapping
import grails.testing.web.UrlMappingsUnitTest
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/UrlMappingWithCustomValidatorTests.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/UrlMappingWithCustomValidatorTests.groovy
index 77291f6bfba..567ec043c35 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/UrlMappingWithCustomValidatorTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/UrlMappingWithCustomValidatorTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mapping
import grails.testing.web.GrailsWebUnitTest
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/UrlMappingsHolderTests.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/UrlMappingsHolderTests.groovy
index ef3ddc4d942..fdcc7eaf2bf 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/UrlMappingsHolderTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/UrlMappingsHolderTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mapping
import grails.testing.web.GrailsWebUnitTest
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/ViewUrlMappingTests.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/ViewUrlMappingTests.groovy
index 4309edbf6fd..2a5735adf5d 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/ViewUrlMappingTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/mapping/ViewUrlMappingTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mapping
import grails.testing.web.GrailsWebUnitTest
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/metaclass/CollectionBindDataMethodSpec.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/metaclass/CollectionBindDataMethodSpec.groovy
index fa0bfefdf8f..58b35eafb3f 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/metaclass/CollectionBindDataMethodSpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/metaclass/CollectionBindDataMethodSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.metaclass
import grails.artefact.Artefact
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/mime/ContentFormatControllerTests.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/mime/ContentFormatControllerTests.groovy
index 64b43810af7..b40de8aebc7 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/mime/ContentFormatControllerTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/mime/ContentFormatControllerTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mime
import grails.converters.JSON
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/mime/WithFormatContentTypeSpec.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/mime/WithFormatContentTypeSpec.groovy
index b8d4c39c5f1..735e78c395a 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/mime/WithFormatContentTypeSpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/mime/WithFormatContentTypeSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mime
import grails.artefact.Artefact
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/servlet/BindDataMethodTests.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/servlet/BindDataMethodTests.groovy
index 4fda398dc9d..593159cd753 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/servlet/BindDataMethodTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/servlet/BindDataMethodTests.groovy
@@ -1,193 +1,193 @@
-/*
- * Copyright 2013 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.grails.web.servlet
-
-import grails.artefact.Artefact
-import grails.testing.web.controllers.ControllerUnitTest
-import spock.lang.Specification
-
-/**
- * Tests for the bindData method
- *
- */
-class BindDataMethodTests extends Specification implements ControllerUnitTest {
-
- void 'Test bindData with Map'() {
- when:
- def model = controller.bindWithMap()
- def target = model.target
-
- then:
- target.name == 'Marc Palmer'
- }
-
- void 'Test bindData With Excludes'() {
- when:
- def model = controller.bindWithExcludes()
- def target = model.target
-
- then:
- target.name == 'Marc Palmer'
- target.email == null
- }
-
- void 'Test bindData With Includes'() {
- when:
- def model = controller.bindWithIncludes()
- def target = model.target
-
- then:
- target.name == 'Marc Palmer'
- target.email == null
- }
-
- void 'Test bindData With Empty Includes/Excludes Map'() {
- when:
- def model = controller.bindWithEmptyIncludesExcludesMap()
- def target = model.target
-
- then:
- target.name == 'Marc Palmer'
- target.email == 'dowantthis'
- }
-
- void 'Test bindData Overriding Included With Excluded'() {
- when:
- def model = controller.bindWithIncludeOverriddenByExclude()
- def target = model.target
-
- then:
- target.name == 'Marc Palmer'
- target.email == null
- }
-
- void 'Test bindData With Prefix Filter'() {
- when:
- def model = controller.bindWithPrefixFilter()
- def target = model.target
-
- then:
- target.name == 'Lee Butts'
- target.email == 'lee@mail.com'
- }
-
- void 'Test bindData With Disallowed And GrailsParameterMap'() {
- when:
- params.name = 'Marc Palmer'
- params.email = 'dontwantthis'
- params.'address.country' = 'gbr'
- def model = controller.bindWithParamsAndDisallowed()
- def target = model.target
-
- then:
- target.name == 'Marc Palmer'
- target.address.country == 'gbr'
- target.email == null
- }
-
- void 'Test bindData With Prefix Filter And Disallowed'() {
- when:
- def model = controller.bindWithPrefixFilterAndDisallowed()
- def target = model.target
-
- then:
- target.name == 'Lee Butts'
- target.email == null
- }
-
- void 'Test bindData Converts Single String In Map To List'() {
- when:
- def model = controller.bindWithStringConvertedToList()
- def target = model.target
-
- then:
- target.name == 'Lee Butts'
- target.email == null
- }
-}
-
-@Artefact('Controller')
-class BindingController {
-
- def bindWithMap() {
- def target = new CommandObject()
- bindData target, [ name : 'Marc Palmer' ]
- [target: target]
- }
-
- def bindWithExcludes() {
- def target = new CommandObject()
- bindData target, [name: 'Marc Palmer', email: 'dontwantthis'], [exclude: ['email']]
- [target: target]
- }
-
- def bindWithIncludes() {
- def target = new CommandObject()
- bindData target, [ name : 'Marc Palmer', email : 'dontwantthis' ], [include:['name']]
- [target: target]
- }
-
- def bindWithEmptyIncludesExcludesMap() {
- def target = new CommandObject()
- bindData target, [ name : 'Marc Palmer', email : 'dowantthis' ], [:]
- [target: target]
- }
-
- def bindWithIncludeOverriddenByExclude() {
- def target = new CommandObject()
- bindData target, [ name : 'Marc Palmer', email : 'dontwantthis' ], [include: ['name', 'email'], exclude: ['email']]
- [target: target]
- }
-
- def bindWithPrefixFilter() {
- def target = new CommandObject()
- def filter = "lee"
- bindData target, [ 'mark.name' : 'Marc Palmer', 'mark.email' : 'dontwantthis', 'lee.name': 'Lee Butts', 'lee.email': 'lee@mail.com'], filter
- [target: target]
- }
-
- def bindWithParamsAndDisallowed() {
- def target = new CommandObject()
- bindData target, params, [exclude:['email']]
- [target: target]
- }
-
- def bindWithPrefixFilterAndDisallowed() {
- def target = new CommandObject()
- def filter = "lee"
- def disallowed = [exclude:["email"]]
- bindData target, [ 'mark.name' : 'Marc Palmer', 'mark.email' : 'dontwantthis', 'lee.name': 'Lee Butts', 'lee.email': 'lee@mail.com'], disallowed, filter
- [target: target]
- }
-
- def bindWithStringConvertedToList() {
- def target = new CommandObject()
- def filter = "lee"
- def disallowed = [exclude:"email"]
- bindData target, [ 'mark.name' : 'Marc Palmer', 'mark.email' : 'dontwantthis', 'lee.name': 'Lee Butts', 'lee.email': 'lee@mail.com'], disallowed, filter
- [target: target]
- }
-}
-
-class CommandObject {
- String name
- String email
- Address address = new Address()
-}
-
-class Address {
- String country
-}
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.grails.web.servlet
+
+import grails.artefact.Artefact
+import grails.testing.web.controllers.ControllerUnitTest
+import spock.lang.Specification
+
+/**
+ * Tests for the bindData method
+ *
+ */
+class BindDataMethodTests extends Specification implements ControllerUnitTest {
+
+ void 'Test bindData with Map'() {
+ when:
+ def model = controller.bindWithMap()
+ def target = model.target
+
+ then:
+ target.name == 'Marc Palmer'
+ }
+
+ void 'Test bindData With Excludes'() {
+ when:
+ def model = controller.bindWithExcludes()
+ def target = model.target
+
+ then:
+ target.name == 'Marc Palmer'
+ target.email == null
+ }
+
+ void 'Test bindData With Includes'() {
+ when:
+ def model = controller.bindWithIncludes()
+ def target = model.target
+
+ then:
+ target.name == 'Marc Palmer'
+ target.email == null
+ }
+
+ void 'Test bindData With Empty Includes/Excludes Map'() {
+ when:
+ def model = controller.bindWithEmptyIncludesExcludesMap()
+ def target = model.target
+
+ then:
+ target.name == 'Marc Palmer'
+ target.email == 'dowantthis'
+ }
+
+ void 'Test bindData Overriding Included With Excluded'() {
+ when:
+ def model = controller.bindWithIncludeOverriddenByExclude()
+ def target = model.target
+
+ then:
+ target.name == 'Marc Palmer'
+ target.email == null
+ }
+
+ void 'Test bindData With Prefix Filter'() {
+ when:
+ def model = controller.bindWithPrefixFilter()
+ def target = model.target
+
+ then:
+ target.name == 'Lee Butts'
+ target.email == 'lee@mail.com'
+ }
+
+ void 'Test bindData With Disallowed And GrailsParameterMap'() {
+ when:
+ params.name = 'Marc Palmer'
+ params.email = 'dontwantthis'
+ params.'address.country' = 'gbr'
+ def model = controller.bindWithParamsAndDisallowed()
+ def target = model.target
+
+ then:
+ target.name == 'Marc Palmer'
+ target.address.country == 'gbr'
+ target.email == null
+ }
+
+ void 'Test bindData With Prefix Filter And Disallowed'() {
+ when:
+ def model = controller.bindWithPrefixFilterAndDisallowed()
+ def target = model.target
+
+ then:
+ target.name == 'Lee Butts'
+ target.email == null
+ }
+
+ void 'Test bindData Converts Single String In Map To List'() {
+ when:
+ def model = controller.bindWithStringConvertedToList()
+ def target = model.target
+
+ then:
+ target.name == 'Lee Butts'
+ target.email == null
+ }
+}
+
+@Artefact('Controller')
+class BindingController {
+
+ def bindWithMap() {
+ def target = new CommandObject()
+ bindData target, [ name : 'Marc Palmer' ]
+ [target: target]
+ }
+
+ def bindWithExcludes() {
+ def target = new CommandObject()
+ bindData target, [name: 'Marc Palmer', email: 'dontwantthis'], [exclude: ['email']]
+ [target: target]
+ }
+
+ def bindWithIncludes() {
+ def target = new CommandObject()
+ bindData target, [ name : 'Marc Palmer', email : 'dontwantthis' ], [include:['name']]
+ [target: target]
+ }
+
+ def bindWithEmptyIncludesExcludesMap() {
+ def target = new CommandObject()
+ bindData target, [ name : 'Marc Palmer', email : 'dowantthis' ], [:]
+ [target: target]
+ }
+
+ def bindWithIncludeOverriddenByExclude() {
+ def target = new CommandObject()
+ bindData target, [ name : 'Marc Palmer', email : 'dontwantthis' ], [include: ['name', 'email'], exclude: ['email']]
+ [target: target]
+ }
+
+ def bindWithPrefixFilter() {
+ def target = new CommandObject()
+ def filter = "lee"
+ bindData target, [ 'mark.name' : 'Marc Palmer', 'mark.email' : 'dontwantthis', 'lee.name': 'Lee Butts', 'lee.email': 'lee@mail.com'], filter
+ [target: target]
+ }
+
+ def bindWithParamsAndDisallowed() {
+ def target = new CommandObject()
+ bindData target, params, [exclude:['email']]
+ [target: target]
+ }
+
+ def bindWithPrefixFilterAndDisallowed() {
+ def target = new CommandObject()
+ def filter = "lee"
+ def disallowed = [exclude:["email"]]
+ bindData target, [ 'mark.name' : 'Marc Palmer', 'mark.email' : 'dontwantthis', 'lee.name': 'Lee Butts', 'lee.email': 'lee@mail.com'], disallowed, filter
+ [target: target]
+ }
+
+ def bindWithStringConvertedToList() {
+ def target = new CommandObject()
+ def filter = "lee"
+ def disallowed = [exclude:"email"]
+ bindData target, [ 'mark.name' : 'Marc Palmer', 'mark.email' : 'dontwantthis', 'lee.name': 'Lee Butts', 'lee.email': 'lee@mail.com'], disallowed, filter
+ [target: target]
+ }
+}
+
+class CommandObject {
+ String name
+ String email
+ Address address = new Address()
+}
+
+class Address {
+ String country
+}
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/servlet/GrailsFlashScopeSpec.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/servlet/GrailsFlashScopeSpec.groovy
index a6f5d971b68..3efa51b2b8a 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/servlet/GrailsFlashScopeSpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/servlet/GrailsFlashScopeSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.servlet
import spock.lang.Specification
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/servlet/mvc/SynchronizerTokensHolderTests.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/servlet/mvc/SynchronizerTokensHolderTests.groovy
index 610e5a0f628..16020e48fb8 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/servlet/mvc/SynchronizerTokensHolderTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/servlet/mvc/SynchronizerTokensHolderTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.servlet.mvc
import org.junit.jupiter.api.Test
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/servlet/view/GroovyPageViewTests.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/servlet/view/GroovyPageViewTests.groovy
index 51175c8d20d..bdff669c80d 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/servlet/view/GroovyPageViewTests.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/servlet/view/GroovyPageViewTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.servlet.view
import grails.util.GrailsWebMockUtil
diff --git a/grails-test/src/main/groovy/grails/boot/test/GrailsApplicationContextLoader.groovy b/grails-test/src/main/groovy/grails/boot/test/GrailsApplicationContextLoader.groovy
index 0d86fb5001d..255a37c9b7a 100644
--- a/grails-test/src/main/groovy/grails/boot/test/GrailsApplicationContextLoader.groovy
+++ b/grails-test/src/main/groovy/grails/boot/test/GrailsApplicationContextLoader.groovy
@@ -1,11 +1,5 @@
-package grails.boot.test
-
-import grails.boot.GrailsApp
-import org.springframework.boot.SpringApplication
-import org.springframework.boot.test.context.SpringBootContextLoader
-
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,6 +13,11 @@ import org.springframework.boot.test.context.SpringBootContextLoader
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+package grails.boot.test
+
+import grails.boot.GrailsApp
+import org.springframework.boot.SpringApplication
+import org.springframework.boot.test.context.SpringBootContextLoader
/**
* Extends Spring Boot's {@link SpringBootContextLoader} with a version for Grails
diff --git a/grails-test/src/main/groovy/grails/test/AbstractClosureProxy.java b/grails-test/src/main/groovy/grails/test/AbstractClosureProxy.java
index 4e66ffc2fd7..62744248daa 100644
--- a/grails-test/src/main/groovy/grails/test/AbstractClosureProxy.java
+++ b/grails-test/src/main/groovy/grails/test/AbstractClosureProxy.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2008 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-test/src/main/groovy/grails/test/MockClosureProxy.java b/grails-test/src/main/groovy/grails/test/MockClosureProxy.java
index 84ec96a2de5..71d38baec98 100644
--- a/grails-test/src/main/groovy/grails/test/MockClosureProxy.java
+++ b/grails-test/src/main/groovy/grails/test/MockClosureProxy.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2008 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-test/src/main/groovy/org/grails/plugins/testing/AbstractGrailsMockHttpServletResponse.groovy b/grails-test/src/main/groovy/org/grails/plugins/testing/AbstractGrailsMockHttpServletResponse.groovy
index 5bb2b802ac3..4350a0200bf 100644
--- a/grails-test/src/main/groovy/org/grails/plugins/testing/AbstractGrailsMockHttpServletResponse.groovy
+++ b/grails-test/src/main/groovy/org/grails/plugins/testing/AbstractGrailsMockHttpServletResponse.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2008 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-test/src/main/groovy/org/grails/plugins/testing/GrailsMockHttpServletRequest.groovy b/grails-test/src/main/groovy/org/grails/plugins/testing/GrailsMockHttpServletRequest.groovy
index 61f7f081215..0317bb5014f 100644
--- a/grails-test/src/main/groovy/org/grails/plugins/testing/GrailsMockHttpServletRequest.groovy
+++ b/grails-test/src/main/groovy/org/grails/plugins/testing/GrailsMockHttpServletRequest.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2008 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-test/src/main/groovy/org/grails/plugins/testing/GrailsMockHttpServletResponse.java b/grails-test/src/main/groovy/org/grails/plugins/testing/GrailsMockHttpServletResponse.java
index 34108d1199b..cece31832db 100644
--- a/grails-test/src/main/groovy/org/grails/plugins/testing/GrailsMockHttpServletResponse.java
+++ b/grails-test/src/main/groovy/org/grails/plugins/testing/GrailsMockHttpServletResponse.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2008 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-test/src/main/groovy/org/grails/plugins/testing/GrailsMockHttpSession.groovy b/grails-test/src/main/groovy/org/grails/plugins/testing/GrailsMockHttpSession.groovy
index e629f659e90..c83a24a0d9a 100644
--- a/grails-test/src/main/groovy/org/grails/plugins/testing/GrailsMockHttpSession.groovy
+++ b/grails-test/src/main/groovy/org/grails/plugins/testing/GrailsMockHttpSession.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2008 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-test/src/main/groovy/org/grails/plugins/testing/GrailsMockMultipartFile.java b/grails-test/src/main/groovy/org/grails/plugins/testing/GrailsMockMultipartFile.java
index 737e152cd93..950aaefd2ea 100644
--- a/grails-test/src/main/groovy/org/grails/plugins/testing/GrailsMockMultipartFile.java
+++ b/grails-test/src/main/groovy/org/grails/plugins/testing/GrailsMockMultipartFile.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-test/src/main/groovy/org/grails/test/io/MultiplexingOutputStream.groovy b/grails-test/src/main/groovy/org/grails/test/io/MultiplexingOutputStream.groovy
index 90adfc762bd..3907d331398 100644
--- a/grails-test/src/main/groovy/org/grails/test/io/MultiplexingOutputStream.groovy
+++ b/grails-test/src/main/groovy/org/grails/test/io/MultiplexingOutputStream.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2009 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-test/src/main/groovy/org/grails/test/io/SystemOutAndErrSwapper.groovy b/grails-test/src/main/groovy/org/grails/test/io/SystemOutAndErrSwapper.groovy
index 492309ea05a..fa7bf10aef6 100644
--- a/grails-test/src/main/groovy/org/grails/test/io/SystemOutAndErrSwapper.groovy
+++ b/grails-test/src/main/groovy/org/grails/test/io/SystemOutAndErrSwapper.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2009 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-test/src/main/groovy/org/grails/test/report/junit/JUnitReports.java b/grails-test/src/main/groovy/org/grails/test/report/junit/JUnitReports.java
index 768237dcabb..7eb57522101 100644
--- a/grails-test/src/main/groovy/org/grails/test/report/junit/JUnitReports.java
+++ b/grails-test/src/main/groovy/org/grails/test/report/junit/JUnitReports.java
@@ -1,11 +1,11 @@
/*
- * Copyright 2009 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-test/src/main/groovy/org/grails/test/report/junit/JUnitReportsFactory.java b/grails-test/src/main/groovy/org/grails/test/report/junit/JUnitReportsFactory.java
index f199420f941..dbf0f840804 100644
--- a/grails-test/src/main/groovy/org/grails/test/report/junit/JUnitReportsFactory.java
+++ b/grails-test/src/main/groovy/org/grails/test/report/junit/JUnitReportsFactory.java
@@ -1,11 +1,11 @@
/*
- * Copyright 2009 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-test/src/main/groovy/org/grails/test/report/junit/PlainFormatter.java b/grails-test/src/main/groovy/org/grails/test/report/junit/PlainFormatter.java
index 0a23acf35ca..3d4e866324c 100644
--- a/grails-test/src/main/groovy/org/grails/test/report/junit/PlainFormatter.java
+++ b/grails-test/src/main/groovy/org/grails/test/report/junit/PlainFormatter.java
@@ -1,11 +1,11 @@
/*
- * Copyright 2009 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-test/src/main/groovy/org/grails/test/report/junit/XMLFormatter.java b/grails-test/src/main/groovy/org/grails/test/report/junit/XMLFormatter.java
index 67accb9c9e3..5dc3ff69f51 100644
--- a/grails-test/src/main/groovy/org/grails/test/report/junit/XMLFormatter.java
+++ b/grails-test/src/main/groovy/org/grails/test/report/junit/XMLFormatter.java
@@ -1,11 +1,11 @@
/*
- * Copyright 2009 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-test/src/main/groovy/org/grails/test/spock/IntegrationSpecConfigurerExtension.groovy b/grails-test/src/main/groovy/org/grails/test/spock/IntegrationSpecConfigurerExtension.groovy
index 1deec991d73..a66f3a19e47 100644
--- a/grails-test/src/main/groovy/org/grails/test/spock/IntegrationSpecConfigurerExtension.groovy
+++ b/grails-test/src/main/groovy/org/grails/test/spock/IntegrationSpecConfigurerExtension.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.grails.test.spock
import org.spockframework.runtime.model.SpecInfo
diff --git a/grails-test/src/main/groovy/org/grails/test/support/ControllerNameExtractor.groovy b/grails-test/src/main/groovy/org/grails/test/support/ControllerNameExtractor.groovy
index e4af256510e..913d63f5fb6 100644
--- a/grails-test/src/main/groovy/org/grails/test/support/ControllerNameExtractor.groovy
+++ b/grails-test/src/main/groovy/org/grails/test/support/ControllerNameExtractor.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2009 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-test/src/main/groovy/org/grails/test/support/GrailsTestAutowirer.groovy b/grails-test/src/main/groovy/org/grails/test/support/GrailsTestAutowirer.groovy
index d91e2bc0270..55f868cceee 100644
--- a/grails-test/src/main/groovy/org/grails/test/support/GrailsTestAutowirer.groovy
+++ b/grails-test/src/main/groovy/org/grails/test/support/GrailsTestAutowirer.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2009 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-test/src/main/groovy/org/grails/test/support/GrailsTestInterceptor.groovy b/grails-test/src/main/groovy/org/grails/test/support/GrailsTestInterceptor.groovy
index adc6d8edb0a..44bef9b6529 100644
--- a/grails-test/src/main/groovy/org/grails/test/support/GrailsTestInterceptor.groovy
+++ b/grails-test/src/main/groovy/org/grails/test/support/GrailsTestInterceptor.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2009 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-test/src/main/groovy/org/grails/test/support/GrailsTestMode.groovy b/grails-test/src/main/groovy/org/grails/test/support/GrailsTestMode.groovy
index 9daac0953fe..bee8dbbd023 100644
--- a/grails-test/src/main/groovy/org/grails/test/support/GrailsTestMode.groovy
+++ b/grails-test/src/main/groovy/org/grails/test/support/GrailsTestMode.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2009 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-test/src/main/groovy/org/grails/test/support/GrailsTestRequestEnvironmentInterceptor.groovy b/grails-test/src/main/groovy/org/grails/test/support/GrailsTestRequestEnvironmentInterceptor.groovy
index c11c5e2bdad..bd3a43ec2dd 100644
--- a/grails-test/src/main/groovy/org/grails/test/support/GrailsTestRequestEnvironmentInterceptor.groovy
+++ b/grails-test/src/main/groovy/org/grails/test/support/GrailsTestRequestEnvironmentInterceptor.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2009 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-test/src/main/groovy/org/grails/test/support/GrailsTestTransactionInterceptor.groovy b/grails-test/src/main/groovy/org/grails/test/support/GrailsTestTransactionInterceptor.groovy
index ab6bd7bb4e5..59d84d76c30 100644
--- a/grails-test/src/main/groovy/org/grails/test/support/GrailsTestTransactionInterceptor.groovy
+++ b/grails-test/src/main/groovy/org/grails/test/support/GrailsTestTransactionInterceptor.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2009 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-test/src/main/groovy/org/grails/test/support/TestStacktraceSanitizer.java b/grails-test/src/main/groovy/org/grails/test/support/TestStacktraceSanitizer.java
index bf070123409..3b0084249fd 100644
--- a/grails-test/src/main/groovy/org/grails/test/support/TestStacktraceSanitizer.java
+++ b/grails-test/src/main/groovy/org/grails/test/support/TestStacktraceSanitizer.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2009 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-boot/src/main/groovy/org/grails/boot/context/web/GrailsAppServletInitializer.groovy b/grails-web-boot/src/main/groovy/org/grails/boot/context/web/GrailsAppServletInitializer.groovy
index bc97adfedae..524a0b615a6 100644
--- a/grails-web-boot/src/main/groovy/org/grails/boot/context/web/GrailsAppServletInitializer.groovy
+++ b/grails-web-boot/src/main/groovy/org/grails/boot/context/web/GrailsAppServletInitializer.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.boot.context.web
import grails.boot.GrailsAppBuilder
diff --git a/grails-web-boot/src/main/groovy/org/grails/compiler/boot/BootInitializerClassInjector.groovy b/grails-web-boot/src/main/groovy/org/grails/compiler/boot/BootInitializerClassInjector.groovy
index 16d610b02a7..f706f848da3 100644
--- a/grails-web-boot/src/main/groovy/org/grails/compiler/boot/BootInitializerClassInjector.groovy
+++ b/grails-web-boot/src/main/groovy/org/grails/compiler/boot/BootInitializerClassInjector.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.compiler.boot
import grails.boot.GrailsPluginApplication
diff --git a/grails-web-boot/src/test/groovy/grails/boot/EmbeddedContainerWithGrailsSpec.groovy b/grails-web-boot/src/test/groovy/grails/boot/EmbeddedContainerWithGrailsSpec.groovy
index ef225586026..1ab9767bfac 100644
--- a/grails-web-boot/src/test/groovy/grails/boot/EmbeddedContainerWithGrailsSpec.groovy
+++ b/grails-web-boot/src/test/groovy/grails/boot/EmbeddedContainerWithGrailsSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.boot
import grails.artefact.Artefact
diff --git a/grails-web-boot/src/test/groovy/grails/boot/GrailsSpringApplicationSpec.groovy b/grails-web-boot/src/test/groovy/grails/boot/GrailsSpringApplicationSpec.groovy
index 7581b22ed9f..d5f39109428 100644
--- a/grails-web-boot/src/test/groovy/grails/boot/GrailsSpringApplicationSpec.groovy
+++ b/grails-web-boot/src/test/groovy/grails/boot/GrailsSpringApplicationSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.boot
import grails.boot.config.GrailsAutoConfiguration
diff --git a/grails-web-boot/src/test/groovy/org/grails/compiler/boot/BootInitializerClassInjectorSpec.groovy b/grails-web-boot/src/test/groovy/org/grails/compiler/boot/BootInitializerClassInjectorSpec.groovy
index b22f8a275bd..ff9951b7514 100644
--- a/grails-web-boot/src/test/groovy/org/grails/compiler/boot/BootInitializerClassInjectorSpec.groovy
+++ b/grails-web-boot/src/test/groovy/org/grails/compiler/boot/BootInitializerClassInjectorSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.compiler.boot
import grails.util.Environment
diff --git a/grails-web-common/src/main/groovy/grails/util/GrailsWebMockUtil.groovy b/grails-web-common/src/main/groovy/grails/util/GrailsWebMockUtil.groovy
index 47be0d77dd8..f46fa5ec708 100644
--- a/grails-web-common/src/main/groovy/grails/util/GrailsWebMockUtil.groovy
+++ b/grails-web-common/src/main/groovy/grails/util/GrailsWebMockUtil.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/grails/util/GrailsWebUtil.java b/grails-web-common/src/main/groovy/grails/util/GrailsWebUtil.java
index 07678ab5efd..9e7928a6d8b 100644
--- a/grails-web-common/src/main/groovy/grails/util/GrailsWebUtil.java
+++ b/grails-web-common/src/main/groovy/grails/util/GrailsWebUtil.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/grails/web/RequestParameter.java b/grails-web-common/src/main/groovy/grails/web/RequestParameter.java
index 739ae5c5e4a..949ccbb0af6 100644
--- a/grails-web-common/src/main/groovy/grails/web/RequestParameter.java
+++ b/grails-web-common/src/main/groovy/grails/web/RequestParameter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/grails/web/api/ServletAttributes.groovy b/grails-web-common/src/main/groovy/grails/web/api/ServletAttributes.groovy
index 1fb25d2518e..8cd4f02029e 100644
--- a/grails-web-common/src/main/groovy/grails/web/api/ServletAttributes.groovy
+++ b/grails-web-common/src/main/groovy/grails/web/api/ServletAttributes.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package grails.web.api
import groovy.transform.CompileStatic
diff --git a/grails-web-common/src/main/groovy/grails/web/api/WebAttributes.groovy b/grails-web-common/src/main/groovy/grails/web/api/WebAttributes.groovy
index c97ba60e1ac..213fcf30585 100644
--- a/grails-web-common/src/main/groovy/grails/web/api/WebAttributes.groovy
+++ b/grails-web-common/src/main/groovy/grails/web/api/WebAttributes.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/grails/web/context/ServletContextHolder.java b/grails-web-common/src/main/groovy/grails/web/context/ServletContextHolder.java
index 28df4058cf2..fb7f8ad7b8b 100644
--- a/grails-web-common/src/main/groovy/grails/web/context/ServletContextHolder.java
+++ b/grails-web-common/src/main/groovy/grails/web/context/ServletContextHolder.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/grails/web/context/WebRequestServletHolder.java b/grails-web-common/src/main/groovy/grails/web/context/WebRequestServletHolder.java
index 69bcee070e6..50723c3b746 100644
--- a/grails-web-common/src/main/groovy/grails/web/context/WebRequestServletHolder.java
+++ b/grails-web-common/src/main/groovy/grails/web/context/WebRequestServletHolder.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/grails/web/controllers/ControllerMethod.java b/grails-web-common/src/main/groovy/grails/web/controllers/ControllerMethod.java
index bb603d550e7..2625422c849 100644
--- a/grails-web-common/src/main/groovy/grails/web/controllers/ControllerMethod.java
+++ b/grails-web-common/src/main/groovy/grails/web/controllers/ControllerMethod.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/grails/web/http/HttpHeaders.java b/grails-web-common/src/main/groovy/grails/web/http/HttpHeaders.java
index a5bddabeeaf..a9e26ac58e8 100644
--- a/grails-web-common/src/main/groovy/grails/web/http/HttpHeaders.java
+++ b/grails-web-common/src/main/groovy/grails/web/http/HttpHeaders.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/grails/web/mime/MimeType.groovy b/grails-web-common/src/main/groovy/grails/web/mime/MimeType.groovy
index 588718ebc12..4afe35a8d6f 100644
--- a/grails-web-common/src/main/groovy/grails/web/mime/MimeType.groovy
+++ b/grails-web-common/src/main/groovy/grails/web/mime/MimeType.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/grails/web/mime/MimeTypeProvider.groovy b/grails-web-common/src/main/groovy/grails/web/mime/MimeTypeProvider.groovy
index 7484dc71132..d6aa13c3a3b 100644
--- a/grails-web-common/src/main/groovy/grails/web/mime/MimeTypeProvider.groovy
+++ b/grails-web-common/src/main/groovy/grails/web/mime/MimeTypeProvider.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package grails.web.mime
/**
diff --git a/grails-web-common/src/main/groovy/grails/web/mime/MimeTypeResolver.groovy b/grails-web-common/src/main/groovy/grails/web/mime/MimeTypeResolver.groovy
index b3362fd2c3b..9535d8501a3 100644
--- a/grails-web-common/src/main/groovy/grails/web/mime/MimeTypeResolver.groovy
+++ b/grails-web-common/src/main/groovy/grails/web/mime/MimeTypeResolver.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package grails.web.mime
import org.grails.web.servlet.mvc.GrailsWebRequest
diff --git a/grails-web-common/src/main/groovy/grails/web/mime/MimeTypeUtils.groovy b/grails-web-common/src/main/groovy/grails/web/mime/MimeTypeUtils.groovy
index 33dadbc86ba..63f910d7405 100644
--- a/grails-web-common/src/main/groovy/grails/web/mime/MimeTypeUtils.groovy
+++ b/grails-web-common/src/main/groovy/grails/web/mime/MimeTypeUtils.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/grails/web/mvc/FlashScope.java b/grails-web-common/src/main/groovy/grails/web/mvc/FlashScope.java
index 3c662a4a2ce..9cfc747ac08 100644
--- a/grails-web-common/src/main/groovy/grails/web/mvc/FlashScope.java
+++ b/grails-web-common/src/main/groovy/grails/web/mvc/FlashScope.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/grails/web/pages/GroovyPagesUriService.java b/grails-web-common/src/main/groovy/grails/web/pages/GroovyPagesUriService.java
index 2671c85f588..35230123ea8 100644
--- a/grails-web-common/src/main/groovy/grails/web/pages/GroovyPagesUriService.java
+++ b/grails-web-common/src/main/groovy/grails/web/pages/GroovyPagesUriService.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/grails/web/servlet/mvc/GrailsHttpSession.java b/grails-web-common/src/main/groovy/grails/web/servlet/mvc/GrailsHttpSession.java
index ecd6b846cd3..a861b5db5cb 100644
--- a/grails-web-common/src/main/groovy/grails/web/servlet/mvc/GrailsHttpSession.java
+++ b/grails-web-common/src/main/groovy/grails/web/servlet/mvc/GrailsHttpSession.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/grails/web/servlet/mvc/GrailsParameterMap.java b/grails-web-common/src/main/groovy/grails/web/servlet/mvc/GrailsParameterMap.java
index f9cea9fdb42..89f3b42fba9 100644
--- a/grails-web-common/src/main/groovy/grails/web/servlet/mvc/GrailsParameterMap.java
+++ b/grails-web-common/src/main/groovy/grails/web/servlet/mvc/GrailsParameterMap.java
@@ -1,7 +1,7 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
- * Licensed under the Apache License, Version 2.0 (the "License")
+ * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
diff --git a/grails-web-common/src/main/groovy/org/grails/databinding/bindingsource/DataBindingSourceCreationException.java b/grails-web-common/src/main/groovy/org/grails/databinding/bindingsource/DataBindingSourceCreationException.java
index d37b7f78b20..2cfc49b3ff8 100644
--- a/grails-web-common/src/main/groovy/org/grails/databinding/bindingsource/DataBindingSourceCreationException.java
+++ b/grails-web-common/src/main/groovy/org/grails/databinding/bindingsource/DataBindingSourceCreationException.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/databinding/bindingsource/DataBindingSourceCreator.groovy b/grails-web-common/src/main/groovy/org/grails/databinding/bindingsource/DataBindingSourceCreator.groovy
index 9ef57bbc754..9b82ff46227 100644
--- a/grails-web-common/src/main/groovy/org/grails/databinding/bindingsource/DataBindingSourceCreator.groovy
+++ b/grails-web-common/src/main/groovy/org/grails/databinding/bindingsource/DataBindingSourceCreator.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/beans/PropertyEditorRegistryUtils.groovy b/grails-web-common/src/main/groovy/org/grails/web/beans/PropertyEditorRegistryUtils.groovy
index 6b93619f396..61e4c4d38a1 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/beans/PropertyEditorRegistryUtils.groovy
+++ b/grails-web-common/src/main/groovy/org/grails/web/beans/PropertyEditorRegistryUtils.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.beans
import grails.databinding.DataBinder;
diff --git a/grails-web-common/src/main/groovy/org/grails/web/binding/CompositeEditor.java b/grails-web-common/src/main/groovy/org/grails/web/binding/CompositeEditor.java
index f68c721a334..6b54b9be013 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/binding/CompositeEditor.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/binding/CompositeEditor.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/binding/StructuredDateEditor.java b/grails-web-common/src/main/groovy/org/grails/web/binding/StructuredDateEditor.java
index bcc27fc2bde..82563ec1f0f 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/binding/StructuredDateEditor.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/binding/StructuredDateEditor.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/binding/StructuredPropertyEditor.java b/grails-web-common/src/main/groovy/org/grails/web/binding/StructuredPropertyEditor.java
index 371a373282b..025569ce29b 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/binding/StructuredPropertyEditor.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/binding/StructuredPropertyEditor.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/context/ServletEnvironmentGrailsApplicationDiscoveryStrategy.groovy b/grails-web-common/src/main/groovy/org/grails/web/context/ServletEnvironmentGrailsApplicationDiscoveryStrategy.groovy
index d0c65e49902..23395362d60 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/context/ServletEnvironmentGrailsApplicationDiscoveryStrategy.groovy
+++ b/grails-web-common/src/main/groovy/org/grails/web/context/ServletEnvironmentGrailsApplicationDiscoveryStrategy.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/databinding/bindingsource/DataBindingSourceRegistry.groovy b/grails-web-common/src/main/groovy/org/grails/web/databinding/bindingsource/DataBindingSourceRegistry.groovy
index 8e1e99c11eb..eab3c56935c 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/databinding/bindingsource/DataBindingSourceRegistry.groovy
+++ b/grails-web-common/src/main/groovy/org/grails/web/databinding/bindingsource/DataBindingSourceRegistry.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/errors/ErrorsViewStackTracePrinter.groovy b/grails-web-common/src/main/groovy/org/grails/web/errors/ErrorsViewStackTracePrinter.groovy
index 616d99714af..1b77d383123 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/errors/ErrorsViewStackTracePrinter.groovy
+++ b/grails-web-common/src/main/groovy/org/grails/web/errors/ErrorsViewStackTracePrinter.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/errors/GrailsWrappedRuntimeException.java b/grails-web-common/src/main/groovy/org/grails/web/errors/GrailsWrappedRuntimeException.java
index 0df8f92432e..b716f42afb2 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/errors/GrailsWrappedRuntimeException.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/errors/GrailsWrappedRuntimeException.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/i18n/ParamsAwareLocaleChangeInterceptor.groovy b/grails-web-common/src/main/groovy/org/grails/web/i18n/ParamsAwareLocaleChangeInterceptor.groovy
index 8a339123fc6..dfe95c4e536 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/i18n/ParamsAwareLocaleChangeInterceptor.groovy
+++ b/grails-web-common/src/main/groovy/org/grails/web/i18n/ParamsAwareLocaleChangeInterceptor.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/json/JSONArray.java b/grails-web-common/src/main/groovy/org/grails/web/json/JSONArray.java
index 34f56186a1f..f35839cbfd2 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/json/JSONArray.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/json/JSONArray.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.json;
/*
diff --git a/grails-web-common/src/main/groovy/org/grails/web/json/JSONElement.java b/grails-web-common/src/main/groovy/org/grails/web/json/JSONElement.java
index 30e37f01fb9..2ab13f17b2b 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/json/JSONElement.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/json/JSONElement.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.json;
import groovy.lang.Writable;
diff --git a/grails-web-common/src/main/groovy/org/grails/web/json/JSONException.java b/grails-web-common/src/main/groovy/org/grails/web/json/JSONException.java
index 0da6a64e9bb..ca033a593bd 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/json/JSONException.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/json/JSONException.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.json;
/**
diff --git a/grails-web-common/src/main/groovy/org/grails/web/json/JSONObject.java b/grails-web-common/src/main/groovy/org/grails/web/json/JSONObject.java
index d904649a8ba..75f21d10e8e 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/json/JSONObject.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/json/JSONObject.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.json;
/*
diff --git a/grails-web-common/src/main/groovy/org/grails/web/json/JSONTokener.java b/grails-web-common/src/main/groovy/org/grails/web/json/JSONTokener.java
index 918c25ab337..589e3b844a6 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/json/JSONTokener.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/json/JSONTokener.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.json;
import java.math.BigDecimal;
diff --git a/grails-web-common/src/main/groovy/org/grails/web/json/JSONWriter.java b/grails-web-common/src/main/groovy/org/grails/web/json/JSONWriter.java
index 6d174cd277c..0d39f7d2bfb 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/json/JSONWriter.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/json/JSONWriter.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.json;
import static org.grails.web.json.JSONWriter.Mode.*;
diff --git a/grails-web-common/src/main/groovy/org/grails/web/json/PathCapturingJSONWriterWrapper.java b/grails-web-common/src/main/groovy/org/grails/web/json/PathCapturingJSONWriterWrapper.java
index 0f034ca28fd..fc98d987c2e 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/json/PathCapturingJSONWriterWrapper.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/json/PathCapturingJSONWriterWrapper.java
@@ -1,4 +1,5 @@
-/* Copyright 2004-2005 the original author or authors.
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/json/PrettyPrintJSONWriter.java b/grails-web-common/src/main/groovy/org/grails/web/json/PrettyPrintJSONWriter.java
index 9e788c2da08..cb6531f11bd 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/json/PrettyPrintJSONWriter.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/json/PrettyPrintJSONWriter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2008 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/json/parser/JSONParser.java b/grails-web-common/src/main/groovy/org/grails/web/json/parser/JSONParser.java
index ed291bbfe87..e3efcc3f06b 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/json/parser/JSONParser.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/json/parser/JSONParser.java
@@ -1,6 +1,22 @@
-/* Generated By:JavaCC: Do not edit this line. JsonParser.java */
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.json.parser;
+/* Generated By:JavaCC: Do not edit this line. JsonParser.java */
+
import org.grails.web.json.JSONArray;
import org.grails.web.json.JSONElement;
import org.grails.web.json.JSONObject;
diff --git a/grails-web-common/src/main/groovy/org/grails/web/json/parser/JsonParserConstants.java b/grails-web-common/src/main/groovy/org/grails/web/json/parser/JsonParserConstants.java
index d7f1174fb1c..5f704d664e9 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/json/parser/JsonParserConstants.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/json/parser/JsonParserConstants.java
@@ -1,6 +1,21 @@
-/* Generated By:JavaCC: Do not edit this line. JsonParserConstants.java */
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.json.parser;
+/* Generated By:JavaCC: Do not edit this line. JsonParserConstants.java */
/**
* Token literal values and constants.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/json/parser/JsonParserTokenManager.java b/grails-web-common/src/main/groovy/org/grails/web/json/parser/JsonParserTokenManager.java
index 3384a006806..e17be31944f 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/json/parser/JsonParserTokenManager.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/json/parser/JsonParserTokenManager.java
@@ -1,6 +1,22 @@
-/* Generated By:JavaCC: Do not edit this line. JsonParserTokenManager.java */
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.json.parser;
+/* Generated By:JavaCC: Do not edit this line. JsonParserTokenManager.java */
+
/** Token Manager. */
@SuppressWarnings("unused")
public class JsonParserTokenManager implements JsonParserConstants
diff --git a/grails-web-common/src/main/groovy/org/grails/web/json/parser/ParseException.java b/grails-web-common/src/main/groovy/org/grails/web/json/parser/ParseException.java
index 2527e77014f..ebd59fec41f 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/json/parser/ParseException.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/json/parser/ParseException.java
@@ -1,6 +1,22 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.grails.web.json.parser;
+
/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 4.1 */
/* JavaCCOptions:KEEP_LINE_COL=null */
-package org.grails.web.json.parser;
/**
* This exception is thrown when parse errors are encountered.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/json/parser/SimpleCharStream.java b/grails-web-common/src/main/groovy/org/grails/web/json/parser/SimpleCharStream.java
index cc925a691e8..7b97f8535d1 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/json/parser/SimpleCharStream.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/json/parser/SimpleCharStream.java
@@ -1,6 +1,22 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.grails.web.json.parser;
+
/* Generated By:JavaCC: Do not edit this line. SimpleCharStream.java Version 4.1 */
/* JavaCCOptions:STATIC=false */
-package org.grails.web.json.parser;
/**
* An implementation of interface CharStream, where the stream is assumed to
diff --git a/grails-web-common/src/main/groovy/org/grails/web/json/parser/StringUnmarshaller.java b/grails-web-common/src/main/groovy/org/grails/web/json/parser/StringUnmarshaller.java
index 93846d8e1b7..f87a5730db6 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/json/parser/StringUnmarshaller.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/json/parser/StringUnmarshaller.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/json/parser/Token.java b/grails-web-common/src/main/groovy/org/grails/web/json/parser/Token.java
index bd38bac18e9..abb8e1f9851 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/json/parser/Token.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/json/parser/Token.java
@@ -1,6 +1,22 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.grails.web.json.parser;
+
/* Generated By:JavaCC: Do not edit this line. Token.java Version 4.1 */
/* JavaCCOptions:TOKEN_EXTENDS=,KEEP_LINE_COL=null */
-package org.grails.web.json.parser;
/**
* Describes the input token stream.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/json/parser/TokenMgrError.java b/grails-web-common/src/main/groovy/org/grails/web/json/parser/TokenMgrError.java
index bf7d94332f7..0cc0e651e4d 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/json/parser/TokenMgrError.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/json/parser/TokenMgrError.java
@@ -1,6 +1,22 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.grails.web.json.parser;
+
/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 4.1 */
/* JavaCCOptions: */
-package org.grails.web.json.parser;
/**
* Token Manager Error.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/pages/DefaultGroovyPagesUriService.java b/grails-web-common/src/main/groovy/org/grails/web/pages/DefaultGroovyPagesUriService.java
index ebb2296f804..bdc92612cdd 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/pages/DefaultGroovyPagesUriService.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/pages/DefaultGroovyPagesUriService.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/pages/FilteringCodecsByContentTypeSettings.java b/grails-web-common/src/main/groovy/org/grails/web/pages/FilteringCodecsByContentTypeSettings.java
index a1949703114..df20364db61 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/pages/FilteringCodecsByContentTypeSettings.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/pages/FilteringCodecsByContentTypeSettings.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/pages/GroovyPagesUriSupport.java b/grails-web-common/src/main/groovy/org/grails/web/pages/GroovyPagesUriSupport.java
index 382706d6850..315f9224b89 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/pages/GroovyPagesUriSupport.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/pages/GroovyPagesUriSupport.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/servlet/DefaultGrailsApplicationAttributes.java b/grails-web-common/src/main/groovy/org/grails/web/servlet/DefaultGrailsApplicationAttributes.java
index 2b1c9f53f22..57d9400ccb2 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/servlet/DefaultGrailsApplicationAttributes.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/servlet/DefaultGrailsApplicationAttributes.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/servlet/GrailsFlashScope.java b/grails-web-common/src/main/groovy/org/grails/web/servlet/GrailsFlashScope.java
index 65ea09f5627..f8646b04f7c 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/servlet/GrailsFlashScope.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/servlet/GrailsFlashScope.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/servlet/GrailsRequestContext.java b/grails-web-common/src/main/groovy/org/grails/web/servlet/GrailsRequestContext.java
index b0028a6b892..e3140bed876 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/servlet/GrailsRequestContext.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/servlet/GrailsRequestContext.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/servlet/WebRequestDelegatingRequestContext.java b/grails-web-common/src/main/groovy/org/grails/web/servlet/WebRequestDelegatingRequestContext.java
index a9bf6095bda..c75e3854f87 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/servlet/WebRequestDelegatingRequestContext.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/servlet/WebRequestDelegatingRequestContext.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2006-2007 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/servlet/WrappedResponseHolder.java b/grails-web-common/src/main/groovy/org/grails/web/servlet/WrappedResponseHolder.java
index 1186d0a0985..7bcfe002d0d 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/servlet/WrappedResponseHolder.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/servlet/WrappedResponseHolder.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/servlet/mvc/ActionResultTransformer.groovy b/grails-web-common/src/main/groovy/org/grails/web/servlet/mvc/ActionResultTransformer.groovy
index 4e0c4013739..a376b489e23 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/servlet/mvc/ActionResultTransformer.groovy
+++ b/grails-web-common/src/main/groovy/org/grails/web/servlet/mvc/ActionResultTransformer.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/servlet/mvc/DefaultRequestStateLookupStrategy.java b/grails-web-common/src/main/groovy/org/grails/web/servlet/mvc/DefaultRequestStateLookupStrategy.java
index 312247d0475..1c840f313bb 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/servlet/mvc/DefaultRequestStateLookupStrategy.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/servlet/mvc/DefaultRequestStateLookupStrategy.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/servlet/mvc/GrailsRequestStateLookupStrategy.java b/grails-web-common/src/main/groovy/org/grails/web/servlet/mvc/GrailsRequestStateLookupStrategy.java
index 5fd8bc5b9d9..a873ab9475f 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/servlet/mvc/GrailsRequestStateLookupStrategy.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/servlet/mvc/GrailsRequestStateLookupStrategy.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/servlet/mvc/GrailsWebRequest.java b/grails-web-common/src/main/groovy/org/grails/web/servlet/mvc/GrailsWebRequest.java
index 7132bf22485..e8aefb68950 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/servlet/mvc/GrailsWebRequest.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/servlet/mvc/GrailsWebRequest.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/servlet/mvc/OutputAwareHttpServletResponse.groovy b/grails-web-common/src/main/groovy/org/grails/web/servlet/mvc/OutputAwareHttpServletResponse.groovy
index f87fd8a4ae1..ef54a71cb48 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/servlet/mvc/OutputAwareHttpServletResponse.groovy
+++ b/grails-web-common/src/main/groovy/org/grails/web/servlet/mvc/OutputAwareHttpServletResponse.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.servlet.mvc
import groovy.transform.CompileStatic
diff --git a/grails-web-common/src/main/groovy/org/grails/web/servlet/mvc/ParameterCreationListener.java b/grails-web-common/src/main/groovy/org/grails/web/servlet/mvc/ParameterCreationListener.java
index d825a7d9ad0..ed042d42694 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/servlet/mvc/ParameterCreationListener.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/servlet/mvc/ParameterCreationListener.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/servlet/mvc/exceptions/ControllerExecutionException.java b/grails-web-common/src/main/groovy/org/grails/web/servlet/mvc/exceptions/ControllerExecutionException.java
index ea706b40218..30845c6bb77 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/servlet/mvc/exceptions/ControllerExecutionException.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/servlet/mvc/exceptions/ControllerExecutionException.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/servlet/mvc/exceptions/GrailsMVCException.java b/grails-web-common/src/main/groovy/org/grails/web/servlet/mvc/exceptions/GrailsMVCException.java
index c9905007fc1..33c9134444b 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/servlet/mvc/exceptions/GrailsMVCException.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/servlet/mvc/exceptions/GrailsMVCException.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/servlet/view/AbstractGrailsView.java b/grails-web-common/src/main/groovy/org/grails/web/servlet/view/AbstractGrailsView.java
index e2dfb1698ed..78cf9561ef0 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/servlet/view/AbstractGrailsView.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/servlet/view/AbstractGrailsView.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/servlet/view/CompositeViewResolver.groovy b/grails-web-common/src/main/groovy/org/grails/web/servlet/view/CompositeViewResolver.groovy
index cd1949b42a5..f1011cdfdbf 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/servlet/view/CompositeViewResolver.groovy
+++ b/grails-web-common/src/main/groovy/org/grails/web/servlet/view/CompositeViewResolver.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.servlet.view
import groovy.transform.CompileStatic
diff --git a/grails-web-common/src/main/groovy/org/grails/web/servlet/view/GrailsViewResolver.java b/grails-web-common/src/main/groovy/org/grails/web/servlet/view/GrailsViewResolver.java
index f553b91b337..42085743de0 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/servlet/view/GrailsViewResolver.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/servlet/view/GrailsViewResolver.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/servlet/view/LayoutViewResolver.java b/grails-web-common/src/main/groovy/org/grails/web/servlet/view/LayoutViewResolver.java
index 6bde8057bd5..5374fb8ec5f 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/servlet/view/LayoutViewResolver.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/servlet/view/LayoutViewResolver.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/util/BoundedCharsAsEncodedBytesCounter.java b/grails-web-common/src/main/groovy/org/grails/web/util/BoundedCharsAsEncodedBytesCounter.java
index d6bb0ed9f3f..b7d1dcb6aaf 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/util/BoundedCharsAsEncodedBytesCounter.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/util/BoundedCharsAsEncodedBytesCounter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2009 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/util/ClassAndMimeTypeRegistry.groovy b/grails-web-common/src/main/groovy/org/grails/web/util/ClassAndMimeTypeRegistry.groovy
index d8bbccf7848..713fa060330 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/util/ClassAndMimeTypeRegistry.groovy
+++ b/grails-web-common/src/main/groovy/org/grails/web/util/ClassAndMimeTypeRegistry.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/util/GrailsApplicationAttributes.java b/grails-web-common/src/main/groovy/org/grails/web/util/GrailsApplicationAttributes.java
index 8a33fa03a66..f72bda18935 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/util/GrailsApplicationAttributes.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/util/GrailsApplicationAttributes.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/util/IncludeResponseWrapper.java b/grails-web-common/src/main/groovy/org/grails/web/util/IncludeResponseWrapper.java
index 3343bc1f22f..fa737c8400a 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/util/IncludeResponseWrapper.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/util/IncludeResponseWrapper.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/util/IncludedContent.java b/grails-web-common/src/main/groovy/org/grails/web/util/IncludedContent.java
index 12d617d9043..e24e8ac44b3 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/util/IncludedContent.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/util/IncludedContent.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/util/WebUtils.java b/grails-web-common/src/main/groovy/org/grails/web/util/WebUtils.java
index 812968bac87..1ed1b484b56 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/util/WebUtils.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/util/WebUtils.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/xml/PrettyPrintXMLStreamWriter.java b/grails-web-common/src/main/groovy/org/grails/web/xml/PrettyPrintXMLStreamWriter.java
index ad3f6647751..f8a08c01019 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/xml/PrettyPrintXMLStreamWriter.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/xml/PrettyPrintXMLStreamWriter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2008 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/xml/StreamingMarkupWriter.java b/grails-web-common/src/main/groovy/org/grails/web/xml/StreamingMarkupWriter.java
index 6817ee58b8e..99745e65605 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/xml/StreamingMarkupWriter.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/xml/StreamingMarkupWriter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2008 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/main/groovy/org/grails/web/xml/XMLStreamWriter.java b/grails-web-common/src/main/groovy/org/grails/web/xml/XMLStreamWriter.java
index d9c526dc8a2..e742997a635 100644
--- a/grails-web-common/src/main/groovy/org/grails/web/xml/XMLStreamWriter.java
+++ b/grails-web-common/src/main/groovy/org/grails/web/xml/XMLStreamWriter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2008 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/test/groovy/grails/web/api/ServletAttributesTraitGeneratedSpec.groovy b/grails-web-common/src/test/groovy/grails/web/api/ServletAttributesTraitGeneratedSpec.groovy
index 3f566f2e7c9..be9cf6642b7 100644
--- a/grails-web-common/src/test/groovy/grails/web/api/ServletAttributesTraitGeneratedSpec.groovy
+++ b/grails-web-common/src/test/groovy/grails/web/api/ServletAttributesTraitGeneratedSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.web.api
import groovy.transform.Generated
diff --git a/grails-web-common/src/test/groovy/grails/web/api/WebAttributesTraitGeneratedSpec.groovy b/grails-web-common/src/test/groovy/grails/web/api/WebAttributesTraitGeneratedSpec.groovy
index 21c03482159..cd1e7fb620a 100644
--- a/grails-web-common/src/test/groovy/grails/web/api/WebAttributesTraitGeneratedSpec.groovy
+++ b/grails-web-common/src/test/groovy/grails/web/api/WebAttributesTraitGeneratedSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.web.api
import groovy.transform.Generated
diff --git a/grails-web-common/src/test/groovy/grails/web/servlet/mvc/GrailsParameterMapTests.groovy b/grails-web-common/src/test/groovy/grails/web/servlet/mvc/GrailsParameterMapTests.groovy
index 0b88a694857..a00477858f3 100644
--- a/grails-web-common/src/test/groovy/grails/web/servlet/mvc/GrailsParameterMapTests.groovy
+++ b/grails-web-common/src/test/groovy/grails/web/servlet/mvc/GrailsParameterMapTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.web.servlet.mvc
import org.junit.jupiter.api.Test
diff --git a/grails-web-common/src/test/groovy/org/grails/web/json/parser/JSONParserSpec.groovy b/grails-web-common/src/test/groovy/org/grails/web/json/parser/JSONParserSpec.groovy
index 0b7820677cb..7b4ba40d27d 100644
--- a/grails-web-common/src/test/groovy/org/grails/web/json/parser/JSONParserSpec.groovy
+++ b/grails-web-common/src/test/groovy/org/grails/web/json/parser/JSONParserSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.json.parser
import groovy.transform.CompileStatic
diff --git a/grails-web-common/src/test/groovy/org/grails/web/pages/GroovyPagesUriSupportTests.java b/grails-web-common/src/test/groovy/org/grails/web/pages/GroovyPagesUriSupportTests.java
index d8763f72ff5..dae4588e257 100644
--- a/grails-web-common/src/test/groovy/org/grails/web/pages/GroovyPagesUriSupportTests.java
+++ b/grails-web-common/src/test/groovy/org/grails/web/pages/GroovyPagesUriSupportTests.java
@@ -1,4 +1,5 @@
-/* Copyright 2004-2005 Graeme Rocher
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-common/src/test/groovy/org/grails/web/util/WebUtilsSpec.groovy b/grails-web-common/src/test/groovy/org/grails/web/util/WebUtilsSpec.groovy
index 5b881c8ff01..90115db288a 100644
--- a/grails-web-common/src/test/groovy/org/grails/web/util/WebUtilsSpec.groovy
+++ b/grails-web-common/src/test/groovy/org/grails/web/util/WebUtilsSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.util
import spock.lang.Issue
diff --git a/grails-web-databinding/src/main/groovy/grails/compiler/traits/WebDataBindingTraitInjector.groovy b/grails-web-databinding/src/main/groovy/grails/compiler/traits/WebDataBindingTraitInjector.groovy
index 0395f50980c..1c027b312c1 100644
--- a/grails-web-databinding/src/main/groovy/grails/compiler/traits/WebDataBindingTraitInjector.groovy
+++ b/grails-web-databinding/src/main/groovy/grails/compiler/traits/WebDataBindingTraitInjector.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-web-databinding/src/main/groovy/grails/web/databinding/DataBinder.groovy b/grails-web-databinding/src/main/groovy/grails/web/databinding/DataBinder.groovy
index 2bac686865a..bea5014ff3c 100644
--- a/grails-web-databinding/src/main/groovy/grails/web/databinding/DataBinder.groovy
+++ b/grails-web-databinding/src/main/groovy/grails/web/databinding/DataBinder.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-web-databinding/src/main/groovy/grails/web/databinding/DataBindingUtils.java b/grails-web-databinding/src/main/groovy/grails/web/databinding/DataBindingUtils.java
index 78826209628..110891b25a5 100644
--- a/grails-web-databinding/src/main/groovy/grails/web/databinding/DataBindingUtils.java
+++ b/grails-web-databinding/src/main/groovy/grails/web/databinding/DataBindingUtils.java
@@ -1,11 +1,11 @@
/*
- * Copyright 2006-2007 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-web-databinding/src/main/groovy/grails/web/databinding/GrailsWebDataBinder.groovy b/grails-web-databinding/src/main/groovy/grails/web/databinding/GrailsWebDataBinder.groovy
index 1ed412d029e..c84fcfd4aa5 100644
--- a/grails-web-databinding/src/main/groovy/grails/web/databinding/GrailsWebDataBinder.groovy
+++ b/grails-web-databinding/src/main/groovy/grails/web/databinding/GrailsWebDataBinder.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-web-databinding/src/main/groovy/grails/web/databinding/WebDataBinding.groovy b/grails-web-databinding/src/main/groovy/grails/web/databinding/WebDataBinding.groovy
index 64ec3ac5231..a25712fecb4 100644
--- a/grails-web-databinding/src/main/groovy/grails/web/databinding/WebDataBinding.groovy
+++ b/grails-web-databinding/src/main/groovy/grails/web/databinding/WebDataBinding.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-web-databinding/src/main/groovy/org/grails/web/databinding/ASTDatabindingHelper.java b/grails-web-databinding/src/main/groovy/org/grails/web/databinding/ASTDatabindingHelper.java
index f0cd251fd9a..dc249cbf16a 100644
--- a/grails-web-databinding/src/main/groovy/org/grails/web/databinding/ASTDatabindingHelper.java
+++ b/grails-web-databinding/src/main/groovy/org/grails/web/databinding/ASTDatabindingHelper.java
@@ -1,11 +1,11 @@
/*
- * Copyright 2012 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-web-databinding/src/main/groovy/org/grails/web/databinding/DataBindingEventMulticastListener.groovy b/grails-web-databinding/src/main/groovy/org/grails/web/databinding/DataBindingEventMulticastListener.groovy
index 16b2aed5a04..adf0a593bec 100644
--- a/grails-web-databinding/src/main/groovy/org/grails/web/databinding/DataBindingEventMulticastListener.groovy
+++ b/grails-web-databinding/src/main/groovy/org/grails/web/databinding/DataBindingEventMulticastListener.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-web-databinding/src/main/groovy/org/grails/web/databinding/DataBindingLazyMetaPropertyMap.java b/grails-web-databinding/src/main/groovy/org/grails/web/databinding/DataBindingLazyMetaPropertyMap.java
index 7396211be4f..63c234c67db 100644
--- a/grails-web-databinding/src/main/groovy/org/grails/web/databinding/DataBindingLazyMetaPropertyMap.java
+++ b/grails-web-databinding/src/main/groovy/org/grails/web/databinding/DataBindingLazyMetaPropertyMap.java
@@ -1,11 +1,11 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-web-databinding/src/main/groovy/org/grails/web/databinding/DefaultASTDatabindingHelper.java b/grails-web-databinding/src/main/groovy/org/grails/web/databinding/DefaultASTDatabindingHelper.java
index 724640756fc..d98d8754acb 100644
--- a/grails-web-databinding/src/main/groovy/org/grails/web/databinding/DefaultASTDatabindingHelper.java
+++ b/grails-web-databinding/src/main/groovy/org/grails/web/databinding/DefaultASTDatabindingHelper.java
@@ -1,11 +1,11 @@
/*
- * Copyright 2012 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-web-databinding/src/main/groovy/org/grails/web/databinding/GrailsWebDataBindingListener.groovy b/grails-web-databinding/src/main/groovy/org/grails/web/databinding/GrailsWebDataBindingListener.groovy
index b9ad689e549..1040d0e60e1 100644
--- a/grails-web-databinding/src/main/groovy/org/grails/web/databinding/GrailsWebDataBindingListener.groovy
+++ b/grails-web-databinding/src/main/groovy/org/grails/web/databinding/GrailsWebDataBindingListener.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-web-databinding/src/main/groovy/org/grails/web/databinding/SpringConversionServiceAdapter.groovy b/grails-web-databinding/src/main/groovy/org/grails/web/databinding/SpringConversionServiceAdapter.groovy
index b1433e7c506..bb0303b080c 100644
--- a/grails-web-databinding/src/main/groovy/org/grails/web/databinding/SpringConversionServiceAdapter.groovy
+++ b/grails-web-databinding/src/main/groovy/org/grails/web/databinding/SpringConversionServiceAdapter.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/AbstractRequestBodyDataBindingSourceCreator.groovy b/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/AbstractRequestBodyDataBindingSourceCreator.groovy
index 59c3d6e59e9..ea7216730af 100644
--- a/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/AbstractRequestBodyDataBindingSourceCreator.groovy
+++ b/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/AbstractRequestBodyDataBindingSourceCreator.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/DefaultDataBindingSourceCreator.groovy b/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/DefaultDataBindingSourceCreator.groovy
index dd5778f2560..6c4ca5744bd 100644
--- a/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/DefaultDataBindingSourceCreator.groovy
+++ b/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/DefaultDataBindingSourceCreator.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/DefaultDataBindingSourceRegistry.groovy b/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/DefaultDataBindingSourceRegistry.groovy
index e65e4c97785..431f28e4e7c 100644
--- a/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/DefaultDataBindingSourceRegistry.groovy
+++ b/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/DefaultDataBindingSourceRegistry.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/HalGPathResultMap.groovy b/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/HalGPathResultMap.groovy
index e7025ba4ac4..02d42963f7c 100644
--- a/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/HalGPathResultMap.groovy
+++ b/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/HalGPathResultMap.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/HalJsonDataBindingSourceCreator.groovy b/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/HalJsonDataBindingSourceCreator.groovy
index f2c84a733a6..24b1f171285 100644
--- a/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/HalJsonDataBindingSourceCreator.groovy
+++ b/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/HalJsonDataBindingSourceCreator.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/HalXmlDataBindingSourceCreator.groovy b/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/HalXmlDataBindingSourceCreator.groovy
index e55406a9f2c..75ebf964de3 100644
--- a/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/HalXmlDataBindingSourceCreator.groovy
+++ b/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/HalXmlDataBindingSourceCreator.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/InvalidRequestBodyException.java b/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/InvalidRequestBodyException.java
index aca17c8ef1f..6ac99919524 100644
--- a/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/InvalidRequestBodyException.java
+++ b/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/InvalidRequestBodyException.java
@@ -1,11 +1,11 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/JsonApiDataBindingSourceCreator.groovy b/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/JsonApiDataBindingSourceCreator.groovy
index 42517f2be1a..a2123f18b2b 100644
--- a/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/JsonApiDataBindingSourceCreator.groovy
+++ b/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/JsonApiDataBindingSourceCreator.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/JsonDataBindingSourceCreator.groovy b/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/JsonDataBindingSourceCreator.groovy
index 0b4dea01a18..d54d12f8d4f 100644
--- a/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/JsonDataBindingSourceCreator.groovy
+++ b/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/JsonDataBindingSourceCreator.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/XmlDataBindingSourceCreator.groovy b/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/XmlDataBindingSourceCreator.groovy
index f53a7f1da1b..69d967f7b25 100644
--- a/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/XmlDataBindingSourceCreator.groovy
+++ b/grails-web-databinding/src/main/groovy/org/grails/web/databinding/bindingsource/XmlDataBindingSourceCreator.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-web-databinding/src/main/groovy/org/grails/web/databinding/converters/AbstractStructuredBindingEditor.groovy b/grails-web-databinding/src/main/groovy/org/grails/web/databinding/converters/AbstractStructuredBindingEditor.groovy
index 7791419cd6c..927f00cb2b2 100644
--- a/grails-web-databinding/src/main/groovy/org/grails/web/databinding/converters/AbstractStructuredBindingEditor.groovy
+++ b/grails-web-databinding/src/main/groovy/org/grails/web/databinding/converters/AbstractStructuredBindingEditor.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-web-databinding/src/main/groovy/org/grails/web/databinding/converters/ByteArrayMultipartFileValueConverter.groovy b/grails-web-databinding/src/main/groovy/org/grails/web/databinding/converters/ByteArrayMultipartFileValueConverter.groovy
index 3cac588fd8d..f5069a18c22 100644
--- a/grails-web-databinding/src/main/groovy/org/grails/web/databinding/converters/ByteArrayMultipartFileValueConverter.groovy
+++ b/grails-web-databinding/src/main/groovy/org/grails/web/databinding/converters/ByteArrayMultipartFileValueConverter.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-web-databinding/src/test/groovy/grails/web/databinding/DataBinderTraitGeneratedSpec.groovy b/grails-web-databinding/src/test/groovy/grails/web/databinding/DataBinderTraitGeneratedSpec.groovy
index 76308d0185d..76fcde4e687 100644
--- a/grails-web-databinding/src/test/groovy/grails/web/databinding/DataBinderTraitGeneratedSpec.groovy
+++ b/grails-web-databinding/src/test/groovy/grails/web/databinding/DataBinderTraitGeneratedSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.web.databinding
import groovy.transform.Generated
diff --git a/grails-web-databinding/src/test/groovy/grails/web/databinding/WebDataBindingTraitGeneratedSpec.groovy b/grails-web-databinding/src/test/groovy/grails/web/databinding/WebDataBindingTraitGeneratedSpec.groovy
index 07d6eff528b..f288a892b81 100644
--- a/grails-web-databinding/src/test/groovy/grails/web/databinding/WebDataBindingTraitGeneratedSpec.groovy
+++ b/grails-web-databinding/src/test/groovy/grails/web/databinding/WebDataBindingTraitGeneratedSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.web.databinding
import groovy.transform.Generated
diff --git a/grails-web-databinding/src/test/groovy/org/grails/web/databinding/bindingsource/AbstractRequestBodyDataBindingSourceCreatorSpec.groovy b/grails-web-databinding/src/test/groovy/org/grails/web/databinding/bindingsource/AbstractRequestBodyDataBindingSourceCreatorSpec.groovy
index d553726c8f4..4d9d57dbf27 100644
--- a/grails-web-databinding/src/test/groovy/org/grails/web/databinding/bindingsource/AbstractRequestBodyDataBindingSourceCreatorSpec.groovy
+++ b/grails-web-databinding/src/test/groovy/org/grails/web/databinding/bindingsource/AbstractRequestBodyDataBindingSourceCreatorSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.databinding.bindingsource
import grails.databinding.CollectionDataBindingSource
diff --git a/grails-web-databinding/src/test/groovy/org/grails/web/databinding/bindingsource/HalGPathResultMapSpec.groovy b/grails-web-databinding/src/test/groovy/org/grails/web/databinding/bindingsource/HalGPathResultMapSpec.groovy
index 106ddda0557..b3770856867 100644
--- a/grails-web-databinding/src/test/groovy/org/grails/web/databinding/bindingsource/HalGPathResultMapSpec.groovy
+++ b/grails-web-databinding/src/test/groovy/org/grails/web/databinding/bindingsource/HalGPathResultMapSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.databinding.bindingsource
import org.grails.databinding.xml.GPathResultMap
diff --git a/grails-web-databinding/src/test/groovy/org/grails/web/databinding/bindingsource/hal/json/HalJsonDataBindingSourceCreatorSpec.groovy b/grails-web-databinding/src/test/groovy/org/grails/web/databinding/bindingsource/hal/json/HalJsonDataBindingSourceCreatorSpec.groovy
index 7cf02286c8e..3ca586d0597 100644
--- a/grails-web-databinding/src/test/groovy/org/grails/web/databinding/bindingsource/hal/json/HalJsonDataBindingSourceCreatorSpec.groovy
+++ b/grails-web-databinding/src/test/groovy/org/grails/web/databinding/bindingsource/hal/json/HalJsonDataBindingSourceCreatorSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.databinding.bindingsource.hal.json
import org.grails.web.databinding.bindingsource.HalJsonDataBindingSourceCreator
diff --git a/grails-web-databinding/src/test/groovy/org/grails/web/databinding/bindingsource/json/JsonDataBindingSourceCreatorSpec.groovy b/grails-web-databinding/src/test/groovy/org/grails/web/databinding/bindingsource/json/JsonDataBindingSourceCreatorSpec.groovy
index 98d54798431..2a81a81587c 100644
--- a/grails-web-databinding/src/test/groovy/org/grails/web/databinding/bindingsource/json/JsonDataBindingSourceCreatorSpec.groovy
+++ b/grails-web-databinding/src/test/groovy/org/grails/web/databinding/bindingsource/json/JsonDataBindingSourceCreatorSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.databinding.bindingsource.json
import groovy.json.JsonException
diff --git a/grails-web-databinding/src/test/groovy/org/grails/web/databinding/bindingsource/json/api/JsonApiDataBindingSourceCreatorSpec.groovy b/grails-web-databinding/src/test/groovy/org/grails/web/databinding/bindingsource/json/api/JsonApiDataBindingSourceCreatorSpec.groovy
index 5aa82eb064f..a089bc16eb9 100644
--- a/grails-web-databinding/src/test/groovy/org/grails/web/databinding/bindingsource/json/api/JsonApiDataBindingSourceCreatorSpec.groovy
+++ b/grails-web-databinding/src/test/groovy/org/grails/web/databinding/bindingsource/json/api/JsonApiDataBindingSourceCreatorSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.databinding.bindingsource.json.api
import grails.databinding.DataBindingSource
diff --git a/grails-web-fileupload/src/main/groovy/org/grails/web/multipart/ContentLengthAwareCommonsMultipartResolver.java b/grails-web-fileupload/src/main/groovy/org/grails/web/multipart/ContentLengthAwareCommonsMultipartResolver.java
index ab37ad1a169..442aae19de5 100644
--- a/grails-web-fileupload/src/main/groovy/org/grails/web/multipart/ContentLengthAwareCommonsMultipartResolver.java
+++ b/grails-web-fileupload/src/main/groovy/org/grails/web/multipart/ContentLengthAwareCommonsMultipartResolver.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-mvc/src/main/groovy/org/grails/web/errors/GrailsExceptionResolver.java b/grails-web-mvc/src/main/groovy/org/grails/web/errors/GrailsExceptionResolver.java
index 0aba6033f0d..f5f2fa041ad 100644
--- a/grails-web-mvc/src/main/groovy/org/grails/web/errors/GrailsExceptionResolver.java
+++ b/grails-web-mvc/src/main/groovy/org/grails/web/errors/GrailsExceptionResolver.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-mvc/src/main/groovy/org/grails/web/filters/HiddenHttpMethodFilter.java b/grails-web-mvc/src/main/groovy/org/grails/web/filters/HiddenHttpMethodFilter.java
index 565f67b4192..2a9fec51541 100644
--- a/grails-web-mvc/src/main/groovy/org/grails/web/filters/HiddenHttpMethodFilter.java
+++ b/grails-web-mvc/src/main/groovy/org/grails/web/filters/HiddenHttpMethodFilter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-mvc/src/main/groovy/org/grails/web/servlet/GrailsUrlPathHelper.java b/grails-web-mvc/src/main/groovy/org/grails/web/servlet/GrailsUrlPathHelper.java
index c0c6ce4091b..c6e4d594887 100644
--- a/grails-web-mvc/src/main/groovy/org/grails/web/servlet/GrailsUrlPathHelper.java
+++ b/grails-web-mvc/src/main/groovy/org/grails/web/servlet/GrailsUrlPathHelper.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-mvc/src/main/groovy/org/grails/web/servlet/mvc/AbstractTokenResponseHandler.java b/grails-web-mvc/src/main/groovy/org/grails/web/servlet/mvc/AbstractTokenResponseHandler.java
index f5c1df1563f..cebafe57697 100644
--- a/grails-web-mvc/src/main/groovy/org/grails/web/servlet/mvc/AbstractTokenResponseHandler.java
+++ b/grails-web-mvc/src/main/groovy/org/grails/web/servlet/mvc/AbstractTokenResponseHandler.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-mvc/src/main/groovy/org/grails/web/servlet/mvc/GrailsDispatcherServlet.groovy b/grails-web-mvc/src/main/groovy/org/grails/web/servlet/mvc/GrailsDispatcherServlet.groovy
index 0fb5bc63808..ffc28df1e7f 100644
--- a/grails-web-mvc/src/main/groovy/org/grails/web/servlet/mvc/GrailsDispatcherServlet.groovy
+++ b/grails-web-mvc/src/main/groovy/org/grails/web/servlet/mvc/GrailsDispatcherServlet.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-mvc/src/main/groovy/org/grails/web/servlet/mvc/GrailsWebRequestFilter.java b/grails-web-mvc/src/main/groovy/org/grails/web/servlet/mvc/GrailsWebRequestFilter.java
index c58be17a7a8..983d3cecfa8 100644
--- a/grails-web-mvc/src/main/groovy/org/grails/web/servlet/mvc/GrailsWebRequestFilter.java
+++ b/grails-web-mvc/src/main/groovy/org/grails/web/servlet/mvc/GrailsWebRequestFilter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-mvc/src/main/groovy/org/grails/web/servlet/mvc/SynchronizerTokensHolder.groovy b/grails-web-mvc/src/main/groovy/org/grails/web/servlet/mvc/SynchronizerTokensHolder.groovy
index 938b910fba4..79795699b03 100644
--- a/grails-web-mvc/src/main/groovy/org/grails/web/servlet/mvc/SynchronizerTokensHolder.groovy
+++ b/grails-web-mvc/src/main/groovy/org/grails/web/servlet/mvc/SynchronizerTokensHolder.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-mvc/src/main/groovy/org/grails/web/servlet/mvc/TokenResponseActionResultTransformer.groovy b/grails-web-mvc/src/main/groovy/org/grails/web/servlet/mvc/TokenResponseActionResultTransformer.groovy
index c2e3e35bcef..92876198c5c 100644
--- a/grails-web-mvc/src/main/groovy/org/grails/web/servlet/mvc/TokenResponseActionResultTransformer.groovy
+++ b/grails-web-mvc/src/main/groovy/org/grails/web/servlet/mvc/TokenResponseActionResultTransformer.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-mvc/src/main/groovy/org/grails/web/servlet/mvc/TokenResponseHandler.java b/grails-web-mvc/src/main/groovy/org/grails/web/servlet/mvc/TokenResponseHandler.java
index 79dbbf1394f..1054d25e1fa 100644
--- a/grails-web-mvc/src/main/groovy/org/grails/web/servlet/mvc/TokenResponseHandler.java
+++ b/grails-web-mvc/src/main/groovy/org/grails/web/servlet/mvc/TokenResponseHandler.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-mvc/src/test/groovy/org/grails/web/errors/GrailsExceptionResolverSpec.groovy b/grails-web-mvc/src/test/groovy/org/grails/web/errors/GrailsExceptionResolverSpec.groovy
index b83c64a1fe5..80e12e1a64f 100644
--- a/grails-web-mvc/src/test/groovy/org/grails/web/errors/GrailsExceptionResolverSpec.groovy
+++ b/grails-web-mvc/src/test/groovy/org/grails/web/errors/GrailsExceptionResolverSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.errors
import grails.web.mapping.UrlMappingsHolder
diff --git a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/LinkGenerator.java b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/LinkGenerator.java
index 0dd976c7aca..f19d9abc897 100644
--- a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/LinkGenerator.java
+++ b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/LinkGenerator.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/LinkGeneratorFactory.groovy b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/LinkGeneratorFactory.groovy
index 18c8ea3e834..3f93ccfe925 100644
--- a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/LinkGeneratorFactory.groovy
+++ b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/LinkGeneratorFactory.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.web.mapping
import grails.web.CamelCaseUrlConverter
diff --git a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/ResponseRedirector.groovy b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/ResponseRedirector.groovy
index 86a02fc231c..20fd94722f5 100644
--- a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/ResponseRedirector.groovy
+++ b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/ResponseRedirector.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/UrlCreator.java b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/UrlCreator.java
index aef5b8dff05..ed8aa492a01 100644
--- a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/UrlCreator.java
+++ b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/UrlCreator.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/UrlMapping.java b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/UrlMapping.java
index 204741e361d..17a950f26bd 100644
--- a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/UrlMapping.java
+++ b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/UrlMapping.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/UrlMappingData.java b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/UrlMappingData.java
index f09a7db001e..3440638ab1a 100644
--- a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/UrlMappingData.java
+++ b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/UrlMappingData.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/UrlMappingEvaluator.java b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/UrlMappingEvaluator.java
index a7c2020f1a1..0fa358e9161 100644
--- a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/UrlMappingEvaluator.java
+++ b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/UrlMappingEvaluator.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/UrlMappingInfo.java b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/UrlMappingInfo.java
index 0feb07a36e9..6ef5f95c51f 100644
--- a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/UrlMappingInfo.java
+++ b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/UrlMappingInfo.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/UrlMappingParser.java b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/UrlMappingParser.java
index 200f6742c3e..5ff2432820b 100644
--- a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/UrlMappingParser.java
+++ b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/UrlMappingParser.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/UrlMappings.java b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/UrlMappings.java
index 8306a247127..310abe5a1a8 100644
--- a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/UrlMappings.java
+++ b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/UrlMappings.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/UrlMappingsFactory.groovy b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/UrlMappingsFactory.groovy
index a9fce6a1b00..8e338cdf383 100644
--- a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/UrlMappingsFactory.groovy
+++ b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/UrlMappingsFactory.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.web.mapping
import groovy.transform.CompileStatic
diff --git a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/UrlMappingsHolder.java b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/UrlMappingsHolder.java
index 0e1b31a1b78..7443a959406 100644
--- a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/UrlMappingsHolder.java
+++ b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/UrlMappingsHolder.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/cors/GrailsCorsConfiguration.groovy b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/cors/GrailsCorsConfiguration.groovy
index bbf4471070e..f1022684f4d 100644
--- a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/cors/GrailsCorsConfiguration.groovy
+++ b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/cors/GrailsCorsConfiguration.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/cors/GrailsCorsFilter.groovy b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/cors/GrailsCorsFilter.groovy
index b52f5157f40..30e5745f5ac 100644
--- a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/cors/GrailsCorsFilter.groovy
+++ b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/cors/GrailsCorsFilter.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/cors/GrailsDefaultCorsMapping.groovy b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/cors/GrailsDefaultCorsMapping.groovy
index bf35f81da21..2a62b0a2f3d 100644
--- a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/cors/GrailsDefaultCorsMapping.groovy
+++ b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/cors/GrailsDefaultCorsMapping.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/exceptions/UrlMappingException.java b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/exceptions/UrlMappingException.java
index 002fb18aaf3..22923a19c13 100644
--- a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/exceptions/UrlMappingException.java
+++ b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/exceptions/UrlMappingException.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/mvc/RedirectEventListener.java b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/mvc/RedirectEventListener.java
index b7c7bba8b5e..bacbeac2554 100644
--- a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/mvc/RedirectEventListener.java
+++ b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/mvc/RedirectEventListener.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/mvc/exceptions/CannotRedirectException.java b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/mvc/exceptions/CannotRedirectException.java
index b496915c48c..b4c03a8e2d3 100644
--- a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/mvc/exceptions/CannotRedirectException.java
+++ b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/mvc/exceptions/CannotRedirectException.java
@@ -1,7 +1,7 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
- * Licensed under the Apache License, Version 2.0 (the "License")
+ * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
diff --git a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/reporting/UrlMappingsRenderer.groovy b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/reporting/UrlMappingsRenderer.groovy
index 76bef74ade0..20350007f06 100644
--- a/grails-web-url-mappings/src/main/groovy/grails/web/mapping/reporting/UrlMappingsRenderer.groovy
+++ b/grails-web-url-mappings/src/main/groovy/grails/web/mapping/reporting/UrlMappingsRenderer.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/AbstractUrlMapping.java b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/AbstractUrlMapping.java
index b3ebcf75b09..62f08820f76 100644
--- a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/AbstractUrlMapping.java
+++ b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/AbstractUrlMapping.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/AbstractUrlMappingInfo.java b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/AbstractUrlMappingInfo.java
index 594ca905a5d..c0b1cd4beed 100644
--- a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/AbstractUrlMappingInfo.java
+++ b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/AbstractUrlMappingInfo.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/CachingLinkGenerator.java b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/CachingLinkGenerator.java
index 92226660652..99a9f90d96d 100644
--- a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/CachingLinkGenerator.java
+++ b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/CachingLinkGenerator.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/ControllerActionConventions.groovy b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/ControllerActionConventions.groovy
index 1fc27de238b..2c9c9140bd7 100644
--- a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/ControllerActionConventions.groovy
+++ b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/ControllerActionConventions.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/DefaultLinkGenerator.groovy b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/DefaultLinkGenerator.groovy
index 14de639d420..4c92cb7c817 100644
--- a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/DefaultLinkGenerator.groovy
+++ b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/DefaultLinkGenerator.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/DefaultUrlCreator.java b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/DefaultUrlCreator.java
index 908d1298602..c54a4cdbf8c 100644
--- a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/DefaultUrlCreator.java
+++ b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/DefaultUrlCreator.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/DefaultUrlMappingData.java b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/DefaultUrlMappingData.java
index 681b733048c..4d7b09e4888 100644
--- a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/DefaultUrlMappingData.java
+++ b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/DefaultUrlMappingData.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/DefaultUrlMappingEvaluator.java b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/DefaultUrlMappingEvaluator.java
index b592ba2cda0..1290b8e1f9c 100644
--- a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/DefaultUrlMappingEvaluator.java
+++ b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/DefaultUrlMappingEvaluator.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/DefaultUrlMappingInfo.java b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/DefaultUrlMappingInfo.java
index 620c8a903a4..30e309db2a7 100644
--- a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/DefaultUrlMappingInfo.java
+++ b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/DefaultUrlMappingInfo.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/DefaultUrlMappingParser.java b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/DefaultUrlMappingParser.java
index 7d7ae88e405..c35014e5695 100644
--- a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/DefaultUrlMappingParser.java
+++ b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/DefaultUrlMappingParser.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/DefaultUrlMappings.groovy b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/DefaultUrlMappings.groovy
index e0207513e89..c93d677a6e0 100644
--- a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/DefaultUrlMappings.groovy
+++ b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/DefaultUrlMappings.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/DefaultUrlMappingsHolder.java b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/DefaultUrlMappingsHolder.java
index 713ec181e67..60fb5e7b8d7 100644
--- a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/DefaultUrlMappingsHolder.java
+++ b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/DefaultUrlMappingsHolder.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/ForwardUrlMappingInfo.groovy b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/ForwardUrlMappingInfo.groovy
index 97590c6fbb6..3a7285deaad 100644
--- a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/ForwardUrlMappingInfo.groovy
+++ b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/ForwardUrlMappingInfo.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/MetaMappingInfo.groovy b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/MetaMappingInfo.groovy
index def33268b41..2109467f3bf 100644
--- a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/MetaMappingInfo.groovy
+++ b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/MetaMappingInfo.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/RegexUrlMapping.java b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/RegexUrlMapping.java
index 5cdb4c43141..2692b957f3b 100644
--- a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/RegexUrlMapping.java
+++ b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/RegexUrlMapping.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/ResponseCodeMappingData.java b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/ResponseCodeMappingData.java
index 66f2487c603..6cbdadf5135 100644
--- a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/ResponseCodeMappingData.java
+++ b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/ResponseCodeMappingData.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/ResponseCodeUrlMapping.java b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/ResponseCodeUrlMapping.java
index faef3361f28..1e49e5d12f5 100644
--- a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/ResponseCodeUrlMapping.java
+++ b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/ResponseCodeUrlMapping.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/ResponseCodeUrlMappingVisitor.groovy b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/ResponseCodeUrlMappingVisitor.groovy
index bc90dc9ba42..f0d07b40649 100644
--- a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/ResponseCodeUrlMappingVisitor.groovy
+++ b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/ResponseCodeUrlMappingVisitor.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/UrlCreatorCache.java b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/UrlCreatorCache.java
index 5403451436d..640df41cf83 100644
--- a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/UrlCreatorCache.java
+++ b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/UrlCreatorCache.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/UrlMappingUtils.java b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/UrlMappingUtils.java
index ccef56b18c0..9326de26515 100644
--- a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/UrlMappingUtils.java
+++ b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/UrlMappingUtils.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/UrlMappingsHolderFactoryBean.java b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/UrlMappingsHolderFactoryBean.java
index e58557adbcd..146113a24f7 100644
--- a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/UrlMappingsHolderFactoryBean.java
+++ b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/UrlMappingsHolderFactoryBean.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/mvc/AbstractGrailsControllerUrlMappings.groovy b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/mvc/AbstractGrailsControllerUrlMappings.groovy
index 691bf8cd19c..24dfc37ea79 100644
--- a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/mvc/AbstractGrailsControllerUrlMappings.groovy
+++ b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/mvc/AbstractGrailsControllerUrlMappings.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/mvc/GrailsControllerUrlMappingInfo.groovy b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/mvc/GrailsControllerUrlMappingInfo.groovy
index 7002c72bab1..c36f18c87b3 100644
--- a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/mvc/GrailsControllerUrlMappingInfo.groovy
+++ b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/mvc/GrailsControllerUrlMappingInfo.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/mvc/GrailsControllerUrlMappings.java b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/mvc/GrailsControllerUrlMappings.java
index 1f53bdcfdaf..f1529d41806 100644
--- a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/mvc/GrailsControllerUrlMappings.java
+++ b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/mvc/GrailsControllerUrlMappings.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/mvc/UrlMappingsHandlerMapping.groovy b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/mvc/UrlMappingsHandlerMapping.groovy
index 47202a7dc99..7a8513c3143 100644
--- a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/mvc/UrlMappingsHandlerMapping.groovy
+++ b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/mvc/UrlMappingsHandlerMapping.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/mvc/UrlMappingsInfoHandlerAdapter.groovy b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/mvc/UrlMappingsInfoHandlerAdapter.groovy
index 6c12562d0e2..6fc3db66650 100644
--- a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/mvc/UrlMappingsInfoHandlerAdapter.groovy
+++ b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/mvc/UrlMappingsInfoHandlerAdapter.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mapping.mvc
import grails.core.GrailsControllerClass
diff --git a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/reporting/AnsiConsoleUrlMappingsRenderer.groovy b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/reporting/AnsiConsoleUrlMappingsRenderer.groovy
index 485bda135c3..de81a9339a0 100644
--- a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/reporting/AnsiConsoleUrlMappingsRenderer.groovy
+++ b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/reporting/AnsiConsoleUrlMappingsRenderer.groovy
@@ -1,11 +1,11 @@
/*
- * Copyright 2013 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * https://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/reporting/UrlMappingsReportCommand.groovy b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/reporting/UrlMappingsReportCommand.groovy
index eb918871dba..252e761b512 100644
--- a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/reporting/UrlMappingsReportCommand.groovy
+++ b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/reporting/UrlMappingsReportCommand.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/servlet/UrlMappingsErrorPageCustomizer.groovy b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/servlet/UrlMappingsErrorPageCustomizer.groovy
index 7724b8e1901..e429a779f63 100644
--- a/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/servlet/UrlMappingsErrorPageCustomizer.groovy
+++ b/grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/servlet/UrlMappingsErrorPageCustomizer.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2015 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/test/groovy/grails/web/mapping/AbstractUrlMappingsSpec.groovy b/grails-web-url-mappings/src/test/groovy/grails/web/mapping/AbstractUrlMappingsSpec.groovy
index 0b757ac3a75..d7360a13daa 100644
--- a/grails-web-url-mappings/src/test/groovy/grails/web/mapping/AbstractUrlMappingsSpec.groovy
+++ b/grails-web-url-mappings/src/test/groovy/grails/web/mapping/AbstractUrlMappingsSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.web.mapping
import grails.web.CamelCaseUrlConverter
diff --git a/grails-web-url-mappings/src/test/groovy/grails/web/mapping/CollectionWithVariableUrlMappingSpec.groovy b/grails-web-url-mappings/src/test/groovy/grails/web/mapping/CollectionWithVariableUrlMappingSpec.groovy
index 95cde50d666..249d1458122 100644
--- a/grails-web-url-mappings/src/test/groovy/grails/web/mapping/CollectionWithVariableUrlMappingSpec.groovy
+++ b/grails-web-url-mappings/src/test/groovy/grails/web/mapping/CollectionWithVariableUrlMappingSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.web.mapping
class CollectionWithVariableUrlMappingSpec extends AbstractUrlMappingsSpec {
diff --git a/grails-web-url-mappings/src/test/groovy/grails/web/mapping/DefaultActionUrlMappingSpec.groovy b/grails-web-url-mappings/src/test/groovy/grails/web/mapping/DefaultActionUrlMappingSpec.groovy
index ec3b452e6ad..43afc70edb4 100644
--- a/grails-web-url-mappings/src/test/groovy/grails/web/mapping/DefaultActionUrlMappingSpec.groovy
+++ b/grails-web-url-mappings/src/test/groovy/grails/web/mapping/DefaultActionUrlMappingSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.web.mapping
/**
* @author Graeme Rocher
diff --git a/grails-web-url-mappings/src/test/groovy/grails/web/mapping/DoubleWildcardUrlMappingSpec.groovy b/grails-web-url-mappings/src/test/groovy/grails/web/mapping/DoubleWildcardUrlMappingSpec.groovy
index c61ea4788f5..d6db284d9f4 100644
--- a/grails-web-url-mappings/src/test/groovy/grails/web/mapping/DoubleWildcardUrlMappingSpec.groovy
+++ b/grails-web-url-mappings/src/test/groovy/grails/web/mapping/DoubleWildcardUrlMappingSpec.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package grails.web.mapping
/**
*/
diff --git a/grails-web-url-mappings/src/test/groovy/grails/web/mapping/GroupedUrlMappingSpec.groovy b/grails-web-url-mappings/src/test/groovy/grails/web/mapping/GroupedUrlMappingSpec.groovy
index 8a1cdab1ed8..1a6bb17eccd 100644
--- a/grails-web-url-mappings/src/test/groovy/grails/web/mapping/GroupedUrlMappingSpec.groovy
+++ b/grails-web-url-mappings/src/test/groovy/grails/web/mapping/GroupedUrlMappingSpec.groovy
@@ -1,15 +1,5 @@
-package grails.web.mapping
-
-import grails.util.GrailsWebMockUtil
-import grails.web.http.HttpHeaders
-import org.springframework.web.context.request.RequestContextHolder
-import spock.lang.Issue
-
-import javax.servlet.http.HttpServletRequest
-import javax.servlet.http.HttpServletResponse
-
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -23,6 +13,15 @@ import javax.servlet.http.HttpServletResponse
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+package grails.web.mapping
+
+import grails.util.GrailsWebMockUtil
+import grails.web.http.HttpHeaders
+import org.springframework.web.context.request.RequestContextHolder
+import spock.lang.Issue
+
+import javax.servlet.http.HttpServletRequest
+import javax.servlet.http.HttpServletResponse
/**
* @author graemerocher
diff --git a/grails-web-url-mappings/src/test/groovy/grails/web/mapping/MandatoryParamMappingSpec.groovy b/grails-web-url-mappings/src/test/groovy/grails/web/mapping/MandatoryParamMappingSpec.groovy
index f3bf8dd5039..31fddd1761a 100644
--- a/grails-web-url-mappings/src/test/groovy/grails/web/mapping/MandatoryParamMappingSpec.groovy
+++ b/grails-web-url-mappings/src/test/groovy/grails/web/mapping/MandatoryParamMappingSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.web.mapping
import spock.lang.Issue
diff --git a/grails-web-url-mappings/src/test/groovy/grails/web/mapping/OverlappingUrlMappingsMatchingSpec.groovy b/grails-web-url-mappings/src/test/groovy/grails/web/mapping/OverlappingUrlMappingsMatchingSpec.groovy
index 8fc97ee1322..1e261033ae4 100644
--- a/grails-web-url-mappings/src/test/groovy/grails/web/mapping/OverlappingUrlMappingsMatchingSpec.groovy
+++ b/grails-web-url-mappings/src/test/groovy/grails/web/mapping/OverlappingUrlMappingsMatchingSpec.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package grails.web.mapping
/**
*/
diff --git a/grails-web-url-mappings/src/test/groovy/grails/web/mapping/RedirectNonAbsoluteURISpec.groovy b/grails-web-url-mappings/src/test/groovy/grails/web/mapping/RedirectNonAbsoluteURISpec.groovy
index e81e318212a..52be8f46f94 100644
--- a/grails-web-url-mappings/src/test/groovy/grails/web/mapping/RedirectNonAbsoluteURISpec.groovy
+++ b/grails-web-url-mappings/src/test/groovy/grails/web/mapping/RedirectNonAbsoluteURISpec.groovy
@@ -1,15 +1,5 @@
-package grails.web.mapping
-
-import grails.util.GrailsWebMockUtil
-import grails.web.http.HttpHeaders
-import org.springframework.web.context.request.RequestContextHolder
-import spock.lang.Issue
-
-import javax.servlet.http.HttpServletRequest
-import javax.servlet.http.HttpServletResponse
-
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -23,6 +13,15 @@ import javax.servlet.http.HttpServletResponse
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+package grails.web.mapping
+
+import grails.util.GrailsWebMockUtil
+import grails.web.http.HttpHeaders
+import org.springframework.web.context.request.RequestContextHolder
+import spock.lang.Issue
+
+import javax.servlet.http.HttpServletRequest
+import javax.servlet.http.HttpServletResponse
/**
* @author Iván López
diff --git a/grails-web-url-mappings/src/test/groovy/grails/web/mapping/RedirectWithParamsSpec.groovy b/grails-web-url-mappings/src/test/groovy/grails/web/mapping/RedirectWithParamsSpec.groovy
index 4163ab08856..0c2455ce6fe 100644
--- a/grails-web-url-mappings/src/test/groovy/grails/web/mapping/RedirectWithParamsSpec.groovy
+++ b/grails-web-url-mappings/src/test/groovy/grails/web/mapping/RedirectWithParamsSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.web.mapping
import grails.core.DefaultGrailsApplication
diff --git a/grails-web-url-mappings/src/test/groovy/grails/web/mapping/RegisterUrlMappingsAtRuntimeSpec.groovy b/grails-web-url-mappings/src/test/groovy/grails/web/mapping/RegisterUrlMappingsAtRuntimeSpec.groovy
index 61115b5cee3..375b8643b26 100644
--- a/grails-web-url-mappings/src/test/groovy/grails/web/mapping/RegisterUrlMappingsAtRuntimeSpec.groovy
+++ b/grails-web-url-mappings/src/test/groovy/grails/web/mapping/RegisterUrlMappingsAtRuntimeSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.web.mapping
/**
* @author Graeme Rocher
diff --git a/grails-web-url-mappings/src/test/groovy/grails/web/mapping/RestfulResourceMappingSpec.groovy b/grails-web-url-mappings/src/test/groovy/grails/web/mapping/RestfulResourceMappingSpec.groovy
index c6443630013..3d4d21ce7e8 100644
--- a/grails-web-url-mappings/src/test/groovy/grails/web/mapping/RestfulResourceMappingSpec.groovy
+++ b/grails-web-url-mappings/src/test/groovy/grails/web/mapping/RestfulResourceMappingSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.web.mapping
import grails.core.DefaultGrailsApplication
diff --git a/grails-web-url-mappings/src/test/groovy/grails/web/mapping/UrlMappingSizeConstraintSpec.groovy b/grails-web-url-mappings/src/test/groovy/grails/web/mapping/UrlMappingSizeConstraintSpec.groovy
index 7946a89135f..56edf95d376 100644
--- a/grails-web-url-mappings/src/test/groovy/grails/web/mapping/UrlMappingSizeConstraintSpec.groovy
+++ b/grails-web-url-mappings/src/test/groovy/grails/web/mapping/UrlMappingSizeConstraintSpec.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package grails.web.mapping
/**
* @author graemerocher
diff --git a/grails-web-url-mappings/src/test/groovy/grails/web/mapping/UrlMappingsWithOptionalExtensionSpec.groovy b/grails-web-url-mappings/src/test/groovy/grails/web/mapping/UrlMappingsWithOptionalExtensionSpec.groovy
index 74e8f955012..daaff89f527 100644
--- a/grails-web-url-mappings/src/test/groovy/grails/web/mapping/UrlMappingsWithOptionalExtensionSpec.groovy
+++ b/grails-web-url-mappings/src/test/groovy/grails/web/mapping/UrlMappingsWithOptionalExtensionSpec.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package grails.web.mapping
/**
*/
diff --git a/grails-web-url-mappings/src/test/groovy/grails/web/mapping/VersionedResourceMappingSpec.groovy b/grails-web-url-mappings/src/test/groovy/grails/web/mapping/VersionedResourceMappingSpec.groovy
index 942c991a8c6..de6f72d2c65 100644
--- a/grails-web-url-mappings/src/test/groovy/grails/web/mapping/VersionedResourceMappingSpec.groovy
+++ b/grails-web-url-mappings/src/test/groovy/grails/web/mapping/VersionedResourceMappingSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.web.mapping
import org.springframework.http.HttpMethod
diff --git a/grails-web-url-mappings/src/test/groovy/grails/web/mapping/cors/GrailsCorsConfigurationSpec.groovy b/grails-web-url-mappings/src/test/groovy/grails/web/mapping/cors/GrailsCorsConfigurationSpec.groovy
index 2ee9c3b29f9..ce27d25ff8c 100644
--- a/grails-web-url-mappings/src/test/groovy/grails/web/mapping/cors/GrailsCorsConfigurationSpec.groovy
+++ b/grails-web-url-mappings/src/test/groovy/grails/web/mapping/cors/GrailsCorsConfigurationSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.web.mapping.cors
import grails.util.TypeConvertingMap
diff --git a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/CachingLinkGeneratorSpec.groovy b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/CachingLinkGeneratorSpec.groovy
index 72029671e70..0299c753beb 100644
--- a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/CachingLinkGeneratorSpec.groovy
+++ b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/CachingLinkGeneratorSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mapping
import grails.util.GrailsWebMockUtil
diff --git a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/DefaultUrlCreatorTests.groovy b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/DefaultUrlCreatorTests.groovy
index 661d6128c00..3482ce5dafd 100644
--- a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/DefaultUrlCreatorTests.groovy
+++ b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/DefaultUrlCreatorTests.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mapping
import grails.util.GrailsWebMockUtil
diff --git a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/DefaultUrlMappingEvaluatorSpec.groovy b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/DefaultUrlMappingEvaluatorSpec.groovy
index 60bbf601e44..da345e07635 100644
--- a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/DefaultUrlMappingEvaluatorSpec.groovy
+++ b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/DefaultUrlMappingEvaluatorSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mapping
import grails.web.mapping.UrlMapping
diff --git a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/LinkGeneratorSpec.groovy b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/LinkGeneratorSpec.groovy
index 77ce45e3d78..d9f263563be 100644
--- a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/LinkGeneratorSpec.groovy
+++ b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/LinkGeneratorSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mapping
import grails.core.DefaultGrailsApplication
diff --git a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/LinkGeneratorWithFormatSpec.groovy b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/LinkGeneratorWithFormatSpec.groovy
index d770b47d947..0ba3a14a8ad 100644
--- a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/LinkGeneratorWithFormatSpec.groovy
+++ b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/LinkGeneratorWithFormatSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mapping
import grails.core.DefaultGrailsApplication
diff --git a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/LinkGeneratorWithUrlMappingsSpec.groovy b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/LinkGeneratorWithUrlMappingsSpec.groovy
index 550726d6b30..c98604c54ba 100644
--- a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/LinkGeneratorWithUrlMappingsSpec.groovy
+++ b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/LinkGeneratorWithUrlMappingsSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mapping
diff --git a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/NestedMappingWithinGroupSpec.groovy b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/NestedMappingWithinGroupSpec.groovy
index 839c9ec16e9..3a08a2a19cc 100644
--- a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/NestedMappingWithinGroupSpec.groovy
+++ b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/NestedMappingWithinGroupSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mapping
import grails.web.mapping.AbstractUrlMappingsSpec
diff --git a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/OverlappingParametersReverseMappingSpec.groovy b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/OverlappingParametersReverseMappingSpec.groovy
index 93a385fc32a..d0f2ca96ba4 100644
--- a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/OverlappingParametersReverseMappingSpec.groovy
+++ b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/OverlappingParametersReverseMappingSpec.groovy
@@ -1,20 +1,7 @@
-package org.grails.web.mapping
-
-import grails.core.DefaultGrailsApplication
-import grails.core.GrailsApplication
-import grails.web.CamelCaseUrlConverter
-import org.grails.support.MockApplicationContext
-import org.grails.web.mapping.DefaultLinkGenerator
-import org.grails.web.mapping.DefaultUrlMappingEvaluator
-import org.grails.web.mapping.DefaultUrlMappingsHolder
-import org.springframework.mock.web.MockServletContext
-import spock.lang.Issue
-import spock.lang.Specification
-
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
- * Licensed under the Apache License, Version 2.0 (the "License"); resource: 'book', id: 1
+ * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
@@ -26,6 +13,18 @@ import spock.lang.Specification
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+package org.grails.web.mapping
+
+import grails.core.DefaultGrailsApplication
+import grails.core.GrailsApplication
+import grails.web.CamelCaseUrlConverter
+import org.grails.support.MockApplicationContext
+import org.grails.web.mapping.DefaultLinkGenerator
+import org.grails.web.mapping.DefaultUrlMappingEvaluator
+import org.grails.web.mapping.DefaultUrlMappingsHolder
+import org.springframework.mock.web.MockServletContext
+import spock.lang.Issue
+import spock.lang.Specification
/**
* @author graemerocher
diff --git a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/RegexUrlMappingTests.groovy b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/RegexUrlMappingTests.groovy
index e9c03efe199..b96cc783198 100644
--- a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/RegexUrlMappingTests.groovy
+++ b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/RegexUrlMappingTests.groovy
@@ -1,17 +1,5 @@
-package org.grails.web.mapping
-
-import grails.core.DefaultGrailsApplication
-import grails.gorm.validation.ConstrainedProperty
-import grails.gorm.validation.DefaultConstrainedProperty
-import grails.web.mapping.UrlMapping
-import org.grails.datastore.gorm.validation.constraints.registry.DefaultConstraintRegistry
-import org.junit.Test
-import org.springframework.mock.web.MockServletContext
-
-import static org.junit.Assert.*
-
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -25,6 +13,17 @@ import static org.junit.Assert.*
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+package org.grails.web.mapping
+
+import grails.core.DefaultGrailsApplication
+import grails.gorm.validation.ConstrainedProperty
+import grails.gorm.validation.DefaultConstrainedProperty
+import grails.web.mapping.UrlMapping
+import org.grails.datastore.gorm.validation.constraints.registry.DefaultConstraintRegistry
+import org.junit.Test
+import org.springframework.mock.web.MockServletContext
+
+import static org.junit.Assert.*
/**
* @author graemerocher
diff --git a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/ResourcesWithSingleSlashSpec.groovy b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/ResourcesWithSingleSlashSpec.groovy
index fc286f68c2d..c6d6cb587e4 100644
--- a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/ResourcesWithSingleSlashSpec.groovy
+++ b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/ResourcesWithSingleSlashSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mapping
import grails.web.mapping.AbstractUrlMappingsSpec
diff --git a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/RestfulUrlMappingSpec.groovy b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/RestfulUrlMappingSpec.groovy
index 80bec8e88c7..dca4eb8afd9 100644
--- a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/RestfulUrlMappingSpec.groovy
+++ b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/RestfulUrlMappingSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mapping
import grails.core.DefaultGrailsApplication
diff --git a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/StaticAndWildcardMappingSpec.groovy b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/StaticAndWildcardMappingSpec.groovy
index 25e87522fde..269873a5064 100644
--- a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/StaticAndWildcardMappingSpec.groovy
+++ b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/StaticAndWildcardMappingSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mapping
import grails.web.mapping.AbstractUrlMappingsSpec
diff --git a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/UrlMappingDataTests.java b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/UrlMappingDataTests.java
index 63fce986d36..0d082c61f7c 100644
--- a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/UrlMappingDataTests.java
+++ b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/UrlMappingDataTests.java
@@ -1,4 +1,5 @@
-/* Copyright 2004-2005 Graeme Rocher
+/*
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/UrlMappingUtilsSpec.groovy b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/UrlMappingUtilsSpec.groovy
index 9dfb2acbd49..3b7c43d7b89 100644
--- a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/UrlMappingUtilsSpec.groovy
+++ b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/UrlMappingUtilsSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mapping
import grails.web.mapping.LinkGenerator
diff --git a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/UrlMappingsBindingSpec.groovy b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/UrlMappingsBindingSpec.groovy
index a4343126d99..eff97ee29b7 100644
--- a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/UrlMappingsBindingSpec.groovy
+++ b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/UrlMappingsBindingSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mapping
import org.grails.web.mapping.DefaultUrlMappingEvaluator
diff --git a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/UrlMappingsHolderComparatorSpec.groovy b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/UrlMappingsHolderComparatorSpec.groovy
index a0169c33f53..fe2c73be945 100644
--- a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/UrlMappingsHolderComparatorSpec.groovy
+++ b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/UrlMappingsHolderComparatorSpec.groovy
@@ -1,13 +1,5 @@
-package org.grails.web.mapping
-
-import grails.core.DefaultGrailsApplication
-import grails.core.GrailsApplication
-import org.grails.support.MockApplicationContext
-import spock.lang.Issue
-import spock.lang.Specification
-
/*
- * Copyright 2014 original authors
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -21,6 +13,13 @@ import spock.lang.Specification
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+package org.grails.web.mapping
+
+import grails.core.DefaultGrailsApplication
+import grails.core.GrailsApplication
+import org.grails.support.MockApplicationContext
+import spock.lang.Issue
+import spock.lang.Specification
/**
* @author graemerocher
diff --git a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/UrlMappingsHolderFactoryBeanSpec.groovy b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/UrlMappingsHolderFactoryBeanSpec.groovy
index 54363498bae..6621a830614 100644
--- a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/UrlMappingsHolderFactoryBeanSpec.groovy
+++ b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/UrlMappingsHolderFactoryBeanSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mapping
import grails.core.DefaultGrailsApplication
diff --git a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/UrlMappingsWithHttpMethodNotInNamedParametersSpec.groovy b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/UrlMappingsWithHttpMethodNotInNamedParametersSpec.groovy
index c57dd7765fe..b1d41b5a3aa 100644
--- a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/UrlMappingsWithHttpMethodNotInNamedParametersSpec.groovy
+++ b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/UrlMappingsWithHttpMethodNotInNamedParametersSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mapping
import grails.core.DefaultGrailsApplication
diff --git a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/UrlMappingsWithHttpMethodSpec.groovy b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/UrlMappingsWithHttpMethodSpec.groovy
index 3e60d95bcdc..1b66abf0bd0 100644
--- a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/UrlMappingsWithHttpMethodSpec.groovy
+++ b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/UrlMappingsWithHttpMethodSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mapping
import grails.build.logging.GrailsConsole
diff --git a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/mvc/EncodePathFromURISpec.groovy b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/mvc/EncodePathFromURISpec.groovy
index e4cff24bee2..59e521044d5 100644
--- a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/mvc/EncodePathFromURISpec.groovy
+++ b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/mvc/EncodePathFromURISpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mapping.mvc
import grails.artefact.Artefact
diff --git a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/mvc/UrlMappingsHandlerMappingSpec.groovy b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/mvc/UrlMappingsHandlerMappingSpec.groovy
index 4f368953e3d..18d9501f269 100644
--- a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/mvc/UrlMappingsHandlerMappingSpec.groovy
+++ b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/mvc/UrlMappingsHandlerMappingSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mapping.mvc
import grails.artefact.Artefact
diff --git a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/reporting/AnsiConsoleUrlMappingsRendererSpec.groovy b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/reporting/AnsiConsoleUrlMappingsRendererSpec.groovy
index 03c155fab32..3a88eee7d13 100644
--- a/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/reporting/AnsiConsoleUrlMappingsRendererSpec.groovy
+++ b/grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/reporting/AnsiConsoleUrlMappingsRendererSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.mapping.reporting
import grails.core.DefaultGrailsApplication
diff --git a/grails-web/src/main/groovy/grails/spring/WebBeanBuilder.java b/grails-web/src/main/groovy/grails/spring/WebBeanBuilder.java
index 80b33e3f197..133229750df 100644
--- a/grails-web/src/main/groovy/grails/spring/WebBeanBuilder.java
+++ b/grails-web/src/main/groovy/grails/spring/WebBeanBuilder.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web/src/main/groovy/grails/web/servlet/bootstrap/GrailsBootstrapClass.java b/grails-web/src/main/groovy/grails/web/servlet/bootstrap/GrailsBootstrapClass.java
index a09aab8c571..0abae953d47 100644
--- a/grails-web/src/main/groovy/grails/web/servlet/bootstrap/GrailsBootstrapClass.java
+++ b/grails-web/src/main/groovy/grails/web/servlet/bootstrap/GrailsBootstrapClass.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web/src/main/groovy/grails/web/servlet/context/GrailsWebApplicationContext.java b/grails-web/src/main/groovy/grails/web/servlet/context/GrailsWebApplicationContext.java
index ffdb5938322..1abcfcdfbff 100644
--- a/grails-web/src/main/groovy/grails/web/servlet/context/GrailsWebApplicationContext.java
+++ b/grails-web/src/main/groovy/grails/web/servlet/context/GrailsWebApplicationContext.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web/src/main/groovy/grails/web/servlet/context/support/GrailsEnvironment.java b/grails-web/src/main/groovy/grails/web/servlet/context/support/GrailsEnvironment.java
index 1932a2a8890..42f1fab7f9e 100644
--- a/grails-web/src/main/groovy/grails/web/servlet/context/support/GrailsEnvironment.java
+++ b/grails-web/src/main/groovy/grails/web/servlet/context/support/GrailsEnvironment.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 SpringSource
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web/src/main/groovy/grails/web/servlet/plugins/GrailsWebPluginManager.groovy b/grails-web/src/main/groovy/grails/web/servlet/plugins/GrailsWebPluginManager.groovy
index 3d9d8440314..1ea94eaa6bb 100644
--- a/grails-web/src/main/groovy/grails/web/servlet/plugins/GrailsWebPluginManager.groovy
+++ b/grails-web/src/main/groovy/grails/web/servlet/plugins/GrailsWebPluginManager.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.web.servlet.plugins
import groovy.transform.CompileStatic
diff --git a/grails-web/src/main/groovy/org/grails/web/servlet/HttpServletRequestExtension.groovy b/grails-web/src/main/groovy/org/grails/web/servlet/HttpServletRequestExtension.groovy
index a743437f589..4f43f9c204e 100644
--- a/grails-web/src/main/groovy/org/grails/web/servlet/HttpServletRequestExtension.groovy
+++ b/grails-web/src/main/groovy/org/grails/web/servlet/HttpServletRequestExtension.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web/src/main/groovy/org/grails/web/servlet/HttpServletResponseExtension.groovy b/grails-web/src/main/groovy/org/grails/web/servlet/HttpServletResponseExtension.groovy
index da936909e4e..52981eb32f1 100644
--- a/grails-web/src/main/groovy/org/grails/web/servlet/HttpServletResponseExtension.groovy
+++ b/grails-web/src/main/groovy/org/grails/web/servlet/HttpServletResponseExtension.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web/src/main/groovy/org/grails/web/servlet/HttpSessionExtension.groovy b/grails-web/src/main/groovy/org/grails/web/servlet/HttpSessionExtension.groovy
index 973458d6ebb..9bdbdd4ec4e 100644
--- a/grails-web/src/main/groovy/org/grails/web/servlet/HttpSessionExtension.groovy
+++ b/grails-web/src/main/groovy/org/grails/web/servlet/HttpSessionExtension.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web/src/main/groovy/org/grails/web/servlet/ServletContextExtension.groovy b/grails-web/src/main/groovy/org/grails/web/servlet/ServletContextExtension.groovy
index baf327fca7c..529b5983d50 100644
--- a/grails-web/src/main/groovy/org/grails/web/servlet/ServletContextExtension.groovy
+++ b/grails-web/src/main/groovy/org/grails/web/servlet/ServletContextExtension.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web/src/main/groovy/org/grails/web/servlet/boostrap/BootstrapArtefactHandler.java b/grails-web/src/main/groovy/org/grails/web/servlet/boostrap/BootstrapArtefactHandler.java
index f11a416849f..9956f595074 100644
--- a/grails-web/src/main/groovy/org/grails/web/servlet/boostrap/BootstrapArtefactHandler.java
+++ b/grails-web/src/main/groovy/org/grails/web/servlet/boostrap/BootstrapArtefactHandler.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web/src/main/groovy/org/grails/web/servlet/boostrap/DefaultGrailsBootstrapClass.java b/grails-web/src/main/groovy/org/grails/web/servlet/boostrap/DefaultGrailsBootstrapClass.java
index 2691fb521d2..e270db8df95 100644
--- a/grails-web/src/main/groovy/org/grails/web/servlet/boostrap/DefaultGrailsBootstrapClass.java
+++ b/grails-web/src/main/groovy/org/grails/web/servlet/boostrap/DefaultGrailsBootstrapClass.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web/src/main/groovy/org/grails/web/servlet/context/GrailsConfigUtils.java b/grails-web/src/main/groovy/org/grails/web/servlet/context/GrailsConfigUtils.java
index d5701b25fd1..af6e6bc2d42 100644
--- a/grails-web/src/main/groovy/org/grails/web/servlet/context/GrailsConfigUtils.java
+++ b/grails-web/src/main/groovy/org/grails/web/servlet/context/GrailsConfigUtils.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 the original author or authors.
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web/src/main/groovy/org/grails/web/servlet/context/support/WebRuntimeSpringConfiguration.java b/grails-web/src/main/groovy/org/grails/web/servlet/context/support/WebRuntimeSpringConfiguration.java
index 02630a8931b..8425d738056 100644
--- a/grails-web/src/main/groovy/org/grails/web/servlet/context/support/WebRuntimeSpringConfiguration.java
+++ b/grails-web/src/main/groovy/org/grails/web/servlet/context/support/WebRuntimeSpringConfiguration.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2005 Graeme Rocher
+ * Copyright 2024 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/grails-web/src/test/groovy/grails/web/context/ServletContextHolderSpec.groovy b/grails-web/src/test/groovy/grails/web/context/ServletContextHolderSpec.groovy
index 1c798c4cccf..2ec906ffca0 100644
--- a/grails-web/src/test/groovy/grails/web/context/ServletContextHolderSpec.groovy
+++ b/grails-web/src/test/groovy/grails/web/context/ServletContextHolderSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package grails.web.context
import grails.util.GrailsWebMockUtil
diff --git a/grails-web/src/test/groovy/org/grails/web/servlet/ServletRequestXhrApiSpec.groovy b/grails-web/src/test/groovy/org/grails/web/servlet/ServletRequestXhrApiSpec.groovy
index 846841a3eb0..b10a0b1c520 100644
--- a/grails-web/src/test/groovy/org/grails/web/servlet/ServletRequestXhrApiSpec.groovy
+++ b/grails-web/src/test/groovy/org/grails/web/servlet/ServletRequestXhrApiSpec.groovy
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2024 original authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.grails.web.servlet
import org.springframework.mock.web.MockHttpServletRequest