diff --git a/snapshot/guide/GORM.html b/snapshot/guide/GORM.html index e0c15c94346..ab4a3c3f451 100644 --- a/snapshot/guide/GORM.html +++ b/snapshot/guide/GORM.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 7 Object Relational Mapping (GORM) 4.0.13 + 7 Object Relational Mapping (GORM) 5.0.1 @@ -44,7 +44,7 @@
2Getting Started
-
3Upgrading from Grails 3.3.x +
3Upgrading from the previous versions
4Configuration @@ -135,7 +135,7 @@

7 Object Relational Mapping (GORM)

-

Version: 4.0.13

+

Version: 5.0.1

@@ -159,7 +159,7 @@

Table of Contents

7 Object Relational Mapping (GORM)

-
@@ -189,7 +189,7 @@

7 Object Relational Mapping (GORM)

7.1 Quick Start Guide

-
@@ -266,7 +266,7 @@

7.1 Quick Start Guide

7.1.1 Basic CRUD

-
@@ -357,7 +357,7 @@

Delete

7.2 Further Reading on GORM

-
diff --git a/snapshot/guide/REST.html b/snapshot/guide/REST.html index 04922563899..080d58ba3df 100644 --- a/snapshot/guide/REST.html +++ b/snapshot/guide/REST.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 10 REST 4.0.13 + 10 REST 5.0.1 @@ -44,7 +44,7 @@ -
3Upgrading from Grails 3.3.x +
4Configuration @@ -135,7 +135,7 @@

10 REST

-

Version: 4.0.13

+

Version: 5.0.1

@@ -234,7 +234,7 @@

Table of Contents

10 REST

-
@@ -254,7 +254,7 @@

10 REST

10.1 Domain classes as REST resources

-
@@ -406,7 +406,7 @@

10.1 Domain classes as REST resources

10.2 Mapping to REST resources

-
@@ -441,7 +441,7 @@

10.2 Mapping to REST resources

10.3 Linking to REST resources from GSP pages

-
@@ -477,7 +477,7 @@

10.3 Linking to REST resources from GSP pages

10.4 Versioning REST resources

-
@@ -606,7 +606,7 @@

Versioning using Hypermedia / M

10.5 Implementing REST controllers

-
@@ -620,7 +620,7 @@

10.5 Implementing REST controllers

10.5.1 Extending the RestfulController super class

-
@@ -761,7 +761,7 @@

Customizing D

-

By default the getObjectToBind() method returns the request object. When the request object is used as the binding source, if the request has a body then the body will be parsed and its contents will be used to do the data binding, otherwise the request parameters will be used to do the data binding. Subclasses of RestfulController may override the getObjectToBind() method and return anything that is a valid binding source, including a Map or a DataBindingSource. For most use cases binding the request is appropriate but the getObjectToBind() method allows for changing that behavior where desired.

+

By default the getObjectToBind() method returns the request object. When the request object is used as the binding source, if the request has a body then the body will be parsed and its contents will be used to do the data binding, otherwise the request parameters will be used to do the data binding. Subclasses of RestfulController may override the getObjectToBind() method and return anything that is a valid binding source, including a Map or a DataBindingSource. For most use cases binding the request is appropriate but the getObjectToBind() method allows for changing that behavior where desired.

@@ -812,7 +812,7 @@

Us

10.5.2 Implementing REST Controllers Step by Step

-
@@ -1110,7 +1110,7 @@

Implementing the 'delete' action

10.5.3 Generating a REST controller using scaffolding

-
@@ -1129,7 +1129,7 @@

10.5.3 Generating a REST controller using sca

10.6 Calling REST Services with HttpClient

-
@@ -1164,7 +1164,7 @@

Low-level API

    List<Album> searchWithApi(String searchTerm) {
         String baseUrl = "https://itunes.apple.com/"
 
-        HttpClient client = HttpClient.create(baseUrl.toURL()).toBlocking() (1)
+        BlockingHttpClient client = HttpClient.create(baseUrl.toURL()).toBlocking() (1)
 
         HttpRequest request = HttpRequest.GET("/search?limit=25&media=music&entity=album&term=${searchTerm}")
         HttpResponse<String> resp = client.exchange(request, String)
@@ -1243,7 +1243,7 @@ 

Declarative API

10.7 The REST Profile

-
@@ -1296,7 +1296,7 @@

10.7 The REST Profile

10.8 The AngularJS Profile

-
@@ -1471,7 +1471,7 @@

Asset Pipeline

10.9 The Angular Profile

-
@@ -1624,7 +1624,7 @@

CORS

10.10 JSON Views

-
@@ -1656,7 +1656,7 @@

10.10 JSON Views

10.10.1 Getting Started

-
@@ -1714,7 +1714,7 @@

10.10.1 Getting Started

10.10.2 Creating JSON Views

-
@@ -1774,7 +1774,7 @@

10.10.2 Creating JSON Views

10.10.3 JSON View Templates

-
@@ -1831,7 +1831,7 @@

10.10.3 JSON View Templates

10.10.4 Rendering Domain Classes with JSON Views

-
@@ -1893,7 +1893,7 @@

10.10.4 Rendering Domain Classes with JSON Vi

10.10.5 JSON Views by Convention

-
@@ -1940,7 +1940,7 @@

10.10.5 JSON Views by Convention

10.11 Customizing Response Rendering

-
@@ -1954,7 +1954,7 @@

10.11 Customizing Response Rendering

10.11.1 Customizing the Default Renderers

-
@@ -2033,7 +2033,7 @@

Customizing the Converters

10.11.2 Implementing a Custom Renderer

-
@@ -2118,7 +2118,7 @@

Container Renderers

10.11.3 Using GSP to Customize Rendering

-
@@ -2148,7 +2148,7 @@

10.11.3 Using GSP to Customize Rendering

10.12 Hypermedia as the Engine of Application State

-
@@ -2165,7 +2165,7 @@

10.12 Hypermedia as the Engine of Application State

10.12.1 HAL Support

-
@@ -2561,7 +2561,7 @@

10.12.2 Atom Support

-
@@ -2611,7 +2611,7 @@

10.12.2 Atom Support

10.12.3 Vnd.Error Support

-
@@ -2683,7 +2683,7 @@

10.12.3 Vnd.Error Support

10.13 Customizing Binding of Resources

-
@@ -2766,7 +2766,7 @@

10.13 Customizing Binding of Resources

-

The data binding depends on an instance of the DataBindingSource interface created by an instance of the DataBindingSourceCreator interface. The specific implementation of DataBindingSourceCreator will be selected based on the contentType of the request. Several implementations are provided to handle common content types. The default implementations will be fine for most use cases. The following table lists the content types which are supported by the core framework and which DataBindingSourceCreator implementations are used for each. All of the implementation classes are in the org.grails.databinding.bindingsource package.

+

The data binding depends on an instance of the DataBindingSource interface created by an instance of the DataBindingSourceCreator interface. The specific implementation of DataBindingSourceCreator will be selected based on the contentType of the request. Several implementations are provided to handle common content types. The default implementations will be fine for most use cases. The following table lists the content types which are supported by the core framework and which DataBindingSourceCreator implementations are used for each. All of the implementation classes are in the org.grails.databinding.bindingsource package.

@@ -2849,7 +2849,7 @@

10.13 Customizing Binding of Resources

-

AbstractRequestBodyDataBindingSourceCreator +

AbstractRequestBodyDataBindingSourceCreator is an abstract class designed to be extended to simplify writing custom DataBindingSourceCreator classes. Classes which extend AbstractRequestbodyDatabindingSourceCreator need to implement a method named createBindingSource which accepts an InputStream as an argument and returns a DataBindingSource as well as implementing the getMimeTypes @@ -2933,7 +2933,7 @@

10.13 Customizing Binding of Resources

10.14 RSS and Atom

-
diff --git a/snapshot/guide/async.html b/snapshot/guide/async.html index 57c92bf5f3d..a276aa1f556 100644 --- a/snapshot/guide/async.html +++ b/snapshot/guide/async.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 11 Asynchronous Programming 4.0.13 + 11 Asynchronous Programming 5.0.1 @@ -44,7 +44,7 @@ -
3Upgrading from Grails 3.3.x +
4Configuration @@ -135,7 +135,7 @@

11 Asynchronous Programming

-

Version: 4.0.13

+

Version: 5.0.1

@@ -145,7 +145,7 @@

11 Asynchronous Programming

11 Asynchronous Programming

-
@@ -171,10 +171,10 @@

11 Asynchronous Programming

-

By building ontop of these various libraries the The Async features of Grails aim to simplify concurrent programming within the framework and include the concept of Promises and a unified event model.

+

By building on top of these various libraries the Async features of Grails aim to simplify concurrent programming within the framework, include the concept of Promises, and a unified event model.

-

In general since the Reactive programming model is an evolving space Grails tries to provide generic support for integrating a range of asynchronous libraries and doesn’t recommend any single library as they all have various advantages and disadvantages.

+

In general, since the Reactive programming model is an evolving space, Grails tries to provide generic support for integrating a range of asynchronous libraries and doesn’t recommend any single library as they all have various advantages and disadvantages.

For more information on Asynchronous programming with Grails see the user guide for the Grails Asynchronous Framework.

diff --git a/snapshot/guide/commandLine.html b/snapshot/guide/commandLine.html index 7cd30ea00f1..82da9496a13 100644 --- a/snapshot/guide/commandLine.html +++ b/snapshot/guide/commandLine.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 5 The Command Line 4.0.13 + 5 The Command Line 5.0.1 @@ -44,7 +44,7 @@ -
3Upgrading from Grails 3.3.x +
4Configuration @@ -135,7 +135,7 @@

5 The Command Line

-

Version: 4.0.13

+

Version: 5.0.1

@@ -174,7 +174,7 @@

Table of Contents

5 The Command Line

-
@@ -322,7 +322,7 @@

non-interactive mode

5.1 Interactive Mode

-
@@ -374,7 +374,7 @@

5.1 Interactive Mode

5.2 Creating Custom Scripts

-
@@ -436,7 +436,7 @@

Template Generation

Plugins and applications that need to define template generation tasks can do so using scripts. A example of this is the Scaffolding plugin which defines the generate-all and generate-controllers commands.

-

Every Grails script implements the TemplateRenderer interface which makes it trivial to render templates to the users project workspace.

+

Every Grails script implements the TemplateRenderer interface which makes it trivial to render templates to the users project workspace.

The following is an example of the create-script command written in Groovy:

@@ -483,7 +483,7 @@

Template Generation

The "model"

-

Executing the model method with a Class/String/File/Resource will return an instance of Model. The model contains several properties that can help you generate code.

+

Executing the model method with a Class/String/File/Resource will return an instance of Model. The model contains several properties that can help you generate code.

Example:

@@ -507,7 +507,7 @@

The "model"

Working with files

-

All scripts have access to methods on the FileSystemInteraction class. It contains helpful methods to copy, delete, and create files.

+

All scripts have access to methods on the FileSystemInteraction class. It contains helpful methods to copy, delete, and create files.

@@ -515,7 +515,7 @@

Working with files

5.3 Creating Custom Commands

-
@@ -604,7 +604,7 @@

5.3 Creating Custom Commands

5.4 Re-using Grails scripts

-
@@ -656,14 +656,14 @@

Invoking Ant

5.5 Building with Gradle

-
-

Grails 3.1 uses the Gradle Build System for build related tasks such as compilation, runnings tests and producing binary distributions of your project. It is recommended to use Gradle 2.2 or above with Grails 3.1.

+

Since Grails 3.1 the Gradle Build System is used for build related tasks such as compilation, runnings tests and producing binary distributions of your project. It is recommended to use Gradle 2.2 or above with Grails 3.1 (and higher).

The build is defined by the build.gradle file which specifies the version of your project, the dependencies of the project and the repositories where to find those dependencies (amongst other things).

@@ -678,7 +678,7 @@

5.5 Building with Gradle

-

You can invoke Gradle directly using the gradle command and use your own local version of Gradle, however you will need Gradle 2.2 or above to work with Grails 3.0:

+

You can invoke Gradle directly using the gradle command and use your own local version of Gradle, however you will need Gradle 2.2 or above to work with Grails 3.0 (and higher):

@@ -690,7 +690,7 @@

5.5 Building with Gradle

5.5.1 Defining Dependencies with Gradle

-
@@ -719,7 +719,8 @@

5.5.1 Defining Dependencies with Gradle

runtime 'org.grails.plugins:asset-pipeline' runtime 'org.grails.plugins:scaffolding' - testCompile 'org.grails:grails-plugin-testing' + testCompile "org.grails:grails-gorm-testing-support" + testCompile "org.grails:grails-web-testing-support" testCompile 'org.grails.plugins:geb' // Note: It is recommended to update to a more robust driver (Chrome, Firefox etc.) @@ -747,7 +748,7 @@

5.5.1 Defining Dependencies with Gradle

5.5.2 Working with Gradle Tasks

-
@@ -786,6 +787,10 @@

5.5.2 Working with Gradle Tasks

+ + + + @@ -838,7 +843,7 @@

5.5.2 Working with Gradle Tasks

5.5.3 Grails plugins for Gradle

-
diff --git a/snapshot/guide/conf.html b/snapshot/guide/conf.html index 373298a80f6..986444c186a 100644 --- a/snapshot/guide/conf.html +++ b/snapshot/guide/conf.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 4 Configuration 4.0.13 + 4 Configuration 5.0.1 @@ -44,7 +44,7 @@
2Getting Started
-
3Upgrading from Grails 3.3.x +
4Configuration @@ -122,7 +122,7 @@
- + (Quick Reference) @@ -135,7 +135,7 @@

4 Configuration

-

Version: 4.0.13

+

Version: 5.0.1

@@ -216,7 +216,7 @@

Table of Contents

4 Configuration

-
@@ -230,7 +230,7 @@

4 Configuration

4.1 Basic Configuration

-
@@ -319,7 +319,7 @@

4.1 Basic Configuration

Accessing Configuration with GrailsApplication

-

If you want to read runtime configuration settings, i.e. those defined in application.yml, use the grailsApplication object, which is available as a variable in controllers and tag libraries:

+

If you want to read runtime configuration settings, i.e. those defined in application.yml, use the grailsApplication object, which is available as a variable in controllers and tag libraries:

@@ -333,7 +333,7 @@

Accessing Configuration

-

The config property of the grailsApplication object is an instance of the Config interface and provides a number of useful methods to read the configuration of the application.

+

The config property of the grailsApplication object is an instance of the Config interface and provides a number of useful methods to read the configuration of the application.

In particular, the getProperty method (seen above) is useful for efficiently retrieving configuration properties, while specifying the property type (the default type is String) and/or providing a default fallback value.

@@ -359,7 +359,7 @@

Accessing Configuration

-

Notice that the Config instance is a merged configuration based on Spring’s PropertySource concept and reads configuration from the environment, system properties and the local application configuration merging them into a single object.

+

Notice that the Config instance is a merged configuration based on Spring’s PropertySource concept and reads configuration from the environment, system properties and the local application configuration merging them into a single object.

GrailsApplication can be easily injected into services and other Grails artifacts:

@@ -382,7 +382,7 @@

Accessing Configuration

GrailsConfigurationAware Interface

-

Accessing configuration dynamically at runtime can have a small effect on application performance. An alternative approach is to implement the GrailsConfigurationAware interface, which provides a setConfiguration method that accepts the application configuration as a parameter when the class is initialized. You can then assign relevant configuration properties to instance properties on the class for later usage.

+

Accessing configuration dynamically at runtime can have a small effect on application performance. An alternative approach is to implement the GrailsConfigurationAware interface, which provides a setConfiguration method that accepts the application configuration as a parameter when the class is initialized. You can then assign relevant configuration properties to instance properties on the class for later usage.

The Config instance has the same properties and usage as the injected GrailsApplication config object. Here is the service class from the previous example, using GrailsConfigurationAware instead of injecting GrailsApplication:

@@ -410,7 +410,7 @@

GrailsConfigurationAware Interface<

Spring Value Annotation

-

You can use Spring’s Value annotation to inject configuration values:

+

You can use Spring’s Value annotation to inject configuration values:

@@ -447,7 +447,7 @@

Spring Value Annotation

4.1.1 Options for the YML format Config

-
@@ -496,7 +496,7 @@

Using system properties

External configuration

Grails will read application.(properties|yml) from the ./config or the current directory by default. -As Grails is a SpringBoot configuration options are available as well, for documentation please consult: https://docs.spring.io/spring-boot/docs/2.1.x/reference/html/boot-features-external-config.html#boot-features-external-config-application-property-files

+As Grails is a SpringBoot configuration options are available as well, for documentation please consult: https://docs.spring.io/spring-boot/docs/2.5.2/reference/html/boot-features-external-config.html#boot-features-external-config-application-property-files

@@ -504,7 +504,7 @@

External configuration

4.1.2 Built in options

-
@@ -536,7 +536,7 @@

Runtime settings

grails.mime.types - A map of supported mime types used for Content Negotiation.

  • -

    grails.serverURL - A string specifying the server URL portion of absolute links, including server name e.g. grails.serverURL="http://my.yourportal.com". See createLink. Also used by redirects.

    +

    grails.serverURL - A string specifying the server URL portion of absolute links, including server name e.g. grails.serverURL="http://my.yourportal.com". See createLink. Also used by redirects.

  • grails.views.gsp.sitemesh.preprocess - Determines whether SiteMesh preprocessing happens. Disabling this slows down page rendering, but if you need SiteMesh to parse the generated HTML from a GSP view then disabling it is the right option. Don’t worry if you don’t understand this advanced property: leave it set to true.

    @@ -552,36 +552,24 @@

    Runtime settings

    4.1.3 Logging

    -
    -

    Since Grails 3.0, logging is handled by the Logback logging framework and can be configured with the grails-app/conf/logback.groovy file.

    -
    -
    -
  • test-app

    check

    test-app --unit

    test

    - - - - -
    - - -If you prefer XML you can replace the logback.groovy file with a logback.xml file instead. -
    +

    Since Grails 3.0, logging is handled by the Logback logging framework and can be configured with the grails-app/conf/logback.xml file.

    -

    For more information on configuring logging refer to the Logback documentation on the subject.

    +

    For more information on configuring logging refer to the Logback documentation on the subject.

    4.1.3.1 Logger Names

    -
    @@ -699,7 +687,7 @@

    4.1.3.1 Logger Names

    4.1.3.2 Masking Request Parameters From Stacktrace Logs

    -
    @@ -738,7 +726,7 @@

    4.1.3.2 Masking Request Para

    4.1.3.3 External Configuration File

    -
    @@ -751,21 +739,21 @@

    4.1.3.3 External Configuration File

    grails-app/conf/application.yml
    logging:
    -    config: /Users/me/config/logback.groovy
    + config: /Users/me/config/logback.xml

    Alternatively, you can supply the configuration file location with a system property:

    -

    $ ./gradlew -Dlogging.config=/Users/me/config/logback.groovy bootRun

    +

    $ ./gradlew -Dlogging.config=/Users/me/config/logback.xml bootRun

    Or, you could use an environment variable:

    -
    $ export LOGGING_CONFIG=/Users/me/config/logback.groovy
    +
    $ export LOGGING_CONFIG=/Users/me/config/logback.xml
     $ ./gradlew bootRun
    @@ -774,7 +762,7 @@

    4.1.3.3 External Configuration File

    4.1.4 GORM

    -
    @@ -817,7 +805,7 @@

    4.1.4 GORM

    4.1.5 Configuring an HTTP proxy

    -
    @@ -857,7 +845,7 @@

    4.1.5 Configuring an HTTP proxy

    4.2 The Application Class

    -
    @@ -867,14 +855,14 @@

    4.2 The Application Class

    Every new Grails application features an Application class within the grails-app/init directory.

    -

    The Application class subclasses the GrailsAutoConfiguration class and features a static void main method, meaning it can be run as a regular application.

    +

    The Application class subclasses the GrailsAutoConfiguration class and features a static void main method, meaning it can be run as a regular application.

    4.2.1 Executing the Application Class

    -
    @@ -903,7 +891,7 @@

    4.2.1 Executing the Application Class

    4.2.2 Customizing the Application Class

    -
    @@ -933,7 +921,7 @@

    Customizing Scanning

    Registering Additional Beans

    -

    The Application class can also be used as a source for Spring bean definitions, simply define a method annotated with the Bean and the returned object will become a Spring bean. The name of the method is used as the bean name:

    +

    The Application class can also be used as a source for Spring bean definitions, simply define a method annotated with the Bean and the returned object will become a Spring bean. The name of the method is used as the bean name:

    @@ -953,14 +941,14 @@

    Registering Additional Beans

    4.2.3 The Application LifeCycle

    -
    -

    The Application class also implements the GrailsApplicationLifeCycle interface which all plugins implement.

    +

    The Application class also implements the GrailsApplicationLifeCycle interface which all plugins implement.

    This means that the Application class can be used to perform the same functions as a plugin. You can override the regular plugins hooks such as doWithSpring, doWithApplicationContext and so on by overriding the appropriate method:

    @@ -984,7 +972,7 @@

    4.2.3 The Application LifeCycle

    4.3 Environments

    -
    @@ -1087,7 +1075,7 @@

    Packaging and Running

    Programmatic Environment Detection

    -

    Within your code, such as in a Gant script or a bootstrap class you can detect the environment using the Environment class:

    +

    Within your code, such as in a Gant script or a bootstrap class you can detect the environment using the Environment class:

    @@ -1150,7 +1138,7 @@

    Generic Per Environment Execution4.4 The DataSource

    -
    @@ -1393,7 +1381,7 @@

    More on dbCreate

    4.4.1 DataSources and Environments

    -
    @@ -1429,7 +1417,7 @@

    4.4.1 DataSources and Environments

    4.4.2 Automatic Database Migration

    -
    @@ -1481,7 +1469,7 @@

    4.4.2 Automatic Database Migration

    4.4.3 Transaction-aware DataSource Proxy

    -
    @@ -1498,7 +1486,7 @@

    4.4.3 Transaction-aware DataSource Prox

    4.4.4 Database Console

    -
    @@ -1508,14 +1496,14 @@

    4.4.4 Database Console

    The H2 database console is a convenient feature of H2 that provides a web-based interface to any database that you have a JDBC driver for, and it’s very useful to view the database you’re developing against. It’s especially useful when running against an in-memory database.

    -

    You can access the console by navigating to http://localhost:8080/h2-console in a browser. See the Spring Boot H2 Console Documentation for more information on the options available.

    +

    You can access the console by navigating to http://localhost:8080/h2-console in a browser. See the Spring Boot H2 Console Documentation for more information on the options available.

    4.4.5 Multiple Datasources

    -
    @@ -1819,7 +1807,7 @@

    Transactions across multiple

    The BE1PC implementation was added in Grails 2.3.6. . Before this change additional datasources didn’t take part in transactions initiated in Grails. The transactions in additional datasources were basically in auto commit mode. In some cases this might be the wanted behavior. One reason might be performance: on the start of each new transaction, the BE1PC transaction manager creates a new transaction to each datasource. It’s possible to leave an additional datasource out of the BE1PC transaction manager by setting transactional = false in the respective configuration block of the additional dataSource. Datasources with readOnly = true will also be left out of the chained transaction manager (since 2.3.7).

    -

    By default, the BE1PC implementation will add all beans implementing the Spring PlatformTransactionManager interface to the chained BE1PC transaction manager. For example, a possible JMSTransactionManager bean in the Grails application context would be added to the Grails BE1PC transaction manager’s chain of transaction managers.

    +

    By default, the BE1PC implementation will add all beans implementing the Spring PlatformTransactionManager interface to the chained BE1PC transaction manager. For example, a possible JMSTransactionManager bean in the Grails application context would be added to the Grails BE1PC transaction manager’s chain of transaction managers.

    You can exclude transaction manager beans from the BE1PC implementation with this configuration option:

    @@ -1843,7 +1831,7 @@

    XA and Two-phase Commit

    When the Best Efforts 1PC pattern isn’t suitable for handling transactions across multiple transactional resources (not only datasources), there are several options available for adding XA/2PC support to Grails applications.

    -

    The Spring transactions documentation contains information about integrating the JTA/XA transaction manager of different application servers. In this case, you can configure a bean with the name transactionManager manually in resources.groovy or resources.xml file.

    +

    The Spring transactions documentation contains information about integrating the JTA/XA transaction manager of different application servers. In this case, you can configure a bean with the name transactionManager manually in resources.groovy or resources.xml file.

    @@ -1851,7 +1839,7 @@

    XA and Two-phase Commit

    4.5 Versioning

    -
    @@ -1860,7 +1848,7 @@

    4.5 Versioning

    Detecting Versions at Runtime

    -

    You can detect the application version using Grails' support for application metadata using the GrailsApplication class. For example within controllers there is an implicit grailsApplication variable that can be used:

    +

    You can detect the application version using Grails' support for application metadata using the GrailsApplication class. For example within controllers there is an implicit grailsApplication variable that can be used:

    @@ -1891,7 +1879,7 @@

    Detecting Versions at Runtime

    4.6 Dependency Resolution

    -
    @@ -1904,7 +1892,7 @@

    4.6 Dependency Resolution

    - + diff --git a/snapshot/guide/contributing.html b/snapshot/guide/contributing.html index 7f16a4feebe..cd5674d6586 100644 --- a/snapshot/guide/contributing.html +++ b/snapshot/guide/contributing.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 22 Contributing to Grails 4.0.13 + 22 Contributing to Grails 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -133,7 +133,7 @@

    22 Contributing to Grails

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -160,7 +160,7 @@

    Table of Contents

    22 Contributing to Grails

    -
    @@ -174,7 +174,7 @@

    22 Contributing to Grails

    22.1 Report Issues in Github's issue tracker

    -
    @@ -203,7 +203,7 @@

    Reviewing issues

    22.2 Build From Source and Run Tests

    -
    @@ -378,7 +378,7 @@

    Debugging Grails or a Grails

    22.3 Submit Patches to Grails Core

    -
    @@ -497,7 +497,7 @@

    Say what your pull request is for22.4 Submit Patches to Grails Documentation

    -
    diff --git a/snapshot/guide/deployment.html b/snapshot/guide/deployment.html index 8b8cb35a554..0e4a2086f42 100644 --- a/snapshot/guide/deployment.html +++ b/snapshot/guide/deployment.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 21 Deployment 4.0.13 + 21 Deployment 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    21 Deployment

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -159,7 +159,7 @@

    Table of Contents

    21 Deployment

    -
    @@ -173,7 +173,7 @@

    21 Deployment

    21.1 Standalone

    -
    @@ -250,7 +250,7 @@

    A TAR/ZIP distribution

    21.2 Container Deployment (e.g. Tomcat)

    -
    @@ -297,7 +297,7 @@

    Application servers

    21.3 Deployment Configuration Tasks

    -
    @@ -341,10 +341,13 @@

    Settin diff --git a/snapshot/guide/gettingStarted.html b/snapshot/guide/gettingStarted.html index e50b744c209..50a1febd656 100644 --- a/snapshot/guide/gettingStarted.html +++ b/snapshot/guide/gettingStarted.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 2 Getting Started 4.0.13 + 2 Getting Started 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -128,14 +128,14 @@ (Quick Reference) - +

    2 Getting Started

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -189,7 +189,7 @@

    Table of Contents

    2 Getting Started

    -
    @@ -201,20 +201,20 @@

    2 Getting Started

    2.1 Installation Requirements

    -
    -

    Before installing Grails 4.0.13 you will need as a minimum a Java Development Kit (JDK) installed version 1.8 or above. Download the appropriate JDK for your operating system, run the installer, and then set up an environment variable called JAVA_HOME pointing to the location of this installation.

    +

    Before installing Grails 5.0.1 you will need as a minimum a Java Development Kit (JDK) installed version 1.8. The most recent supported version of the JDK is 11. Download the appropriate JDK for your operating system, run the installer, and then set up an environment variable called JAVA_HOME pointing to the location of this installation.

    To automate the installation of Grails we recommend SDKMAN which greatly simplifies installing and managing multiple Grails versions.

    -

    On some platforms (for example OS X) the Java installation is automatically detected. However in many cases you will want to manually configure the location of Java. For example, if you’re using bash or another variant of the Bourne Shell:

    +

    On some platforms (for example macOS) the Java installation is automatically detected. However in many cases you will want to manually configure the location of Java. For example, if you’re using bash or another variant of the Bourne Shell:

    @@ -239,7 +239,7 @@

    2.1 Installation Requirements

    2.2 Downloading and Installing

    -
    @@ -271,7 +271,7 @@

    Install with SDKMAN

    -
    sdk install grails 4.0.13
    +
    sdk install grails 5.0.1
    @@ -307,12 +307,20 @@

    Unix/Linux

    -
    -

    ===Windows -** Copy the path to the bin directory inside the grails folder you have downloaded, for example, ---- -C:/path_to_grails/bin ----

    +
    +
    +

    Windows

    +
    +
      +
    • +

      Copy the path to the bin directory inside the grails folder you have downloaded, for example,

      +
    • +
    +
    +
    +
    +
    C:/path_to_grails/bin
    +
      @@ -321,11 +329,11 @@

      Unix/Linux

    -
    -
    -

    Start + R

    +
    +
    +
    Start + R
    +
    -
    • @@ -341,7 +349,7 @@

      Unix/Linux

    -
    Grails version: 4.0.13
    +
    Grails version: 5.0.1
    @@ -352,7 +360,7 @@

    Unix/Linux

    2.3 Creating an Application

    -
    @@ -387,7 +395,7 @@

    2.3 Creating an Application

    2.4 A Hello World Example

    -
    @@ -517,7 +525,7 @@

    2.4 A Hello World Example

    2.5 Using Interactive Mode

    -
    @@ -539,7 +547,7 @@

    2.5 Using Interactive Mode

    2.6 Getting Set Up in an IDE

    -
    @@ -548,7 +556,7 @@

    2.6 Getting Set Up in an IDE

    IntelliJ IDEA

    -

    IntelliJ IDEA is an excellent IDE for Grails 4.0 development. It comes in 2 editions, the free community edition and the paid-for ultimate edition.

    +

    IntelliJ IDEA is an excellent IDE for Grails 5.0 development. It comes in 2 editions, the free community edition and the paid-for ultimate edition.

    The community edition can be used for most things, although GSP syntax higlighting is only part of the ultimate edition

    @@ -566,7 +574,7 @@

    IntelliJ IDEA

    -

    To get started with Intellij IDEA and Grails 4.0 simply go to File / Open and point IDEA at your build.gradle file to import and configure the project.

    +

    To get started with Intellij IDEA and Grails 5.0 simply go to File / Open and point IDEA at your build.gradle file to import and configure the project.

    @@ -599,7 +607,7 @@

    TextMate, Sublime, VIM etc.

    2.7 Convention over Configuration

    -
    @@ -660,7 +668,7 @@

    2.7 Convention over Configuration

    2.8 Running and Debugging an Application

    -
    @@ -716,7 +724,7 @@

    2.8 Running and Debugging an Applicati

    2.9 Testing an Application

    -
    @@ -738,7 +746,7 @@

    2.9 Testing an Application

    2.10 Deploying an Application

    -
    @@ -775,6 +783,18 @@

    2.10 Deploying an Application

    ext['tomcat.version'] = '7.0.59'
    +
    + + + + + +
    + + +Grails 5 contains dependencies that require javax.el-api:3.0 (eg.: datastore-gorm:7.x, spring-boot:2.x) which is only supported starting from Tomcat 8.x+, based on the tomcat version table! +
    +

    Unlike most scripts which default to the development environment unless overridden, the war command runs in the production environment by default. You can override this like any script by specifying the environment name, for example:

    @@ -797,7 +817,7 @@

    2.10 Deploying an Application

    -
    -server -Xmx768M -XX:MaxPermSize=256m
    +
    -server -Xmx768M
    @@ -805,7 +825,7 @@

    2.10 Deploying an Application

    2.11 Supported Java EE Containers

    -
    @@ -862,7 +882,7 @@

    2.11 Supported Java EE Containers

    2.12 Creating Artefacts

    -
    @@ -911,7 +931,7 @@

    2.12 Creating Artefacts

    2.13 Generating an Application

    -
    @@ -931,7 +951,7 @@

    2.13 Generating an Application

    - +
    diff --git a/snapshot/guide/i18n.html b/snapshot/guide/i18n.html index b49099add99..89b98f33b27 100644 --- a/snapshot/guide/i18n.html +++ b/snapshot/guide/i18n.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 16 Internationalization 4.0.13 + 16 Internationalization 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    16 Internationalization

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -162,7 +162,7 @@

    Table of Contents

    16 Internationalization

    -
    @@ -186,7 +186,7 @@

    16 Internationalization

    16.1 Understanding Message Bundles

    -
    @@ -228,7 +228,7 @@

    16.1 Understanding Message Bundles

    16.2 Changing Locales

    -
    @@ -246,7 +246,7 @@

    16.2 Changing Locales

    Grails will automatically switch the user’s locale and subsequent requests will use the switched locale.

    -

    By default, Grails uses SessionLocaleResolver as the localeResolver bean.

    +

    By default, Grails uses SessionLocaleResolver as the localeResolver bean.

    You can change the default locale easily:

    @@ -296,7 +296,7 @@

    16.2 Changing Locales

    16.3 Reading Messages

    -
    @@ -305,7 +305,7 @@

    16.3 Reading Messages

    Reading Messages in the View

    -

    The most common place that you need messages is inside the view. Use the message tag for this:

    +

    The most common place that you need messages is inside the view. Use the message tag for this:

    @@ -388,14 +388,14 @@

    16.4 Scaffolding and i18n

    -
    -

    Grails scaffolding templates for controllers and views are fully i18n-aware. The GSPs use the message tag for labels, buttons etc. and controller flash messages use i18n to resolve locale-specific messages.

    +

    Grails scaffolding templates for controllers and views are fully i18n-aware. The GSPs use the message tag for labels, buttons etc. and controller flash messages use i18n to resolve locale-specific messages.

    The scaffolding includes locale specific labels for domain classes and domain fields. For example, if you have a Book domain class with a title field:

    diff --git a/snapshot/guide/index.html b/snapshot/guide/index.html index 4fb15e16e61..8beb8471f54 100644 --- a/snapshot/guide/index.html +++ b/snapshot/guide/index.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -41,7 +41,7 @@ - + @@ -103,7 +103,7 @@

    The Grails Framework

    Authors: The Grails Team

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -113,12 +113,10 @@

    Table of Contents

    - + - - @@ -147,7 +145,11 @@

    Table of Contents

    - + + + + + diff --git a/snapshot/guide/introduction.html b/snapshot/guide/introduction.html index 6d0d840a333..bb4a600b972 100644 --- a/snapshot/guide/introduction.html +++ b/snapshot/guide/introduction.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 1 Introduction 4.0.13 + 1 Introduction 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -133,22 +133,19 @@

    1 Introduction

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    Table of Contents

    - @@ -157,7 +154,7 @@

    Table of Contents

    1 Introduction

    -
    @@ -250,73 +247,120 @@

    1 Introduction

    -

    1.1 What's new in Grails 4?

    +

    1.1 What's new in Grails 5?

    -
    -

    This section covers all the new features introduced in Grails 4.

    +

    This section covers all the new features introduced in Grails 5

    +
    +
    +

    Overview

    +
    +

    This release includes support for Apache Groovy 3, Micronaut framework 3, Gradle 7, Spring Boot 2.5, Spring framework 5.3, and Spock 2.0.

    +
    +
    +

    Apache Groovy 3 is a major highlight of this release. It comes with a brand new Parrot parser and a bunch of new features and capabilities. The Parrot parser supports additional syntax and language features, such as lambda expressions, default methods with interfaces, and a lot more. In addition, several new extension methods are added to existing Java classes. See the release notes for Groovy 3.0 for details.

    +
    +
    +

    Grails framework 5 updates to Spring 5.3.10 and Spring Boot 2.5.5. We strongly recommend checking the following Spring technologies release notes for more information.

    +
    + +
    +

    Grails framework 5 is built with Groovy 3.0.7, which requires JDK 8 as the minimum version of JRE. We have tested most Grails projects up to JDK 14.

    +
    +
    +
    +

    Important Changes

    +
    +

    Deprecating ‘dot’-Based Navigation

    +
    +

    The ‘dot’-based navigation to Grails config is deprecated and will be removed in the future.

    +
    +
    +

    We request that you update your plugins to use configuration beans @ConfigurationProperties or @Value, or access configuration settings using grailsApplication.config.getProperty(‘a.b.c’, String) instead of grailsApplication.config.a.b.c. For more information, read the documentation at Creating and Installing Plugins.

    +
    +
    +
    Default Autowire By Type
    +
    +

    In previous versions, the beans inside the Grails DataService were autowire by name, but this is changed to autowire by type in Grails framework 5. Use the Spring @Qualifier annotation to autowire by name. For details, see the Spring documentation for Fine-tuning Annotation Based Autowiring with Qualifiers.

    +
    +
    +
    +
    +

    Grails Gradle Plugin

    +
    +

    The Grails Gradle Plugin is moved out of grails-core and may follow separate versioning, so you should decouple the grailsVersion Gradle property from grailsGradlePluginVersion in existing applications.

    +
    +
    +
    +

    Grails Gradle Publish Plugin Removed

    +
    +

    The Grails Gradle Publish plugin used the Bintray API to publish artifacts. However, after the JFrog shutdown of Bintray, this stopped working. We have removed this plugin from the new Grails Plugin applications.

    +
    +

    1.1.1 Updated Dependencies

    -
    -

    Grails 4.0.13 ships with the following dependency upgrades:

    +

    Grails 5.0.1 ships with the following dependency upgrades:

    • -

      Groovy 2.5.14

      +

      Groovy 3.0.7

      +
    • +
    • +

      Micronaut 3

      +
    • +
    • +

      Micronaut for Spring 4

      +
    • +
    • +

      GORM 7.1.0

    • -

      GORM 7 and Hibernate 5.4 (now the default version of Hibernate for new applications)

      +

      Spring Framework 5.3

    • -

      Spring Framework 5.1.20

      +

      Spring Boot 2.5

    • -

      Spring Boot 2.1.18

      +

      Gradle 7.2

    • -

      Gradle 5.6.4

      +

      Spock 2.0-groovy-3.0

    • -

      Spock 1.3

      +

      Grails Testing Support 2.2.0

    -

    1.1.2 Micronaut Parent Context

    - -
    - -
    - - -
    -

    Micronaut is now the parent application context of Grails thus allowing using many Micronaut features including the Micronaut HTTP Client and Kafka Client.

    -
    -
    -

    Micronaut has also been used to improve startup and reduce overall memory consumption of Grails applications (along with associated improvements in Spring Boot 2.1).

    -
    - -
    diff --git a/snapshot/guide/pages/RSSAndAtom.html b/snapshot/guide/pages/RSSAndAtom.html index 33fd56673ae..7c21373e915 100644 --- a/snapshot/guide/pages/RSSAndAtom.html +++ b/snapshot/guide/pages/RSSAndAtom.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 10.14 RSS and Atom 4.0.13 + 10.14 RSS and Atom 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    10.14 RSS and Atom

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    10.14 RSS and Atom

    10.14 RSS and Atom

    -
    diff --git a/snapshot/guide/pages/aHelloWorldExample.html b/snapshot/guide/pages/aHelloWorldExample.html index 4d4ecc83713..a8f34998220 100644 --- a/snapshot/guide/pages/aHelloWorldExample.html +++ b/snapshot/guide/pages/aHelloWorldExample.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 2.4 A Hello World Example 4.0.13 + 2.4 A Hello World Example 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -128,14 +128,14 @@ (Quick Reference) - +

    2.4 A Hello World Example

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    2.4 A Hello World Example

    2.4 A Hello World Example

    -
    @@ -276,7 +276,7 @@

    2.4 A Hello World Example

    - +
    diff --git a/snapshot/guide/pages/actuators.html b/snapshot/guide/pages/actuators.html index 4043309440c..2828e8efe0a 100644 --- a/snapshot/guide/pages/actuators.html +++ b/snapshot/guide/pages/actuators.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 19.6 Spring Boot Actuators 4.0.13 + 19.6 Spring Boot Actuators 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    19.6 Spring Boot Actuators

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,14 +145,14 @@

    19.6 Spring Boot Actuators

    19.6 Spring Boot Actuators

    -
    -

    Spring Boot Actuator endpoints allow you to monitor and interact with your application. Spring Boot includes a number of built-in endpoints. For example the health endpoint provides basic application health information.

    +

    Spring Boot Actuator endpoints allow you to monitor and interact with your application. Spring Boot includes a number of built-in endpoints. For example the health endpoint provides basic application health information.

    These endpoints are disabled by default since Grails 3.1.8.

    diff --git a/snapshot/guide/pages/addingDynamicMethodsAtRuntime.html b/snapshot/guide/pages/addingDynamicMethodsAtRuntime.html index 0d936c75ebf..fb7cff4729d 100644 --- a/snapshot/guide/pages/addingDynamicMethodsAtRuntime.html +++ b/snapshot/guide/pages/addingDynamicMethodsAtRuntime.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 18.7 Adding Dynamic Methods at Runtime 4.0.13 + 18.7 Adding Dynamic Methods at Runtime 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    18.7 Adding Dynamic Methods at Runtime

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    18.7 Adding Dynamic Methods at Runtime

    18.7 Adding Dynamic Methods at Runtime

    -
    diff --git a/snapshot/guide/pages/addingMethodsAtCompileTime.html b/snapshot/guide/pages/addingMethodsAtCompileTime.html index b8c250874e1..f89b04b5bce 100644 --- a/snapshot/guide/pages/addingMethodsAtCompileTime.html +++ b/snapshot/guide/pages/addingMethodsAtCompileTime.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 18.6 Adding Methods at Compile Time 4.0.13 + 18.6 Adding Methods at Compile Time 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    18.6 Adding Methods at Compile Time

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    18.6 Adding Methods at Compile Time

    18.6 Adding Methods at Compile Time

    -
    @@ -170,7 +170,7 @@

    18.6 Adding Methods at Compile Time

    The @Enhances annotation defines the types of artefacts that the trait should be applied to.

    -

    As an alternative to using the @Enhances annotation above, you can implement a TraitInjector to tell Grails which artefacts you want to inject the trait into at compile time:

    +

    As an alternative to using the @Enhances annotation above, you can implement a TraitInjector to tell Grails which artefacts you want to inject the trait into at compile time:

    @@ -197,7 +197,7 @@

    18.6 Adding Methods at Compile Time

    Applying traits conditionally

    -

    A TraitInjector implementation can also implement the SupportsClassNode interface to apply traits to only those artefacts which satisfy a custom requirement. +

    A TraitInjector implementation can also implement the SupportsClassNode interface to apply traits to only those artefacts which satisfy a custom requirement. For example, if a trait should only be applied if the target artefact class has a specific annotation, it can be done as below

    diff --git a/snapshot/guide/pages/angularJsProfile.html b/snapshot/guide/pages/angularJsProfile.html index 1e67837be9f..b3abe250cf7 100644 --- a/snapshot/guide/pages/angularJsProfile.html +++ b/snapshot/guide/pages/angularJsProfile.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 10.8 The AngularJS Profile 4.0.13 + 10.8 The AngularJS Profile 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    10.8 The AngularJS Profile

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    10.8 The AngularJS Profile

    10.8 The AngularJS Profile

    -
    diff --git a/snapshot/guide/pages/angularProfile.html b/snapshot/guide/pages/angularProfile.html index 7692bc7579d..5ded55bd5fb 100644 --- a/snapshot/guide/pages/angularProfile.html +++ b/snapshot/guide/pages/angularProfile.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 10.9 The Angular Profile 4.0.13 + 10.9 The Angular Profile 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    10.9 The Angular Profile

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    10.9 The Angular Profile

    10.9 The Angular Profile

    -
    diff --git a/snapshot/guide/pages/applicationClass.html b/snapshot/guide/pages/applicationClass.html index a479d3cf5b3..6f693ac7816 100644 --- a/snapshot/guide/pages/applicationClass.html +++ b/snapshot/guide/pages/applicationClass.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 4.2 The Application Class 4.0.13 + 4.2 The Application Class 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -122,7 +122,7 @@
    - + (Quick Reference) @@ -135,7 +135,7 @@

    4.2 The Application Class

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -159,7 +159,7 @@

    Table of Contents

    4.2 The Application Class

    -
    @@ -169,14 +169,14 @@

    4.2 The Application Class

    Every new Grails application features an Application class within the grails-app/init directory.

    -

    The Application class subclasses the GrailsAutoConfiguration class and features a static void main method, meaning it can be run as a regular application.

    +

    The Application class subclasses the GrailsAutoConfiguration class and features a static void main method, meaning it can be run as a regular application.

    4.2.1 Executing the Application Class

    -
    @@ -205,7 +205,7 @@

    4.2.1 Executing the Application Class

    4.2.2 Customizing the Application Class

    -
    @@ -235,7 +235,7 @@

    Customizing Scanning

    Registering Additional Beans

    -

    The Application class can also be used as a source for Spring bean definitions, simply define a method annotated with the Bean and the returned object will become a Spring bean. The name of the method is used as the bean name:

    +

    The Application class can also be used as a source for Spring bean definitions, simply define a method annotated with the Bean and the returned object will become a Spring bean. The name of the method is used as the bean name:

    @@ -255,14 +255,14 @@

    Registering Additional Beans

    4.2.3 The Application LifeCycle

    -
    -

    The Application class also implements the GrailsApplicationLifeCycle interface which all plugins implement.

    +

    The Application class also implements the GrailsApplicationLifeCycle interface which all plugins implement.

    This means that the Application class can be used to perform the same functions as a plugin. You can override the regular plugins hooks such as doWithSpring, doWithApplicationContext and so on by overriding the appropriate method:

    @@ -285,7 +285,7 @@

    4.2.3 The Application LifeCycle

    - + diff --git a/snapshot/guide/pages/applicationLifeCycle.html b/snapshot/guide/pages/applicationLifeCycle.html index 9bd5e3f18d5..163dfee7470 100644 --- a/snapshot/guide/pages/applicationLifeCycle.html +++ b/snapshot/guide/pages/applicationLifeCycle.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 4.2.3 The Application LifeCycle 4.0.13 + 4.2.3 The Application LifeCycle 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -122,7 +122,7 @@
    - + (Quick Reference) @@ -135,7 +135,7 @@

    4.2.3 The Application LifeCycle

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,14 +145,14 @@

    4.2.3 The Application LifeCycle

    4.2.3 The Application LifeCycle

    -
    -

    The Application class also implements the GrailsApplicationLifeCycle interface which all plugins implement.

    +

    The Application class also implements the GrailsApplicationLifeCycle interface which all plugins implement.

    This means that the Application class can be used to perform the same functions as a plugin. You can override the regular plugins hooks such as doWithSpring, doWithApplicationContext and so on by overriding the appropriate method:

    @@ -175,7 +175,7 @@

    4.2.3 The Application LifeCycle

    - + diff --git a/snapshot/guide/pages/applyingConstraints.html b/snapshot/guide/pages/applyingConstraints.html index 4348d7079ce..ada2fb01204 100644 --- a/snapshot/guide/pages/applyingConstraints.html +++ b/snapshot/guide/pages/applyingConstraints.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 8.3.10 Applying Constraints 4.0.13 + 8.3.10 Applying Constraints 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    8.3.10 Applying Constraints

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    8.3.10 Applying Constraints

    8.3.10 Applying Constraints

    -
    diff --git a/snapshot/guide/pages/artefactApi.html b/snapshot/guide/pages/artefactApi.html index 8c7834bd159..7a76f97fc1a 100644 --- a/snapshot/guide/pages/artefactApi.html +++ b/snapshot/guide/pages/artefactApi.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 18.10 The Artefact API 4.0.13 + 18.10 The Artefact API 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    18.10 The Artefact API

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -156,7 +156,7 @@

    Table of Contents

    18.10 The Artefact API

    -
    @@ -170,14 +170,14 @@

    18.10 The Artefact API

    18.10.1 Asking About Available Artefacts

    -
    -

    As a plugin developer, it can be important for you to find out about what domain classes, controllers, or other types of artefact are available in an application. For example, the Elasticsearch plugin needs to know what domain classes exist so it can check them for any searchable properties and index the appropriate ones. So how does it do it? The answer lies with the grailsApplication object, and instance of GrailsApplication that’s available automatically in controllers and GSPs and can be injected everywhere else.

    +

    As a plugin developer, it can be important for you to find out about what domain classes, controllers, or other types of artefact are available in an application. For example, the Elasticsearch plugin needs to know what domain classes exist so it can check them for any searchable properties and index the appropriate ones. So how does it do it? The answer lies with the grailsApplication object, and instance of GrailsApplication that’s available automatically in controllers and GSPs and can be injected everywhere else.

    The grailsApplication object has several important properties and methods for querying artefacts. Probably the most common is the one that gives you all the classes of a particular artefact type:

    @@ -238,7 +238,7 @@

    18.10.1 Asking About Available Artefacts

    -

    You need to be aware that the objects returned by these properties are not instances of Class. Instead, they are instances of GrailsClass that has some particularly useful properties and methods, including one for the underlying Class:

    +

    You need to be aware that the objects returned by these properties are not instances of Class. Instead, they are instances of GrailsClass that has some particularly useful properties and methods, including one for the underlying Class:

      @@ -277,7 +277,7 @@

      18.10.1 Asking About Available Artefacts

      18.10.2 Adding Your Own Artefact Types

      -
      @@ -298,10 +298,10 @@

      18.10.2 Adding Your Own Artefact Types

      The artefacts list can contain either handler classes (as above) or instances of handlers.

    -

    So, what does an artefact handler look like? Well, put simply it is an implementation of the ArtefactHandler interface. To make life a bit easier, there is a skeleton implementation that can readily be extended: ArtefactHandlerAdapter.

    +

    So, what does an artefact handler look like? Well, put simply it is an implementation of the ArtefactHandler interface. To make life a bit easier, there is a skeleton implementation that can readily be extended: ArtefactHandlerAdapter.

    -

    In addition to the handler itself, every new artefact needs a corresponding wrapper class that implements GrailsClass. Again, skeleton implementations are available such as AbstractInjectableGrailsClass, which is particularly useful as it turns your artefact into a Spring bean that is auto-wired, just like controllers and services.

    +

    In addition to the handler itself, every new artefact needs a corresponding wrapper class that implements GrailsClass. Again, skeleton implementations are available such as AbstractInjectableGrailsClass, which is particularly useful as it turns your artefact into a Spring bean that is auto-wired, just like controllers and services.

    The best way to understand how both the handler and wrapper classes work is to look at the Quartz plugin:

    diff --git a/snapshot/guide/pages/atom.html b/snapshot/guide/pages/atom.html index 80bc84d5c57..94ec9627028 100644 --- a/snapshot/guide/pages/atom.html +++ b/snapshot/guide/pages/atom.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 10.12.2 Atom Support 4.0.13 + 10.12.2 Atom Support 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    10.12.2 Atom Support

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    10.12.2 Atom Support

    10.12.2 Atom Support

    -
    diff --git a/snapshot/guide/pages/authentication.html b/snapshot/guide/pages/authentication.html index 514592a402b..1583939199b 100644 --- a/snapshot/guide/pages/authentication.html +++ b/snapshot/guide/pages/authentication.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 17.4 Authentication 4.0.13 + 17.4 Authentication 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    17.4 Authentication

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    17.4 Authentication

    17.4 Authentication

    -
    diff --git a/snapshot/guide/pages/automaticDatabaseMigration.html b/snapshot/guide/pages/automaticDatabaseMigration.html index 602bd2f93a3..ec8ffe1230e 100644 --- a/snapshot/guide/pages/automaticDatabaseMigration.html +++ b/snapshot/guide/pages/automaticDatabaseMigration.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 4.4.2 Automatic Database Migration 4.0.13 + 4.4.2 Automatic Database Migration 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -122,7 +122,7 @@
    - + (Quick Reference) @@ -135,7 +135,7 @@

    4.4.2 Automatic Database Migration

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    4.4.2 Automatic Database Migration

    4.4.2 Automatic Database Migration

    -
    @@ -196,7 +196,7 @@

    4.4.2 Automatic Database Migration

    - + diff --git a/snapshot/guide/pages/automaticLinkRewriting.html b/snapshot/guide/pages/automaticLinkRewriting.html index 2b1de086057..c113648abaa 100644 --- a/snapshot/guide/pages/automaticLinkRewriting.html +++ b/snapshot/guide/pages/automaticLinkRewriting.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 8.3.9 Automatic Link Re-Writing 4.0.13 + 8.3.9 Automatic Link Re-Writing 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    8.3.9 Automatic Link Re-Writing

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,14 +145,14 @@

    8.3.9 Automatic Link Re-Writing

    8.3.9 Automatic Link Re-Writing

    -
    -

    Another great feature of URL mappings is that they automatically customize the behaviour of the link tag so that changing the mappings don’t require you to go and change all of your links.

    +

    Another great feature of URL mappings is that they automatically customize the behaviour of the link tag so that changing the mappings don’t require you to go and change all of your links.

    This is done through a URL re-writing technique that reverse engineers the links from the URL mappings. So given a mapping such as the blog one from an earlier section:

    diff --git a/snapshot/guide/pages/basicCRUD.html b/snapshot/guide/pages/basicCRUD.html index c10c98603f1..90f83823a9a 100644 --- a/snapshot/guide/pages/basicCRUD.html +++ b/snapshot/guide/pages/basicCRUD.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 7.1.1 Basic CRUD 4.0.13 + 7.1.1 Basic CRUD 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    7.1.1 Basic CRUD

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    7.1.1 Basic CRUD

    7.1.1 Basic CRUD

    -
    diff --git a/snapshot/guide/pages/binding.html b/snapshot/guide/pages/binding.html index 71e34ae7f6d..75f12f2155e 100644 --- a/snapshot/guide/pages/binding.html +++ b/snapshot/guide/pages/binding.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 10.13 Customizing Binding of Resources 4.0.13 + 10.13 Customizing Binding of Resources 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    10.13 Customizing Binding of Resources

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    10.13 Customizing Binding of Resources

    10.13 Customizing Binding of Resources

    -
    @@ -228,7 +228,7 @@

    10.13 Customizing Binding of Resources

    -

    The data binding depends on an instance of the DataBindingSource interface created by an instance of the DataBindingSourceCreator interface. The specific implementation of DataBindingSourceCreator will be selected based on the contentType of the request. Several implementations are provided to handle common content types. The default implementations will be fine for most use cases. The following table lists the content types which are supported by the core framework and which DataBindingSourceCreator implementations are used for each. All of the implementation classes are in the org.grails.databinding.bindingsource package.

    +

    The data binding depends on an instance of the DataBindingSource interface created by an instance of the DataBindingSourceCreator interface. The specific implementation of DataBindingSourceCreator will be selected based on the contentType of the request. Several implementations are provided to handle common content types. The default implementations will be fine for most use cases. The following table lists the content types which are supported by the core framework and which DataBindingSourceCreator implementations are used for each. All of the implementation classes are in the org.grails.databinding.bindingsource package.

    @@ -311,7 +311,7 @@

    10.13 Customizing Binding of Resources

    -

    AbstractRequestBodyDataBindingSourceCreator +

    AbstractRequestBodyDataBindingSourceCreator is an abstract class designed to be extended to simplify writing custom DataBindingSourceCreator classes. Classes which extend AbstractRequestbodyDatabindingSourceCreator need to implement a method named createBindingSource which accepts an InputStream as an argument and returns a DataBindingSource as well as implementing the getMimeTypes diff --git a/snapshot/guide/pages/build.html b/snapshot/guide/pages/build.html index 92d4b025d9e..40e1a9506c5 100644 --- a/snapshot/guide/pages/build.html +++ b/snapshot/guide/pages/build.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 22.2 Build From Source and Run Tests 4.0.13 + 22.2 Build From Source and Run Tests 5.0.1 @@ -44,7 +44,7 @@

    -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -133,7 +133,7 @@

    22.2 Build From Source and Run Tests

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -143,7 +143,7 @@

    22.2 Build From Source and Run Tests

    22.2 Build From Source and Run Tests

    -
    diff --git a/snapshot/guide/pages/builtInOptions.html b/snapshot/guide/pages/builtInOptions.html index daf12b3241d..4128f441ef4 100644 --- a/snapshot/guide/pages/builtInOptions.html +++ b/snapshot/guide/pages/builtInOptions.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 4.1.2 Built in options 4.0.13 + 4.1.2 Built in options 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -122,7 +122,7 @@
    - + (Quick Reference) @@ -135,7 +135,7 @@

    4.1.2 Built in options

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    4.1.2 Built in options

    4.1.2 Built in options

    -
    @@ -177,7 +177,7 @@

    Runtime settings

    grails.mime.types - A map of supported mime types used for Content Negotiation.

  • -

    grails.serverURL - A string specifying the server URL portion of absolute links, including server name e.g. grails.serverURL="http://my.yourportal.com". See createLink. Also used by redirects.

    +

    grails.serverURL - A string specifying the server URL portion of absolute links, including server name e.g. grails.serverURL="http://my.yourportal.com". See createLink. Also used by redirects.

  • grails.views.gsp.sitemesh.preprocess - Determines whether SiteMesh preprocessing happens. Disabling this slows down page rendering, but if you need SiteMesh to parse the generated HTML from a GSP view then disabling it is the right option. Don’t worry if you don’t understand this advanced property: leave it set to true.

    @@ -192,7 +192,7 @@

    Runtime settings

    - + diff --git a/snapshot/guide/pages/callingRestServices.html b/snapshot/guide/pages/callingRestServices.html index 73b7a21851e..9120a181e3b 100644 --- a/snapshot/guide/pages/callingRestServices.html +++ b/snapshot/guide/pages/callingRestServices.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 10.6 Calling REST Services with HttpClient 4.0.13 + 10.6 Calling REST Services with HttpClient 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    10.6 Calling REST Services with HttpClient

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    10.6 Calling REST Services with HttpClient

    10.6 Calling REST Services with HttpClient

    -
    @@ -180,7 +180,7 @@

    Low-level API

        List<Album> searchWithApi(String searchTerm) {
             String baseUrl = "https://itunes.apple.com/"
     
    -        HttpClient client = HttpClient.create(baseUrl.toURL()).toBlocking() (1)
    +        BlockingHttpClient client = HttpClient.create(baseUrl.toURL()).toBlocking() (1)
     
             HttpRequest request = HttpRequest.GET("/search?limit=25&media=music&entity=album&term=${searchTerm}")
             HttpResponse<String> resp = client.exchange(request, String)
    diff --git a/snapshot/guide/pages/changingLocales.html b/snapshot/guide/pages/changingLocales.html
    index d7132af15bb..063110e87fa 100644
    --- a/snapshot/guide/pages/changingLocales.html
    +++ b/snapshot/guide/pages/changingLocales.html
    @@ -11,7 +11,7 @@
     
             gtag('config', 'UA-82213539-2');
         
    -    16.2 Changing Locales 4.0.13
    +    16.2 Changing Locales 5.0.1
         
         
         
    @@ -44,7 +44,7 @@
                             
                             
    -                        
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    16.2 Changing Locales

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    16.2 Changing Locales

    16.2 Changing Locales

    -
    @@ -163,7 +163,7 @@

    16.2 Changing Locales

    Grails will automatically switch the user’s locale and subsequent requests will use the switched locale.

    -

    By default, Grails uses SessionLocaleResolver as the localeResolver bean.

    +

    By default, Grails uses SessionLocaleResolver as the localeResolver bean.

    You can change the default locale easily:

    diff --git a/snapshot/guide/pages/codecs.html b/snapshot/guide/pages/codecs.html index b42f8b40fe9..f1884d05499 100644 --- a/snapshot/guide/pages/codecs.html +++ b/snapshot/guide/pages/codecs.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 17.3 Encoding and Decoding Objects 4.0.13 + 17.3 Encoding and Decoding Objects 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    17.3 Encoding and Decoding Objects

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    17.3 Encoding and Decoding Objects

    17.3 Encoding and Decoding Objects

    -
    diff --git a/snapshot/guide/pages/commandObjects.html b/snapshot/guide/pages/commandObjects.html index 4d71666c283..7bdfaf2046d 100644 --- a/snapshot/guide/pages/commandObjects.html +++ b/snapshot/guide/pages/commandObjects.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 8.1.10 Command Objects 4.0.13 + 8.1.10 Command Objects 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    8.1.10 Command Objects

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    8.1.10 Command Objects

    8.1.10 Command Objects

    -
    diff --git a/snapshot/guide/pages/config.html b/snapshot/guide/pages/config.html index 664ac3e842b..f3a74f792ce 100644 --- a/snapshot/guide/pages/config.html +++ b/snapshot/guide/pages/config.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 4.1 Basic Configuration 4.0.13 + 4.1 Basic Configuration 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -122,7 +122,7 @@
    - + (Quick Reference) @@ -135,7 +135,7 @@

    4.1 Basic Configuration

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -174,7 +174,7 @@

    Table of Contents

    4.1 Basic Configuration

    -
    @@ -263,7 +263,7 @@

    4.1 Basic Configuration

    Accessing Configuration with GrailsApplication

    -

    If you want to read runtime configuration settings, i.e. those defined in application.yml, use the grailsApplication object, which is available as a variable in controllers and tag libraries:

    +

    If you want to read runtime configuration settings, i.e. those defined in application.yml, use the grailsApplication object, which is available as a variable in controllers and tag libraries:

    @@ -277,7 +277,7 @@

    Accessing Configuration

    -

    The config property of the grailsApplication object is an instance of the Config interface and provides a number of useful methods to read the configuration of the application.

    +

    The config property of the grailsApplication object is an instance of the Config interface and provides a number of useful methods to read the configuration of the application.

    In particular, the getProperty method (seen above) is useful for efficiently retrieving configuration properties, while specifying the property type (the default type is String) and/or providing a default fallback value.

    @@ -303,7 +303,7 @@

    Accessing Configuration

    -

    Notice that the Config instance is a merged configuration based on Spring’s PropertySource concept and reads configuration from the environment, system properties and the local application configuration merging them into a single object.

    +

    Notice that the Config instance is a merged configuration based on Spring’s PropertySource concept and reads configuration from the environment, system properties and the local application configuration merging them into a single object.

    GrailsApplication can be easily injected into services and other Grails artifacts:

    @@ -326,7 +326,7 @@

    Accessing Configuration

    GrailsConfigurationAware Interface

    -

    Accessing configuration dynamically at runtime can have a small effect on application performance. An alternative approach is to implement the GrailsConfigurationAware interface, which provides a setConfiguration method that accepts the application configuration as a parameter when the class is initialized. You can then assign relevant configuration properties to instance properties on the class for later usage.

    +

    Accessing configuration dynamically at runtime can have a small effect on application performance. An alternative approach is to implement the GrailsConfigurationAware interface, which provides a setConfiguration method that accepts the application configuration as a parameter when the class is initialized. You can then assign relevant configuration properties to instance properties on the class for later usage.

    The Config instance has the same properties and usage as the injected GrailsApplication config object. Here is the service class from the previous example, using GrailsConfigurationAware instead of injecting GrailsApplication:

    @@ -354,7 +354,7 @@

    GrailsConfigurationAware Interface<

    Spring Value Annotation

    -

    You can use Spring’s Value annotation to inject configuration values:

    +

    You can use Spring’s Value annotation to inject configuration values:

    @@ -391,7 +391,7 @@

    Spring Value Annotation

    4.1.1 Options for the YML format Config

    -
    @@ -440,7 +440,7 @@

    Using system properties

    External configuration

    Grails will read application.(properties|yml) from the ./config or the current directory by default. -As Grails is a SpringBoot configuration options are available as well, for documentation please consult: https://docs.spring.io/spring-boot/docs/2.1.x/reference/html/boot-features-external-config.html#boot-features-external-config-application-property-files

    +As Grails is a SpringBoot configuration options are available as well, for documentation please consult: https://docs.spring.io/spring-boot/docs/2.5.2/reference/html/boot-features-external-config.html#boot-features-external-config-application-property-files

    @@ -448,7 +448,7 @@

    External configuration

    4.1.2 Built in options

    -
    @@ -480,7 +480,7 @@

    Runtime settings

    grails.mime.types - A map of supported mime types used for Content Negotiation.

  • -

    grails.serverURL - A string specifying the server URL portion of absolute links, including server name e.g. grails.serverURL="http://my.yourportal.com". See createLink. Also used by redirects.

    +

    grails.serverURL - A string specifying the server URL portion of absolute links, including server name e.g. grails.serverURL="http://my.yourportal.com". See createLink. Also used by redirects.

  • grails.views.gsp.sitemesh.preprocess - Determines whether SiteMesh preprocessing happens. Disabling this slows down page rendering, but if you need SiteMesh to parse the generated HTML from a GSP view then disabling it is the right option. Don’t worry if you don’t understand this advanced property: leave it set to true.

    @@ -496,36 +496,24 @@

    Runtime settings

    4.1.3 Logging

    -
    -

    Since Grails 3.0, logging is handled by the Logback logging framework and can be configured with the grails-app/conf/logback.groovy file.

    -
    -
    -
  • - - - - -
    - - -If you prefer XML you can replace the logback.groovy file with a logback.xml file instead. -
    +

    Since Grails 3.0, logging is handled by the Logback logging framework and can be configured with the grails-app/conf/logback.xml file.

    -

    For more information on configuring logging refer to the Logback documentation on the subject.

    +

    For more information on configuring logging refer to the Logback documentation on the subject.

    4.1.3.1 Logger Names

    -
    @@ -643,7 +631,7 @@

    4.1.3.1 Logger Names

    4.1.3.2 Masking Request Parameters From Stacktrace Logs

    -
    @@ -682,7 +670,7 @@

    4.1.3.2 Masking Request Para

    4.1.3.3 External Configuration File

    -
    @@ -695,21 +683,21 @@

    4.1.3.3 External Configuration File

    grails-app/conf/application.yml
    logging:
    -    config: /Users/me/config/logback.groovy
    + config: /Users/me/config/logback.xml

    Alternatively, you can supply the configuration file location with a system property:

    -

    $ ./gradlew -Dlogging.config=/Users/me/config/logback.groovy bootRun

    +

    $ ./gradlew -Dlogging.config=/Users/me/config/logback.xml bootRun

    Or, you could use an environment variable:

    -
    $ export LOGGING_CONFIG=/Users/me/config/logback.groovy
    +
    $ export LOGGING_CONFIG=/Users/me/config/logback.xml
     $ ./gradlew bootRun
    @@ -718,7 +706,7 @@

    4.1.3.3 External Configuration File

    4.1.4 GORM

    -
    @@ -761,7 +749,7 @@

    4.1.4 GORM

    4.1.5 Configuring an HTTP proxy

    -
    @@ -800,7 +788,7 @@

    4.1.5 Configuring an HTTP proxy

    - + diff --git a/snapshot/guide/pages/configGORM.html b/snapshot/guide/pages/configGORM.html index 3d2180468c3..0734aea2cb7 100644 --- a/snapshot/guide/pages/configGORM.html +++ b/snapshot/guide/pages/configGORM.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 4.1.4 GORM 4.0.13 + 4.1.4 GORM 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -122,7 +122,7 @@
    - + (Quick Reference) @@ -135,7 +135,7 @@

    4.1.4 GORM

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    4.1.4 GORM

    4.1.4 GORM

    -
    @@ -187,7 +187,7 @@

    4.1.4 GORM

    - + diff --git a/snapshot/guide/pages/constraints.html b/snapshot/guide/pages/constraints.html index 95142771605..71d965bad57 100644 --- a/snapshot/guide/pages/constraints.html +++ b/snapshot/guide/pages/constraints.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 12.1 Declaring Constraints 4.0.13 + 12.1 Declaring Constraints 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    12.1 Declaring Constraints

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    12.1 Declaring Constraints

    12.1 Declaring Constraints

    -
    diff --git a/snapshot/guide/pages/contentNegotiation.html b/snapshot/guide/pages/contentNegotiation.html index 24e8cfec4a8..6812d3685ca 100644 --- a/snapshot/guide/pages/contentNegotiation.html +++ b/snapshot/guide/pages/contentNegotiation.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 8.6 Content Negotiation 4.0.13 + 8.6 Content Negotiation 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    8.6 Content Negotiation

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    8.6 Content Negotiation

    8.6 Content Negotiation

    -
    diff --git a/snapshot/guide/pages/controllerExceptionHandling.html b/snapshot/guide/pages/controllerExceptionHandling.html index 15c9dff8378..c502a504bf6 100644 --- a/snapshot/guide/pages/controllerExceptionHandling.html +++ b/snapshot/guide/pages/controllerExceptionHandling.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 8.1.13 Declarative Controller Exception Handling 4.0.13 + 8.1.13 Declarative Controller Exception Handling 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    8.1.13 Declarative Controller Exception Handling

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    8.1.13 Declarative Controller Exception Handling

    8.1.13 Declarative Controller Exception Handling

    -
    diff --git a/snapshot/guide/pages/controllers.html b/snapshot/guide/pages/controllers.html index 465b5d8d986..dca5de7ec0e 100644 --- a/snapshot/guide/pages/controllers.html +++ b/snapshot/guide/pages/controllers.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 8.1 Controllers 4.0.13 + 8.1 Controllers 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    8.1 Controllers

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -189,7 +189,7 @@

    Table of Contents

    8.1 Controllers

    -
    @@ -206,7 +206,7 @@

    8.1 Controllers

    8.1.1 Understanding Controllers and Actions

    -
    @@ -306,7 +306,7 @@

    The Default Action

    8.1.2 Controllers and Scopes

    -
    @@ -320,13 +320,13 @@

    Available Scopes

    • -

      servletContext - Also known as application scope, this scope lets you share state across the entire web application. The servletContext is an instance of ServletContext

      +

      servletContext - Also known as application scope, this scope lets you share state across the entire web application. The servletContext is an instance of ServletContext

    • -

      session - The session allows associating state with a given user and typically uses cookies to associate a session with a client. The session object is an instance of HttpSession

      +

      session - The session allows associating state with a given user and typically uses cookies to associate a session with a client. The session object is an instance of HttpSession

    • -

      request - The request object allows the storage of objects for the current request only. The request object is an instance of HttpServletRequest

      +

      request - The request object allows the storage of objects for the current request only. The request object is an instance of HttpServletRequest

    • params - Mutable map of incoming request query string or POST parameters

      @@ -340,7 +340,7 @@

      Available Scopes

      Accessing Scopes

      -

      Scopes can be accessed using the variable names above in combination with Groovy’s array index operator, even on classes provided by the Servlet API such as the HttpServletRequest:

      +

      Scopes can be accessed using the variable names above in combination with Groovy’s array index operator, even on classes provided by the Servlet API such as the HttpServletRequest:

      @@ -453,7 +453,7 @@

      Scoped Controllers

      8.1.3 Models and Views

      -
      @@ -484,7 +484,7 @@

      Returning the Model

      -

      A more advanced approach is to return an instance of the Spring ModelAndView class:

      +

      A more advanced approach is to return an instance of the Spring ModelAndView class:

      @@ -689,7 +689,7 @@

      Rendering a Response

      8.1.4 Redirects and Chaining

      -
      @@ -717,7 +717,7 @@

      Redirects

      -

      Internally the redirect method uses the HttpServletResponse object’s sendRedirect method.

      +

      Internally the redirect method uses the HttpServletResponse object’s sendRedirect method.

      The redirect method expects one of:

      @@ -880,7 +880,7 @@

      Chaining

      8.1.5 Data Binding

      -
      @@ -1453,7 +1453,7 @@

      Data binding and type conversi

      The BindUsing Annotation

      -

      The BindUsing annotation may be used to define a custom binding mechanism for a particular field in a class. Any time data binding is being applied to the field the closure value of the annotation will be invoked with 2 arguments. The first argument is the object that data binding is being applied to and the second argument is DataBindingSource which is the data source for the data binding. The value returned from the closure will be bound to the property. The following example would result in the upper case version of the name value in the source being applied to the name field during data binding.

      +

      The BindUsing annotation may be used to define a custom binding mechanism for a particular field in a class. Any time data binding is being applied to the field the closure value of the annotation will be invoked with 2 arguments. The first argument is the object that data binding is being applied to and the second argument is DataBindingSource which is the data source for the data binding. The value returned from the closure will be bound to the property. The following example would result in the upper case version of the name value in the source being applied to the name field during data binding.

      @@ -1486,7 +1486,7 @@

      The BindUsing Annotation

      -

      The BindUsing annotation may be used to define a custom binding mechanism for all of the fields on a particular class. When the annotation is applied to a class, the value assigned to the annotation should be a class which implements the BindingHelper interface. An instance of that class will be used any time a value is bound to a property in the class that this annotation has been applied to.

      +

      The BindUsing annotation may be used to define a custom binding mechanism for all of the fields on a particular class. When the annotation is applied to a class, the value assigned to the annotation should be a class which implements the BindingHelper interface. An instance of that class will be used any time a value is bound to a property in the class that this annotation has been applied to.

      @@ -1501,8 +1501,8 @@

      The BindUsing Annotation

      The BindInitializer Annotation

      -

      The BindInitializer annotation may be used to initialize an associated field in a class if it is undefined. -Unlike the BindUsing annotation, databinding will continue binding all nested properties on this association.

      +

      The BindInitializer annotation may be used to initialize an associated field in a class if it is undefined. +Unlike the BindUsing annotation, databinding will continue binding all nested properties on this association.

      @@ -1540,7 +1540,7 @@

      The BindInitializer Annotation

      Custom Data Converters

      -

      The binder will do a lot of type conversion automatically. Some applications may want to define their own mechanism for converting values and a simple way to do this is to write a class which implements ValueConverter and register an instance of that class as a bean in the Spring application context.

      +

      The binder will do a lot of type conversion automatically. Some applications may want to define their own mechanism for converting values and a simple way to do this is to write a class which implements ValueConverter and register an instance of that class as a bean in the Spring application context.

      @@ -1604,7 +1604,7 @@

      Custom Data Converters

      Date Formats For Data Binding

      -

      A custom date format may be specified to be used when binding a String to a Date value by applying the BindingFormat annotation to a Date field.

      +

      A custom date format may be specified to be used when binding a String to a Date value by applying the BindingFormat annotation to a Date field.

      @@ -1651,7 +1651,7 @@

      Date Formats For Data Binding

      Custom Formatted Converters

      -

      You may supply your own handler for the BindingFormat annotation by writing a class which implements the FormattedValueConverter interface and registering an instance of that class as a bean in the Spring application context. Below is an example of a trivial custom String formatter that might convert the case of a String based on the value assigned to the BindingFormat annotation.

      +

      You may supply your own handler for the BindingFormat annotation by writing a class which implements the FormattedValueConverter interface and registering an instance of that class as a bean in the Spring application context. Below is an example of a trivial custom String formatter that might convert the case of a String based on the value assigned to the BindingFormat annotation.

      @@ -1768,7 +1768,7 @@

      Structured Data Binding Editors

      A Gadget has 2 Shape fields. A Shape has an area property. It may be that the application wants to accept request parameters like width and height and use those to calculate the area of a Shape at binding time. A structured binding editor is well suited for that.

      -

      The way to register a structured editor with the data binding process is to add an instance of the grails.databinding.TypedStructuredBindingEditor interface to the Spring application context. The easiest way to implement the TypedStructuredBindingEditor interface is to extend the org.grails.databinding.converters.AbstractStructuredBindingEditor abstract class and override the getPropertyValue method as shown below:

      +

      The way to register a structured editor with the data binding process is to add an instance of the grails.databinding.TypedStructuredBindingEditor interface to the Spring application context. The easiest way to implement the TypedStructuredBindingEditor interface is to extend the org.grails.databinding.converters.AbstractStructuredBindingEditor abstract class and override the getPropertyValue method as shown below:

      src/main/groovy/databinding/converters/StructuredShapeEditor.groovy
      @@ -1836,7 +1836,7 @@

      Structured Data Binding Editors

      Data Binding Event Listeners

      -

      The DataBindingListener interface provides a mechanism for listeners to be notified of data binding events. The interface looks like this:

      +

      The DataBindingListener interface provides a mechanism for listeners to be notified of data binding events. The interface looks like this:

      @@ -1906,7 +1906,7 @@

      Data Binding Event Listeners

      -

      Any bean in the Spring application context which implements that interface will automatically be registered with the data binder. The DataBindingListenerAdapter class implements the DataBindingListener interface and provides default implementations for all of the methods in the interface so this class is well suited for subclassing so your listener class only needs to provide implementations for the methods your listener is interested in.

      +

      Any bean in the Spring application context which implements that interface will automatically be registered with the data binder. The DataBindingListenerAdapter class implements the DataBindingListener interface and provides default implementations for all of the methods in the interface so this class is well suited for subclassing so your listener class only needs to provide implementations for the methods your listener is interested in.

      @@ -1941,7 +1941,7 @@

      Using The Data Binder Directly

      -

      An instance of the data binder is in the Spring application context with a bean name of grailsWebDataBinder. That bean implements the DataBinder interface. The following code demonstrates using the data binder directly.

      +

      An instance of the data binder is in the Spring application context with a bean name of grailsWebDataBinder. That bean implements the DataBinder interface. The following code demonstrates using the data binder directly.

      grails-app/services/bindingdmeo/WidgetService
      @@ -1963,7 +1963,7 @@

      Using The Data Binder Directly

      -

      See the DataBinder documentation for more information about overloaded versions +

      See the DataBinder documentation for more information about overloaded versions of the bind method.

      @@ -2033,7 +2033,7 @@

      Data Binding and Security Concerns<

      8.1.6 Responding with JSON

      -
      @@ -2076,7 +2076,7 @@

      Using the respond method to ou

      -

      The respond method will then look for an appriopriate Renderer for the object and the calculated media type from the RendererRegistry.

      +

      The respond method will then look for an appriopriate Renderer for the object and the calculated media type from the RendererRegistry.

      Grails includes a number of pre-configured Renderer implementations that will produce default representations of JSON responses for the argument passed to respond. For example going to the /book.json URI will produce JSON such as:

      @@ -2285,7 +2285,7 @@

      Using the render method to outp

      8.1.7 More on JSONBuilder

      -
      @@ -2295,14 +2295,14 @@

      8.1.7 More on JSONBuilder

      The previous section on XML and JSON responses covered simplistic examples of rendering XML and JSON responses. Whilst the XML builder used by Grails is the standard XmlSlurper found in Groovy.

      -

      For JSON, since Grails 3.1, Grails uses Groovy’s StreamingJsonBuilder by default and you can refer to the Groovy documentation and StreamingJsonBuilder API documentation on how to use it.

      +

      For JSON, since Grails 3.1, Grails uses Groovy’s StreamingJsonBuilder by default and you can refer to the Groovy documentation and StreamingJsonBuilder API documentation on how to use it.

      8.1.8 Responding with XML

      -
      @@ -2314,7 +2314,7 @@

      8.1.8 Responding with XML

      8.1.9 Uploading Files

      -
      @@ -2323,7 +2323,7 @@

      8.1.9 Uploading Files

      Programmatic File Uploads

      -

      Grails supports file uploads using Spring’s MultipartHttpServletRequest interface. The first step for file uploading is to create a multipart form like this:

      +

      Grails supports file uploads using Spring’s MultipartHttpServletRequest interface. The first step for file uploading is to create a multipart form like this:

      @@ -2338,7 +2338,7 @@

      Programmatic File Uploads

      The uploadForm tag conveniently adds the enctype="multipart/form-data" attribute to the standard <g:form> tag.

      -

      There are then a number of ways to handle the file upload. One is to work with the Spring MultipartFile instance directly:

      +

      There are then a number of ways to handle the file upload. One is to work with the Spring MultipartFile instance directly:

      @@ -2356,7 +2356,7 @@

      Programmatic File Uploads

      -

      This is convenient for doing transfers to other destinations and manipulating the file directly as you can obtain an InputStream and so on with the MultipartFile interface.

      +

      This is convenient for doing transfers to other destinations and manipulating the file directly as you can obtain an InputStream and so on with the MultipartFile interface.

      @@ -2451,7 +2451,7 @@

      Increase Upload Max File Size

      8.1.10 Command Objects

      -
      @@ -2808,14 +2808,14 @@

      Working with Lists of Command Ob

      8.1.11 Handling Duplicate Form Submissions

      -
      -

      Grails has built-in support for handling duplicate form submissions using the "Synchronizer Token Pattern". To get started you define a token on the form tag:

      +

      Grails has built-in support for handling duplicate form submissions using the "Synchronizer Token Pattern". To get started you define a token on the form tag:

      @@ -2861,7 +2861,7 @@

      8.1.11 Handling Duplicate Form Submissions

      8.1.12 Simple Type Converters

      -
      @@ -2913,7 +2913,7 @@

      Handling Multi Parameters

      8.1.13 Declarative Controller Exception Handling

      -
      diff --git a/snapshot/guide/pages/controllersAndScopes.html b/snapshot/guide/pages/controllersAndScopes.html index 069c42d61fb..e69ac152b98 100644 --- a/snapshot/guide/pages/controllersAndScopes.html +++ b/snapshot/guide/pages/controllersAndScopes.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 8.1.2 Controllers and Scopes 4.0.13 + 8.1.2 Controllers and Scopes 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -135,7 +135,7 @@

      8.1.2 Controllers and Scopes

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -145,7 +145,7 @@

      8.1.2 Controllers and Scopes

      8.1.2 Controllers and Scopes

      -
      @@ -159,13 +159,13 @@

      Available Scopes

      • -

        servletContext - Also known as application scope, this scope lets you share state across the entire web application. The servletContext is an instance of ServletContext

        +

        servletContext - Also known as application scope, this scope lets you share state across the entire web application. The servletContext is an instance of ServletContext

      • -

        session - The session allows associating state with a given user and typically uses cookies to associate a session with a client. The session object is an instance of HttpSession

        +

        session - The session allows associating state with a given user and typically uses cookies to associate a session with a client. The session object is an instance of HttpSession

      • -

        request - The request object allows the storage of objects for the current request only. The request object is an instance of HttpServletRequest

        +

        request - The request object allows the storage of objects for the current request only. The request object is an instance of HttpServletRequest

      • params - Mutable map of incoming request query string or POST parameters

        @@ -179,7 +179,7 @@

        Available Scopes

        Accessing Scopes

        -

        Scopes can be accessed using the variable names above in combination with Groovy’s array index operator, even on classes provided by the Servlet API such as the HttpServletRequest:

        +

        Scopes can be accessed using the variable names above in combination with Groovy’s array index operator, even on classes provided by the Servlet API such as the HttpServletRequest:

        diff --git a/snapshot/guide/pages/conventionOverConfiguration.html b/snapshot/guide/pages/conventionOverConfiguration.html index ce55b4af390..b7ddff64a9f 100644 --- a/snapshot/guide/pages/conventionOverConfiguration.html +++ b/snapshot/guide/pages/conventionOverConfiguration.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 2.7 Convention over Configuration 4.0.13 + 2.7 Convention over Configuration 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -128,14 +128,14 @@ (Quick Reference) - +

        2.7 Convention over Configuration

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        2.7 Convention over Configuration

        2.7 Convention over Configuration

        -
        @@ -207,7 +207,7 @@

        2.7 Convention over Configuration

        - +
        diff --git a/snapshot/guide/pages/cors.html b/snapshot/guide/pages/cors.html index c2380d51695..118f0042f4c 100644 --- a/snapshot/guide/pages/cors.html +++ b/snapshot/guide/pages/cors.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 8.4 CORS 4.0.13 + 8.4 CORS 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        8.4 CORS

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        8.4 CORS

        8.4 CORS

        -
        @@ -196,12 +196,12 @@

        8.4 CORS

        allowCredentials

        -

        true

        +

        false

        -

        Some of these settings come directly from Spring Boot and can change in future versions. See Spring CORS Configuration Documentation

        +

        Some of these settings come directly from Spring Boot and can change in future versions. See Spring CORS Configuration Documentation

        All of those settings can be easily overridden.

        @@ -231,12 +231,15 @@

        8.4 CORS

        allowedHeaders: - Content-Type mappings: - /api/**: + '[/api/**]': allowedOrigins: - http://localhost:5000 # Other configurations not specified default to the global config
        +
        +

        Note that the mapping key must be made with bracket notation (see https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-Configuration-Binding#map-based-binding), which is a breaking change between Spring Boot 1.5 (Grails 3) and Spring Boot 2 (Grails 4).

        +
        @@ -280,7 +283,7 @@

        8.4 CORS

        - +

        allowCredentials

        true

        false

        @@ -294,7 +297,7 @@

        8.4 CORS

        cors: enabled: true mappings: - /api/**: inherit + '[/api/**]': inherit
        diff --git a/snapshot/guide/pages/creatingAnApplication.html b/snapshot/guide/pages/creatingAnApplication.html index 0e4c1966327..dca51f09673 100644 --- a/snapshot/guide/pages/creatingAnApplication.html +++ b/snapshot/guide/pages/creatingAnApplication.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 2.3 Creating an Application 4.0.13 + 2.3 Creating an Application 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -128,14 +128,14 @@ (Quick Reference) - +

        2.3 Creating an Application

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        2.3 Creating an Application

        2.3 Creating an Application

        -
        @@ -181,7 +181,7 @@

        2.3 Creating an Application

        - +
        diff --git a/snapshot/guide/pages/creatingAndInstallingPlugins.html b/snapshot/guide/pages/creatingAndInstallingPlugins.html index 7eb35cb676d..0e3120ca573 100644 --- a/snapshot/guide/pages/creatingAndInstallingPlugins.html +++ b/snapshot/guide/pages/creatingAndInstallingPlugins.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 18.1 Creating and Installing Plugins 4.0.13 + 18.1 Creating and Installing Plugins 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        18.1 Creating and Installing Plugins

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        18.1 Creating and Installing Plugins

        18.1 Creating and Installing Plugins

        -
        @@ -283,6 +283,54 @@

        Creating Plugins

        +

        Plugin Configuration

        +
        +

        Instead of directly accessing Grails configuration as grailsApplication.config.mail.hostName, use a Spring Boot configuration bean (or a POJO) annotated with ConfigurationProperties annotation. Here is an example plugin configuration:

        +
        +
        +

        ./src/main/groovy/example/MailPluginConfiguration.groovy

        +
        +
        +
        +
        package example
        +
        +import org.springframework.boot.context.properties.ConfigurationProperties
        +
        +@ConfigurationProperties(prefix = "mail")
        +class MailPluginConfiguration {
        +
        +    String hostName
        +    int port
        +    String from
        +}
        +
        +
        +
        +

        You can inject the MailPluginConfiguration bean into your bean like any other bean.

        +
        +
        +

        ./grails-app/services/example/MailService.groovy

        +
        +
        +
        +
        package example
        +
        +class MailService {
        +
        +    MainPluginConfiguration mailPluginConfiguration
        +
        +    void sendMail() {
        +
        +    }
        +
        +}
        +
        +
        +
        +

        Please read the Spring Boot Externalized Configuration section for more information.

        +
        +
        +

        Installing Local Plugins

        To make your plugin available for use in a Grails application run the install command:

        diff --git a/snapshot/guide/pages/creatingArtefacts.html b/snapshot/guide/pages/creatingArtefacts.html index 787065d40c8..a0a12937260 100644 --- a/snapshot/guide/pages/creatingArtefacts.html +++ b/snapshot/guide/pages/creatingArtefacts.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 2.12 Creating Artefacts 4.0.13 + 2.12 Creating Artefacts 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -128,14 +128,14 @@ (Quick Reference) - +

        2.12 Creating Artefacts

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        2.12 Creating Artefacts

        2.12 Creating Artefacts

        -
        @@ -195,7 +195,7 @@

        2.12 Creating Artefacts

        - +
        diff --git a/snapshot/guide/pages/creatingCustomCommands.html b/snapshot/guide/pages/creatingCustomCommands.html index d554a825779..04694419d4f 100644 --- a/snapshot/guide/pages/creatingCustomCommands.html +++ b/snapshot/guide/pages/creatingCustomCommands.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 5.3 Creating Custom Commands 4.0.13 + 5.3 Creating Custom Commands 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        5.3 Creating Custom Commands

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        5.3 Creating Custom Commands

        5.3 Creating Custom Commands

        -
        diff --git a/snapshot/guide/pages/creatingCustomScripts.html b/snapshot/guide/pages/creatingCustomScripts.html index d3c51a03b1c..b6389e63d02 100644 --- a/snapshot/guide/pages/creatingCustomScripts.html +++ b/snapshot/guide/pages/creatingCustomScripts.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 5.2 Creating Custom Scripts 4.0.13 + 5.2 Creating Custom Scripts 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        5.2 Creating Custom Scripts

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        5.2 Creating Custom Scripts

        5.2 Creating Custom Scripts

        -
        @@ -207,7 +207,7 @@

        Template Generation

        Plugins and applications that need to define template generation tasks can do so using scripts. A example of this is the Scaffolding plugin which defines the generate-all and generate-controllers commands.

        -

        Every Grails script implements the TemplateRenderer interface which makes it trivial to render templates to the users project workspace.

        +

        Every Grails script implements the TemplateRenderer interface which makes it trivial to render templates to the users project workspace.

        The following is an example of the create-script command written in Groovy:

        @@ -254,7 +254,7 @@

        Template Generation

        The "model"

        -

        Executing the model method with a Class/String/File/Resource will return an instance of Model. The model contains several properties that can help you generate code.

        +

        Executing the model method with a Class/String/File/Resource will return an instance of Model. The model contains several properties that can help you generate code.

        Example:

        @@ -278,7 +278,7 @@

        The "model"

        Working with files

        -

        All scripts have access to methods on the FileSystemInteraction class. It contains helpful methods to copy, delete, and create files.

        +

        All scripts have access to methods on the FileSystemInteraction class. It contains helpful methods to copy, delete, and create files.

        diff --git a/snapshot/guide/pages/creatingProfiles.html b/snapshot/guide/pages/creatingProfiles.html index a2ddd2ff3d2..a6b8379a307 100644 --- a/snapshot/guide/pages/creatingProfiles.html +++ b/snapshot/guide/pages/creatingProfiles.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 6.1 Creating Profiles 4.0.13 + 6.1 Creating Profiles 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        6.1 Creating Profiles

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        6.1 Creating Profiles

        6.1 Creating Profiles

        -
        @@ -218,8 +218,13 @@

        6.1 Creating Profiles

        excludes: - org.grails.grails-core dependencies: - compile: - - "org.mycompany:myplugin:1.0.1" + - scope: compile + coords: "org.mycompany:myplugin:1.0.1" + - scope: testCompile + coords: org.spockframework:spock-core + excludes: + - group: org.codehaus.groovy + module: groovy-all
        diff --git a/snapshot/guide/pages/customArtefacts.html b/snapshot/guide/pages/customArtefacts.html index d56e5557552..d870217661e 100644 --- a/snapshot/guide/pages/customArtefacts.html +++ b/snapshot/guide/pages/customArtefacts.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 18.10.2 Adding Your Own Artefact Types 4.0.13 + 18.10.2 Adding Your Own Artefact Types 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        18.10.2 Adding Your Own Artefact Types

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        18.10.2 Adding Your Own Artefact Types

        18.10.2 Adding Your Own Artefact Types

        -
        @@ -166,10 +166,10 @@

        18.10.2 Adding Your Own Artefact Types

        The artefacts list can contain either handler classes (as above) or instances of handlers.

        -

        So, what does an artefact handler look like? Well, put simply it is an implementation of the ArtefactHandler interface. To make life a bit easier, there is a skeleton implementation that can readily be extended: ArtefactHandlerAdapter.

        +

        So, what does an artefact handler look like? Well, put simply it is an implementation of the ArtefactHandler interface. To make life a bit easier, there is a skeleton implementation that can readily be extended: ArtefactHandlerAdapter.

        -

        In addition to the handler itself, every new artefact needs a corresponding wrapper class that implements GrailsClass. Again, skeleton implementations are available such as AbstractInjectableGrailsClass, which is particularly useful as it turns your artefact into a Spring bean that is auto-wired, just like controllers and services.

        +

        In addition to the handler itself, every new artefact needs a corresponding wrapper class that implements GrailsClass. Again, skeleton implementations are available such as AbstractInjectableGrailsClass, which is particularly useful as it turns your artefact into a Spring bean that is auto-wired, just like controllers and services.

        The best way to understand how both the handler and wrapper classes work is to look at the Quartz plugin:

        diff --git a/snapshot/guide/pages/customRenderers.html b/snapshot/guide/pages/customRenderers.html index 67a9504850a..ba767d4ecad 100644 --- a/snapshot/guide/pages/customRenderers.html +++ b/snapshot/guide/pages/customRenderers.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 10.11.2 Implementing a Custom Renderer 4.0.13 + 10.11.2 Implementing a Custom Renderer 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        10.11.2 Implementing a Custom Renderer

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        10.11.2 Implementing a Custom Renderer

        10.11.2 Implementing a Custom Renderer

        -
        diff --git a/snapshot/guide/pages/customizing.html b/snapshot/guide/pages/customizing.html index daddadfcf5e..cf45e8c8b80 100644 --- a/snapshot/guide/pages/customizing.html +++ b/snapshot/guide/pages/customizing.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 4.2.2 Customizing the Application Class 4.0.13 + 4.2.2 Customizing the Application Class 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -122,7 +122,7 @@
        - + (Quick Reference) @@ -135,7 +135,7 @@

        4.2.2 Customizing the Application Class

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        4.2.2 Customizing the Application Class

        4.2.2 Customizing the Application Class

        -
        @@ -175,7 +175,7 @@

        Customizing Scanning

        Registering Additional Beans

        -

        The Application class can also be used as a source for Spring bean definitions, simply define a method annotated with the Bean and the returned object will become a Spring bean. The name of the method is used as the bean name:

        +

        The Application class can also be used as a source for Spring bean definitions, simply define a method annotated with the Bean and the returned object will become a Spring bean. The name of the method is used as the bean name:

        @@ -194,7 +194,7 @@

        Registering Additional Beans

        - + diff --git a/snapshot/guide/pages/customizingUrlFormat.html b/snapshot/guide/pages/customizingUrlFormat.html index 54fea41c440..885a5c625da 100644 --- a/snapshot/guide/pages/customizingUrlFormat.html +++ b/snapshot/guide/pages/customizingUrlFormat.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 8.3.12 Customizing URL Formats 4.0.13 + 8.3.12 Customizing URL Formats 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        8.3.12 Customizing URL Formats

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        8.3.12 Customizing URL Formats

        8.3.12 Customizing URL Formats

        -
        @@ -161,7 +161,7 @@

        8.3.12 Customizing URL Formats

        -

        Arbitrary strategies may be plugged in by providing a class which implements the UrlConverter interface and adding an instance of that class to the Spring application context with the bean name of grails.web.UrlConverter.BEAN_NAME. If Grails finds a bean in the context with that name, it will be used as the default converter and there is no need to assign a value to the grails.web.url.converter config property.

        +

        Arbitrary strategies may be plugged in by providing a class which implements the UrlConverter interface and adding an instance of that class to the Spring application context with the bean name of grails.web.UrlConverter.BEAN_NAME. If Grails finds a bean in the context with that name, it will be used as the default converter and there is no need to assign a value to the grails.web.url.converter config property.

        src/main/groovy/com/myapplication/MyUrlConverterImpl.groovy
        diff --git a/snapshot/guide/pages/dataBinding.html b/snapshot/guide/pages/dataBinding.html index 16e7f8dbb9d..2e87ae0c3c9 100644 --- a/snapshot/guide/pages/dataBinding.html +++ b/snapshot/guide/pages/dataBinding.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 8.1.5 Data Binding 4.0.13 + 8.1.5 Data Binding 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        8.1.5 Data Binding

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        8.1.5 Data Binding

        8.1.5 Data Binding

        -
        @@ -718,7 +718,7 @@

        Data binding and type conversi

        The BindUsing Annotation

        -

        The BindUsing annotation may be used to define a custom binding mechanism for a particular field in a class. Any time data binding is being applied to the field the closure value of the annotation will be invoked with 2 arguments. The first argument is the object that data binding is being applied to and the second argument is DataBindingSource which is the data source for the data binding. The value returned from the closure will be bound to the property. The following example would result in the upper case version of the name value in the source being applied to the name field during data binding.

        +

        The BindUsing annotation may be used to define a custom binding mechanism for a particular field in a class. Any time data binding is being applied to the field the closure value of the annotation will be invoked with 2 arguments. The first argument is the object that data binding is being applied to and the second argument is DataBindingSource which is the data source for the data binding. The value returned from the closure will be bound to the property. The following example would result in the upper case version of the name value in the source being applied to the name field during data binding.

        @@ -751,7 +751,7 @@

        The BindUsing Annotation

        -

        The BindUsing annotation may be used to define a custom binding mechanism for all of the fields on a particular class. When the annotation is applied to a class, the value assigned to the annotation should be a class which implements the BindingHelper interface. An instance of that class will be used any time a value is bound to a property in the class that this annotation has been applied to.

        +

        The BindUsing annotation may be used to define a custom binding mechanism for all of the fields on a particular class. When the annotation is applied to a class, the value assigned to the annotation should be a class which implements the BindingHelper interface. An instance of that class will be used any time a value is bound to a property in the class that this annotation has been applied to.

        @@ -766,8 +766,8 @@

        The BindUsing Annotation

        The BindInitializer Annotation

        -

        The BindInitializer annotation may be used to initialize an associated field in a class if it is undefined. -Unlike the BindUsing annotation, databinding will continue binding all nested properties on this association.

        +

        The BindInitializer annotation may be used to initialize an associated field in a class if it is undefined. +Unlike the BindUsing annotation, databinding will continue binding all nested properties on this association.

        @@ -805,7 +805,7 @@

        The BindInitializer Annotation

        Custom Data Converters

        -

        The binder will do a lot of type conversion automatically. Some applications may want to define their own mechanism for converting values and a simple way to do this is to write a class which implements ValueConverter and register an instance of that class as a bean in the Spring application context.

        +

        The binder will do a lot of type conversion automatically. Some applications may want to define their own mechanism for converting values and a simple way to do this is to write a class which implements ValueConverter and register an instance of that class as a bean in the Spring application context.

        @@ -869,7 +869,7 @@

        Custom Data Converters

        Date Formats For Data Binding

        -

        A custom date format may be specified to be used when binding a String to a Date value by applying the BindingFormat annotation to a Date field.

        +

        A custom date format may be specified to be used when binding a String to a Date value by applying the BindingFormat annotation to a Date field.

        @@ -916,7 +916,7 @@

        Date Formats For Data Binding

        Custom Formatted Converters

        -

        You may supply your own handler for the BindingFormat annotation by writing a class which implements the FormattedValueConverter interface and registering an instance of that class as a bean in the Spring application context. Below is an example of a trivial custom String formatter that might convert the case of a String based on the value assigned to the BindingFormat annotation.

        +

        You may supply your own handler for the BindingFormat annotation by writing a class which implements the FormattedValueConverter interface and registering an instance of that class as a bean in the Spring application context. Below is an example of a trivial custom String formatter that might convert the case of a String based on the value assigned to the BindingFormat annotation.

        @@ -1033,7 +1033,7 @@

        Structured Data Binding Editors

        A Gadget has 2 Shape fields. A Shape has an area property. It may be that the application wants to accept request parameters like width and height and use those to calculate the area of a Shape at binding time. A structured binding editor is well suited for that.

        -

        The way to register a structured editor with the data binding process is to add an instance of the grails.databinding.TypedStructuredBindingEditor interface to the Spring application context. The easiest way to implement the TypedStructuredBindingEditor interface is to extend the org.grails.databinding.converters.AbstractStructuredBindingEditor abstract class and override the getPropertyValue method as shown below:

        +

        The way to register a structured editor with the data binding process is to add an instance of the grails.databinding.TypedStructuredBindingEditor interface to the Spring application context. The easiest way to implement the TypedStructuredBindingEditor interface is to extend the org.grails.databinding.converters.AbstractStructuredBindingEditor abstract class and override the getPropertyValue method as shown below:

        src/main/groovy/databinding/converters/StructuredShapeEditor.groovy
        @@ -1101,7 +1101,7 @@

        Structured Data Binding Editors

        Data Binding Event Listeners

        -

        The DataBindingListener interface provides a mechanism for listeners to be notified of data binding events. The interface looks like this:

        +

        The DataBindingListener interface provides a mechanism for listeners to be notified of data binding events. The interface looks like this:

        @@ -1171,7 +1171,7 @@

        Data Binding Event Listeners

        -

        Any bean in the Spring application context which implements that interface will automatically be registered with the data binder. The DataBindingListenerAdapter class implements the DataBindingListener interface and provides default implementations for all of the methods in the interface so this class is well suited for subclassing so your listener class only needs to provide implementations for the methods your listener is interested in.

        +

        Any bean in the Spring application context which implements that interface will automatically be registered with the data binder. The DataBindingListenerAdapter class implements the DataBindingListener interface and provides default implementations for all of the methods in the interface so this class is well suited for subclassing so your listener class only needs to provide implementations for the methods your listener is interested in.

        @@ -1206,7 +1206,7 @@

        Using The Data Binder Directly

        -

        An instance of the data binder is in the Spring application context with a bean name of grailsWebDataBinder. That bean implements the DataBinder interface. The following code demonstrates using the data binder directly.

        +

        An instance of the data binder is in the Spring application context with a bean name of grailsWebDataBinder. That bean implements the DataBinder interface. The following code demonstrates using the data binder directly.

        grails-app/services/bindingdmeo/WidgetService
        @@ -1228,7 +1228,7 @@

        Using The Data Binder Directly

        -

        See the DataBinder documentation for more information about overloaded versions +

        See the DataBinder documentation for more information about overloaded versions of the bind method.

        diff --git a/snapshot/guide/pages/dataSource.html b/snapshot/guide/pages/dataSource.html index f309a3911b5..3b4c539e6dc 100644 --- a/snapshot/guide/pages/dataSource.html +++ b/snapshot/guide/pages/dataSource.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 4.4 The DataSource 4.0.13 + 4.4 The DataSource 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -122,7 +122,7 @@
        - + (Quick Reference) @@ -135,7 +135,7 @@

        4.4 The DataSource

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -165,7 +165,7 @@

        Table of Contents

        4.4 The DataSource

        -
        @@ -408,7 +408,7 @@

        More on dbCreate

        4.4.1 DataSources and Environments

        -
        @@ -444,7 +444,7 @@

        4.4.1 DataSources and Environments

        4.4.2 Automatic Database Migration

        -
        @@ -496,7 +496,7 @@

        4.4.2 Automatic Database Migration

        4.4.3 Transaction-aware DataSource Proxy

        -
        @@ -513,7 +513,7 @@

        4.4.3 Transaction-aware DataSource Prox

        4.4.4 Database Console

        -
        @@ -523,14 +523,14 @@

        4.4.4 Database Console

        The H2 database console is a convenient feature of H2 that provides a web-based interface to any database that you have a JDBC driver for, and it’s very useful to view the database you’re developing against. It’s especially useful when running against an in-memory database.

        -

        You can access the console by navigating to http://localhost:8080/h2-console in a browser. See the Spring Boot H2 Console Documentation for more information on the options available.

        +

        You can access the console by navigating to http://localhost:8080/h2-console in a browser. See the Spring Boot H2 Console Documentation for more information on the options available.

        4.4.5 Multiple Datasources

        -
        @@ -834,7 +834,7 @@

        Transactions across multiple

        The BE1PC implementation was added in Grails 2.3.6. . Before this change additional datasources didn’t take part in transactions initiated in Grails. The transactions in additional datasources were basically in auto commit mode. In some cases this might be the wanted behavior. One reason might be performance: on the start of each new transaction, the BE1PC transaction manager creates a new transaction to each datasource. It’s possible to leave an additional datasource out of the BE1PC transaction manager by setting transactional = false in the respective configuration block of the additional dataSource. Datasources with readOnly = true will also be left out of the chained transaction manager (since 2.3.7).

        -

        By default, the BE1PC implementation will add all beans implementing the Spring PlatformTransactionManager interface to the chained BE1PC transaction manager. For example, a possible JMSTransactionManager bean in the Grails application context would be added to the Grails BE1PC transaction manager’s chain of transaction managers.

        +

        By default, the BE1PC implementation will add all beans implementing the Spring PlatformTransactionManager interface to the chained BE1PC transaction manager. For example, a possible JMSTransactionManager bean in the Grails application context would be added to the Grails BE1PC transaction manager’s chain of transaction managers.

        You can exclude transaction manager beans from the BE1PC implementation with this configuration option:

        @@ -858,14 +858,14 @@

        XA and Two-phase Commit

        When the Best Efforts 1PC pattern isn’t suitable for handling transactions across multiple transactional resources (not only datasources), there are several options available for adding XA/2PC support to Grails applications.

        -

        The Spring transactions documentation contains information about integrating the JTA/XA transaction manager of different application servers. In this case, you can configure a bean with the name transactionManager manually in resources.groovy or resources.xml file.

        +

        The Spring transactions documentation contains information about integrating the JTA/XA transaction manager of different application servers. In this case, you can configure a bean with the name transactionManager manually in resources.groovy or resources.xml file.

        - + diff --git a/snapshot/guide/pages/dataSourcesAndEnvironments.html b/snapshot/guide/pages/dataSourcesAndEnvironments.html index d2e5df31ecd..6bf50d1aa6a 100644 --- a/snapshot/guide/pages/dataSourcesAndEnvironments.html +++ b/snapshot/guide/pages/dataSourcesAndEnvironments.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 4.4.1 DataSources and Environments 4.0.13 + 4.4.1 DataSources and Environments 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -122,7 +122,7 @@
        - + (Quick Reference) @@ -135,7 +135,7 @@

        4.4.1 DataSources and Environments

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        4.4.1 DataSources and Environments

        4.4.1 DataSources and Environments

        -
        @@ -180,7 +180,7 @@

        4.4.1 DataSources and Environments

        - + diff --git a/snapshot/guide/pages/databaseConsole.html b/snapshot/guide/pages/databaseConsole.html index 71daa229ce9..0bf27851057 100644 --- a/snapshot/guide/pages/databaseConsole.html +++ b/snapshot/guide/pages/databaseConsole.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 4.4.4 Database Console 4.0.13 + 4.4.4 Database Console 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -122,7 +122,7 @@
        - + (Quick Reference) @@ -135,7 +135,7 @@

        4.4.4 Database Console

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        4.4.4 Database Console

        4.4.4 Database Console

        -
        @@ -155,13 +155,13 @@

        4.4.4 Database Console

        The H2 database console is a convenient feature of H2 that provides a web-based interface to any database that you have a JDBC driver for, and it’s very useful to view the database you’re developing against. It’s especially useful when running against an in-memory database.

        -

        You can access the console by navigating to http://localhost:8080/h2-console in a browser. See the Spring Boot H2 Console Documentation for more information on the options available.

        +

        You can access the console by navigating to http://localhost:8080/h2-console in a browser. See the Spring Boot H2 Console Documentation for more information on the options available.

        - + diff --git a/snapshot/guide/pages/declarativeTransactions.html b/snapshot/guide/pages/declarativeTransactions.html index c3644078753..f9f320af978 100644 --- a/snapshot/guide/pages/declarativeTransactions.html +++ b/snapshot/guide/pages/declarativeTransactions.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 13.1 Declarative Transactions 4.0.13 + 13.1 Declarative Transactions 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        13.1 Declarative Transactions

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -156,7 +156,7 @@

        Table of Contents

        13.1 Declarative Transactions

        -
        @@ -181,7 +181,7 @@

        Declarative Transactions

        -

        The result is that all methods are wrapped in a transaction and automatic rollback occurs if a method throws an exception (both Checked or Runtime exceptions) or an Error. The propagation level of the transaction is by default set to PROPAGATION_REQUIRED.

        +

        The result is that all methods are wrapped in a transaction and automatic rollback occurs if a method throws an exception (both Checked or Runtime exceptions) or an Error. The propagation level of the transaction is by default set to PROPAGATION_REQUIRED.

        @@ -335,7 +335,7 @@

        Custom Transaction Configuration

        Transaction status

        -

        An instance of TransactionStatus is available by default in Grails transactional service methods.

        +

        An instance of TransactionStatus is available by default in Grails transactional service methods.

        Example:

        @@ -360,7 +360,7 @@

        Transaction status

        13.1.1 Transactions and Multi-DataSources

        -
        @@ -430,7 +430,7 @@

        13.1.1 Transactions and Multi-DataSources13.1.2 Transactions Rollback and the Session

        -
        diff --git a/snapshot/guide/pages/defaultRenderers.html b/snapshot/guide/pages/defaultRenderers.html index 09fbc65167e..3346a616f3f 100644 --- a/snapshot/guide/pages/defaultRenderers.html +++ b/snapshot/guide/pages/defaultRenderers.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 10.11.1 Customizing the Default Renderers 4.0.13 + 10.11.1 Customizing the Default Renderers 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        10.11.1 Customizing the Default Renderers

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        10.11.1 Customizing the Default Renderers

        10.11.1 Customizing the Default Renderers

        -
        diff --git a/snapshot/guide/pages/definingInterceptors.html b/snapshot/guide/pages/definingInterceptors.html index d15058a97e2..365dd5d4278 100644 --- a/snapshot/guide/pages/definingInterceptors.html +++ b/snapshot/guide/pages/definingInterceptors.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 8.5.1 Defining Interceptors 4.0.13 + 8.5.1 Defining Interceptors 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        8.5.1 Defining Interceptors

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        8.5.1 Defining Interceptors

        8.5.1 Defining Interceptors

        -
        @@ -155,7 +155,7 @@

        8.5.1 Defining Interceptors

        By default interceptors will match the controllers with the same name. For example if you have an interceptor called BookInterceptor then all requests to the actions of the BookController will trigger the interceptor.

        -

        An Interceptor implements the Interceptor trait and provides 3 methods that can be used to intercept requests:

        +

        An Interceptor implements the Interceptor trait and provides 3 methods that can be used to intercept requests:

        @@ -195,7 +195,7 @@

        8.5.1 Defining Interceptors

        -

        The afterView method is executed after view rendering completes. If an exception occurs, the exception is available using the throwable property of the Interceptor trait.

        +

        The afterView method is executed after view rendering completes. If an exception occurs, the exception is available using the throwable property of the Interceptor trait.

        diff --git a/snapshot/guide/pages/dependencyInjectionServices.html b/snapshot/guide/pages/dependencyInjectionServices.html index 51576713102..bd8b6761559 100644 --- a/snapshot/guide/pages/dependencyInjectionServices.html +++ b/snapshot/guide/pages/dependencyInjectionServices.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 13.3 Dependency Injection and Services 4.0.13 + 13.3 Dependency Injection and Services 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        13.3 Dependency Injection and Services

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        13.3 Dependency Injection and Services

        13.3 Dependency Injection and Services

        -
        diff --git a/snapshot/guide/pages/dependencyResolution.html b/snapshot/guide/pages/dependencyResolution.html index 8a033ce2f1a..e046a78a6ba 100644 --- a/snapshot/guide/pages/dependencyResolution.html +++ b/snapshot/guide/pages/dependencyResolution.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 4.6 Dependency Resolution 4.0.13 + 4.6 Dependency Resolution 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -122,7 +122,7 @@
        - + (Quick Reference) @@ -135,7 +135,7 @@

        4.6 Dependency Resolution

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        4.6 Dependency Resolution

        4.6 Dependency Resolution

        -
        @@ -158,7 +158,7 @@

        4.6 Dependency Resolution

        - + diff --git a/snapshot/guide/pages/dependencyUpgrades.html b/snapshot/guide/pages/dependencyUpgrades.html index 4940cc7151d..cf2c9f6d92d 100644 --- a/snapshot/guide/pages/dependencyUpgrades.html +++ b/snapshot/guide/pages/dependencyUpgrades.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 1.1.1 Updated Dependencies 4.0.13 + 1.1.1 Updated Dependencies 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -133,7 +133,7 @@

        1.1.1 Updated Dependencies

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -143,34 +143,43 @@

        1.1.1 Updated Dependencies

        1.1.1 Updated Dependencies

        -
        -

        Grails 4.0.13 ships with the following dependency upgrades:

        +

        Grails 5.0.1 ships with the following dependency upgrades:

        • -

          Groovy 2.5.14

          +

          Groovy 3.0.7

        • -

          GORM 7 and Hibernate 5.4 (now the default version of Hibernate for new applications)

          +

          Micronaut 3

        • -

          Spring Framework 5.1.20

          +

          Micronaut for Spring 4

        • -

          Spring Boot 2.1.18

          +

          GORM 7.1.0

        • -

          Gradle 5.6.4

          +

          Spring Framework 5.3

        • -

          Spock 1.3

          +

          Spring Boot 2.5

          +
        • +
        • +

          Gradle 7.2

          +
        • +
        • +

          Spock 2.0-groovy-3.0

          +
        • +
        • +

          Grails Testing Support 2.2.0

        diff --git a/snapshot/guide/pages/deployingAnApplication.html b/snapshot/guide/pages/deployingAnApplication.html index cc1b3c54e99..47b6f440a2b 100644 --- a/snapshot/guide/pages/deployingAnApplication.html +++ b/snapshot/guide/pages/deployingAnApplication.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 2.10 Deploying an Application 4.0.13 + 2.10 Deploying an Application 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -128,14 +128,14 @@ (Quick Reference) - +

        2.10 Deploying an Application

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        2.10 Deploying an Application

        2.10 Deploying an Application

        -
        @@ -182,6 +182,18 @@

        2.10 Deploying an Application

        ext['tomcat.version'] = '7.0.59'
        +
        +
        + + + + +
        + + +Grails 5 contains dependencies that require javax.el-api:3.0 (eg.: datastore-gorm:7.x, spring-boot:2.x) which is only supported starting from Tomcat 8.x+, based on the tomcat version table! +
        +

        Unlike most scripts which default to the development environment unless overridden, the war command runs in the production environment by default. You can override this like any script by specifying the environment name, for example:

        @@ -204,7 +216,7 @@

        2.10 Deploying an Application

        -
        -server -Xmx768M -XX:MaxPermSize=256m
        +
        -server -Xmx768M
        @@ -213,7 +225,7 @@

        2.10 Deploying an Application

        - +
        diff --git a/snapshot/guide/pages/deploymentContainer.html b/snapshot/guide/pages/deploymentContainer.html index 255bad001f9..493fe2a3974 100644 --- a/snapshot/guide/pages/deploymentContainer.html +++ b/snapshot/guide/pages/deploymentContainer.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 21.2 Container Deployment (e.g. Tomcat) 4.0.13 + 21.2 Container Deployment (e.g. Tomcat) 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        21.2 Container Deployment (e.g. Tomcat)

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        21.2 Container Deployment (e.g. Tomcat)

        21.2 Container Deployment (e.g. Tomcat)

        -
        diff --git a/snapshot/guide/pages/deploymentStandalone.html b/snapshot/guide/pages/deploymentStandalone.html index 31c4e27ef4f..5612b3d1470 100644 --- a/snapshot/guide/pages/deploymentStandalone.html +++ b/snapshot/guide/pages/deploymentStandalone.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 21.1 Standalone 4.0.13 + 21.1 Standalone 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        21.1 Standalone

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        21.1 Standalone

        21.1 Standalone

        -
        diff --git a/snapshot/guide/pages/deploymentTasks.html b/snapshot/guide/pages/deploymentTasks.html index 05179f45019..a397f58f9ad 100644 --- a/snapshot/guide/pages/deploymentTasks.html +++ b/snapshot/guide/pages/deploymentTasks.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 21.3 Deployment Configuration Tasks 4.0.13 + 21.3 Deployment Configuration Tasks 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        21.3 Deployment Configuration Tasks

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        21.3 Deployment Configuration Tasks

        21.3 Deployment Configuration Tasks

        -
        @@ -189,10 +189,13 @@

        Settin diff --git a/snapshot/guide/pages/domainResources.html b/snapshot/guide/pages/domainResources.html index 771bb548702..c468dad3122 100644 --- a/snapshot/guide/pages/domainResources.html +++ b/snapshot/guide/pages/domainResources.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 10.1 Domain classes as REST resources 4.0.13 + 10.1 Domain classes as REST resources 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        10.1 Domain classes as REST resources

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        10.1 Domain classes as REST resources

        10.1 Domain classes as REST resources

        -
        diff --git a/snapshot/guide/pages/downloadingAndInstalling.html b/snapshot/guide/pages/downloadingAndInstalling.html index f1e4b0ba589..34168abdc8e 100644 --- a/snapshot/guide/pages/downloadingAndInstalling.html +++ b/snapshot/guide/pages/downloadingAndInstalling.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 2.2 Downloading and Installing 4.0.13 + 2.2 Downloading and Installing 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -128,14 +128,14 @@ (Quick Reference) - +

        2.2 Downloading and Installing

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        2.2 Downloading and Installing

        2.2 Downloading and Installing

        -
        @@ -177,7 +177,7 @@

        Install with SDKMAN

        -
        sdk install grails 4.0.13
        +
        sdk install grails 5.0.1
        @@ -213,12 +213,20 @@

        Unix/Linux

      -
      -

      ===Windows -** Copy the path to the bin directory inside the grails folder you have downloaded, for example, ---- -C:/path_to_grails/bin ----

      +
      +
      +

      Windows

      +
      +
        +
      • +

        Copy the path to the bin directory inside the grails folder you have downloaded, for example,

        +
      • +
      +
      +
      +
      +
      C:/path_to_grails/bin
      +
        @@ -227,11 +235,11 @@

        Unix/Linux

      -
      -
      -

      Start + R

      +
      +
      +
      Start + R
      +
      -
      • @@ -247,7 +255,7 @@

        Unix/Linux

      -
      Grails version: 4.0.13
      +
      Grails version: 5.0.1
      @@ -259,7 +267,7 @@

      Unix/Linux

      - +
      diff --git a/snapshot/guide/pages/embeddedVariables.html b/snapshot/guide/pages/embeddedVariables.html index 0f7c8c9509e..0f7bf72c723 100644 --- a/snapshot/guide/pages/embeddedVariables.html +++ b/snapshot/guide/pages/embeddedVariables.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 8.3.4 Embedded Variables 4.0.13 + 8.3.4 Embedded Variables 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -135,7 +135,7 @@

      8.3.4 Embedded Variables

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -145,7 +145,7 @@

      8.3.4 Embedded Variables

      8.3.4 Embedded Variables

      -
      diff --git a/snapshot/guide/pages/environments.html b/snapshot/guide/pages/environments.html index c0dd6603544..e476aef01db 100644 --- a/snapshot/guide/pages/environments.html +++ b/snapshot/guide/pages/environments.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 4.3 Environments 4.0.13 + 4.3 Environments 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -122,7 +122,7 @@
      - + (Quick Reference) @@ -135,7 +135,7 @@

      4.3 Environments

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -145,7 +145,7 @@

      4.3 Environments

      4.3 Environments

      -
      @@ -248,7 +248,7 @@

      Packaging and Running

      Programmatic Environment Detection

      -

      Within your code, such as in a Gant script or a bootstrap class you can detect the environment using the Environment class:

      +

      Within your code, such as in a Gant script or a bootstrap class you can detect the environment using the Environment class:

      @@ -310,7 +310,7 @@

      Generic Per Environment Execution

      - + diff --git a/snapshot/guide/pages/evaluatingConventions.html b/snapshot/guide/pages/evaluatingConventions.html index 3cb72a4a058..b137248e195 100644 --- a/snapshot/guide/pages/evaluatingConventions.html +++ b/snapshot/guide/pages/evaluatingConventions.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 18.4 Evaluating Conventions 4.0.13 + 18.4 Evaluating Conventions 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -135,7 +135,7 @@

      18.4 Evaluating Conventions

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -145,20 +145,20 @@

      18.4 Evaluating Conventions

      18.4 Evaluating Conventions

      -
      -

      Before looking at providing runtime configuration based on conventions you first need to understand how to evaluate those conventions from a plugin. Every plugin has an implicit application variable which is an instance of the GrailsApplication interface.

      +

      Before looking at providing runtime configuration based on conventions you first need to understand how to evaluate those conventions from a plugin. Every plugin has an implicit application variable which is an instance of the GrailsApplication interface.

      The GrailsApplication interface provides methods to evaluate the conventions within the project and internally stores references to all artifact classes within your application.

      -

      Artifacts implement the GrailsClass interface, which represents a Grails resource such as a controller or a tag library. For example to get all GrailsClass instances you can do:

      +

      Artifacts implement the GrailsClass interface, which represents a Grails resource such as a controller or a tag library. For example to get all GrailsClass instances you can do:

      @@ -231,7 +231,7 @@

      18.4 Evaluating Conventions

    -

    For a full reference refer to the javadoc API.

    +

    For a full reference refer to the javadoc API.

    diff --git a/snapshot/guide/pages/example.html b/snapshot/guide/pages/example.html index afe0557b9a2..c280ec765aa 100644 --- a/snapshot/guide/pages/example.html +++ b/snapshot/guide/pages/example.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 9.1.1 WebAttributes Trait Example 4.0.13 + 9.1.1 WebAttributes Trait Example 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    9.1.1 WebAttributes Trait Example

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,14 +145,14 @@

    9.1.1 WebAttributes Trait Example

    9.1.1 WebAttributes Trait Example

    -
    -

    WebAttributes is one of the traits provided by the framework. Any Groovy class may implement this trait to inherit all of the properties and behaviors provided by the trait.

    +

    WebAttributes is one of the traits provided by the framework. Any Groovy class may implement this trait to inherit all of the properties and behaviors provided by the trait.

    src/main/groovy/demo/Helper.groovy
    diff --git a/snapshot/guide/pages/executing.html b/snapshot/guide/pages/executing.html index fc9f54cba6a..0b095b366fc 100644 --- a/snapshot/guide/pages/executing.html +++ b/snapshot/guide/pages/executing.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 4.2.1 Executing the Application Class 4.0.13 + 4.2.1 Executing the Application Class 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -122,7 +122,7 @@
    - + (Quick Reference) @@ -135,7 +135,7 @@

    4.2.1 Executing the Application Class

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    4.2.1 Executing the Application Class

    4.2.1 Executing the Application Class

    -
    @@ -173,7 +173,7 @@

    4.2.1 Executing the Application Class

    - + diff --git a/snapshot/guide/pages/extendingRestfulController.html b/snapshot/guide/pages/extendingRestfulController.html index 652a6a49cdc..9a025482ae0 100644 --- a/snapshot/guide/pages/extendingRestfulController.html +++ b/snapshot/guide/pages/extendingRestfulController.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 10.5.1 Extending the RestfulController super class 4.0.13 + 10.5.1 Extending the RestfulController super class 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    10.5.1 Extending the RestfulController super class

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    10.5.1 Extending the RestfulController super class

    10.5.1 Extending the RestfulController super class

    -
    @@ -286,7 +286,7 @@

    Customizing D

    -

    By default the getObjectToBind() method returns the request object. When the request object is used as the binding source, if the request has a body then the body will be parsed and its contents will be used to do the data binding, otherwise the request parameters will be used to do the data binding. Subclasses of RestfulController may override the getObjectToBind() method and return anything that is a valid binding source, including a Map or a DataBindingSource. For most use cases binding the request is appropriate but the getObjectToBind() method allows for changing that behavior where desired.

    +

    By default the getObjectToBind() method returns the request object. When the request object is used as the binding source, if the request has a body then the body will be parsed and its contents will be used to do the data binding, otherwise the request parameters will be used to do the data binding. Subclasses of RestfulController may override the getObjectToBind() method and return anything that is a valid binding source, including a Map or a DataBindingSource. For most use cases binding the request is appropriate but the getObjectToBind() method allows for changing that behavior where desired.

    diff --git a/snapshot/guide/pages/externalLoggingConfiguration.html b/snapshot/guide/pages/externalLoggingConfiguration.html index ee631914d85..8d6c4b80f1c 100644 --- a/snapshot/guide/pages/externalLoggingConfiguration.html +++ b/snapshot/guide/pages/externalLoggingConfiguration.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 4.1.3.3 External Configuration File 4.0.13 + 4.1.3.3 External Configuration File 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -122,7 +122,7 @@
    - + (Quick Reference) @@ -135,7 +135,7 @@

    4.1.3.3 External Configuration File

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    4.1.3.3 External Configuration File

    4.1.3.3 External Configuration File

    -
    @@ -158,21 +158,21 @@

    4.1.3.3 External Configuration File

    grails-app/conf/application.yml
    logging:
    -    config: /Users/me/config/logback.groovy
    + config: /Users/me/config/logback.xml

    Alternatively, you can supply the configuration file location with a system property:

    -

    $ ./gradlew -Dlogging.config=/Users/me/config/logback.groovy bootRun

    +

    $ ./gradlew -Dlogging.config=/Users/me/config/logback.xml bootRun

    Or, you could use an environment variable:

    -
    $ export LOGGING_CONFIG=/Users/me/config/logback.groovy
    +
    $ export LOGGING_CONFIG=/Users/me/config/logback.xml
     $ ./gradlew bootRun
    @@ -180,7 +180,7 @@

    4.1.3.3 External Configuration File

    - + diff --git a/snapshot/guide/pages/formtokens.html b/snapshot/guide/pages/formtokens.html index c43a4fe0907..c88abc46ab5 100644 --- a/snapshot/guide/pages/formtokens.html +++ b/snapshot/guide/pages/formtokens.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 8.1.11 Handling Duplicate Form Submissions 4.0.13 + 8.1.11 Handling Duplicate Form Submissions 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    8.1.11 Handling Duplicate Form Submissions

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,14 +145,14 @@

    8.1.11 Handling Duplicate Form Submissions

    8.1.11 Handling Duplicate Form Submissions

    -
    -

    Grails has built-in support for handling duplicate form submissions using the "Synchronizer Token Pattern". To get started you define a token on the form tag:

    +

    Grails has built-in support for handling duplicate form submissions using the "Synchronizer Token Pattern". To get started you define a token on the form tag:

    diff --git a/snapshot/guide/pages/functionalTesting.html b/snapshot/guide/pages/functionalTesting.html index 7970611bd7e..ec290a1193e 100644 --- a/snapshot/guide/pages/functionalTesting.html +++ b/snapshot/guide/pages/functionalTesting.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 15.3 Functional Testing 4.0.13 + 15.3 Functional Testing 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    15.3 Functional Testing

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    15.3 Functional Testing

    15.3 Functional Testing

    -
    @@ -163,7 +163,7 @@

    15.3 Functional Testing

    -

    The above command will create a new Spock spec called MyFunctionalSpec.groovy in the src/integration-test/groovy directory. The test is annotated with the Integration annotation to indicate it is an integration test and extends the GebSpec super class:

    +

    The above command will create a new Spock spec called MyFunctionalSpec.groovy in the src/integration-test/groovy directory. The test is annotated with the Integration annotation to indicate it is an integration test and extends the GebSpec super class:

    @@ -196,7 +196,7 @@

    15.3 Functional Testing

    In addition the application is loaded in the JVM as the test, this means that the test has full access to the application state and can interact directly with data services such as GORM to setup and cleanup test data.

    -

    The Integration annotation supports an optional applicationClass attribute which may be used to specify the application class to use for the functional test. The class must extend GrailsAutoConfiguration.

    +

    The Integration annotation supports an optional applicationClass attribute which may be used to specify the application class to use for the functional test. The class must extend GrailsAutoConfiguration.

    diff --git a/snapshot/guide/pages/furtherReading.html b/snapshot/guide/pages/furtherReading.html index 459dda1bb5e..d2202d77fc6 100644 --- a/snapshot/guide/pages/furtherReading.html +++ b/snapshot/guide/pages/furtherReading.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 7.2 Further Reading on GORM 4.0.13 + 7.2 Further Reading on GORM 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    7.2 Further Reading on GORM

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    7.2 Further Reading on GORM

    7.2 Further Reading on GORM

    -
    diff --git a/snapshot/guide/pages/generatingAnApplication.html b/snapshot/guide/pages/generatingAnApplication.html index e64530b464d..275ab624df1 100644 --- a/snapshot/guide/pages/generatingAnApplication.html +++ b/snapshot/guide/pages/generatingAnApplication.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 2.13 Generating an Application 4.0.13 + 2.13 Generating an Application 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -128,14 +128,14 @@ (Quick Reference) - +

    2.13 Generating an Application

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    2.13 Generating an Application

    2.13 Generating an Application

    -
    @@ -165,7 +165,7 @@

    2.13 Generating an Application

    - +
    diff --git a/snapshot/guide/pages/generatingRestControllers.html b/snapshot/guide/pages/generatingRestControllers.html index 34aac33dd0a..8ff0f854bbf 100644 --- a/snapshot/guide/pages/generatingRestControllers.html +++ b/snapshot/guide/pages/generatingRestControllers.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 10.5.3 Generating a REST controller using scaffolding 4.0.13 + 10.5.3 Generating a REST controller using scaffolding 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    10.5.3 Generating a REST controller using scaffolding

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    10.5.3 Generating a REST controller using scaffolding

    10.5.3 Generating a REST controller using scaffolding

    -
    diff --git a/snapshot/guide/pages/gradleBuild.html b/snapshot/guide/pages/gradleBuild.html index 51abf86233c..859a9b3fc17 100644 --- a/snapshot/guide/pages/gradleBuild.html +++ b/snapshot/guide/pages/gradleBuild.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 5.5 Building with Gradle 4.0.13 + 5.5 Building with Gradle 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    5.5 Building with Gradle

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -159,14 +159,14 @@

    Table of Contents

    5.5 Building with Gradle

    -
    -

    Grails 3.1 uses the Gradle Build System for build related tasks such as compilation, runnings tests and producing binary distributions of your project. It is recommended to use Gradle 2.2 or above with Grails 3.1.

    +

    Since Grails 3.1 the Gradle Build System is used for build related tasks such as compilation, runnings tests and producing binary distributions of your project. It is recommended to use Gradle 2.2 or above with Grails 3.1 (and higher).

    The build is defined by the build.gradle file which specifies the version of your project, the dependencies of the project and the repositories where to find those dependencies (amongst other things).

    @@ -181,7 +181,7 @@

    5.5 Building with Gradle

    -

    You can invoke Gradle directly using the gradle command and use your own local version of Gradle, however you will need Gradle 2.2 or above to work with Grails 3.0:

    +

    You can invoke Gradle directly using the gradle command and use your own local version of Gradle, however you will need Gradle 2.2 or above to work with Grails 3.0 (and higher):

    @@ -193,7 +193,7 @@

    5.5 Building with Gradle

    5.5.1 Defining Dependencies with Gradle

    -
    @@ -222,7 +222,8 @@

    5.5.1 Defining Dependencies with Gradle

    runtime 'org.grails.plugins:asset-pipeline' runtime 'org.grails.plugins:scaffolding' - testCompile 'org.grails:grails-plugin-testing' + testCompile "org.grails:grails-gorm-testing-support" + testCompile "org.grails:grails-web-testing-support" testCompile 'org.grails.plugins:geb' // Note: It is recommended to update to a more robust driver (Chrome, Firefox etc.) @@ -250,7 +251,7 @@

    5.5.1 Defining Dependencies with Gradle

    5.5.2 Working with Gradle Tasks

    -
    @@ -289,6 +290,10 @@

    5.5.2 Working with Gradle Tasks

    test-app

    +

    check

    + + +

    test-app --unit

    test

    @@ -341,7 +346,7 @@

    5.5.2 Working with Gradle Tasks

    5.5.3 Grails plugins for Gradle

    -
    diff --git a/snapshot/guide/pages/gradleDependencies.html b/snapshot/guide/pages/gradleDependencies.html index fec90c775eb..79e72272b3b 100644 --- a/snapshot/guide/pages/gradleDependencies.html +++ b/snapshot/guide/pages/gradleDependencies.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 5.5.1 Defining Dependencies with Gradle 4.0.13 + 5.5.1 Defining Dependencies with Gradle 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    5.5.1 Defining Dependencies with Gradle

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    5.5.1 Defining Dependencies with Gradle

    5.5.1 Defining Dependencies with Gradle

    -
    @@ -174,7 +174,8 @@

    5.5.1 Defining Dependencies with Gradle

    runtime 'org.grails.plugins:asset-pipeline' runtime 'org.grails.plugins:scaffolding' - testCompile 'org.grails:grails-plugin-testing' + testCompile "org.grails:grails-gorm-testing-support" + testCompile "org.grails:grails-web-testing-support" testCompile 'org.grails.plugins:geb' // Note: It is recommended to update to a more robust driver (Chrome, Firefox etc.) diff --git a/snapshot/guide/pages/gradlePlugins.html b/snapshot/guide/pages/gradlePlugins.html index 0c4486258f2..00c4c8840c1 100644 --- a/snapshot/guide/pages/gradlePlugins.html +++ b/snapshot/guide/pages/gradlePlugins.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 5.5.3 Grails plugins for Gradle 4.0.13 + 5.5.3 Grails plugins for Gradle 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    5.5.3 Grails plugins for Gradle

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    5.5.3 Grails plugins for Gradle

    5.5.3 Grails plugins for Gradle

    -
    diff --git a/snapshot/guide/pages/gradleTasks.html b/snapshot/guide/pages/gradleTasks.html index 5314ef15053..d3b8752a395 100644 --- a/snapshot/guide/pages/gradleTasks.html +++ b/snapshot/guide/pages/gradleTasks.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 5.5.2 Working with Gradle Tasks 4.0.13 + 5.5.2 Working with Gradle Tasks 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    5.5.2 Working with Gradle Tasks

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    5.5.2 Working with Gradle Tasks

    5.5.2 Working with Gradle Tasks

    -
    @@ -184,6 +184,10 @@

    5.5.2 Working with Gradle Tasks

    test-app

    +

    check

    + + +

    test-app --unit

    test

    diff --git a/snapshot/guide/pages/grailsCompileStatic.html b/snapshot/guide/pages/grailsCompileStatic.html index 9f292ac498d..0b4e8463779 100644 --- a/snapshot/guide/pages/grailsCompileStatic.html +++ b/snapshot/guide/pages/grailsCompileStatic.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 14.1 The GrailsCompileStatic Annotation 4.0.13 + 14.1 The GrailsCompileStatic Annotation 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    14.1 The GrailsCompileStatic Annotation

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    14.1 The GrailsCompileStatic Annotation

    14.1 The GrailsCompileStatic Annotation

    -
    diff --git a/snapshot/guide/pages/grailsTypeChecked.html b/snapshot/guide/pages/grailsTypeChecked.html index eadcd6ba37e..1b3c1d5237e 100644 --- a/snapshot/guide/pages/grailsTypeChecked.html +++ b/snapshot/guide/pages/grailsTypeChecked.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 14.2 The GrailsTypeChecked Annotation 4.0.13 + 14.2 The GrailsTypeChecked Annotation 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    14.2 The GrailsTypeChecked Annotation

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    14.2 The GrailsTypeChecked Annotation

    14.2 The GrailsTypeChecked Annotation

    -
    @@ -154,7 +154,7 @@

    14.2 The GrailsTypeChecked Annotation

    GrailsTypeChecked

    -

    The grails.compiler.GrailsTypeChecked annotation works a lot like the GrailsCompileStatic annotation except that it only enables static type checking, not static compilation. This affords compile time feedback for expressions which cannot be validated statically at compile time while still leaving dynamic dispatch in place for the class.

    +

    The grails.compiler.GrailsTypeChecked annotation works a lot like the GrailsCompileStatic annotation except that it only enables static type checking, not static compilation. This affords compile time feedback for expressions which cannot be validated statically at compile time while still leaving dynamic dispatch in place for the class.

    diff --git a/snapshot/guide/pages/gsp.html b/snapshot/guide/pages/gsp.html index 0ab1e6836b4..c017bd2d832 100644 --- a/snapshot/guide/pages/gsp.html +++ b/snapshot/guide/pages/gsp.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 8.2 Groovy Server Pages 4.0.13 + 8.2 Groovy Server Pages 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    8.2 Groovy Server Pages

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    8.2 Groovy Server Pages

    8.2 Groovy Server Pages

    -
    diff --git a/snapshot/guide/pages/gspRenderers.html b/snapshot/guide/pages/gspRenderers.html index 5a73b7107cb..4383eb46bd7 100644 --- a/snapshot/guide/pages/gspRenderers.html +++ b/snapshot/guide/pages/gspRenderers.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 10.11.3 Using GSP to Customize Rendering 4.0.13 + 10.11.3 Using GSP to Customize Rendering 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    10.11.3 Using GSP to Customize Rendering

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    10.11.3 Using GSP to Customize Rendering

    10.11.3 Using GSP to Customize Rendering

    -
    diff --git a/snapshot/guide/pages/hal.html b/snapshot/guide/pages/hal.html index 5c7fda15173..a32d0716e3e 100644 --- a/snapshot/guide/pages/hal.html +++ b/snapshot/guide/pages/hal.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 10.12.1 HAL Support 4.0.13 + 10.12.1 HAL Support 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    10.12.1 HAL Support

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    10.12.1 HAL Support

    10.12.1 HAL Support

    -
    diff --git a/snapshot/guide/pages/hookingIntoRuntimeConfiguration.html b/snapshot/guide/pages/hookingIntoRuntimeConfiguration.html index ca05527a67e..25562bc6e08 100644 --- a/snapshot/guide/pages/hookingIntoRuntimeConfiguration.html +++ b/snapshot/guide/pages/hookingIntoRuntimeConfiguration.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 18.5 Hooking into Runtime Configuration 4.0.13 + 18.5 Hooking into Runtime Configuration 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    18.5 Hooking into Runtime Configuration

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    18.5 Hooking into Runtime Configuration

    18.5 Hooking into Runtime Configuration

    -
    @@ -157,7 +157,7 @@

    18.5 Hooking into Runtime Configuration

    Hooking into the Grails Spring configuration

    -

    First, you can hook in Grails runtime configuration overriding the doWithSpring method from the Plugin class and returning a closure that defines additional beans. For example the following snippet is from one of the core Grails plugins that provides i18n support:

    +

    First, you can hook in Grails runtime configuration overriding the doWithSpring method from the Plugin class and returning a closure that defines additional beans. For example the following snippet is from one of the core Grails plugins that provides i18n support:

    @@ -260,7 +260,7 @@

    Adding New Servlet Filters

    Doing Post Initialisation Configuration

    -

    Sometimes it is useful to be able do some runtime configuration after the Spring ApplicationContext has been built. In this case you can define a doWithApplicationContext closure property.

    +

    Sometimes it is useful to be able do some runtime configuration after the Spring ApplicationContext has been built. In this case you can define a doWithApplicationContext closure property.

    diff --git a/snapshot/guide/pages/hypermedia.html b/snapshot/guide/pages/hypermedia.html index 6f98b4dfe21..4a50e42b4b9 100644 --- a/snapshot/guide/pages/hypermedia.html +++ b/snapshot/guide/pages/hypermedia.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 10.12 Hypermedia as the Engine of Application State 4.0.13 + 10.12 Hypermedia as the Engine of Application State 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    10.12 Hypermedia as the Engine of Application State

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -159,7 +159,7 @@

    Table of Contents

    10.12 Hypermedia as the Engine of Application State

    -
    @@ -176,7 +176,7 @@

    10.12 Hypermedia as the Engine of Application State

    10.12.1 HAL Support

    -
    @@ -572,7 +572,7 @@

    10.12.2 Atom Support

    -
    @@ -622,7 +622,7 @@

    10.12.2 Atom Support

    10.12.3 Vnd.Error Support

    -
    diff --git a/snapshot/guide/pages/ide.html b/snapshot/guide/pages/ide.html index 8861acca85a..f5ff121cf29 100644 --- a/snapshot/guide/pages/ide.html +++ b/snapshot/guide/pages/ide.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 2.6 Getting Set Up in an IDE 4.0.13 + 2.6 Getting Set Up in an IDE 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -128,14 +128,14 @@ (Quick Reference) - +

    2.6 Getting Set Up in an IDE

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    2.6 Getting Set Up in an IDE

    2.6 Getting Set Up in an IDE

    -
    @@ -154,7 +154,7 @@

    2.6 Getting Set Up in an IDE

    IntelliJ IDEA

    -

    IntelliJ IDEA is an excellent IDE for Grails 4.0 development. It comes in 2 editions, the free community edition and the paid-for ultimate edition.

    +

    IntelliJ IDEA is an excellent IDE for Grails 5.0 development. It comes in 2 editions, the free community edition and the paid-for ultimate edition.

    The community edition can be used for most things, although GSP syntax higlighting is only part of the ultimate edition

    @@ -172,7 +172,7 @@

    IntelliJ IDEA

    -

    To get started with Intellij IDEA and Grails 4.0 simply go to File / Open and point IDEA at your build.gradle file to import and configure the project.

    +

    To get started with Intellij IDEA and Grails 5.0 simply go to File / Open and point IDEA at your build.gradle file to import and configure the project.

    diff --git a/snapshot/guide/pages/integrationTesting.html b/snapshot/guide/pages/integrationTesting.html index 3c06cf7dcab..2b477240edc 100644 --- a/snapshot/guide/pages/integrationTesting.html +++ b/snapshot/guide/pages/integrationTesting.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 15.2 Integration Testing 4.0.13 + 15.2 Integration Testing 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    15.2 Integration Testing

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    15.2 Integration Testing

    15.2 Integration Testing

    -
    @@ -168,7 +168,7 @@

    15.2 Integration Testing

    Transactions

    -

    Integration test methods run inside their own database transaction by default, which is rolled back at the end of each test method. This means that data saved during a test is not persisted to the database (which is shared across all tests). The default generated integration test template includes the Rollback annotation:

    +

    Integration test methods run inside their own database transaction by default, which is rolled back at the end of each test method. This means that data saved during a test is not persisted to the database (which is shared across all tests). The default generated integration test template includes the Rollback annotation:

    @@ -219,7 +219,7 @@

    Transactions

    -

    To automatically roll back setup logic, any persistence operations need to be called from the test method itself so that they are run within the test method’s rolled back transaction. Similar to usage of the setupData() method shown below:

    +

    To preload the database and automatically roll back setup logic, any persistence operations need to be called from the test method itself so that they can run within the test method’s rolled back transaction. Similar to usage of the setupData() method shown below which creates a record in database and after running other test will be rolled back:

    @@ -250,7 +250,7 @@

    Transactions

    Using Spring’s Rollback annotation

    -

    Another transactional approach could be to use Spring’s @Rollback instead.

    +

    Another transactional approach could be to use Spring’s @Rollback instead.

    @@ -290,13 +290,13 @@

    Using Spring’s Rollback annota

    DirtiesContext

    -

    If you do have a series of tests that will share state you can remove the Rollback and the last test in the suite should feature the DirtiesContext annotation which will shutdown the environment and restart it fresh (note that this will have an impact on test run times).

    +

    If you do have a series of tests that will share state you can remove the Rollback and the last test in the suite should feature the DirtiesContext annotation which will shutdown the environment and restart it fresh (note that this will have an impact on test run times).

    Autowiring

    -

    To obtain a reference to a bean you can use the Autowired annotation. For example:

    +

    To obtain a reference to a bean you can use the Autowired annotation. For example:

    diff --git a/snapshot/guide/pages/interactiveMode.html b/snapshot/guide/pages/interactiveMode.html index 23c21e537d5..7d42d4b36da 100644 --- a/snapshot/guide/pages/interactiveMode.html +++ b/snapshot/guide/pages/interactiveMode.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 5.1 Interactive Mode 4.0.13 + 5.1 Interactive Mode 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    5.1 Interactive Mode

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,7 +145,7 @@

    5.1 Interactive Mode

    5.1 Interactive Mode

    -
    diff --git a/snapshot/guide/pages/interceptorMatching.html b/snapshot/guide/pages/interceptorMatching.html index 17999907887..848e1bc56b9 100644 --- a/snapshot/guide/pages/interceptorMatching.html +++ b/snapshot/guide/pages/interceptorMatching.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 8.5.2 Matching Requests with Interceptors 4.0.13 + 8.5.2 Matching Requests with Interceptors 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    8.5.2 Matching Requests with Interceptors

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -145,17 +145,17 @@

    8.5.2 Matching Requests with Interceptors

    8.5.2 Matching Requests with Interceptors

    -
    -

    As mention in the previous section, by default an interceptor will match only requests to the associated controller by convention. However you can configure the interceptor to match any request using the match or matchAll methods defined in the Interceptor API.

    +

    As mention in the previous section, by default an interceptor will match only requests to the associated controller by convention. However you can configure the interceptor to match any request using the match or matchAll methods defined in the Interceptor API.

    -

    The matching methods return a Matcher instance which can be used to configure how the interceptor matches the request.

    +

    The matching methods return a Matcher instance which can be used to configure how the interceptor matches the request.

    For example the following interceptor will match all requests except those to the login controller:

    @@ -205,7 +205,7 @@

    8.5.2 Matching Requests with Interceptors

    -

    All named arguments except for uri accept either a String or a Regex expression. The uri argument supports a String path that is compatible with Spring’s AntPathMatcher. The possible named arguments are:

    +

    All named arguments except for uri accept either a String or a Regex expression. The uri argument supports a String path that is compatible with Spring’s AntPathMatcher. The possible named arguments are:

      diff --git a/snapshot/guide/pages/interceptorOrdering.html b/snapshot/guide/pages/interceptorOrdering.html index 94e67f5dc57..7f30a51db8c 100644 --- a/snapshot/guide/pages/interceptorOrdering.html +++ b/snapshot/guide/pages/interceptorOrdering.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 8.5.3 Ordering Interceptor Execution 4.0.13 + 8.5.3 Ordering Interceptor Execution 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -135,7 +135,7 @@

      8.5.3 Ordering Interceptor Execution

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -145,7 +145,7 @@

      8.5.3 Ordering Interceptor Execution

      8.5.3 Ordering Interceptor Execution

      -
      diff --git a/snapshot/guide/pages/interceptors.html b/snapshot/guide/pages/interceptors.html index dc7e7b82677..d766972d7f8 100644 --- a/snapshot/guide/pages/interceptors.html +++ b/snapshot/guide/pages/interceptors.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 8.5 Interceptors 4.0.13 + 8.5 Interceptors 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -135,7 +135,7 @@

      8.5 Interceptors

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -159,7 +159,7 @@

      Table of Contents

      8.5 Interceptors

      -
      @@ -205,7 +205,7 @@

      Interceptors vs Filters

      8.5.1 Defining Interceptors

      -
      @@ -215,7 +215,7 @@

      8.5.1 Defining Interceptors

      By default interceptors will match the controllers with the same name. For example if you have an interceptor called BookInterceptor then all requests to the actions of the BookController will trigger the interceptor.

      -

      An Interceptor implements the Interceptor trait and provides 3 methods that can be used to intercept requests:

      +

      An Interceptor implements the Interceptor trait and provides 3 methods that can be used to intercept requests:

      @@ -255,24 +255,24 @@

      8.5.1 Defining Interceptors

      -

      The afterView method is executed after view rendering completes. If an exception occurs, the exception is available using the throwable property of the Interceptor trait.

      +

      The afterView method is executed after view rendering completes. If an exception occurs, the exception is available using the throwable property of the Interceptor trait.

      8.5.2 Matching Requests with Interceptors

      -
      -

      As mention in the previous section, by default an interceptor will match only requests to the associated controller by convention. However you can configure the interceptor to match any request using the match or matchAll methods defined in the Interceptor API.

      +

      As mention in the previous section, by default an interceptor will match only requests to the associated controller by convention. However you can configure the interceptor to match any request using the match or matchAll methods defined in the Interceptor API.

      -

      The matching methods return a Matcher instance which can be used to configure how the interceptor matches the request.

      +

      The matching methods return a Matcher instance which can be used to configure how the interceptor matches the request.

      For example the following interceptor will match all requests except those to the login controller:

      @@ -322,7 +322,7 @@

      8.5.2 Matching Requests with Interceptors

    -

    All named arguments except for uri accept either a String or a Regex expression. The uri argument supports a String path that is compatible with Spring’s AntPathMatcher. The possible named arguments are:

    +

    All named arguments except for uri accept either a String or a Regex expression. The uri argument supports a String path that is compatible with Spring’s AntPathMatcher. The possible named arguments are:

      @@ -348,7 +348,7 @@

      8.5.2 Matching Requests with Interceptors

      8.5.3 Ordering Interceptor Execution

      -
      diff --git a/snapshot/guide/pages/issues.html b/snapshot/guide/pages/issues.html index 8d2c31c28f6..49c344a7058 100644 --- a/snapshot/guide/pages/issues.html +++ b/snapshot/guide/pages/issues.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 22.1 Report Issues in Github's issue tracker 4.0.13 + 22.1 Report Issues in Github's issue tracker 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -133,7 +133,7 @@

      22.1 Report Issues in Github's issue tracker

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -143,7 +143,7 @@

      22.1 Report Issues in Github's issue tracker

      22.1 Report Issues in Github's issue tracker

      -
      diff --git a/snapshot/guide/pages/jsonResponses.html b/snapshot/guide/pages/jsonResponses.html index cd074c0876e..361e0c24832 100644 --- a/snapshot/guide/pages/jsonResponses.html +++ b/snapshot/guide/pages/jsonResponses.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 8.1.6 Responding with JSON 4.0.13 + 8.1.6 Responding with JSON 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -135,7 +135,7 @@

      8.1.6 Responding with JSON

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -145,7 +145,7 @@

      8.1.6 Responding with JSON

      8.1.6 Responding with JSON

      -
      @@ -188,7 +188,7 @@

      Using the respond method to ou

      -

      The respond method will then look for an appriopriate Renderer for the object and the calculated media type from the RendererRegistry.

      +

      The respond method will then look for an appriopriate Renderer for the object and the calculated media type from the RendererRegistry.

      Grails includes a number of pre-configured Renderer implementations that will produce default representations of JSON responses for the argument passed to respond. For example going to the /book.json URI will produce JSON such as:

      diff --git a/snapshot/guide/pages/jsonViews.html b/snapshot/guide/pages/jsonViews.html index 714b35493d1..e3ec6cfbb16 100644 --- a/snapshot/guide/pages/jsonViews.html +++ b/snapshot/guide/pages/jsonViews.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 10.10 JSON Views 4.0.13 + 10.10 JSON Views 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -135,7 +135,7 @@

      10.10 JSON Views

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -165,7 +165,7 @@

      Table of Contents

      10.10 JSON Views

      -
      @@ -197,7 +197,7 @@

      10.10 JSON Views

      10.10.1 Getting Started

      -
      @@ -255,7 +255,7 @@

      10.10.1 Getting Started

      10.10.2 Creating JSON Views

      -
      @@ -315,7 +315,7 @@

      10.10.2 Creating JSON Views

      10.10.3 JSON View Templates

      -
      @@ -372,7 +372,7 @@

      10.10.3 JSON View Templates

      10.10.4 Rendering Domain Classes with JSON Views

      -
      @@ -434,7 +434,7 @@

      10.10.4 Rendering Domain Classes with JSON Vi

      10.10.5 JSON Views by Convention

      -
      diff --git a/snapshot/guide/pages/jsonViewsAndDomainClasses.html b/snapshot/guide/pages/jsonViewsAndDomainClasses.html index 3ce9e895f57..a89dad8d088 100644 --- a/snapshot/guide/pages/jsonViewsAndDomainClasses.html +++ b/snapshot/guide/pages/jsonViewsAndDomainClasses.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 10.10.4 Rendering Domain Classes with JSON Views 4.0.13 + 10.10.4 Rendering Domain Classes with JSON Views 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -135,7 +135,7 @@

      10.10.4 Rendering Domain Classes with JSON Views

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -145,7 +145,7 @@

      10.10.4 Rendering Domain Classes with JSON Views

      10.10.4 Rendering Domain Classes with JSON Views

      -
      diff --git a/snapshot/guide/pages/jsonViewsAndTemplates.html b/snapshot/guide/pages/jsonViewsAndTemplates.html index 9cc50021d18..de6bc6c6613 100644 --- a/snapshot/guide/pages/jsonViewsAndTemplates.html +++ b/snapshot/guide/pages/jsonViewsAndTemplates.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 10.10.3 JSON View Templates 4.0.13 + 10.10.3 JSON View Templates 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -135,7 +135,7 @@

      10.10.3 JSON View Templates

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -145,7 +145,7 @@

      10.10.3 JSON View Templates

      10.10.3 JSON View Templates

      -
      diff --git a/snapshot/guide/pages/jsonViewsCreating.html b/snapshot/guide/pages/jsonViewsCreating.html index c7bb12e2ada..4ef359bb260 100644 --- a/snapshot/guide/pages/jsonViewsCreating.html +++ b/snapshot/guide/pages/jsonViewsCreating.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 10.10.2 Creating JSON Views 4.0.13 + 10.10.2 Creating JSON Views 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -135,7 +135,7 @@

      10.10.2 Creating JSON Views

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -145,7 +145,7 @@

      10.10.2 Creating JSON Views

      10.10.2 Creating JSON Views

      -
      diff --git a/snapshot/guide/pages/jsonViewsSetup.html b/snapshot/guide/pages/jsonViewsSetup.html index 30a204164b9..351e7cfa194 100644 --- a/snapshot/guide/pages/jsonViewsSetup.html +++ b/snapshot/guide/pages/jsonViewsSetup.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 10.10.1 Getting Started 4.0.13 + 10.10.1 Getting Started 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -135,7 +135,7 @@

      10.10.1 Getting Started

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -145,7 +145,7 @@

      10.10.1 Getting Started

      10.10.1 Getting Started

      -
      diff --git a/snapshot/guide/pages/jsonViewsTemplatesAndConventions.html b/snapshot/guide/pages/jsonViewsTemplatesAndConventions.html index 0273d4f6949..f60580bd556 100644 --- a/snapshot/guide/pages/jsonViewsTemplatesAndConventions.html +++ b/snapshot/guide/pages/jsonViewsTemplatesAndConventions.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 10.10.5 JSON Views by Convention 4.0.13 + 10.10.5 JSON Views by Convention 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -135,7 +135,7 @@

      10.10.5 JSON Views by Convention

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -145,7 +145,7 @@

      10.10.5 JSON Views by Convention

      10.10.5 JSON Views by Convention

      -
      diff --git a/snapshot/guide/pages/linkingToResources.html b/snapshot/guide/pages/linkingToResources.html index 2091e7424ea..76b7ee5b878 100644 --- a/snapshot/guide/pages/linkingToResources.html +++ b/snapshot/guide/pages/linkingToResources.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 10.3 Linking to REST resources from GSP pages 4.0.13 + 10.3 Linking to REST resources from GSP pages 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -135,7 +135,7 @@

      10.3 Linking to REST resources from GSP pages

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -145,7 +145,7 @@

      10.3 Linking to REST resources from GSP pages

      10.3 Linking to REST resources from GSP pages

      -
      diff --git a/snapshot/guide/pages/loggerName.html b/snapshot/guide/pages/loggerName.html index 01b0522a0bb..9868cbd6bfd 100644 --- a/snapshot/guide/pages/loggerName.html +++ b/snapshot/guide/pages/loggerName.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 4.1.3.1 Logger Names 4.0.13 + 4.1.3.1 Logger Names 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -122,7 +122,7 @@
      - + (Quick Reference) @@ -135,7 +135,7 @@

      4.1.3.1 Logger Names

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -145,7 +145,7 @@

      4.1.3.1 Logger Names

      4.1.3.1 Logger Names

      -
      @@ -262,7 +262,7 @@

      4.1.3.1 Logger Names

      - + diff --git a/snapshot/guide/pages/logging.html b/snapshot/guide/pages/logging.html index e8885622bd9..864c6cd2ebd 100644 --- a/snapshot/guide/pages/logging.html +++ b/snapshot/guide/pages/logging.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 4.1.3 Logging 4.0.13 + 4.1.3 Logging 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -122,7 +122,7 @@
      - + (Quick Reference) @@ -135,7 +135,7 @@

      4.1.3 Logging

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -159,36 +159,24 @@

      Table of Contents

      4.1.3 Logging

      -
      -

      Since Grails 3.0, logging is handled by the Logback logging framework and can be configured with the grails-app/conf/logback.groovy file.

      -
      -
      - - - - - -
      - - -If you prefer XML you can replace the logback.groovy file with a logback.xml file instead. -
      +

      Since Grails 3.0, logging is handled by the Logback logging framework and can be configured with the grails-app/conf/logback.xml file.

      -

      For more information on configuring logging refer to the Logback documentation on the subject.

      +

      For more information on configuring logging refer to the Logback documentation on the subject.

      4.1.3.1 Logger Names

      -
      @@ -306,7 +294,7 @@

      4.1.3.1 Logger Names

      4.1.3.2 Masking Request Parameters From Stacktrace Logs

      -
      @@ -345,7 +333,7 @@

      4.1.3.2 Masking Request Para

      4.1.3.3 External Configuration File

      -
      @@ -358,21 +346,21 @@

      4.1.3.3 External Configuration File

      grails-app/conf/application.yml
      logging:
      -    config: /Users/me/config/logback.groovy
      + config: /Users/me/config/logback.xml

      Alternatively, you can supply the configuration file location with a system property:

      -

      $ ./gradlew -Dlogging.config=/Users/me/config/logback.groovy bootRun

      +

      $ ./gradlew -Dlogging.config=/Users/me/config/logback.xml bootRun

      Or, you could use an environment variable:

      -
      $ export LOGGING_CONFIG=/Users/me/config/logback.groovy
      +
      $ export LOGGING_CONFIG=/Users/me/config/logback.xml
       $ ./gradlew bootRun
      @@ -380,7 +368,7 @@

      4.1.3.3 External Configuration File

      - + diff --git a/snapshot/guide/pages/mappingHTTP.html b/snapshot/guide/pages/mappingHTTP.html index f92fe370037..a8d2357c803 100644 --- a/snapshot/guide/pages/mappingHTTP.html +++ b/snapshot/guide/pages/mappingHTTP.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 8.3.7 Mapping to HTTP methods 4.0.13 + 8.3.7 Mapping to HTTP methods 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -135,7 +135,7 @@

      8.3.7 Mapping to HTTP methods

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -145,7 +145,7 @@

      8.3.7 Mapping to HTTP methods

      8.3.7 Mapping to HTTP methods

      -
      diff --git a/snapshot/guide/pages/mappingToControllersAndActions.html b/snapshot/guide/pages/mappingToControllersAndActions.html index 9ca7ac1beef..70529f5e423 100644 --- a/snapshot/guide/pages/mappingToControllersAndActions.html +++ b/snapshot/guide/pages/mappingToControllersAndActions.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 8.3.1 Mapping to Controllers and Actions 4.0.13 + 8.3.1 Mapping to Controllers and Actions 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -135,7 +135,7 @@

      8.3.1 Mapping to Controllers and Actions

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -145,7 +145,7 @@

      8.3.1 Mapping to Controllers and Actions

      8.3.1 Mapping to Controllers and Actions

      -
      diff --git a/snapshot/guide/pages/mappingToResponseCodes.html b/snapshot/guide/pages/mappingToResponseCodes.html index bea3aa5d449..c530f1052ea 100644 --- a/snapshot/guide/pages/mappingToResponseCodes.html +++ b/snapshot/guide/pages/mappingToResponseCodes.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 8.3.6 Mapping to Response Codes 4.0.13 + 8.3.6 Mapping to Response Codes 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -135,7 +135,7 @@

      8.3.6 Mapping to Response Codes

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -145,7 +145,7 @@

      8.3.6 Mapping to Response Codes

      8.3.6 Mapping to Response Codes

      -
      diff --git a/snapshot/guide/pages/mappingToViews.html b/snapshot/guide/pages/mappingToViews.html index 2ed53f6678c..3b4ef2a0b7a 100644 --- a/snapshot/guide/pages/mappingToViews.html +++ b/snapshot/guide/pages/mappingToViews.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 8.3.5 Mapping to Views 4.0.13 + 8.3.5 Mapping to Views 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -135,7 +135,7 @@

      8.3.5 Mapping to Views

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -145,7 +145,7 @@

      8.3.5 Mapping to Views

      8.3.5 Mapping to Views

      -
      diff --git a/snapshot/guide/pages/mappingWildcards.html b/snapshot/guide/pages/mappingWildcards.html index b4980536173..4ff202132d3 100644 --- a/snapshot/guide/pages/mappingWildcards.html +++ b/snapshot/guide/pages/mappingWildcards.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 8.3.8 Mapping Wildcards 4.0.13 + 8.3.8 Mapping Wildcards 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -135,7 +135,7 @@

      8.3.8 Mapping Wildcards

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -145,7 +145,7 @@

      8.3.8 Mapping Wildcards

      8.3.8 Mapping Wildcards

      -
      diff --git a/snapshot/guide/pages/maskingRequestParametersFromStacktraceLogs.html b/snapshot/guide/pages/maskingRequestParametersFromStacktraceLogs.html index 03823c2fcdf..6b4f3772566 100644 --- a/snapshot/guide/pages/maskingRequestParametersFromStacktraceLogs.html +++ b/snapshot/guide/pages/maskingRequestParametersFromStacktraceLogs.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 4.1.3.2 Masking Request Parameters From Stacktrace Logs 4.0.13 + 4.1.3.2 Masking Request Parameters From Stacktrace Logs 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -122,7 +122,7 @@
      - + (Quick Reference) @@ -135,7 +135,7 @@

      4.1.3.2 Masking Request Parameters From Stacktrace Logs

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -145,7 +145,7 @@

      4.1.3.2 Masking Request Parameters From Stacktrace Logs

      4.1.3.2 Masking Request Parameters From Stacktrace Logs

      -
      @@ -183,7 +183,7 @@

      4.1.3.2 Masking Request Para
      - + diff --git a/snapshot/guide/pages/modelsAndViews.html b/snapshot/guide/pages/modelsAndViews.html index e286a01c053..a0f4f951bcd 100644 --- a/snapshot/guide/pages/modelsAndViews.html +++ b/snapshot/guide/pages/modelsAndViews.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 8.1.3 Models and Views 4.0.13 + 8.1.3 Models and Views 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -135,7 +135,7 @@

      8.1.3 Models and Views

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -145,7 +145,7 @@

      8.1.3 Models and Views

      8.1.3 Models and Views

      -
      @@ -176,7 +176,7 @@

      Returning the Model

      -

      A more advanced approach is to return an instance of the Spring ModelAndView class:

      +

      A more advanced approach is to return an instance of the Spring ModelAndView class:

      diff --git a/snapshot/guide/pages/moreOnJSONBuilder.html b/snapshot/guide/pages/moreOnJSONBuilder.html index 72a19ca3004..75698a9f794 100644 --- a/snapshot/guide/pages/moreOnJSONBuilder.html +++ b/snapshot/guide/pages/moreOnJSONBuilder.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 8.1.7 More on JSONBuilder 4.0.13 + 8.1.7 More on JSONBuilder 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -135,7 +135,7 @@

      8.1.7 More on JSONBuilder

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -145,7 +145,7 @@

      8.1.7 More on JSONBuilder

      8.1.7 More on JSONBuilder

      -
      @@ -155,7 +155,7 @@

      8.1.7 More on JSONBuilder

      The previous section on XML and JSON responses covered simplistic examples of rendering XML and JSON responses. Whilst the XML builder used by Grails is the standard XmlSlurper found in Groovy.

      -

      For JSON, since Grails 3.1, Grails uses Groovy’s StreamingJsonBuilder by default and you can refer to the Groovy documentation and StreamingJsonBuilder API documentation on how to use it.

      +

      For JSON, since Grails 3.1, Grails uses Groovy’s StreamingJsonBuilder by default and you can refer to the Groovy documentation and StreamingJsonBuilder API documentation on how to use it.

      diff --git a/snapshot/guide/pages/multipleDatasources.html b/snapshot/guide/pages/multipleDatasources.html index 15b1bb2a8f6..f4d5bdcdf0c 100644 --- a/snapshot/guide/pages/multipleDatasources.html +++ b/snapshot/guide/pages/multipleDatasources.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 4.4.5 Multiple Datasources 4.0.13 + 4.4.5 Multiple Datasources 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -122,7 +122,7 @@
      - + (Quick Reference) @@ -135,7 +135,7 @@

      4.4.5 Multiple Datasources

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -145,7 +145,7 @@

      4.4.5 Multiple Datasources

      4.4.5 Multiple Datasources

      -
      @@ -449,7 +449,7 @@

      Transactions across multiple

      The BE1PC implementation was added in Grails 2.3.6. . Before this change additional datasources didn’t take part in transactions initiated in Grails. The transactions in additional datasources were basically in auto commit mode. In some cases this might be the wanted behavior. One reason might be performance: on the start of each new transaction, the BE1PC transaction manager creates a new transaction to each datasource. It’s possible to leave an additional datasource out of the BE1PC transaction manager by setting transactional = false in the respective configuration block of the additional dataSource. Datasources with readOnly = true will also be left out of the chained transaction manager (since 2.3.7).

      -

      By default, the BE1PC implementation will add all beans implementing the Spring PlatformTransactionManager interface to the chained BE1PC transaction manager. For example, a possible JMSTransactionManager bean in the Grails application context would be added to the Grails BE1PC transaction manager’s chain of transaction managers.

      +

      By default, the BE1PC implementation will add all beans implementing the Spring PlatformTransactionManager interface to the chained BE1PC transaction manager. For example, a possible JMSTransactionManager bean in the Grails application context would be added to the Grails BE1PC transaction manager’s chain of transaction managers.

      You can exclude transaction manager beans from the BE1PC implementation with this configuration option:

      @@ -473,14 +473,14 @@

      XA and Two-phase Commit

      When the Best Efforts 1PC pattern isn’t suitable for handling transactions across multiple transactional resources (not only datasources), there are several options available for adding XA/2PC support to Grails applications.

      -

      The Spring transactions documentation contains information about integrating the JTA/XA transaction manager of different application servers. In this case, you can configure a bean with the name transactionManager manually in resources.groovy or resources.xml file.

      +

      The Spring transactions documentation contains information about integrating the JTA/XA transaction manager of different application servers. In this case, you can configure a bean with the name transactionManager manually in resources.groovy or resources.xml file.

      - + diff --git a/snapshot/guide/pages/namedMappings.html b/snapshot/guide/pages/namedMappings.html index 23bffc1c588..df5550106bf 100644 --- a/snapshot/guide/pages/namedMappings.html +++ b/snapshot/guide/pages/namedMappings.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 8.3.11 Named URL Mappings 4.0.13 + 8.3.11 Named URL Mappings 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -135,7 +135,7 @@

      8.3.11 Named URL Mappings

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -145,7 +145,7 @@

      8.3.11 Named URL Mappings

      8.3.11 Named URL Mappings

      -
      diff --git a/snapshot/guide/pages/namespacedControllers.html b/snapshot/guide/pages/namespacedControllers.html index 1fb29ff9d89..caef7936039 100644 --- a/snapshot/guide/pages/namespacedControllers.html +++ b/snapshot/guide/pages/namespacedControllers.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 8.3.13 Namespaced Controllers 4.0.13 + 8.3.13 Namespaced Controllers 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -135,7 +135,7 @@

      8.3.13 Namespaced Controllers

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -145,7 +145,7 @@

      8.3.13 Namespaced Controllers

      8.3.13 Namespaced Controllers

      -
      diff --git a/snapshot/guide/pages/participatingInAutoReloadEvents.html b/snapshot/guide/pages/participatingInAutoReloadEvents.html index 1deefe2f6b3..a5674603032 100644 --- a/snapshot/guide/pages/participatingInAutoReloadEvents.html +++ b/snapshot/guide/pages/participatingInAutoReloadEvents.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 18.8 Participating in Auto Reload Events 4.0.13 + 18.8 Participating in Auto Reload Events 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -135,7 +135,7 @@

      18.8 Participating in Auto Reload Events

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -145,7 +145,7 @@

      18.8 Participating in Auto Reload Events

      18.8 Participating in Auto Reload Events

      -
      diff --git a/snapshot/guide/pages/patchesCore.html b/snapshot/guide/pages/patchesCore.html index 282a597c0f3..b88dcbf5610 100644 --- a/snapshot/guide/pages/patchesCore.html +++ b/snapshot/guide/pages/patchesCore.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 22.3 Submit Patches to Grails Core 4.0.13 + 22.3 Submit Patches to Grails Core 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -133,7 +133,7 @@

      22.3 Submit Patches to Grails Core

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -143,7 +143,7 @@

      22.3 Submit Patches to Grails Core

      22.3 Submit Patches to Grails Core

      -
      diff --git a/snapshot/guide/pages/patchesDoc.html b/snapshot/guide/pages/patchesDoc.html index 62f875bf479..7f197887d91 100644 --- a/snapshot/guide/pages/patchesDoc.html +++ b/snapshot/guide/pages/patchesDoc.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 22.4 Submit Patches to Grails Documentation 4.0.13 + 22.4 Submit Patches to Grails Documentation 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -133,7 +133,7 @@

      22.4 Submit Patches to Grails Documentation

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -143,7 +143,7 @@

      22.4 Submit Patches to Grails Documentation

      22.4 Submit Patches to Grails Documentation

      -
      diff --git a/snapshot/guide/pages/profileCommands.html b/snapshot/guide/pages/profileCommands.html index 094bb1cce0f..c4daadef14e 100644 --- a/snapshot/guide/pages/profileCommands.html +++ b/snapshot/guide/pages/profileCommands.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 6.5 Creating Profile Commands 4.0.13 + 6.5 Creating Profile Commands 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -135,7 +135,7 @@

      6.5 Creating Profile Commands

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -145,7 +145,7 @@

      6.5 Creating Profile Commands

      6.5 Creating Profile Commands

      -
      @@ -185,7 +185,7 @@

      6.5 Creating Profile Commands

      mkdir - To make a directory specified by the location parameter

    • -

      execute - To execute a command specified by the class parameter. Must be a class that implements the Command interface.

      +

      execute - To execute a command specified by the class parameter. Must be a class that implements the Command interface.

    • gradle - To execute one or many Gradle tasks specified by the tasks parameter.

      @@ -208,7 +208,7 @@

      6.5 Creating Profile Commands

    • -

      If you need more flexiblity than what the declarative YAML approach provides you can create Groovy script commands. Each Command script is extends from the GroovyScriptCommand class and hence has all of the methods of that class available to it.

      +

      If you need more flexibility than what the declarative YAML approach provides you can create Groovy script commands. Each Command script is extends from the GroovyScriptCommand class and hence has all of the methods of that class available to it.

      The following is an example of the create-script command written in Groovy:

      diff --git a/snapshot/guide/pages/profileFeatures.html b/snapshot/guide/pages/profileFeatures.html index 5b9ae49b230..63cf93e424a 100644 --- a/snapshot/guide/pages/profileFeatures.html +++ b/snapshot/guide/pages/profileFeatures.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 6.6 Creating Profile Features 4.0.13 + 6.6 Creating Profile Features 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -135,7 +135,7 @@

      6.6 Creating Profile Features

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -145,7 +145,7 @@

      6.6 Creating Profile Features

      6.6 Creating Profile Features

      -
      @@ -170,8 +170,8 @@

      6.6 Creating Profile Features

      description: Description of the feature
       # customize versions here
       # dependencies:
      -#   compile:
      -#     - "org.grails.plugins:myplugin2:1.0"
      +#   - scope: compile
      +#     coords: "org.grails.plugins:myplugin2:1.0"
       #
      @@ -185,10 +185,10 @@

      6.6 Creating Profile Features

      plugins: - asset-pipeline dependencies: - build: - - 'com.bertramlabs.plugins:asset-pipeline-gradle:2.5.0' - runtime: - - "org.grails.plugins:asset-pipeline" + - scope: build + coords: 'com.bertramlabs.plugins:asset-pipeline-gradle:2.5.0' + - scope: runtime + coords: "org.grails.plugins:asset-pipeline"
      diff --git a/snapshot/guide/pages/profileInheritance.html b/snapshot/guide/pages/profileInheritance.html index 5f1318f3988..33bdda8db2e 100644 --- a/snapshot/guide/pages/profileInheritance.html +++ b/snapshot/guide/pages/profileInheritance.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 6.2 Profile Inheritance 4.0.13 + 6.2 Profile Inheritance 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -135,7 +135,7 @@

      6.2 Profile Inheritance

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -145,7 +145,7 @@

      6.2 Profile Inheritance

      6.2 Profile Inheritance

      -
      diff --git a/snapshot/guide/pages/profileStructure.html b/snapshot/guide/pages/profileStructure.html index 37b8dff7aea..65f8b699760 100644 --- a/snapshot/guide/pages/profileStructure.html +++ b/snapshot/guide/pages/profileStructure.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 6.4 Understanding Profiles 4.0.13 + 6.4 Understanding Profiles 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -135,7 +135,7 @@

      6.4 Understanding Profiles

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -145,7 +145,7 @@

      6.4 Understanding Profiles

      6.4 Understanding Profiles

      -
      @@ -246,13 +246,30 @@

      5) dependencies

      dependencies:
      -    excludes:
      -        - "org.grails:hibernate:*"
      -    build:
      -        - "org.grails:grails-gradle-plugin:$grailsVersion"
      -    compile:
      -        - "org.springframework.boot:spring-boot-starter-logging"
      -        - "org.springframework.boot:spring-boot-autoconfigure"
      + - scope: excludes + coords: "org.grails:hibernate:*" + - scope: build + coords: "org.grails:grails-gradle-plugin:$grailsVersion" + - scope: compile + coords: "org.springframework.boot:spring-boot-starter-logging" + - scope: compile + coords: "org.springframework.boot:spring-boot-autoconfigure" +
      +
      +
      +
      Excluding Transitive Dependencies
      +
      +

      To exclude transitive dependencies, define excludes key with a List of transitive dependencies Map of the dependency group, module, classifier, and extension as:

      +
      +
      +
      +
      dependencies:
      +    - scope: testCompile
      +      coords: org.spockframework:spock-core
      +      excludes:
      +        - group: org.codehaus.groovy
      +          module: groovy-all
      +
      diff --git a/snapshot/guide/pages/propertyOverrideConfiguration.html b/snapshot/guide/pages/propertyOverrideConfiguration.html index bf706a70b90..eb45beb377f 100644 --- a/snapshot/guide/pages/propertyOverrideConfiguration.html +++ b/snapshot/guide/pages/propertyOverrideConfiguration.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 19.5 Property Override Configuration 4.0.13 + 19.5 Property Override Configuration 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -135,7 +135,7 @@

      19.5 Property Override Configuration

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -145,7 +145,7 @@

      19.5 Property Override Configuration

      19.5 Property Override Configuration

      -
      diff --git a/snapshot/guide/pages/propertyPlaceholderConfiguration.html b/snapshot/guide/pages/propertyPlaceholderConfiguration.html index 69cc5d6ac2d..16a51834334 100644 --- a/snapshot/guide/pages/propertyPlaceholderConfiguration.html +++ b/snapshot/guide/pages/propertyPlaceholderConfiguration.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 19.4 Property Placeholder Configuration 4.0.13 + 19.4 Property Placeholder Configuration 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -135,7 +135,7 @@

      19.4 Property Placeholder Configuration

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -145,17 +145,17 @@

      19.4 Property Placeholder Configuration

      19.4 Property Placeholder Configuration

      -
      -

      Grails supports the notion of property placeholder configuration through an extended version of Spring’s PropertyPlaceholderConfigurer.

      +

      Grails supports the notion of property placeholder configuration through an extended version of Spring’s PropertyPlaceholderConfigurer.

      -

      Settings defined in either ConfigSlurper scripts or Java properties files can be used as placeholder values for Spring configuration in grails-app/conf/spring/resources.xml and grails-app/conf/spring/resources.groovy. For example given the following entries in grails-app/conf/application.groovy (or an externalized config):

      +

      Settings defined in either ConfigSlurper scripts or Java properties files can be used as placeholder values for Spring configuration in grails-app/conf/spring/resources.xml and grails-app/conf/spring/resources.groovy. For example given the following entries in grails-app/conf/application.groovy (or an externalized config):

      diff --git a/snapshot/guide/pages/providingBasicArtefacts.html b/snapshot/guide/pages/providingBasicArtefacts.html index 975cda19a24..8eb8759b4ed 100644 --- a/snapshot/guide/pages/providingBasicArtefacts.html +++ b/snapshot/guide/pages/providingBasicArtefacts.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 18.3 Providing Basic Artefacts 4.0.13 + 18.3 Providing Basic Artefacts 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -135,7 +135,7 @@

      18.3 Providing Basic Artefacts

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -145,7 +145,7 @@

      18.3 Providing Basic Artefacts

      18.3 Providing Basic Artefacts

      -
      @@ -177,7 +177,7 @@

      Add Command Line Commands

      -

      This will create a file called grails-app/commands/PACKAGE_PATH/MyExampleCommand.groovy that extends ApplicationCommand:

      +

      This will create a file called grails-app/commands/PACKAGE_PATH/MyExampleCommand.groovy that extends ApplicationCommand:

      diff --git a/snapshot/guide/pages/proxyConfig.html b/snapshot/guide/pages/proxyConfig.html index 8978a6fa303..8a9c5d74ded 100644 --- a/snapshot/guide/pages/proxyConfig.html +++ b/snapshot/guide/pages/proxyConfig.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 4.1.5 Configuring an HTTP proxy 4.0.13 + 4.1.5 Configuring an HTTP proxy 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -122,7 +122,7 @@
      - + (Quick Reference) @@ -135,7 +135,7 @@

      4.1.5 Configuring an HTTP proxy

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -145,7 +145,7 @@

      4.1.5 Configuring an HTTP proxy

      4.1.5 Configuring an HTTP proxy

      -
      @@ -184,7 +184,7 @@

      4.1.5 Configuring an HTTP proxy

      - + diff --git a/snapshot/guide/pages/publishingProfiles.html b/snapshot/guide/pages/publishingProfiles.html index 424b0a3cf1c..bc9f7b3f322 100644 --- a/snapshot/guide/pages/publishingProfiles.html +++ b/snapshot/guide/pages/publishingProfiles.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 6.3 Publishing Profiles 4.0.13 + 6.3 Publishing Profiles 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -135,7 +135,7 @@

      6.3 Publishing Profiles

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -145,7 +145,7 @@

      6.3 Publishing Profiles

      6.3 Publishing Profiles

      -
      diff --git a/snapshot/guide/pages/queryingArtefacts.html b/snapshot/guide/pages/queryingArtefacts.html index 3dc1800b361..fe8a25f2600 100644 --- a/snapshot/guide/pages/queryingArtefacts.html +++ b/snapshot/guide/pages/queryingArtefacts.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 18.10.1 Asking About Available Artefacts 4.0.13 + 18.10.1 Asking About Available Artefacts 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -135,7 +135,7 @@

      18.10.1 Asking About Available Artefacts

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -145,14 +145,14 @@

      18.10.1 Asking About Available Artefacts

      18.10.1 Asking About Available Artefacts

      -
      -

      As a plugin developer, it can be important for you to find out about what domain classes, controllers, or other types of artefact are available in an application. For example, the Elasticsearch plugin needs to know what domain classes exist so it can check them for any searchable properties and index the appropriate ones. So how does it do it? The answer lies with the grailsApplication object, and instance of GrailsApplication that’s available automatically in controllers and GSPs and can be injected everywhere else.

      +

      As a plugin developer, it can be important for you to find out about what domain classes, controllers, or other types of artefact are available in an application. For example, the Elasticsearch plugin needs to know what domain classes exist so it can check them for any searchable properties and index the appropriate ones. So how does it do it? The answer lies with the grailsApplication object, and instance of GrailsApplication that’s available automatically in controllers and GSPs and can be injected everywhere else.

      The grailsApplication object has several important properties and methods for querying artefacts. Probably the most common is the one that gives you all the classes of a particular artefact type:

      @@ -213,7 +213,7 @@

      18.10.1 Asking About Available Artefacts

      -

      You need to be aware that the objects returned by these properties are not instances of Class. Instead, they are instances of GrailsClass that has some particularly useful properties and methods, including one for the underlying Class:

      +

      You need to be aware that the objects returned by these properties are not instances of Class. Instead, they are instances of GrailsClass that has some particularly useful properties and methods, including one for the underlying Class:

        diff --git a/snapshot/guide/pages/quickStartGuide.html b/snapshot/guide/pages/quickStartGuide.html index bddf0377a4c..2a8934b5424 100644 --- a/snapshot/guide/pages/quickStartGuide.html +++ b/snapshot/guide/pages/quickStartGuide.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 7.1 Quick Start Guide 4.0.13 + 7.1 Quick Start Guide 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        7.1 Quick Start Guide

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -153,7 +153,7 @@

        Table of Contents

        7.1 Quick Start Guide

        -
        @@ -230,7 +230,7 @@

        7.1 Quick Start Guide

        7.1.1 Basic CRUD

        -
        diff --git a/snapshot/guide/pages/readingMessages.html b/snapshot/guide/pages/readingMessages.html index bfe8ad7d906..eefdcb620ab 100644 --- a/snapshot/guide/pages/readingMessages.html +++ b/snapshot/guide/pages/readingMessages.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 16.3 Reading Messages 4.0.13 + 16.3 Reading Messages 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        16.3 Reading Messages

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        16.3 Reading Messages

        16.3 Reading Messages

        -
        @@ -154,7 +154,7 @@

        16.3 Reading Messages

        Reading Messages in the View

        -

        The most common place that you need messages is inside the view. Use the message tag for this:

        +

        The most common place that you need messages is inside the view. Use the message tag for this:

        diff --git a/snapshot/guide/pages/redirectMappings.html b/snapshot/guide/pages/redirectMappings.html index 5d55432b5d5..4b101348405 100644 --- a/snapshot/guide/pages/redirectMappings.html +++ b/snapshot/guide/pages/redirectMappings.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 8.3.3 Redirects In URL Mappings 4.0.13 + 8.3.3 Redirects In URL Mappings 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        8.3.3 Redirects In URL Mappings

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        8.3.3 Redirects In URL Mappings

        8.3.3 Redirects In URL Mappings

        -
        diff --git a/snapshot/guide/pages/redirectsAndChaining.html b/snapshot/guide/pages/redirectsAndChaining.html index f6c0d986d8b..d8d2b2f0e93 100644 --- a/snapshot/guide/pages/redirectsAndChaining.html +++ b/snapshot/guide/pages/redirectsAndChaining.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 8.1.4 Redirects and Chaining 4.0.13 + 8.1.4 Redirects and Chaining 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        8.1.4 Redirects and Chaining

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        8.1.4 Redirects and Chaining

        8.1.4 Redirects and Chaining

        -
        @@ -173,7 +173,7 @@

        Redirects

        -

        Internally the redirect method uses the HttpServletResponse object’s sendRedirect method.

        +

        Internally the redirect method uses the HttpServletResponse object’s sendRedirect method.

        The redirect method expects one of:

        diff --git a/snapshot/guide/pages/renderers.html b/snapshot/guide/pages/renderers.html index 56a8216ed34..2850b84bca9 100644 --- a/snapshot/guide/pages/renderers.html +++ b/snapshot/guide/pages/renderers.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 10.11 Customizing Response Rendering 4.0.13 + 10.11 Customizing Response Rendering 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        10.11 Customizing Response Rendering

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -159,7 +159,7 @@

        Table of Contents

        10.11 Customizing Response Rendering

        -
        @@ -173,7 +173,7 @@

        10.11 Customizing Response Rendering

        10.11.1 Customizing the Default Renderers

        -
        @@ -252,7 +252,7 @@

        Customizing the Converters

        10.11.2 Implementing a Custom Renderer

        -
        @@ -337,7 +337,7 @@

        Container Renderers

        10.11.3 Using GSP to Customize Rendering

        -
        diff --git a/snapshot/guide/pages/repositories.html b/snapshot/guide/pages/repositories.html index 33565cd6e43..3a2eabb0dd4 100644 --- a/snapshot/guide/pages/repositories.html +++ b/snapshot/guide/pages/repositories.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 18.2 Plugin Repositories 4.0.13 + 18.2 Plugin Repositories 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        18.2 Plugin Repositories

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        18.2 Plugin Repositories

        18.2 Plugin Repositories

        -
        diff --git a/snapshot/guide/pages/requirements.html b/snapshot/guide/pages/requirements.html index 4026451d4a1..d6648588aeb 100644 --- a/snapshot/guide/pages/requirements.html +++ b/snapshot/guide/pages/requirements.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 2.1 Installation Requirements 4.0.13 + 2.1 Installation Requirements 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -128,14 +128,14 @@ (Quick Reference) - +

        2.1 Installation Requirements

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,20 +145,20 @@

        2.1 Installation Requirements

        2.1 Installation Requirements

        -
        -

        Before installing Grails 4.0.13 you will need as a minimum a Java Development Kit (JDK) installed version 1.8 or above. Download the appropriate JDK for your operating system, run the installer, and then set up an environment variable called JAVA_HOME pointing to the location of this installation.

        +

        Before installing Grails 5.0.1 you will need as a minimum a Java Development Kit (JDK) installed version 1.8. The most recent supported version of the JDK is 11. Download the appropriate JDK for your operating system, run the installer, and then set up an environment variable called JAVA_HOME pointing to the location of this installation.

        To automate the installation of Grails we recommend SDKMAN which greatly simplifies installing and managing multiple Grails versions.

        -

        On some platforms (for example OS X) the Java installation is automatically detected. However in many cases you will want to manually configure the location of Java. For example, if you’re using bash or another variant of the Bourne Shell:

        +

        On some platforms (for example macOS) the Java installation is automatically detected. However in many cases you will want to manually configure the location of Java. For example, if you’re using bash or another variant of the Bourne Shell:

        @@ -184,7 +184,7 @@

        2.1 Installation Requirements

        - +
        diff --git a/snapshot/guide/pages/restControllersStepByStep.html b/snapshot/guide/pages/restControllersStepByStep.html index 7315851bbbe..7fdbea45e6a 100644 --- a/snapshot/guide/pages/restControllersStepByStep.html +++ b/snapshot/guide/pages/restControllersStepByStep.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 10.5.2 Implementing REST Controllers Step by Step 4.0.13 + 10.5.2 Implementing REST Controllers Step by Step 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        10.5.2 Implementing REST Controllers Step by Step

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        10.5.2 Implementing REST Controllers Step by Step

        10.5.2 Implementing REST Controllers Step by Step

        -
        diff --git a/snapshot/guide/pages/restProfile.html b/snapshot/guide/pages/restProfile.html index bb8993989da..52f66ab063d 100644 --- a/snapshot/guide/pages/restProfile.html +++ b/snapshot/guide/pages/restProfile.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 10.7 The REST Profile 4.0.13 + 10.7 The REST Profile 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        10.7 The REST Profile

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        10.7 The REST Profile

        10.7 The REST Profile

        -
        diff --git a/snapshot/guide/pages/restfulControllers.html b/snapshot/guide/pages/restfulControllers.html index 07616951743..6538c7a3f46 100644 --- a/snapshot/guide/pages/restfulControllers.html +++ b/snapshot/guide/pages/restfulControllers.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 10.5 Implementing REST controllers 4.0.13 + 10.5 Implementing REST controllers 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        10.5 Implementing REST controllers

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -159,7 +159,7 @@

        Table of Contents

        10.5 Implementing REST controllers

        -
        @@ -173,7 +173,7 @@

        10.5 Implementing REST controllers

        10.5.1 Extending the RestfulController super class

        -
        @@ -314,7 +314,7 @@

        Customizing D

        -

        By default the getObjectToBind() method returns the request object. When the request object is used as the binding source, if the request has a body then the body will be parsed and its contents will be used to do the data binding, otherwise the request parameters will be used to do the data binding. Subclasses of RestfulController may override the getObjectToBind() method and return anything that is a valid binding source, including a Map or a DataBindingSource. For most use cases binding the request is appropriate but the getObjectToBind() method allows for changing that behavior where desired.

        +

        By default the getObjectToBind() method returns the request object. When the request object is used as the binding source, if the request has a body then the body will be parsed and its contents will be used to do the data binding, otherwise the request parameters will be used to do the data binding. Subclasses of RestfulController may override the getObjectToBind() method and return anything that is a valid binding source, including a Map or a DataBindingSource. For most use cases binding the request is appropriate but the getObjectToBind() method allows for changing that behavior where desired.

        @@ -365,7 +365,7 @@

        Us

        10.5.2 Implementing REST Controllers Step by Step

        -
        @@ -663,7 +663,7 @@

        Implementing the 'delete' action

        10.5.3 Generating a REST controller using scaffolding

        -
        diff --git a/snapshot/guide/pages/restfulMappings.html b/snapshot/guide/pages/restfulMappings.html index 15d0b652670..18f5f399354 100644 --- a/snapshot/guide/pages/restfulMappings.html +++ b/snapshot/guide/pages/restfulMappings.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 8.3.2 Mapping to REST resources 4.0.13 + 8.3.2 Mapping to REST resources 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        8.3.2 Mapping to REST resources

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        8.3.2 Mapping to REST resources

        8.3.2 Mapping to REST resources

        -
        diff --git a/snapshot/guide/pages/reusingGrailsScripts.html b/snapshot/guide/pages/reusingGrailsScripts.html index c606a9bd593..78777c9e711 100644 --- a/snapshot/guide/pages/reusingGrailsScripts.html +++ b/snapshot/guide/pages/reusingGrailsScripts.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 5.4 Re-using Grails scripts 4.0.13 + 5.4 Re-using Grails scripts 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        5.4 Re-using Grails scripts

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        5.4 Re-using Grails scripts

        5.4 Re-using Grails scripts

        -
        diff --git a/snapshot/guide/pages/runningAndDebuggingAnApplication.html b/snapshot/guide/pages/runningAndDebuggingAnApplication.html index 6b33390c817..f643117ab7e 100644 --- a/snapshot/guide/pages/runningAndDebuggingAnApplication.html +++ b/snapshot/guide/pages/runningAndDebuggingAnApplication.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 2.8 Running and Debugging an Application 4.0.13 + 2.8 Running and Debugging an Application 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -128,14 +128,14 @@ (Quick Reference) - +

        2.8 Running and Debugging an Application

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        2.8 Running and Debugging an Application

        2.8 Running and Debugging an Application

        -
        @@ -202,7 +202,7 @@

        2.8 Running and Debugging an Applicati - +

        diff --git a/snapshot/guide/pages/scaffoldingAndI18n.html b/snapshot/guide/pages/scaffoldingAndI18n.html index d3392964639..582ef15e8d4 100644 --- a/snapshot/guide/pages/scaffoldingAndI18n.html +++ b/snapshot/guide/pages/scaffoldingAndI18n.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 16.4 Scaffolding and i18n 4.0.13 + 16.4 Scaffolding and i18n 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        16.4 Scaffolding and i18n

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,14 +145,14 @@

        16.4 Scaffolding and i18n

        16.4 Scaffolding and i18n

        -
        -

        Grails scaffolding templates for controllers and views are fully i18n-aware. The GSPs use the message tag for labels, buttons etc. and controller flash messages use i18n to resolve locale-specific messages.

        +

        Grails scaffolding templates for controllers and views are fully i18n-aware. The GSPs use the message tag for labels, buttons etc. and controller flash messages use i18n to resolve locale-specific messages.

        The scaffolding includes locale specific labels for domain classes and domain fields. For example, if you have a Book domain class with a title field:

        diff --git a/snapshot/guide/pages/scopedServices.html b/snapshot/guide/pages/scopedServices.html index f8456621624..3d10267e5b9 100644 --- a/snapshot/guide/pages/scopedServices.html +++ b/snapshot/guide/pages/scopedServices.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 13.2 Scoped Services 4.0.13 + 13.2 Scoped Services 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        13.2 Scoped Services

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        13.2 Scoped Services

        13.2 Scoped Services

        -
        diff --git a/snapshot/guide/pages/securingAgainstAttacks.html b/snapshot/guide/pages/securingAgainstAttacks.html index 28c1195735b..d28632ba6d3 100644 --- a/snapshot/guide/pages/securingAgainstAttacks.html +++ b/snapshot/guide/pages/securingAgainstAttacks.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 17.1 Securing Against Attacks 4.0.13 + 17.1 Securing Against Attacks 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        17.1 Securing Against Attacks

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        17.1 Securing Against Attacks

        17.1 Securing Against Attacks

        -
        diff --git a/snapshot/guide/pages/securityPlugins.html b/snapshot/guide/pages/securityPlugins.html index 2eaf9576c68..a6ad9f6fbde 100644 --- a/snapshot/guide/pages/securityPlugins.html +++ b/snapshot/guide/pages/securityPlugins.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 17.5 Security Plugins 4.0.13 + 17.5 Security Plugins 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        17.5 Security Plugins

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -153,7 +153,7 @@

        Table of Contents

        17.5 Security Plugins

        -
        @@ -167,7 +167,7 @@

        17.5 Security Plugins

        17.5.1 Spring Security

        -
        @@ -177,10 +177,10 @@

        17.5.1 Spring Security

        The Spring Security plugins are built on the Spring Security project which provides a flexible, extensible framework for building all sorts of authentication and authorization schemes. The plugins are modular so you can install just the functionality that you need for your application. The Spring Security plugins are the official security plugins for Grails and are actively maintained and supported.

        -

        There is a Core plugin which supports form-based authentication, encrypted/salted passwords, HTTP Basic authentication, etc. and secondary dependent plugins provide alternate functionality such as ACL support, single sign-on with Jasig CAS, LDAP authentication, Kerberos authentication, and a plugin providing user interface extensions and security workflows.

        +

        There is a Core plugin which supports form-based authentication, encrypted/salted passwords, HTTP Basic authentication, etc. and secondary dependent plugins provide alternate functionality such as ACL support, single sign-on with Jasig CAS, LDAP authentication, Kerberos authentication, and a plugin providing user interface extensions and security workflows.

        -

        See the Core plugin page for basic information and the user guide for detailed information.

        +

        See the Core plugin page for basic information and the user guide for detailed information.

        diff --git a/snapshot/guide/pages/sharingConstraints.html b/snapshot/guide/pages/sharingConstraints.html index ba3987349e1..3614cd68fbf 100644 --- a/snapshot/guide/pages/sharingConstraints.html +++ b/snapshot/guide/pages/sharingConstraints.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 12.3 Sharing Constraints Between Classes 4.0.13 + 12.3 Sharing Constraints Between Classes 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        12.3 Sharing Constraints Between Classes

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        12.3 Sharing Constraints Between Classes

        12.3 Sharing Constraints Between Classes

        -
        diff --git a/snapshot/guide/pages/springSecurity.html b/snapshot/guide/pages/springSecurity.html index d2a539e23b6..026fb718d1d 100644 --- a/snapshot/guide/pages/springSecurity.html +++ b/snapshot/guide/pages/springSecurity.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 17.5.1 Spring Security 4.0.13 + 17.5.1 Spring Security 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        17.5.1 Spring Security

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        17.5.1 Spring Security

        17.5.1 Spring Security

        -
        @@ -155,10 +155,10 @@

        17.5.1 Spring Security

        The Spring Security plugins are built on the Spring Security project which provides a flexible, extensible framework for building all sorts of authentication and authorization schemes. The plugins are modular so you can install just the functionality that you need for your application. The Spring Security plugins are the official security plugins for Grails and are actively maintained and supported.

        -

        There is a Core plugin which supports form-based authentication, encrypted/salted passwords, HTTP Basic authentication, etc. and secondary dependent plugins provide alternate functionality such as ACL support, single sign-on with Jasig CAS, LDAP authentication, Kerberos authentication, and a plugin providing user interface extensions and security workflows.

        +

        There is a Core plugin which supports form-based authentication, encrypted/salted passwords, HTTP Basic authentication, etc. and secondary dependent plugins provide alternate functionality such as ACL support, single sign-on with Jasig CAS, LDAP authentication, Kerberos authentication, and a plugin providing user interface extensions and security workflows.

        -

        See the Core plugin page for basic information and the user guide for detailed information.

        +

        See the Core plugin page for basic information and the user guide for detailed information.

        diff --git a/snapshot/guide/pages/springdsl.html b/snapshot/guide/pages/springdsl.html index 2f8f5a1ce7e..dc9d7b66e67 100644 --- a/snapshot/guide/pages/springdsl.html +++ b/snapshot/guide/pages/springdsl.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 19.2 Runtime Spring with the Beans DSL 4.0.13 + 19.2 Runtime Spring with the Beans DSL 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        19.2 Runtime Spring with the Beans DSL

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        19.2 Runtime Spring with the Beans DSL

        19.2 Runtime Spring with the Beans DSL

        -
        @@ -155,7 +155,7 @@

        19.2 Runtime Spring with the Beans DSL

        This Bean builder in Grails aims to provide a simplified way of wiring together dependencies that uses Spring at its core.

        -

        In addition, Spring’s regular way of configuration (via XML and annotations) is static and difficult to modify and configure at runtime, other than programmatic XML creation which is both error prone and verbose. Grails' BeanBuilder changes all that by making it possible to programmatically wire together components at runtime, allowing you to adapt the logic based on system properties or environment variables.

        +

        In addition, Spring’s regular way of configuration (via XML and annotations) is static and difficult to modify and configure at runtime, other than programmatic XML creation which is both error prone and verbose. Grails' BeanBuilder changes all that by making it possible to programmatically wire together components at runtime, allowing you to adapt the logic based on system properties or environment variables.

        This enables the code to adapt to its environment and avoids unnecessary duplication of code (having different Spring configs for test, development and production environments)

        @@ -163,7 +163,7 @@

        19.2 Runtime Spring with the Beans DSL

        The BeanBuilder class

        -

        Grails provides a grails.spring.BeanBuilder class that uses dynamic Groovy to construct bean definitions. The basics are as follows:

        +

        Grails provides a grails.spring.BeanBuilder class that uses dynamic Groovy to construct bean definitions. The basics are as follows:

        diff --git a/snapshot/guide/pages/springdslAdditional.html b/snapshot/guide/pages/springdslAdditional.html index 8f603886390..a2c921f47e6 100644 --- a/snapshot/guide/pages/springdslAdditional.html +++ b/snapshot/guide/pages/springdslAdditional.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 19.1 Configuring Additional Beans 4.0.13 + 19.1 Configuring Additional Beans 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        19.1 Configuring Additional Beans

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        19.1 Configuring Additional Beans

        19.1 Configuring Additional Beans

        -
        diff --git a/snapshot/guide/pages/supportedJavaEEContainers.html b/snapshot/guide/pages/supportedJavaEEContainers.html index 3c2ff8d23c0..3fd872c4952 100644 --- a/snapshot/guide/pages/supportedJavaEEContainers.html +++ b/snapshot/guide/pages/supportedJavaEEContainers.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 2.11 Supported Java EE Containers 4.0.13 + 2.11 Supported Java EE Containers 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -128,14 +128,14 @@ (Quick Reference) - +

        2.11 Supported Java EE Containers

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        2.11 Supported Java EE Containers

        2.11 Supported Java EE Containers

        -
        @@ -203,7 +203,7 @@

        2.11 Supported Java EE Containers

        - +
        diff --git a/snapshot/guide/pages/testingAnApplication.html b/snapshot/guide/pages/testingAnApplication.html index 49f7e017361..04aacca14d9 100644 --- a/snapshot/guide/pages/testingAnApplication.html +++ b/snapshot/guide/pages/testingAnApplication.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 2.9 Testing an Application 4.0.13 + 2.9 Testing an Application 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -128,14 +128,14 @@ (Quick Reference) - +

        2.9 Testing an Application

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        2.9 Testing an Application

        2.9 Testing an Application

        -
        @@ -168,7 +168,7 @@

        2.9 Testing an Application

        - +
        diff --git a/snapshot/guide/pages/theBeanBuilderDSLExplained.html b/snapshot/guide/pages/theBeanBuilderDSLExplained.html index e70b41c652f..9f7024182a2 100644 --- a/snapshot/guide/pages/theBeanBuilderDSLExplained.html +++ b/snapshot/guide/pages/theBeanBuilderDSLExplained.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 19.3 The BeanBuilder DSL Explained 4.0.13 + 19.3 The BeanBuilder DSL Explained 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        19.3 The BeanBuilder DSL Explained

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        19.3 The BeanBuilder DSL Explained

        19.3 The BeanBuilder DSL Explained

        -
        @@ -179,7 +179,7 @@

        Using Constructor Arguments

        Configuring the BeanDefinition (Using factory methods)

        -

        The first argument to the closure is a reference to the bean configuration instance, which you can use to configure factory methods and invoke any method on the AbstractBeanDefinition class:

        +

        The first argument to the closure is a reference to the bean configuration instance, which you can use to configure factory methods and invoke any method on the AbstractBeanDefinition class:

        diff --git a/snapshot/guide/pages/traitsprovided.html b/snapshot/guide/pages/traitsprovided.html index f676f989e13..b1dd9838cf3 100644 --- a/snapshot/guide/pages/traitsprovided.html +++ b/snapshot/guide/pages/traitsprovided.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 9.1 Traits Provided by Grails 4.0.13 + 9.1 Traits Provided by Grails 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        9.1 Traits Provided by Grails

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -153,7 +153,7 @@

        Table of Contents

        9.1 Traits Provided by Grails

        -
        @@ -167,16 +167,16 @@

        Domain Class Traits

        @@ -186,16 +186,16 @@

        Controller Traits

        @@ -205,7 +205,7 @@

        Interceptor Trait

        @@ -215,7 +215,7 @@

        Tag Library Trait

        @@ -235,31 +235,31 @@

        Tag Library Trait

        -

        grails.web.api.WebAttributes

        +

        grails.web.api.WebAttributes

        Common Web Attributes

        -

        grails.web.api.ServletAttributes

        +

        grails.web.api.ServletAttributes

        Servlet API Attributes

        -

        grails.web.databinding.DataBinder

        +

        grails.web.databinding.DataBinder

        Data Binding API

        -

        grails.artefact.controller.support.RequestForwarder

        +

        grails.artefact.controller.support.RequestForwarder

        Request Forwarding API

        -

        grails.artefact.controller.support.ResponseRedirector

        +

        grails.artefact.controller.support.ResponseRedirector

        Response Redirecting API

        -

        grails.artefact.controller.support.ResponseRenderer

        +

        grails.artefact.controller.support.ResponseRenderer

        Response Rendering API

        -

        grails.validation.Validateable

        +

        grails.validation.Validateable

        Validation API

        @@ -270,14 +270,14 @@

        Tag Library Trait

        9.1.1 WebAttributes Trait Example

        -
        -

        WebAttributes is one of the traits provided by the framework. Any Groovy class may implement this trait to inherit all of the properties and behaviors provided by the trait.

        +

        WebAttributes is one of the traits provided by the framework. Any Groovy class may implement this trait to inherit all of the properties and behaviors provided by the trait.

        src/main/groovy/demo/Helper.groovy
        diff --git a/snapshot/guide/pages/transactionAwareDataSourceProxy.html b/snapshot/guide/pages/transactionAwareDataSourceProxy.html index b92fc00952c..f4701199a03 100644 --- a/snapshot/guide/pages/transactionAwareDataSourceProxy.html +++ b/snapshot/guide/pages/transactionAwareDataSourceProxy.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 4.4.3 Transaction-aware DataSource Proxy 4.0.13 + 4.4.3 Transaction-aware DataSource Proxy 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -122,7 +122,7 @@
        - + (Quick Reference) @@ -135,7 +135,7 @@

        4.4.3 Transaction-aware DataSource Proxy

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        4.4.3 Transaction-aware DataSource Proxy

        4.4.3 Transaction-aware DataSource Proxy

        -
        @@ -161,7 +161,7 @@

        4.4.3 Transaction-aware DataSource Prox
        - + diff --git a/snapshot/guide/pages/transactionsMultiDataSource.html b/snapshot/guide/pages/transactionsMultiDataSource.html index f3987f6c12a..77396f5226b 100644 --- a/snapshot/guide/pages/transactionsMultiDataSource.html +++ b/snapshot/guide/pages/transactionsMultiDataSource.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 13.1.1 Transactions and Multi-DataSources 4.0.13 + 13.1.1 Transactions and Multi-DataSources 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        13.1.1 Transactions and Multi-DataSources

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        13.1.1 Transactions and Multi-DataSources

        13.1.1 Transactions and Multi-DataSources

        -
        diff --git a/snapshot/guide/pages/transactionsRollbackAndTheSession.html b/snapshot/guide/pages/transactionsRollbackAndTheSession.html index 2318a3d37bd..c498c45b384 100644 --- a/snapshot/guide/pages/transactionsRollbackAndTheSession.html +++ b/snapshot/guide/pages/transactionsRollbackAndTheSession.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 13.1.2 Transactions Rollback and the Session 4.0.13 + 13.1.2 Transactions Rollback and the Session 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        13.1.2 Transactions Rollback and the Session

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        13.1.2 Transactions Rollback and the Session

        13.1.2 Transactions Rollback and the Session

        -
        diff --git a/snapshot/guide/pages/typeConverters.html b/snapshot/guide/pages/typeConverters.html index b19d845c6f0..ac34e9c4ca9 100644 --- a/snapshot/guide/pages/typeConverters.html +++ b/snapshot/guide/pages/typeConverters.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 8.1.12 Simple Type Converters 4.0.13 + 8.1.12 Simple Type Converters 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        8.1.12 Simple Type Converters

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        8.1.12 Simple Type Converters

        8.1.12 Simple Type Converters

        -
        diff --git a/snapshot/guide/pages/understandingControllersAndActions.html b/snapshot/guide/pages/understandingControllersAndActions.html index 22ce2660348..9cd0d999c05 100644 --- a/snapshot/guide/pages/understandingControllersAndActions.html +++ b/snapshot/guide/pages/understandingControllersAndActions.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 8.1.1 Understanding Controllers and Actions 4.0.13 + 8.1.1 Understanding Controllers and Actions 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        8.1.1 Understanding Controllers and Actions

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        8.1.1 Understanding Controllers and Actions

        8.1.1 Understanding Controllers and Actions

        -
        diff --git a/snapshot/guide/pages/understandingMessageBundles.html b/snapshot/guide/pages/understandingMessageBundles.html index 68a2bf66466..4c59d18624d 100644 --- a/snapshot/guide/pages/understandingMessageBundles.html +++ b/snapshot/guide/pages/understandingMessageBundles.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 16.1 Understanding Message Bundles 4.0.13 + 16.1 Understanding Message Bundles 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        16.1 Understanding Message Bundles

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        16.1 Understanding Message Bundles

        16.1 Understanding Message Bundles

        -
        diff --git a/snapshot/guide/pages/understandingPluginLoadOrder.html b/snapshot/guide/pages/understandingPluginLoadOrder.html index da122db4524..e56fb82a076 100644 --- a/snapshot/guide/pages/understandingPluginLoadOrder.html +++ b/snapshot/guide/pages/understandingPluginLoadOrder.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 18.9 Understanding Plugin Load Order 4.0.13 + 18.9 Understanding Plugin Load Order 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        18.9 Understanding Plugin Load Order

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        18.9 Understanding Plugin Load Order

        18.9 Understanding Plugin Load Order

        -
        @@ -233,7 +233,7 @@

        Controlling Load Order

        -

        Here the Hibernate plugin will only register an OpenSessionInViewInterceptor if the controllers plugin has been loaded. The manager variable is an instance of the GrailsPluginManager interface and it provides methods to interact with other plugins.

        +

        Here the Hibernate plugin will only register an OpenSessionInViewInterceptor if the controllers plugin has been loaded. The manager variable is an instance of the GrailsPluginManager interface and it provides methods to interact with other plugins.

        You can also use the loadBefore property to specify one or more plugins that your plugin should load before:

        @@ -259,7 +259,7 @@

        Scopes and Environments

        In this example, the plugin will only load in the 'development' and 'test' environments. Nor will it be packaged into the WAR file, because it’s excluded from the 'war' phase. This allows development-only plugins to not be packaged for production use.

        -

        The full list of available scopes are defined by the enum BuildScope, but here’s a summary:

        +

        The full list of available scopes are defined by the enum BuildScope, but here’s a summary:

          diff --git a/snapshot/guide/pages/unitTesting.html b/snapshot/guide/pages/unitTesting.html index 4e4dc150e4d..231afe97db3 100644 --- a/snapshot/guide/pages/unitTesting.html +++ b/snapshot/guide/pages/unitTesting.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 15.1 Unit Testing 4.0.13 + 15.1 Unit Testing 5.0.1 @@ -44,7 +44,7 @@ -
          3Upgrading from Grails 3.3.x +
          4Configuration @@ -135,7 +135,7 @@

          15.1 Unit Testing

          -

          Version: 4.0.13

          +

          Version: 5.0.1

          @@ -145,7 +145,7 @@

          15.1 Unit Testing

          15.1 Unit Testing

          -
          diff --git a/snapshot/guide/pages/upgrading33x.html b/snapshot/guide/pages/upgrading33x.html index 3521b52064a..28a70bfb877 100644 --- a/snapshot/guide/pages/upgrading33x.html +++ b/snapshot/guide/pages/upgrading33x.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 3.3 Upgrading from Grails 3.3.x to Grails 4 6.0.0-SNAPSHOT + 3.2 Upgrading from Grails 3.3.x 5.0.1 @@ -53,52 +53,55 @@ -
          6Object Relational Mapping (GORM) + -
          7The Web Layer + -
          8Traits + -
          9REST + -
          10Asynchronous Programming + -
          11Validation + -
          12The Service Layer + -
          13Static Type Checking And Compilation + -
          14Testing + -
          15Internationalization + -
          16Security + -
          17Plugins + -
          18Grails and Spring + -
          19Scaffolding + -
          20Deployment + - @@ -130,19 +133,19 @@
          -

          3.3 Upgrading from Grails 3.3.x to Grails 4

          +

          3.2 Upgrading from Grails 3.3.x

          -

          Version: 6.0.0-SNAPSHOT

          +

          Version: 5.0.1

          -

          3.3 Upgrading from Grails 3.3.x to Grails 4

          +

          3.2 Upgrading from Grails 3.3.x

          -
          @@ -428,7 +431,7 @@

          Removed date helper functions

          build.gradle
          dependencies {
          -    implementation "org.codehaus.groovy:groovy-dateutil:3.0.4"
          +    compile "org.codehaus.groovy:groovy-dateutil:3.0.4"
           }
          @@ -469,8 +472,8 @@

          Upgrade Hibernate

          dependencies {
           ...
          -  implementation "org.grails.plugins:hibernate5"
          -  implementation "org.hibernate:hibernate-core:5.1.5.Final"
          +  compile "org.grails.plugins:hibernate5"
          +  compile "org.hibernate:hibernate-core:5.1.5.Final"
           }
          @@ -482,8 +485,8 @@

          Upgrade Hibernate

          dependencies {
           ...
          -  implementation "org.grails.plugins:hibernate5"
          -  implementation "org.hibernate:hibernate-core:5.4.0.Final"
          +  compile "org.grails.plugins:hibernate5"
          +  compile "org.hibernate:hibernate-core:5.4.0.Final"
           }
          @@ -938,25 +941,49 @@

          Scheduled Methods

          -
        -

        For a full reference refer to the javadoc API.

        +

        For a full reference refer to the javadoc API.

        18.5 Hooking into Runtime Configuration

        -
        @@ -905,7 +953,7 @@

        18.5 Hooking into Runtime Configuration

        Hooking into the Grails Spring configuration

        -

        First, you can hook in Grails runtime configuration overriding the doWithSpring method from the Plugin class and returning a closure that defines additional beans. For example the following snippet is from one of the core Grails plugins that provides i18n support:

        +

        First, you can hook in Grails runtime configuration overriding the doWithSpring method from the Plugin class and returning a closure that defines additional beans. For example the following snippet is from one of the core Grails plugins that provides i18n support:

        @@ -1008,7 +1056,7 @@

        Adding New Servlet Filters

        Doing Post Initialisation Configuration

        -

        Sometimes it is useful to be able do some runtime configuration after the Spring ApplicationContext has been built. In this case you can define a doWithApplicationContext closure property.

        +

        Sometimes it is useful to be able do some runtime configuration after the Spring ApplicationContext has been built. In this case you can define a doWithApplicationContext closure property.

        @@ -1031,7 +1079,7 @@

        Doing Post Initialisation Conf

        18.6 Adding Methods at Compile Time

        -
        @@ -1056,7 +1104,7 @@

        18.6 Adding Methods at Compile Time

        The @Enhances annotation defines the types of artefacts that the trait should be applied to.

        -

        As an alternative to using the @Enhances annotation above, you can implement a TraitInjector to tell Grails which artefacts you want to inject the trait into at compile time:

        +

        As an alternative to using the @Enhances annotation above, you can implement a TraitInjector to tell Grails which artefacts you want to inject the trait into at compile time:

        @@ -1083,7 +1131,7 @@

        18.6 Adding Methods at Compile Time

        Applying traits conditionally

        -

        A TraitInjector implementation can also implement the SupportsClassNode interface to apply traits to only those artefacts which satisfy a custom requirement. +

        A TraitInjector implementation can also implement the SupportsClassNode interface to apply traits to only those artefacts which satisfy a custom requirement. For example, if a trait should only be applied if the target artefact class has a specific annotation, it can be done as below

        @@ -1143,7 +1191,7 @@

        Applying traits conditionally

        18.7 Adding Dynamic Methods at Runtime

        -
        @@ -1256,7 +1304,7 @@

        Interacting with the Applicati

        18.8 Participating in Auto Reload Events

        -
        @@ -1364,7 +1412,7 @@

        Observing other plugins

        18.9 Understanding Plugin Load Order

        -
        @@ -1452,7 +1500,7 @@

        Controlling Load Order

        -

        Here the Hibernate plugin will only register an OpenSessionInViewInterceptor if the controllers plugin has been loaded. The manager variable is an instance of the GrailsPluginManager interface and it provides methods to interact with other plugins.

        +

        Here the Hibernate plugin will only register an OpenSessionInViewInterceptor if the controllers plugin has been loaded. The manager variable is an instance of the GrailsPluginManager interface and it provides methods to interact with other plugins.

        You can also use the loadBefore property to specify one or more plugins that your plugin should load before:

        @@ -1478,7 +1526,7 @@

        Scopes and Environments

        In this example, the plugin will only load in the 'development' and 'test' environments. Nor will it be packaged into the WAR file, because it’s excluded from the 'war' phase. This allows development-only plugins to not be packaged for production use.

        -

        The full list of available scopes are defined by the enum BuildScope, but here’s a summary:

        +

        The full list of available scopes are defined by the enum BuildScope, but here’s a summary:

          @@ -1548,7 +1596,7 @@

          Scopes and Environments

          18.10 The Artefact API

          -
          @@ -1562,14 +1610,14 @@

          18.10 The Artefact API

          18.10.1 Asking About Available Artefacts

          -
          -

          As a plugin developer, it can be important for you to find out about what domain classes, controllers, or other types of artefact are available in an application. For example, the Elasticsearch plugin needs to know what domain classes exist so it can check them for any searchable properties and index the appropriate ones. So how does it do it? The answer lies with the grailsApplication object, and instance of GrailsApplication that’s available automatically in controllers and GSPs and can be injected everywhere else.

          +

          As a plugin developer, it can be important for you to find out about what domain classes, controllers, or other types of artefact are available in an application. For example, the Elasticsearch plugin needs to know what domain classes exist so it can check them for any searchable properties and index the appropriate ones. So how does it do it? The answer lies with the grailsApplication object, and instance of GrailsApplication that’s available automatically in controllers and GSPs and can be injected everywhere else.

          The grailsApplication object has several important properties and methods for querying artefacts. Probably the most common is the one that gives you all the classes of a particular artefact type:

          @@ -1630,7 +1678,7 @@

          18.10.1 Asking About Available Artefacts

        -

        You need to be aware that the objects returned by these properties are not instances of Class. Instead, they are instances of GrailsClass that has some particularly useful properties and methods, including one for the underlying Class:

        +

        You need to be aware that the objects returned by these properties are not instances of Class. Instead, they are instances of GrailsClass that has some particularly useful properties and methods, including one for the underlying Class:

          @@ -1669,7 +1717,7 @@

          18.10.1 Asking About Available Artefacts

          18.10.2 Adding Your Own Artefact Types

          -
          @@ -1690,10 +1738,10 @@

          18.10.2 Adding Your Own Artefact Types

          The artefacts list can contain either handler classes (as above) or instances of handlers.

        -

        So, what does an artefact handler look like? Well, put simply it is an implementation of the ArtefactHandler interface. To make life a bit easier, there is a skeleton implementation that can readily be extended: ArtefactHandlerAdapter.

        +

        So, what does an artefact handler look like? Well, put simply it is an implementation of the ArtefactHandler interface. To make life a bit easier, there is a skeleton implementation that can readily be extended: ArtefactHandlerAdapter.

        -

        In addition to the handler itself, every new artefact needs a corresponding wrapper class that implements GrailsClass. Again, skeleton implementations are available such as AbstractInjectableGrailsClass, which is particularly useful as it turns your artefact into a Spring bean that is auto-wired, just like controllers and services.

        +

        In addition to the handler itself, every new artefact needs a corresponding wrapper class that implements GrailsClass. Again, skeleton implementations are available such as AbstractInjectableGrailsClass, which is particularly useful as it turns your artefact into a Spring bean that is auto-wired, just like controllers and services.

        The best way to understand how both the handler and wrapper classes work is to look at the Quartz plugin:

        diff --git a/snapshot/guide/profiles.html b/snapshot/guide/profiles.html index 1b5865c0949..ce44a40c254 100644 --- a/snapshot/guide/profiles.html +++ b/snapshot/guide/profiles.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 6 Application Profiles 4.0.13 + 6 Application Profiles 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        6 Application Profiles

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -168,7 +168,7 @@

        Table of Contents

        6 Application Profiles

        -
        @@ -322,7 +322,7 @@

        Profile Defaults

        6.1 Creating Profiles

        -
        @@ -395,8 +395,13 @@

        6.1 Creating Profiles

        excludes: - org.grails.grails-core dependencies: - compile: - - "org.mycompany:myplugin:1.0.1" + - scope: compile + coords: "org.mycompany:myplugin:1.0.1" + - scope: testCompile + coords: org.spockframework:spock-core + excludes: + - group: org.codehaus.groovy + module: groovy-all
        @@ -431,7 +436,7 @@

        6.1 Creating Profiles

        6.2 Profile Inheritance

        -
        @@ -488,7 +493,7 @@

        6.2 Profile Inheritance

        6.3 Publishing Profiles

        -
        @@ -576,7 +581,7 @@

        Publishing Profiles to a

        6.4 Understanding Profiles

        -
        @@ -677,13 +682,30 @@

        5) dependencies

        dependencies:
        -    excludes:
        -        - "org.grails:hibernate:*"
        -    build:
        -        - "org.grails:grails-gradle-plugin:$grailsVersion"
        -    compile:
        -        - "org.springframework.boot:spring-boot-starter-logging"
        -        - "org.springframework.boot:spring-boot-autoconfigure"
        + - scope: excludes + coords: "org.grails:hibernate:*" + - scope: build + coords: "org.grails:grails-gradle-plugin:$grailsVersion" + - scope: compile + coords: "org.springframework.boot:spring-boot-starter-logging" + - scope: compile + coords: "org.springframework.boot:spring-boot-autoconfigure" +
        +
        +
        +
        Excluding Transitive Dependencies
        +
        +

        To exclude transitive dependencies, define excludes key with a List of transitive dependencies Map of the dependency group, module, classifier, and extension as:

        +
        +
        +
        +
        dependencies:
        +    - scope: testCompile
        +      coords: org.spockframework:spock-core
        +      excludes:
        +        - group: org.codehaus.groovy
        +          module: groovy-all
        +
        @@ -786,7 +808,7 @@

        What happens when a profile is use

        6.5 Creating Profile Commands

        -
        @@ -826,7 +848,7 @@

        6.5 Creating Profile Commands

        mkdir - To make a directory specified by the location parameter

      • -

        execute - To execute a command specified by the class parameter. Must be a class that implements the Command interface.

        +

        execute - To execute a command specified by the class parameter. Must be a class that implements the Command interface.

      • gradle - To execute one or many Gradle tasks specified by the tasks parameter.

        @@ -849,7 +871,7 @@

        6.5 Creating Profile Commands

      • -

        If you need more flexiblity than what the declarative YAML approach provides you can create Groovy script commands. Each Command script is extends from the GroovyScriptCommand class and hence has all of the methods of that class available to it.

        +

        If you need more flexibility than what the declarative YAML approach provides you can create Groovy script commands. Each Command script is extends from the GroovyScriptCommand class and hence has all of the methods of that class available to it.

        The following is an example of the create-script command written in Groovy:

        @@ -880,7 +902,7 @@

        6.5 Creating Profile Commands

        6.6 Creating Profile Features

        -
        @@ -905,8 +927,8 @@

        6.6 Creating Profile Features

        description: Description of the feature
         # customize versions here
         # dependencies:
        -#   compile:
        -#     - "org.grails.plugins:myplugin2:1.0"
        +#   - scope: compile
        +#     coords: "org.grails.plugins:myplugin2:1.0"
         #
        @@ -920,10 +942,10 @@

        6.6 Creating Profile Features

        plugins: - asset-pipeline dependencies: - build: - - 'com.bertramlabs.plugins:asset-pipeline-gradle:2.5.0' - runtime: - - "org.grails.plugins:asset-pipeline" + - scope: build + coords: 'com.bertramlabs.plugins:asset-pipeline-gradle:2.5.0' + - scope: runtime + coords: "org.grails.plugins:asset-pipeline"
        diff --git a/snapshot/guide/scaffolding.html b/snapshot/guide/scaffolding.html index 0c597b89f2c..984fac23920 100644 --- a/snapshot/guide/scaffolding.html +++ b/snapshot/guide/scaffolding.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 20 Scaffolding 4.0.13 + 20 Scaffolding 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        20 Scaffolding

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -145,7 +145,7 @@

        20 Scaffolding

        20 Scaffolding

        -
        diff --git a/snapshot/guide/security.html b/snapshot/guide/security.html index caa78a4e37e..5c71018cb02 100644 --- a/snapshot/guide/security.html +++ b/snapshot/guide/security.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 17 Security 4.0.13 + 17 Security 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        17 Security

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -168,7 +168,7 @@

        Table of Contents

        17 Security

        -
        @@ -194,7 +194,7 @@

        What Grails Automatically Does

        The default scaffolding templates HTML escape all data fields when displayed

      • -

        Grails link creating tags (link, form, createLink, createLinkTo and others) all use appropriate escaping mechanisms to prevent code injection

        +

        Grails link creating tags (link, form, createLink, createLinkTo and others) all use appropriate escaping mechanisms to prevent code injection

      • Grails provides codecs to let you trivially escape data when rendered as HTML, JavaScript and URLs to prevent injection attacks here.

        @@ -207,7 +207,7 @@

        What Grails Automatically Does

        17.1 Securing Against Attacks

        -
        @@ -327,7 +327,7 @@

        Guessable IDs

        17.2 Cross Site Scripting (XSS) Prevention

        -
        @@ -569,7 +569,7 @@

        Default Encoding for All Output

        17.3 Encoding and Decoding Objects

        -
        @@ -829,7 +829,7 @@

        Custom Codecs

        17.4 Authentication

        -
        @@ -903,7 +903,7 @@

        17.4 Authentication

        17.5 Security Plugins

        -
        @@ -917,7 +917,7 @@

        17.5 Security Plugins

        17.5.1 Spring Security

        -
        @@ -927,10 +927,10 @@

        17.5.1 Spring Security

        The Spring Security plugins are built on the Spring Security project which provides a flexible, extensible framework for building all sorts of authentication and authorization schemes. The plugins are modular so you can install just the functionality that you need for your application. The Spring Security plugins are the official security plugins for Grails and are actively maintained and supported.

      • -

        There is a Core plugin which supports form-based authentication, encrypted/salted passwords, HTTP Basic authentication, etc. and secondary dependent plugins provide alternate functionality such as ACL support, single sign-on with Jasig CAS, LDAP authentication, Kerberos authentication, and a plugin providing user interface extensions and security workflows.

        +

        There is a Core plugin which supports form-based authentication, encrypted/salted passwords, HTTP Basic authentication, etc. and secondary dependent plugins provide alternate functionality such as ACL support, single sign-on with Jasig CAS, LDAP authentication, Kerberos authentication, and a plugin providing user interface extensions and security workflows.

        -

        See the Core plugin page for basic information and the user guide for detailed information.

        +

        See the Core plugin page for basic information and the user guide for detailed information.

        diff --git a/snapshot/guide/services.html b/snapshot/guide/services.html index 56153d61b44..9ff99bf4801 100644 --- a/snapshot/guide/services.html +++ b/snapshot/guide/services.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 13 The Service Layer 4.0.13 + 13 The Service Layer 5.0.1 @@ -44,7 +44,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -135,7 +135,7 @@

        13 The Service Layer

        -

        Version: 4.0.13

        +

        Version: 5.0.1

        @@ -165,7 +165,7 @@

        Table of Contents

        13 The Service Layer

        -
        @@ -216,7 +216,7 @@

        Creating a Service

        13.1 Declarative Transactions

        -
        @@ -241,7 +241,7 @@

        Declarative Transactions

        -

        The result is that all methods are wrapped in a transaction and automatic rollback occurs if a method throws an exception (both Checked or Runtime exceptions) or an Error. The propagation level of the transaction is by default set to PROPAGATION_REQUIRED.

        +

        The result is that all methods are wrapped in a transaction and automatic rollback occurs if a method throws an exception (both Checked or Runtime exceptions) or an Error. The propagation level of the transaction is by default set to PROPAGATION_REQUIRED.

        @@ -395,7 +395,7 @@

        Custom Transaction Configuration

        Transaction status

        -

        An instance of TransactionStatus is available by default in Grails transactional service methods.

        +

        An instance of TransactionStatus is available by default in Grails transactional service methods.

        Example:

        @@ -420,7 +420,7 @@

        Transaction status

        13.1.1 Transactions and Multi-DataSources

        -
        @@ -490,7 +490,7 @@

        13.1.1 Transactions and Multi-DataSources13.1.2 Transactions Rollback and the Session

        -
        @@ -693,7 +693,7 @@

        Validation Errors and Rollback

        13.2 Scoped Services

        -
        @@ -786,7 +786,7 @@

        Lazy initialization

        13.3 Dependency Injection and Services

        -
        diff --git a/snapshot/guide/single.html b/snapshot/guide/single.html index a319ee69896..d2f0850cdcd 100644 --- a/snapshot/guide/single.html +++ b/snapshot/guide/single.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -41,7 +41,7 @@ - + @@ -103,7 +103,7 @@

        The Grails Framework

        Authors: The Grails Team

        -

        Version:

        +

        Version: 

        @@ -113,12 +113,10 @@

        Table of Contents

        - + - - @@ -147,7 +145,11 @@

        Table of Contents

        - + + + + + @@ -505,7 +507,7 @@

        Table of Contents

        1 Introduction

        -
        @@ -598,77 +600,124 @@

        1 Introduction

        -

        1.1 What's new in Grails 4?

        +

        1.1 What's new in Grails 5?

        -
        -

        This section covers all the new features introduced in Grails 4.

        +

        This section covers all the new features introduced in Grails 5

        +
        +
        +

        Overview

        +
        +

        This release includes support for Apache Groovy 3, Micronaut framework 3, Gradle 7, Spring Boot 2.5, Spring framework 5.3, and Spock 2.0.

        +
        +
        +

        Apache Groovy 3 is a major highlight of this release. It comes with a brand new Parrot parser and a bunch of new features and capabilities. The Parrot parser supports additional syntax and language features, such as lambda expressions, default methods with interfaces, and a lot more. In addition, several new extension methods are added to existing Java classes. See the release notes for Groovy 3.0 for details.

        +
        +
        +

        Grails framework 5 updates to Spring 5.3.10 and Spring Boot 2.5.5. We strongly recommend checking the following Spring technologies release notes for more information.

        +
        + +
        +

        Grails framework 5 is built with Groovy 3.0.7, which requires JDK 8 as the minimum version of JRE. We have tested most Grails projects up to JDK 14.

        +
        +
        +
        +

        Important Changes

        +
        +

        Deprecating ‘dot’-Based Navigation

        +
        +

        The ‘dot’-based navigation to Grails config is deprecated and will be removed in the future.

        +
        +
        +

        We request that you update your plugins to use configuration beans @ConfigurationProperties or @Value, or access configuration settings using grailsApplication.config.getProperty(‘a.b.c’, String) instead of grailsApplication.config.a.b.c. For more information, read the documentation at Creating and Installing Plugins.

        +
        +
        +
        Default Autowire By Type
        +
        +

        In previous versions, the beans inside the Grails DataService were autowire by name, but this is changed to autowire by type in Grails framework 5. Use the Spring @Qualifier annotation to autowire by name. For details, see the Spring documentation for Fine-tuning Annotation Based Autowiring with Qualifiers.

        +
        +
        +
        +
        +

        Grails Gradle Plugin

        +
        +

        The Grails Gradle Plugin is moved out of grails-core and may follow separate versioning, so you should decouple the grailsVersion Gradle property from grailsGradlePluginVersion in existing applications.

        +
        +
        +
        +

        Grails Gradle Publish Plugin Removed

        +
        +

        The Grails Gradle Publish plugin used the Bintray API to publish artifacts. However, after the JFrog shutdown of Bintray, this stopped working. We have removed this plugin from the new Grails Plugin applications.

        +
        +

        1.1.1 Updated Dependencies

        -
        -

        Grails 4.0.13 ships with the following dependency upgrades:

        +

        Grails 5.0.1 ships with the following dependency upgrades:

        • -

          Groovy 2.5.14

          +

          Groovy 3.0.7

          +
        • +
        • +

          Micronaut 3

        • -

          GORM 7 and Hibernate 5.4 (now the default version of Hibernate for new applications)

          +

          Micronaut for Spring 4

        • -

          Spring Framework 5.1.20

          +

          GORM 7.1.0

        • -

          Spring Boot 2.1.18

          +

          Spring Framework 5.3

        • -

          Gradle 5.6.4

          +

          Spring Boot 2.5

        • -

          Spock 1.3

          +

          Gradle 7.2

          +
        • +
        • +

          Spock 2.0-groovy-3.0

          +
        • +
        • +

          Grails Testing Support 2.2.0

        - -

        1.1.2 Micronaut Parent Context

        - -
        - -
        - - -
        -

        Micronaut is now the parent application context of Grails thus allowing using many Micronaut features including the Micronaut HTTP Client and Kafka Client.

        -
        -
        -

        Micronaut has also been used to improve startup and reduce overall memory consumption of Grails applications (along with associated improvements in Spring Boot 2.1).

        -
        -

        2 Getting Started

        -
        @@ -680,20 +729,20 @@

        2 Getting Started

        2.1 Installation Requirements

        -
        -

        Before installing Grails 4.0.13 you will need as a minimum a Java Development Kit (JDK) installed version 1.8 or above. Download the appropriate JDK for your operating system, run the installer, and then set up an environment variable called JAVA_HOME pointing to the location of this installation.

        +

        Before installing Grails 5.0.1 you will need as a minimum a Java Development Kit (JDK) installed version 1.8. The most recent supported version of the JDK is 11. Download the appropriate JDK for your operating system, run the installer, and then set up an environment variable called JAVA_HOME pointing to the location of this installation.

        To automate the installation of Grails we recommend SDKMAN which greatly simplifies installing and managing multiple Grails versions.

        -

        On some platforms (for example OS X) the Java installation is automatically detected. However in many cases you will want to manually configure the location of Java. For example, if you’re using bash or another variant of the Bourne Shell:

        +

        On some platforms (for example macOS) the Java installation is automatically detected. However in many cases you will want to manually configure the location of Java. For example, if you’re using bash or another variant of the Bourne Shell:

        @@ -718,7 +767,7 @@

        2.1 Installation Requirements

        2.2 Downloading and Installing

        -
        @@ -750,7 +799,7 @@

        Install with SDKMAN

        -
        sdk install grails 4.0.13
        +
        sdk install grails 5.0.1
        @@ -786,12 +835,20 @@

        Unix/Linux

      -
      -

      ===Windows -** Copy the path to the bin directory inside the grails folder you have downloaded, for example, ---- -C:/path_to_grails/bin ----

      +
      +
      +

      Windows

      +
      +
        +
      • +

        Copy the path to the bin directory inside the grails folder you have downloaded, for example,

        +
      • +
      +
      +
      +
      +
      C:/path_to_grails/bin
      +
        @@ -800,11 +857,11 @@

        Unix/Linux

      -
      -
      -

      Start + R

      +
      +
      +
      Start + R
      +
      -
      • @@ -820,7 +877,7 @@

        Unix/Linux

      -
      Grails version: 4.0.13
      +
      Grails version: 5.0.1
      @@ -831,7 +888,7 @@

      Unix/Linux

      2.3 Creating an Application

      -
      @@ -866,7 +923,7 @@

      2.3 Creating an Application

      2.4 A Hello World Example

      -
      @@ -996,7 +1053,7 @@

      2.4 A Hello World Example

      2.5 Using Interactive Mode

      -
      @@ -1018,7 +1075,7 @@

      2.5 Using Interactive Mode

      2.6 Getting Set Up in an IDE

      -
      @@ -1027,7 +1084,7 @@

      2.6 Getting Set Up in an IDE

      IntelliJ IDEA

      -

      IntelliJ IDEA is an excellent IDE for Grails 4.0 development. It comes in 2 editions, the free community edition and the paid-for ultimate edition.

      +

      IntelliJ IDEA is an excellent IDE for Grails 5.0 development. It comes in 2 editions, the free community edition and the paid-for ultimate edition.

      The community edition can be used for most things, although GSP syntax higlighting is only part of the ultimate edition

      @@ -1045,7 +1102,7 @@

      IntelliJ IDEA

      -

      To get started with Intellij IDEA and Grails 4.0 simply go to File / Open and point IDEA at your build.gradle file to import and configure the project.

      +

      To get started with Intellij IDEA and Grails 5.0 simply go to File / Open and point IDEA at your build.gradle file to import and configure the project.

      @@ -1078,7 +1135,7 @@

      TextMate, Sublime, VIM etc.

      2.7 Convention over Configuration

      -
      @@ -1139,7 +1196,7 @@

      2.7 Convention over Configuration

      2.8 Running and Debugging an Application

      -
      @@ -1195,7 +1252,7 @@

      2.8 Running and Debugging an Applicati

      2.9 Testing an Application

      -
      @@ -1217,7 +1274,7 @@

      2.9 Testing an Application

      2.10 Deploying an Application

      -
      @@ -1254,6 +1311,18 @@

      2.10 Deploying an Application

      ext['tomcat.version'] = '7.0.59'
      +
      + + + + + +
      + + +Grails 5 contains dependencies that require javax.el-api:3.0 (eg.: datastore-gorm:7.x, spring-boot:2.x) which is only supported starting from Tomcat 8.x+, based on the tomcat version table! +
      +

      Unlike most scripts which default to the development environment unless overridden, the war command runs in the production environment by default. You can override this like any script by specifying the environment name, for example:

      @@ -1276,7 +1345,7 @@

      2.10 Deploying an Application

      -
      -server -Xmx768M -XX:MaxPermSize=256m
      +
      -server -Xmx768M
      @@ -1284,7 +1353,7 @@

      2.10 Deploying an Application

      2.11 Supported Java EE Containers

      -
      @@ -1341,7 +1410,7 @@

      2.11 Supported Java EE Containers

      2.12 Creating Artefacts

      -
      @@ -1390,7 +1459,7 @@

      2.12 Creating Artefacts

      2.13 Generating an Application

      -
      @@ -1406,10 +1475,180 @@

      2.13 Generating an Application

      -

      3 Upgrading from Grails 3.3.x

      +

      3 Upgrading from the previous versions

      + +
      + +
      + + + + + +

      3.1 Upgrading from Grails 4.0.x

      - +
      + + +
      +

      Bump up Grails Version

      +
      +

      You will need to upgrade your Grails version defined in gradle.properties as:

      +
      +
      +
      gradle.properties
      +
      +
      ...
      +grailsVersion=5.0.0.RC1
      +...
      +
      +
      +
      +
      +

      Apache Groovy 3.0.7

      +
      +

      Grails 5.0.0.RC1 provide support for Groovy 3. We would recommend you to please check the Release notes for Groovy 3 to update your application in case you are using a specific feature which might not work in Groovy 3.

      +
      +
      +

      Define groovyVersion in gradle.properties to force the application to use Groovy 3.

      +
      +
      +

      Grails 5.0 app’s gradle.properties

      +
      +
      +
      gradle.properties
      +
      +
      ...
      +groovyVersion=3.0.7
      +...
      +
      +
      +
      +
      +

      Bump up GORM Version

      +
      +

      If you were using GORM, you will need to update the version defined in gradle.properties as:

      +
      +
      +
      gradle.properties
      +
      +
      ...
      +gormVersion=7.1.0.M5
      +...
      +
      +
      +
      +
      +

      GORM for MonogDB Sync Driver

      +
      +

      The GORM for MongoDB is updated to support latest mongodb-driver-sync. If you are using GORM for MongoDB and doing something specific to MongoDB Driver or low level Mongo API then you might want to take a look at Upgrading to the 4.0 Driver

      +
      +
      +
      +

      Bump up Asset Pipeline plugin version

      +
      +

      The previous version of asset-pipeline is not supported with Grails 5.0 as it is compiled with a version of Groovy which is binary incompatible with Groovy 3. So, please update the plugin version to 3.1.0.

      +
      +
      +
      +

      Disabled StringCharArrayAccessor by default

      +
      +

      The previous version of Grails use the StringCharArrayAccessor which is enabled by default and provides optimized access to java.lang.String internals. In Grails 5.0 it is disabled by default but you can enable it by setting a system property with name stringchararrayaccessor.disabled and value false.

      +
      +
      + + + + + +
      + + +Enabling StringCharArrayAccessor would show IllegalReflectiveAccess warnings as it uses reflection to do the optimizations. +
      +
      +
      +
      +

      Changes in profile.yml and feature.yml files in Grails Profiles

      +
      +

      The format of how dependencies are defined in features and profiles has been changed. See the section on Application Profiles for more information.

      +
      +
      +
      +

      Deprecation of dot navigation of Grails configuration

      +
      +

      In order to reduce complexity, improve performance, and increase maintainability, accessing configuration through dot notation (config.a.b.c) has been deprecated. This functionality will be removed in a future release.

      +
      +
      +

      Also, you would see a warning message if you are accessing configuration through the dot notation.

      +
      +
      +

      The recommended way to access configuration is:

      +
      +
      +
      +
      grailsApplication.config.getProperty("hola", String.class)
      +
      +
      +
      + +
      +

      Spring 5.3

      +
      +

      Grails 5.0.0.RC1 is built on Spring 5.3.2 See the Upgrading to Spring 5.3 if you are using Spring specific features.

      +
      +
      +
      +

      Spring Boot 2.4

      +
      +

      Grails 5.0.0.RC1 updates to Spring Boot 2.4. Please check Spring Boot 2.4 Release Notes for more information.

      +
      +
      +
      +

      Micronaut 2.0

      +
      +

      Grails 5.0.0.RC1 is shipped with Micronaut 2.0. Please check the Upgrading to Micronaut 2.x if you are using a specific feature.

      +
      +
      +
      +

      Micronaut for Spring 3.0.0

      +
      +

      Grails 5.0.0.RC1 is updated to Micronaut for Spring 3.0.0, please check out release notes for more information.

      +
      +
      +
      +

      Convert logback.groovy to logback.xml

      +
      +

      Support for logback.groovy was removed in logback 2.9.0 to mitigate CVE-2021-42550. See the upstream issue for more information.

      +
      +
      + + +

      3.2 Upgrading from Grails 3.3.x

      + +
      +
      @@ -1438,7 +1677,7 @@

      Bump up Grails Version

      gradle.properties
      ...
      -grailsVersion=4.0.0
      +grailsVersion=4.0.4
       ...
      @@ -1466,7 +1705,7 @@

      Bump up GORM Version

      gradle.properties
      ...
      -gormVersion=7.0.2
      +gormVersion=7.0.4
       ...
      @@ -1502,7 +1741,7 @@

      Hibernate 5.4 and GORM 7.x

      Spring Boot 2.1 Actuator

      -

      Please check the Spring Boot Actuator documentation since it has changed substantially from Spring Boot 1.5 the version Grails 3.x used.

      +

      Please check the Spring Boot Actuator documentation since it has changed substantially from Spring Boot 1.5 the version Grails 3.x used.

      If you had configuration such as:

      @@ -1538,7 +1777,7 @@

      Spring Boot Developer To

      Previous versions of Grails used a reloading agent called Spring Loaded. Since this library is no longer maintained and does not support Java 11 support for Spring Loaded has been removed.

      -

      As a replacement, Grails 4 applications include Spring Boot Developer Tools dependencies in the build.gradle build script. If you are migrating a Grails 3.x app, please include the following set of dependencies:

      +

      As a replacement, Grails 4 applications include Spring Boot Developer Tools dependencies in the build.gradle build script. If you are migrating a Grails 3.x app, please include the following set of dependencies:

      build.gradle
      @@ -1612,7 +1851,7 @@

      Spring Boot Gradle Plugin Changes

      -

      Grails 4 apps are built on top of Spring Boot 2.1. Starting from Spring Boot 2.0, the addResources property no longer exists. Instead, you need to set the sourceResources property to the source set that you want to use. Typically, that’s sourceSets.main. This is described in the Spring Boot Gradle plugin’s documentation.

      +

      Grails 4 apps are built on top of Spring Boot 2.1. Starting from Spring Boot 2.0, the addResources property no longer exists. Instead, you need to set the sourceResources property to the source set that you want to use. Typically that’s sourceSets.main. This is described in the Spring Boot Gradle plugin’s documentation.

      Your Grails 4 app’s build.gradle can be configured:

      @@ -1666,43 +1905,61 @@

      Upgrading to Gradle 5

      Grails 3 apps by default used Gradle 3.5. Grails 4 apps use Gradle 5.

      -

      To upgrade to Gradle 5, first do it in gradle.properties

      +

      To upgrade to Gradle 5 execute:

      -
      build.gradle | Grails 3
      -
      gradleWrapperVersion=3.5
      +
      ./gradlew wrapper --gradle-version 5.0
      -

      replace it with:

      +

      Due to changes in Gradle 5, transitive dependencies are no longer resolved for plugins. If your project makes use of a plugin that has transitive dependencies, you will need to add those explicitly to your build.gradle file.

      +
      +
      +

      If you customized your app’s build, other migrations may be necessary. Please check +Gradle Upgrading your build documentation. Especially notice, that default Gradle daemon now starts with 512MB of heap instead of 1GB. Please check Default memory settings changed documentation.

      -
      -
      build.gradle | Grails 4
      -
      -
      gradleWrapperVersion=5.0
      +
      +

      Groovy language update to 2.5.6

      +
      +

      Keep in mind, that with grails 4.0.x there is a minor groovy language upgrade (e.g. 3.3.9. used groovy 2.4.x), which requires a couple of changes, that are immediately obvious when trying to compile your source code. However there are also issues with changed implementations of core linkedlist functions! Check an overview of the breaking changes here: Breaking changes of Groovy 2.5

      +
      +

      Removed date helper functions

      -

      Then execute:

      +

      Most common issue is that date util functions have been moved to individual project, e.g new Date().format("ddMMyyyy") no longer works without adding:

      +
      build.gradle
      -
      ./gradlew wrapper --gradle-version 5.0
      +
      dependencies {
      +    compile "org.codehaus.groovy:groovy-dateutil:3.0.4"
      +}
      -
      -

      Due to changes in Gradle 5, transitive dependencies are no longer resolved for plugins. If your project makes use of a plugin that has transitive dependencies, you will need to add those explicitly to your build.gradle file.

      +
      +

      Changed linked list method implementations

      -

      If you customized your app’s build, other migrations may be necessary. Please check -Gradle Upgrading your build documentation.

      +

      Check whether you are using the groovy version of linkedlist implementations:

      +
      +
      +
        +
      • +

        [].pop() - will no longer remove the last, but the first element of the list. Replace it with [].removeLast() is recommended.

        +
      • +
      • +

        [].push(..) - will no longer add to the end, but to the beginning of the list. Replace it with [].add(..) is recommended.

        +
      • +
      +

      H2 Web Console

      -

      Spring Boot 2.1 includes native support for the H2 database web console. Since this is already included in Spring Boot the equivalent feature has been removed from Grails. The H2 console is therefore now available at /h2-console instead of the previous URI of /dbconsole. See Using H2’s Web Console in the Spring Boot documentation for more information.

      +

      Spring Boot 2.1 includes native support for the H2 database web console. Since this is already included in Spring Boot the equivalent feature has been removed from Grails. The H2 console is therefore now available at /h2-console instead of the previous URI of /dbconsole. See Using H2’s Web Console in the Spring Boot documentation for more information.

      @@ -2168,7 +2425,7 @@

      Scheduled Methods

      4 Configuration

      -
      @@ -2182,7 +2439,7 @@

      4 Configuration

      4.1 Basic Configuration

      -
      @@ -2271,7 +2528,7 @@

      4.1 Basic Configuration

      Accessing Configuration with GrailsApplication

      -

      If you want to read runtime configuration settings, i.e. those defined in application.yml, use the grailsApplication object, which is available as a variable in controllers and tag libraries:

      +

      If you want to read runtime configuration settings, i.e. those defined in application.yml, use the grailsApplication object, which is available as a variable in controllers and tag libraries:

      @@ -2285,7 +2542,7 @@

      Accessing Configuration

      -

      The config property of the grailsApplication object is an instance of the Config interface and provides a number of useful methods to read the configuration of the application.

      +

      The config property of the grailsApplication object is an instance of the Config interface and provides a number of useful methods to read the configuration of the application.

      In particular, the getProperty method (seen above) is useful for efficiently retrieving configuration properties, while specifying the property type (the default type is String) and/or providing a default fallback value.

      @@ -2311,7 +2568,7 @@

      Accessing Configuration

      -

      Notice that the Config instance is a merged configuration based on Spring’s PropertySource concept and reads configuration from the environment, system properties and the local application configuration merging them into a single object.

      +

      Notice that the Config instance is a merged configuration based on Spring’s PropertySource concept and reads configuration from the environment, system properties and the local application configuration merging them into a single object.

      GrailsApplication can be easily injected into services and other Grails artifacts:

      @@ -2334,7 +2591,7 @@

      Accessing Configuration

      GrailsConfigurationAware Interface

      -

      Accessing configuration dynamically at runtime can have a small effect on application performance. An alternative approach is to implement the GrailsConfigurationAware interface, which provides a setConfiguration method that accepts the application configuration as a parameter when the class is initialized. You can then assign relevant configuration properties to instance properties on the class for later usage.

      +

      Accessing configuration dynamically at runtime can have a small effect on application performance. An alternative approach is to implement the GrailsConfigurationAware interface, which provides a setConfiguration method that accepts the application configuration as a parameter when the class is initialized. You can then assign relevant configuration properties to instance properties on the class for later usage.

      The Config instance has the same properties and usage as the injected GrailsApplication config object. Here is the service class from the previous example, using GrailsConfigurationAware instead of injecting GrailsApplication:

      @@ -2362,7 +2619,7 @@

      GrailsConfigurationAware Interface<

      Spring Value Annotation

      -

      You can use Spring’s Value annotation to inject configuration values:

      +

      You can use Spring’s Value annotation to inject configuration values:

      @@ -2399,7 +2656,7 @@

      Spring Value Annotation

      4.1.1 Options for the YML format Config

      -
      @@ -2448,7 +2705,7 @@

      Using system properties

      External configuration

      Grails will read application.(properties|yml) from the ./config or the current directory by default. -As Grails is a SpringBoot configuration options are available as well, for documentation please consult: https://docs.spring.io/spring-boot/docs/2.1.x/reference/html/boot-features-external-config.html#boot-features-external-config-application-property-files

      +As Grails is a SpringBoot configuration options are available as well, for documentation please consult: https://docs.spring.io/spring-boot/docs/2.5.2/reference/html/boot-features-external-config.html#boot-features-external-config-application-property-files

      @@ -2456,7 +2713,7 @@

      External configuration

      4.1.2 Built in options

      -
      @@ -2488,7 +2745,7 @@

      Runtime settings

      grails.mime.types - A map of supported mime types used for Content Negotiation.

    • -

      grails.serverURL - A string specifying the server URL portion of absolute links, including server name e.g. grails.serverURL="http://my.yourportal.com". See createLink. Also used by redirects.

      +

      grails.serverURL - A string specifying the server URL portion of absolute links, including server name e.g. grails.serverURL="http://my.yourportal.com". See createLink. Also used by redirects.

    • grails.views.gsp.sitemesh.preprocess - Determines whether SiteMesh preprocessing happens. Disabling this slows down page rendering, but if you need SiteMesh to parse the generated HTML from a GSP view then disabling it is the right option. Don’t worry if you don’t understand this advanced property: leave it set to true.

      @@ -2504,36 +2761,24 @@

      Runtime settings

      4.1.3 Logging

      -
      -

      Since Grails 3.0, logging is handled by the Logback logging framework and can be configured with the grails-app/conf/logback.groovy file.

      -
      -
      - - - - - -
      - - -If you prefer XML you can replace the logback.groovy file with a logback.xml file instead. -
      +

      Since Grails 3.0, logging is handled by the Logback logging framework and can be configured with the grails-app/conf/logback.xml file.

      -

      For more information on configuring logging refer to the Logback documentation on the subject.

      +

      For more information on configuring logging refer to the Logback documentation on the subject.

      4.1.3.1 Logger Names

      -
      @@ -2651,7 +2896,7 @@

      4.1.3.1 Logger Names

      4.1.3.2 Masking Request Parameters From Stacktrace Logs

      -
      @@ -2690,7 +2935,7 @@

      4.1.3.2 Masking Request Para

      4.1.3.3 External Configuration File

      -
      @@ -2703,21 +2948,21 @@

      4.1.3.3 External Configuration File

      grails-app/conf/application.yml
      logging:
      -    config: /Users/me/config/logback.groovy
      + config: /Users/me/config/logback.xml
    • Alternatively, you can supply the configuration file location with a system property:

      -

      $ ./gradlew -Dlogging.config=/Users/me/config/logback.groovy bootRun

      +

      $ ./gradlew -Dlogging.config=/Users/me/config/logback.xml bootRun

      Or, you could use an environment variable:

      -
      $ export LOGGING_CONFIG=/Users/me/config/logback.groovy
      +
      $ export LOGGING_CONFIG=/Users/me/config/logback.xml
       $ ./gradlew bootRun
      @@ -2726,7 +2971,7 @@

      4.1.3.3 External Configuration File

      4.1.4 GORM

      -
      @@ -2769,7 +3014,7 @@

      4.1.4 GORM

      4.1.5 Configuring an HTTP proxy

      -
      @@ -2809,7 +3054,7 @@

      4.1.5 Configuring an HTTP proxy

      4.2 The Application Class

      -
      @@ -2819,14 +3064,14 @@

      4.2 The Application Class

      Every new Grails application features an Application class within the grails-app/init directory.

      -

      The Application class subclasses the GrailsAutoConfiguration class and features a static void main method, meaning it can be run as a regular application.

      +

      The Application class subclasses the GrailsAutoConfiguration class and features a static void main method, meaning it can be run as a regular application.

      4.2.1 Executing the Application Class

      -
      @@ -2855,7 +3100,7 @@

      4.2.1 Executing the Application Class

      4.2.2 Customizing the Application Class

      -
      @@ -2885,7 +3130,7 @@

      Customizing Scanning

      Registering Additional Beans

      -

      The Application class can also be used as a source for Spring bean definitions, simply define a method annotated with the Bean and the returned object will become a Spring bean. The name of the method is used as the bean name:

      +

      The Application class can also be used as a source for Spring bean definitions, simply define a method annotated with the Bean and the returned object will become a Spring bean. The name of the method is used as the bean name:

      @@ -2905,14 +3150,14 @@

      Registering Additional Beans

      4.2.3 The Application LifeCycle

      -
      -

      The Application class also implements the GrailsApplicationLifeCycle interface which all plugins implement.

      +

      The Application class also implements the GrailsApplicationLifeCycle interface which all plugins implement.

      This means that the Application class can be used to perform the same functions as a plugin. You can override the regular plugins hooks such as doWithSpring, doWithApplicationContext and so on by overriding the appropriate method:

      @@ -2936,7 +3181,7 @@

      4.2.3 The Application LifeCycle

      4.3 Environments

      -
      @@ -3039,7 +3284,7 @@

      Packaging and Running

      Programmatic Environment Detection

      -

      Within your code, such as in a Gant script or a bootstrap class you can detect the environment using the Environment class:

      +

      Within your code, such as in a Gant script or a bootstrap class you can detect the environment using the Environment class:

      @@ -3102,7 +3347,7 @@

      Generic Per Environment Execution4.4 The DataSource

      -
      @@ -3345,7 +3590,7 @@

      More on dbCreate

      4.4.1 DataSources and Environments

      -
      @@ -3381,7 +3626,7 @@

      4.4.1 DataSources and Environments

      4.4.2 Automatic Database Migration

      -
      @@ -3433,7 +3678,7 @@

      4.4.2 Automatic Database Migration

      4.4.3 Transaction-aware DataSource Proxy

      -
      @@ -3450,7 +3695,7 @@

      4.4.3 Transaction-aware DataSource Prox

      4.4.4 Database Console

      -
      @@ -3460,14 +3705,14 @@

      4.4.4 Database Console

      The H2 database console is a convenient feature of H2 that provides a web-based interface to any database that you have a JDBC driver for, and it’s very useful to view the database you’re developing against. It’s especially useful when running against an in-memory database.

      -

      You can access the console by navigating to http://localhost:8080/h2-console in a browser. See the Spring Boot H2 Console Documentation for more information on the options available.

      +

      You can access the console by navigating to http://localhost:8080/h2-console in a browser. See the Spring Boot H2 Console Documentation for more information on the options available.

      4.4.5 Multiple Datasources

      -
      @@ -3771,7 +4016,7 @@

      Transactions across multiple

      The BE1PC implementation was added in Grails 2.3.6. . Before this change additional datasources didn’t take part in transactions initiated in Grails. The transactions in additional datasources were basically in auto commit mode. In some cases this might be the wanted behavior. One reason might be performance: on the start of each new transaction, the BE1PC transaction manager creates a new transaction to each datasource. It’s possible to leave an additional datasource out of the BE1PC transaction manager by setting transactional = false in the respective configuration block of the additional dataSource. Datasources with readOnly = true will also be left out of the chained transaction manager (since 2.3.7).

      -

      By default, the BE1PC implementation will add all beans implementing the Spring PlatformTransactionManager interface to the chained BE1PC transaction manager. For example, a possible JMSTransactionManager bean in the Grails application context would be added to the Grails BE1PC transaction manager’s chain of transaction managers.

      +

      By default, the BE1PC implementation will add all beans implementing the Spring PlatformTransactionManager interface to the chained BE1PC transaction manager. For example, a possible JMSTransactionManager bean in the Grails application context would be added to the Grails BE1PC transaction manager’s chain of transaction managers.

      You can exclude transaction manager beans from the BE1PC implementation with this configuration option:

      @@ -3795,7 +4040,7 @@

      XA and Two-phase Commit

      When the Best Efforts 1PC pattern isn’t suitable for handling transactions across multiple transactional resources (not only datasources), there are several options available for adding XA/2PC support to Grails applications.

      -

      The Spring transactions documentation contains information about integrating the JTA/XA transaction manager of different application servers. In this case, you can configure a bean with the name transactionManager manually in resources.groovy or resources.xml file.

      +

      The Spring transactions documentation contains information about integrating the JTA/XA transaction manager of different application servers. In this case, you can configure a bean with the name transactionManager manually in resources.groovy or resources.xml file.

      @@ -3803,7 +4048,7 @@

      XA and Two-phase Commit

      4.5 Versioning

      -
      @@ -3812,7 +4057,7 @@

      4.5 Versioning

      Detecting Versions at Runtime

      -

      You can detect the application version using Grails' support for application metadata using the GrailsApplication class. For example within controllers there is an implicit grailsApplication variable that can be used:

      +

      You can detect the application version using Grails' support for application metadata using the GrailsApplication class. For example within controllers there is an implicit grailsApplication variable that can be used:

      @@ -3843,7 +4088,7 @@

      Detecting Versions at Runtime

      4.6 Dependency Resolution

      -
      @@ -3857,7 +4102,7 @@

      4.6 Dependency Resolution

      5 The Command Line

      -
      @@ -4005,7 +4250,7 @@

      non-interactive mode

      5.1 Interactive Mode

      -
      @@ -4057,7 +4302,7 @@

      5.1 Interactive Mode

      5.2 Creating Custom Scripts

      -
      @@ -4119,7 +4364,7 @@

      Template Generation

      Plugins and applications that need to define template generation tasks can do so using scripts. A example of this is the Scaffolding plugin which defines the generate-all and generate-controllers commands.

      -

      Every Grails script implements the TemplateRenderer interface which makes it trivial to render templates to the users project workspace.

      +

      Every Grails script implements the TemplateRenderer interface which makes it trivial to render templates to the users project workspace.

      The following is an example of the create-script command written in Groovy:

      @@ -4166,7 +4411,7 @@

      Template Generation

      The "model"

      -

      Executing the model method with a Class/String/File/Resource will return an instance of Model. The model contains several properties that can help you generate code.

      +

      Executing the model method with a Class/String/File/Resource will return an instance of Model. The model contains several properties that can help you generate code.

      Example:

      @@ -4190,7 +4435,7 @@

      The "model"

      Working with files

      -

      All scripts have access to methods on the FileSystemInteraction class. It contains helpful methods to copy, delete, and create files.

      +

      All scripts have access to methods on the FileSystemInteraction class. It contains helpful methods to copy, delete, and create files.

      @@ -4198,7 +4443,7 @@

      Working with files

      5.3 Creating Custom Commands

      -
      @@ -4287,7 +4532,7 @@

      5.3 Creating Custom Commands

      5.4 Re-using Grails scripts

      -
      @@ -4339,14 +4584,14 @@

      Invoking Ant

      5.5 Building with Gradle

      -
      -

      Grails 3.1 uses the Gradle Build System for build related tasks such as compilation, runnings tests and producing binary distributions of your project. It is recommended to use Gradle 2.2 or above with Grails 3.1.

      +

      Since Grails 3.1 the Gradle Build System is used for build related tasks such as compilation, runnings tests and producing binary distributions of your project. It is recommended to use Gradle 2.2 or above with Grails 3.1 (and higher).

      The build is defined by the build.gradle file which specifies the version of your project, the dependencies of the project and the repositories where to find those dependencies (amongst other things).

      @@ -4361,7 +4606,7 @@

      5.5 Building with Gradle

      -

      You can invoke Gradle directly using the gradle command and use your own local version of Gradle, however you will need Gradle 2.2 or above to work with Grails 3.0:

      +

      You can invoke Gradle directly using the gradle command and use your own local version of Gradle, however you will need Gradle 2.2 or above to work with Grails 3.0 (and higher):

      @@ -4373,7 +4618,7 @@

      5.5 Building with Gradle

      5.5.1 Defining Dependencies with Gradle

      -
      @@ -4402,7 +4647,8 @@

      5.5.1 Defining Dependencies with Gradle

      runtime 'org.grails.plugins:asset-pipeline' runtime 'org.grails.plugins:scaffolding' - testCompile 'org.grails:grails-plugin-testing' + testCompile "org.grails:grails-gorm-testing-support" + testCompile "org.grails:grails-web-testing-support" testCompile 'org.grails.plugins:geb' // Note: It is recommended to update to a more robust driver (Chrome, Firefox etc.) @@ -4430,7 +4676,7 @@

      5.5.1 Defining Dependencies with Gradle

      5.5.2 Working with Gradle Tasks

      -
      @@ -4469,6 +4715,10 @@

      5.5.2 Working with Gradle Tasks

      test-app

      +

      check

      + + +

      test-app --unit

      test

      @@ -4521,7 +4771,7 @@

      5.5.2 Working with Gradle Tasks

      5.5.3 Grails plugins for Gradle

      -
      @@ -4587,7 +4837,7 @@

      5.5.3 Grails plugins for Gradle

      6 Application Profiles

      -
      @@ -4741,7 +4991,7 @@

      Profile Defaults

      6.1 Creating Profiles

      -
      @@ -4814,8 +5064,13 @@

      6.1 Creating Profiles

      excludes: - org.grails.grails-core dependencies: - compile: - - "org.mycompany:myplugin:1.0.1" + - scope: compile + coords: "org.mycompany:myplugin:1.0.1" + - scope: testCompile + coords: org.spockframework:spock-core + excludes: + - group: org.codehaus.groovy + module: groovy-all
      @@ -4850,7 +5105,7 @@

      6.1 Creating Profiles

      6.2 Profile Inheritance

      -
      @@ -4907,7 +5162,7 @@

      6.2 Profile Inheritance

      6.3 Publishing Profiles

      -
      @@ -4995,7 +5250,7 @@

      Publishing Profiles to a

      6.4 Understanding Profiles

      -
      @@ -5096,13 +5351,30 @@

      5) dependencies

      dependencies:
      -    excludes:
      -        - "org.grails:hibernate:*"
      -    build:
      -        - "org.grails:grails-gradle-plugin:$grailsVersion"
      -    compile:
      -        - "org.springframework.boot:spring-boot-starter-logging"
      -        - "org.springframework.boot:spring-boot-autoconfigure"
      + - scope: excludes + coords: "org.grails:hibernate:*" + - scope: build + coords: "org.grails:grails-gradle-plugin:$grailsVersion" + - scope: compile + coords: "org.springframework.boot:spring-boot-starter-logging" + - scope: compile + coords: "org.springframework.boot:spring-boot-autoconfigure" +
      +
      +
      +
      Excluding Transitive Dependencies
      +
      +

      To exclude transitive dependencies, define excludes key with a List of transitive dependencies Map of the dependency group, module, classifier, and extension as:

      +
      +
      +
      +
      dependencies:
      +    - scope: testCompile
      +      coords: org.spockframework:spock-core
      +      excludes:
      +        - group: org.codehaus.groovy
      +          module: groovy-all
      +
      @@ -5205,7 +5477,7 @@

      What happens when a profile is use

      6.5 Creating Profile Commands

      -
      @@ -5245,7 +5517,7 @@

      6.5 Creating Profile Commands

      mkdir - To make a directory specified by the location parameter

    • -

      execute - To execute a command specified by the class parameter. Must be a class that implements the Command interface.

      +

      execute - To execute a command specified by the class parameter. Must be a class that implements the Command interface.

    • gradle - To execute one or many Gradle tasks specified by the tasks parameter.

      @@ -5268,7 +5540,7 @@

      6.5 Creating Profile Commands

    • -

      If you need more flexiblity than what the declarative YAML approach provides you can create Groovy script commands. Each Command script is extends from the GroovyScriptCommand class and hence has all of the methods of that class available to it.

      +

      If you need more flexibility than what the declarative YAML approach provides you can create Groovy script commands. Each Command script is extends from the GroovyScriptCommand class and hence has all of the methods of that class available to it.

      The following is an example of the create-script command written in Groovy:

      @@ -5299,7 +5571,7 @@

      6.5 Creating Profile Commands

      6.6 Creating Profile Features

      -
      @@ -5324,8 +5596,8 @@

      6.6 Creating Profile Features

      description: Description of the feature
       # customize versions here
       # dependencies:
      -#   compile:
      -#     - "org.grails.plugins:myplugin2:1.0"
      +#   - scope: compile
      +#     coords: "org.grails.plugins:myplugin2:1.0"
       #
      @@ -5339,10 +5611,10 @@

      6.6 Creating Profile Features

      plugins: - asset-pipeline dependencies: - build: - - 'com.bertramlabs.plugins:asset-pipeline-gradle:2.5.0' - runtime: - - "org.grails.plugins:asset-pipeline"
      + - scope: build + coords: 'com.bertramlabs.plugins:asset-pipeline-gradle:2.5.0' + - scope: runtime + coords: "org.grails.plugins:asset-pipeline"
      @@ -5378,7 +5650,7 @@

      6.6 Creating Profile Features

      7 Object Relational Mapping (GORM)

      -
      @@ -5408,7 +5680,7 @@

      7 Object Relational Mapping (GORM)

      7.1 Quick Start Guide

      -
      @@ -5485,7 +5757,7 @@

      7.1 Quick Start Guide

      7.1.1 Basic CRUD

      -
      @@ -5576,7 +5848,7 @@

      Delete

      7.2 Further Reading on GORM

      -
      @@ -5590,7 +5862,7 @@

      7.2 Further Reading on GORM

      8 The Web Layer

      -
      @@ -5602,7 +5874,7 @@

      8 The Web Layer

      8.1 Controllers

      -
      @@ -5619,7 +5891,7 @@

      8.1 Controllers

      8.1.1 Understanding Controllers and Actions

      -
      @@ -5719,7 +5991,7 @@

      The Default Action

      8.1.2 Controllers and Scopes

      -
      @@ -5733,13 +6005,13 @@

      Available Scopes

      • -

        servletContext - Also known as application scope, this scope lets you share state across the entire web application. The servletContext is an instance of ServletContext

        +

        servletContext - Also known as application scope, this scope lets you share state across the entire web application. The servletContext is an instance of ServletContext

      • -

        session - The session allows associating state with a given user and typically uses cookies to associate a session with a client. The session object is an instance of HttpSession

        +

        session - The session allows associating state with a given user and typically uses cookies to associate a session with a client. The session object is an instance of HttpSession

      • -

        request - The request object allows the storage of objects for the current request only. The request object is an instance of HttpServletRequest

        +

        request - The request object allows the storage of objects for the current request only. The request object is an instance of HttpServletRequest

      • params - Mutable map of incoming request query string or POST parameters

        @@ -5753,7 +6025,7 @@

        Available Scopes

        Accessing Scopes

        -

        Scopes can be accessed using the variable names above in combination with Groovy’s array index operator, even on classes provided by the Servlet API such as the HttpServletRequest:

        +

        Scopes can be accessed using the variable names above in combination with Groovy’s array index operator, even on classes provided by the Servlet API such as the HttpServletRequest:

        @@ -5866,7 +6138,7 @@

        Scoped Controllers

        8.1.3 Models and Views

        -
        @@ -5897,7 +6169,7 @@

        Returning the Model

        -

        A more advanced approach is to return an instance of the Spring ModelAndView class:

        +

        A more advanced approach is to return an instance of the Spring ModelAndView class:

        @@ -6102,7 +6374,7 @@

        Rendering a Response

        8.1.4 Redirects and Chaining

        -
        @@ -6130,7 +6402,7 @@

        Redirects

        -

        Internally the redirect method uses the HttpServletResponse object’s sendRedirect method.

        +

        Internally the redirect method uses the HttpServletResponse object’s sendRedirect method.

        The redirect method expects one of:

        @@ -6293,7 +6565,7 @@

        Chaining

        8.1.5 Data Binding

        -
        @@ -6866,7 +7138,7 @@

        Data binding and type conversi

        The BindUsing Annotation

        -

        The BindUsing annotation may be used to define a custom binding mechanism for a particular field in a class. Any time data binding is being applied to the field the closure value of the annotation will be invoked with 2 arguments. The first argument is the object that data binding is being applied to and the second argument is DataBindingSource which is the data source for the data binding. The value returned from the closure will be bound to the property. The following example would result in the upper case version of the name value in the source being applied to the name field during data binding.

        +

        The BindUsing annotation may be used to define a custom binding mechanism for a particular field in a class. Any time data binding is being applied to the field the closure value of the annotation will be invoked with 2 arguments. The first argument is the object that data binding is being applied to and the second argument is DataBindingSource which is the data source for the data binding. The value returned from the closure will be bound to the property. The following example would result in the upper case version of the name value in the source being applied to the name field during data binding.

        @@ -6899,7 +7171,7 @@

        The BindUsing Annotation

        -

        The BindUsing annotation may be used to define a custom binding mechanism for all of the fields on a particular class. When the annotation is applied to a class, the value assigned to the annotation should be a class which implements the BindingHelper interface. An instance of that class will be used any time a value is bound to a property in the class that this annotation has been applied to.

        +

        The BindUsing annotation may be used to define a custom binding mechanism for all of the fields on a particular class. When the annotation is applied to a class, the value assigned to the annotation should be a class which implements the BindingHelper interface. An instance of that class will be used any time a value is bound to a property in the class that this annotation has been applied to.

        @@ -6914,8 +7186,8 @@

        The BindUsing Annotation

        The BindInitializer Annotation

        -

        The BindInitializer annotation may be used to initialize an associated field in a class if it is undefined. -Unlike the BindUsing annotation, databinding will continue binding all nested properties on this association.

        +

        The BindInitializer annotation may be used to initialize an associated field in a class if it is undefined. +Unlike the BindUsing annotation, databinding will continue binding all nested properties on this association.

        @@ -6953,7 +7225,7 @@

        The BindInitializer Annotation

        Custom Data Converters

        -

        The binder will do a lot of type conversion automatically. Some applications may want to define their own mechanism for converting values and a simple way to do this is to write a class which implements ValueConverter and register an instance of that class as a bean in the Spring application context.

        +

        The binder will do a lot of type conversion automatically. Some applications may want to define their own mechanism for converting values and a simple way to do this is to write a class which implements ValueConverter and register an instance of that class as a bean in the Spring application context.

        @@ -7017,7 +7289,7 @@

        Custom Data Converters

        Date Formats For Data Binding

        -

        A custom date format may be specified to be used when binding a String to a Date value by applying the BindingFormat annotation to a Date field.

        +

        A custom date format may be specified to be used when binding a String to a Date value by applying the BindingFormat annotation to a Date field.

        @@ -7064,7 +7336,7 @@

        Date Formats For Data Binding

        Custom Formatted Converters

        -

        You may supply your own handler for the BindingFormat annotation by writing a class which implements the FormattedValueConverter interface and registering an instance of that class as a bean in the Spring application context. Below is an example of a trivial custom String formatter that might convert the case of a String based on the value assigned to the BindingFormat annotation.

        +

        You may supply your own handler for the BindingFormat annotation by writing a class which implements the FormattedValueConverter interface and registering an instance of that class as a bean in the Spring application context. Below is an example of a trivial custom String formatter that might convert the case of a String based on the value assigned to the BindingFormat annotation.

        @@ -7181,7 +7453,7 @@

        Structured Data Binding Editors

        A Gadget has 2 Shape fields. A Shape has an area property. It may be that the application wants to accept request parameters like width and height and use those to calculate the area of a Shape at binding time. A structured binding editor is well suited for that.

        -

        The way to register a structured editor with the data binding process is to add an instance of the grails.databinding.TypedStructuredBindingEditor interface to the Spring application context. The easiest way to implement the TypedStructuredBindingEditor interface is to extend the org.grails.databinding.converters.AbstractStructuredBindingEditor abstract class and override the getPropertyValue method as shown below:

        +

        The way to register a structured editor with the data binding process is to add an instance of the grails.databinding.TypedStructuredBindingEditor interface to the Spring application context. The easiest way to implement the TypedStructuredBindingEditor interface is to extend the org.grails.databinding.converters.AbstractStructuredBindingEditor abstract class and override the getPropertyValue method as shown below:

        src/main/groovy/databinding/converters/StructuredShapeEditor.groovy
        @@ -7249,7 +7521,7 @@

        Structured Data Binding Editors

        Data Binding Event Listeners

        -

        The DataBindingListener interface provides a mechanism for listeners to be notified of data binding events. The interface looks like this:

        +

        The DataBindingListener interface provides a mechanism for listeners to be notified of data binding events. The interface looks like this:

        @@ -7319,7 +7591,7 @@

        Data Binding Event Listeners

        -

        Any bean in the Spring application context which implements that interface will automatically be registered with the data binder. The DataBindingListenerAdapter class implements the DataBindingListener interface and provides default implementations for all of the methods in the interface so this class is well suited for subclassing so your listener class only needs to provide implementations for the methods your listener is interested in.

        +

        Any bean in the Spring application context which implements that interface will automatically be registered with the data binder. The DataBindingListenerAdapter class implements the DataBindingListener interface and provides default implementations for all of the methods in the interface so this class is well suited for subclassing so your listener class only needs to provide implementations for the methods your listener is interested in.

        @@ -7354,7 +7626,7 @@

        Using The Data Binder Directly

        -

        An instance of the data binder is in the Spring application context with a bean name of grailsWebDataBinder. That bean implements the DataBinder interface. The following code demonstrates using the data binder directly.

        +

        An instance of the data binder is in the Spring application context with a bean name of grailsWebDataBinder. That bean implements the DataBinder interface. The following code demonstrates using the data binder directly.

        grails-app/services/bindingdmeo/WidgetService
        @@ -7376,7 +7648,7 @@

        Using The Data Binder Directly

        -

        See the DataBinder documentation for more information about overloaded versions +

        See the DataBinder documentation for more information about overloaded versions of the bind method.

        @@ -7446,7 +7718,7 @@

        Data Binding and Security Concerns<

        8.1.6 Responding with JSON

        -
        @@ -7489,7 +7761,7 @@

        Using the respond method to ou

        -

        The respond method will then look for an appriopriate Renderer for the object and the calculated media type from the RendererRegistry.

        +

        The respond method will then look for an appriopriate Renderer for the object and the calculated media type from the RendererRegistry.

        Grails includes a number of pre-configured Renderer implementations that will produce default representations of JSON responses for the argument passed to respond. For example going to the /book.json URI will produce JSON such as:

        @@ -7698,7 +7970,7 @@

        Using the render method to outp

        8.1.7 More on JSONBuilder

        -
        @@ -7708,14 +7980,14 @@

        8.1.7 More on JSONBuilder

        The previous section on XML and JSON responses covered simplistic examples of rendering XML and JSON responses. Whilst the XML builder used by Grails is the standard XmlSlurper found in Groovy.

        -

        For JSON, since Grails 3.1, Grails uses Groovy’s StreamingJsonBuilder by default and you can refer to the Groovy documentation and StreamingJsonBuilder API documentation on how to use it.

        +

        For JSON, since Grails 3.1, Grails uses Groovy’s StreamingJsonBuilder by default and you can refer to the Groovy documentation and StreamingJsonBuilder API documentation on how to use it.

        8.1.8 Responding with XML

        -
        @@ -7727,7 +7999,7 @@

        8.1.8 Responding with XML

        8.1.9 Uploading Files

        -
        @@ -7736,7 +8008,7 @@

        8.1.9 Uploading Files

        Programmatic File Uploads

        -

        Grails supports file uploads using Spring’s MultipartHttpServletRequest interface. The first step for file uploading is to create a multipart form like this:

        +

        Grails supports file uploads using Spring’s MultipartHttpServletRequest interface. The first step for file uploading is to create a multipart form like this:

        @@ -7751,7 +8023,7 @@

        Programmatic File Uploads

        The uploadForm tag conveniently adds the enctype="multipart/form-data" attribute to the standard <g:form> tag.

        -

        There are then a number of ways to handle the file upload. One is to work with the Spring MultipartFile instance directly:

        +

        There are then a number of ways to handle the file upload. One is to work with the Spring MultipartFile instance directly:

        @@ -7769,7 +8041,7 @@

        Programmatic File Uploads

        -

        This is convenient for doing transfers to other destinations and manipulating the file directly as you can obtain an InputStream and so on with the MultipartFile interface.

        +

        This is convenient for doing transfers to other destinations and manipulating the file directly as you can obtain an InputStream and so on with the MultipartFile interface.

        @@ -7864,7 +8136,7 @@

        Increase Upload Max File Size

        8.1.10 Command Objects

        -
        @@ -8221,14 +8493,14 @@

        Working with Lists of Command Ob

        8.1.11 Handling Duplicate Form Submissions

        -
        -

        Grails has built-in support for handling duplicate form submissions using the "Synchronizer Token Pattern". To get started you define a token on the form tag:

        +

        Grails has built-in support for handling duplicate form submissions using the "Synchronizer Token Pattern". To get started you define a token on the form tag:

        @@ -8274,7 +8546,7 @@

        8.1.11 Handling Duplicate Form Submissions

        8.1.12 Simple Type Converters

        -
        @@ -8326,7 +8598,7 @@

        Handling Multi Parameters

        8.1.13 Declarative Controller Exception Handling

        -
        @@ -8442,7 +8714,7 @@

        8.1.13 Declarative Controller Exception Han

        8.2 Groovy Server Pages

        -
        @@ -8524,7 +8796,7 @@

        8.2 Groovy Server Pages

        8.3 URL Mappings

        -
        @@ -8551,7 +8823,7 @@

        8.3 URL Mappings

        8.3.1 Mapping to Controllers and Actions

        -
        @@ -8626,7 +8898,7 @@

        8.3.1 Mapping to Controllers and Actions

        8.3.2 Mapping to REST resources

        -
        @@ -8995,7 +9267,7 @@

        Linking to RESTful Mappings

        8.3.3 Redirects In URL Mappings

        -
        @@ -9035,7 +9307,7 @@

        8.3.3 Redirects In URL Mappings

        8.3.4 Embedded Variables

        -
        @@ -9198,7 +9470,7 @@

        Dynamically Resolved Variables

        8.3.5 Mapping to Views

        -
        @@ -9229,7 +9501,7 @@

        8.3.5 Mapping to Views

        8.3.6 Mapping to Response Codes

        -
        @@ -9313,7 +9585,7 @@

        Declarative Error Handling

        8.3.7 Mapping to HTTP methods

        -
        @@ -9340,7 +9612,7 @@

        8.3.7 Mapping to HTTP methods

        8.3.8 Mapping Wildcards

        -
        @@ -9417,14 +9689,14 @@

        8.3.8 Mapping Wildcards

        8.3.9 Automatic Link Re-Writing

        -
        -

        Another great feature of URL mappings is that they automatically customize the behaviour of the link tag so that changing the mappings don’t require you to go and change all of your links.

        +

        Another great feature of URL mappings is that they automatically customize the behaviour of the link tag so that changing the mappings don’t require you to go and change all of your links.

        This is done through a URL re-writing technique that reverse engineers the links from the URL mappings. So given a mapping such as the blog one from an earlier section:

        @@ -9466,7 +9738,7 @@

        8.3.9 Automatic Link Re-Writing

        8.3.10 Applying Constraints

        -
        @@ -9522,7 +9794,7 @@

        8.3.10 Applying Constraints

        8.3.11 Named URL Mappings

        -
        @@ -9649,7 +9921,7 @@

        8.3.11 Named URL Mappings

        8.3.12 Customizing URL Formats

        -
        @@ -9665,7 +9937,7 @@

        8.3.12 Customizing URL Formats

        -

        Arbitrary strategies may be plugged in by providing a class which implements the UrlConverter interface and adding an instance of that class to the Spring application context with the bean name of grails.web.UrlConverter.BEAN_NAME. If Grails finds a bean in the context with that name, it will be used as the default converter and there is no need to assign a value to the grails.web.url.converter config property.

        +

        Arbitrary strategies may be plugged in by providing a class which implements the UrlConverter interface and adding an instance of that class to the Spring application context with the bean name of grails.web.UrlConverter.BEAN_NAME. If Grails finds a bean in the context with that name, it will be used as the default converter and there is no need to assign a value to the grails.web.url.converter config property.

        src/main/groovy/com/myapplication/MyUrlConverterImpl.groovy
        @@ -9693,7 +9965,7 @@

        8.3.12 Customizing URL Formats

        8.3.13 Namespaced Controllers

        -
        @@ -9841,7 +10113,7 @@

        8.3.13 Namespaced Controllers

        8.4 CORS

        -
        @@ -9892,12 +10164,12 @@

        8.4 CORS

        allowCredentials

        -

        true

        +

        false

        -

        Some of these settings come directly from Spring Boot and can change in future versions. See Spring CORS Configuration Documentation

        +

        Some of these settings come directly from Spring Boot and can change in future versions. See Spring CORS Configuration Documentation

        All of those settings can be easily overridden.

        @@ -9927,12 +10199,15 @@

        8.4 CORS

        allowedHeaders: - Content-Type mappings: - /api/**: + '[/api/**]': allowedOrigins: - http://localhost:5000 # Other configurations not specified default to the global config
        +
        +

        Note that the mapping key must be made with bracket notation (see https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-Configuration-Binding#map-based-binding), which is a breaking change between Spring Boot 1.5 (Grails 3) and Spring Boot 2 (Grails 4).

        +
        @@ -9976,7 +10251,7 @@

        8.4 CORS

        - +

        allowCredentials

        true

        false

        @@ -9990,7 +10265,7 @@

        8.4 CORS

        cors: enabled: true mappings: - /api/**: inherit + '[/api/**]': inherit
        @@ -9998,7 +10273,7 @@

        8.4 CORS

        8.5 Interceptors

        -
        @@ -10044,7 +10319,7 @@

        Interceptors vs Filters

        8.5.1 Defining Interceptors

        -
        @@ -10054,7 +10329,7 @@

        8.5.1 Defining Interceptors

        By default interceptors will match the controllers with the same name. For example if you have an interceptor called BookInterceptor then all requests to the actions of the BookController will trigger the interceptor.

        -

        An Interceptor implements the Interceptor trait and provides 3 methods that can be used to intercept requests:

        +

        An Interceptor implements the Interceptor trait and provides 3 methods that can be used to intercept requests:

        @@ -10094,24 +10369,24 @@

        8.5.1 Defining Interceptors

        -

        The afterView method is executed after view rendering completes. If an exception occurs, the exception is available using the throwable property of the Interceptor trait.

        +

        The afterView method is executed after view rendering completes. If an exception occurs, the exception is available using the throwable property of the Interceptor trait.

        8.5.2 Matching Requests with Interceptors

        -
        -

        As mention in the previous section, by default an interceptor will match only requests to the associated controller by convention. However you can configure the interceptor to match any request using the match or matchAll methods defined in the Interceptor API.

        +

        As mention in the previous section, by default an interceptor will match only requests to the associated controller by convention. However you can configure the interceptor to match any request using the match or matchAll methods defined in the Interceptor API.

        -

        The matching methods return a Matcher instance which can be used to configure how the interceptor matches the request.

        +

        The matching methods return a Matcher instance which can be used to configure how the interceptor matches the request.

        For example the following interceptor will match all requests except those to the login controller:

        @@ -10161,7 +10436,7 @@

        8.5.2 Matching Requests with Interceptors

      -

      All named arguments except for uri accept either a String or a Regex expression. The uri argument supports a String path that is compatible with Spring’s AntPathMatcher. The possible named arguments are:

      +

      All named arguments except for uri accept either a String or a Regex expression. The uri argument supports a String path that is compatible with Spring’s AntPathMatcher. The possible named arguments are:

      -

      By default the getObjectToBind() method returns the request object. When the request object is used as the binding source, if the request has a body then the body will be parsed and its contents will be used to do the data binding, otherwise the request parameters will be used to do the data binding. Subclasses of RestfulController may override the getObjectToBind() method and return anything that is a valid binding source, including a Map or a DataBindingSource. For most use cases binding the request is appropriate but the getObjectToBind() method allows for changing that behavior where desired.

      +

      By default the getObjectToBind() method returns the request object. When the request object is used as the binding source, if the request has a body then the body will be parsed and its contents will be used to do the data binding, otherwise the request parameters will be used to do the data binding. Subclasses of RestfulController may override the getObjectToBind() method and return anything that is a valid binding source, including a Map or a DataBindingSource. For most use cases binding the request is appropriate but the getObjectToBind() method allows for changing that behavior where desired.

      @@ -11347,7 +11622,7 @@

      Us

      10.5.2 Implementing REST Controllers Step by Step

      -
      @@ -11645,7 +11920,7 @@

      Implementing the 'delete' action

      10.5.3 Generating a REST controller using scaffolding

      -
      @@ -11664,7 +11939,7 @@

      10.5.3 Generating a REST controller using sca

      10.6 Calling REST Services with HttpClient

      -
      @@ -11699,7 +11974,7 @@

      Low-level API

          List<Album> searchWithApi(String searchTerm) {
               String baseUrl = "https://itunes.apple.com/"
       
      -        HttpClient client = HttpClient.create(baseUrl.toURL()).toBlocking() (1)
      +        BlockingHttpClient client = HttpClient.create(baseUrl.toURL()).toBlocking() (1)
       
               HttpRequest request = HttpRequest.GET("/search?limit=25&media=music&entity=album&term=${searchTerm}")
               HttpResponse<String> resp = client.exchange(request, String)
      @@ -11778,7 +12053,7 @@ 

      Declarative API

      10.7 The REST Profile

      -
      @@ -11831,7 +12106,7 @@

      10.7 The REST Profile

      10.8 The AngularJS Profile

      -
      @@ -12006,7 +12281,7 @@

      Asset Pipeline

      10.9 The Angular Profile

      -
      @@ -12159,7 +12434,7 @@

      CORS

      10.10 JSON Views

      -
      @@ -12191,7 +12466,7 @@

      10.10 JSON Views

      10.10.1 Getting Started

      -
      @@ -12249,7 +12524,7 @@

      10.10.1 Getting Started

      10.10.2 Creating JSON Views

      -
      @@ -12309,7 +12584,7 @@

      10.10.2 Creating JSON Views

      10.10.3 JSON View Templates

      -
      @@ -12366,7 +12641,7 @@

      10.10.3 JSON View Templates

      10.10.4 Rendering Domain Classes with JSON Views

      -
      @@ -12428,7 +12703,7 @@

      10.10.4 Rendering Domain Classes with JSON Vi

      10.10.5 JSON Views by Convention

      -
      @@ -12475,7 +12750,7 @@

      10.10.5 JSON Views by Convention

      10.11 Customizing Response Rendering

      -
      @@ -12489,7 +12764,7 @@

      10.11 Customizing Response Rendering

      10.11.1 Customizing the Default Renderers

      -
      @@ -12568,7 +12843,7 @@

      Customizing the Converters

      10.11.2 Implementing a Custom Renderer

      -
      @@ -12653,7 +12928,7 @@

      Container Renderers

      10.11.3 Using GSP to Customize Rendering

      -
      @@ -12683,7 +12958,7 @@

      10.11.3 Using GSP to Customize Rendering

      10.12 Hypermedia as the Engine of Application State

      -
      @@ -12700,7 +12975,7 @@

      10.12 Hypermedia as the Engine of Application State

      10.12.1 HAL Support

      -
      @@ -13096,7 +13371,7 @@

      10.12.2 Atom Support

      -
      @@ -13146,7 +13421,7 @@

      10.12.2 Atom Support

      10.12.3 Vnd.Error Support

      -
      @@ -13218,7 +13493,7 @@

      10.12.3 Vnd.Error Support

      10.13 Customizing Binding of Resources

      -
      @@ -13301,7 +13576,7 @@

      10.13 Customizing Binding of Resources

      -

      The data binding depends on an instance of the DataBindingSource interface created by an instance of the DataBindingSourceCreator interface. The specific implementation of DataBindingSourceCreator will be selected based on the contentType of the request. Several implementations are provided to handle common content types. The default implementations will be fine for most use cases. The following table lists the content types which are supported by the core framework and which DataBindingSourceCreator implementations are used for each. All of the implementation classes are in the org.grails.databinding.bindingsource package.

      +

      The data binding depends on an instance of the DataBindingSource interface created by an instance of the DataBindingSourceCreator interface. The specific implementation of DataBindingSourceCreator will be selected based on the contentType of the request. Several implementations are provided to handle common content types. The default implementations will be fine for most use cases. The following table lists the content types which are supported by the core framework and which DataBindingSourceCreator implementations are used for each. All of the implementation classes are in the org.grails.databinding.bindingsource package.

      @@ -13384,7 +13659,7 @@

      10.13 Customizing Binding of Resources

      -

      AbstractRequestBodyDataBindingSourceCreator +

      AbstractRequestBodyDataBindingSourceCreator is an abstract class designed to be extended to simplify writing custom DataBindingSourceCreator classes. Classes which extend AbstractRequestbodyDatabindingSourceCreator need to implement a method named createBindingSource which accepts an InputStream as an argument and returns a DataBindingSource as well as implementing the getMimeTypes @@ -13468,7 +13743,7 @@

      10.13 Customizing Binding of Resources

      10.14 RSS and Atom

      -
      @@ -13482,7 +13757,7 @@

      10.14 RSS and Atom

      11 Asynchronous Programming

      -
      @@ -13508,10 +13783,10 @@

      11 Asynchronous Programming

      -

      By building ontop of these various libraries the The Async features of Grails aim to simplify concurrent programming within the framework and include the concept of Promises and a unified event model.

      +

      By building on top of these various libraries the Async features of Grails aim to simplify concurrent programming within the framework, include the concept of Promises, and a unified event model.

      -

      In general since the Reactive programming model is an evolving space Grails tries to provide generic support for integrating a range of asynchronous libraries and doesn’t recommend any single library as they all have various advantages and disadvantages.

      +

      In general, since the Reactive programming model is an evolving space, Grails tries to provide generic support for integrating a range of asynchronous libraries and doesn’t recommend any single library as they all have various advantages and disadvantages.

      For more information on Asynchronous programming with Grails see the user guide for the Grails Asynchronous Framework.

      @@ -13521,14 +13796,14 @@

      11 Asynchronous Programming

      12 Validation

      -
      -

      Grails validation capability is built on Spring’s Validator API and data binding capabilities. However Grails takes this further and provides a unified way to define validation "constraints" with its constraints mechanism.

      +

      Grails validation capability is built on Spring’s Validator API and data binding capabilities. However Grails takes this further and provides a unified way to define validation "constraints" with its constraints mechanism.

      Constraints in Grails are a way to declaratively specify validation rules. Most commonly they are applied to domain classes, however URL Mappings and Command Objects also support constraints.

      @@ -13538,7 +13813,7 @@

      12 Validation

      12.1 Declaring Constraints

      -
      @@ -13653,7 +13928,7 @@

      12.2 Validating Constraints

      -
      @@ -13679,7 +13954,7 @@

      Validation Basics

      -

      The errors property on domain classes is an instance of the Spring Errors interface. The Errors interface provides methods to navigate the validation errors and also retrieve the original values.

      +

      The errors property on domain classes is an instance of the Spring Errors interface. The Errors interface provides methods to navigate the validation errors and also retrieve the original values.

      @@ -13725,7 +14000,7 @@

      Validation Phases

      12.3 Sharing Constraints Between Classes

      -
      @@ -13847,7 +14122,7 @@

      Importing Constraints

      12.4 Validation on the Client

      -
      @@ -13856,7 +14131,7 @@

      12.4 Validation on the Client

      Displaying Errors

      -

      Typically if you get a validation error you redirect back to the view for rendering. Once there you need some way of displaying errors. Grails supports a rich set of tags for dealing with errors. To render the errors as a list you can use renderErrors:

      +

      Typically if you get a validation error you redirect back to the view for rendering. Once there you need some way of displaying errors. Grails supports a rich set of tags for dealing with errors. To render the errors as a list you can use renderErrors:

      @@ -13864,7 +14139,7 @@

      Displaying Errors

      -

      If you need more control you can use hasErrors and eachError:

      +

      If you need more control you can use hasErrors and eachError:

      @@ -13881,7 +14156,7 @@

      Displaying Errors

      Highlighting Errors

      -

      It is often useful to highlight using a red box or some indicator when a field has been incorrectly input. This can also be done with the hasErrors by invoking it as a method. For example:

      +

      It is often useful to highlight using a red box or some indicator when a field has been incorrectly input. This can also be done with the hasErrors by invoking it as a method. For example:

      @@ -13897,7 +14172,7 @@

      Highlighting Errors

      Retrieving Input Values

      -

      Each error is actually an instance of the FieldError class in Spring, which retains the original input value within it. This is useful as you can use the error object to restore the value input by the user using the fieldValue tag:

      +

      Each error is actually an instance of the FieldError class in Spring, which retains the original input value within it. This is useful as you can use the error object to restore the value input by the user using the fieldValue tag:

      @@ -13913,14 +14188,14 @@

      Retrieving Input Values

      12.5 Validation and Internationalization

      -
      -

      Another important thing to note about errors in Grails is that error messages are not hard coded anywhere. The FieldError class in Spring resolves messages from message bundles using Grails' i18n support.

      +

      Another important thing to note about errors in Grails is that error messages are not hard coded anywhere. The FieldError class in Spring resolves messages from message bundles using Grails' i18n support.

      Constraints and Message Codes

      @@ -14042,7 +14317,7 @@

      Constraints and Message Codes

      Displaying Messages

      -

      The renderErrors tag will automatically look up messages for you using the message tag. If you need more control of rendering you can handle this yourself:

      +

      The renderErrors tag will automatically look up messages for you using the message tag. If you need more control of rendering you can handle this yourself:

      @@ -14056,7 +14331,7 @@

      Displaying Messages

      -

      In this example within the body of the eachError tag we use the message tag in combination with its error argument to read the message for the given error.

      +

      In this example within the body of the eachError tag we use the message tag in combination with its error argument to read the message for the given error.

      @@ -14064,7 +14339,7 @@

      Displaying Messages

      12.6 Applying Validation to Other Classes

      -
      @@ -14076,7 +14351,7 @@

      12.6 Applying Validation to

      The Validateable Trait

      -

      Classes which define the static constraints property and implement the Validateable trait will be validateable. Consider this example:

      +

      Classes which define the static constraints property and implement the Validateable trait will be validateable. Consider this example:

      src/main/groovy/com/mycompany/myapp/User.groovy
      @@ -14100,7 +14375,7 @@

      The Validateable Trait

      Programmatic access
      -

      Accessing the constraints on a validateable object is slightly different. You can access a command object’s constraints programmatically in another context by accessing the constraintsMap static property of the class. That property is an instance of Map<String, ConstrainedProperty>

      +

      Accessing the constraints on a validateable object is slightly different. You can access a command object’s constraints programmatically in another context by accessing the constraintsMap static property of the class. That property is an instance of Map<String, ConstrainedProperty>

      In the example above, accessing User.constraintsMap.login.blank would yield false, while @@ -14113,7 +14388,7 @@

      Programmatic access

      13 The Service Layer

      -
      @@ -14164,7 +14439,7 @@

      Creating a Service

      13.1 Declarative Transactions

      -
      @@ -14189,7 +14464,7 @@

      Declarative Transactions

      -

      The result is that all methods are wrapped in a transaction and automatic rollback occurs if a method throws an exception (both Checked or Runtime exceptions) or an Error. The propagation level of the transaction is by default set to PROPAGATION_REQUIRED.

      +

      The result is that all methods are wrapped in a transaction and automatic rollback occurs if a method throws an exception (both Checked or Runtime exceptions) or an Error. The propagation level of the transaction is by default set to PROPAGATION_REQUIRED.

      @@ -14343,7 +14618,7 @@

      Custom Transaction Configuration

      Transaction status

      -

      An instance of TransactionStatus is available by default in Grails transactional service methods.

      +

      An instance of TransactionStatus is available by default in Grails transactional service methods.

      Example:

      @@ -14368,7 +14643,7 @@

      Transaction status

      13.1.1 Transactions and Multi-DataSources

      -
      @@ -14438,7 +14713,7 @@

      13.1.1 Transactions and Multi-DataSources13.1.2 Transactions Rollback and the Session

      -
      @@ -14641,7 +14916,7 @@

      Validation Errors and Rollback

      13.2 Scoped Services

      -
      @@ -14734,7 +15009,7 @@

      Lazy initialization

      13.3 Dependency Injection and Services

      -
      @@ -14903,7 +15178,7 @@

      Service Bean Names

      14 Static Type Checking And Compilation

      -
      @@ -14928,14 +15203,14 @@

      14 Static Type Checking And Compilatio

      See these notes on Groovy static compilation for more details on how CompileStatic works and why you might want to use it.

      -

      One limitation of using CompileStatic is that when you use it you give up access to the power and flexibility offered by dynamic dispatch. For example, in Grails you would not be able to invoke a GORM dynamic finder from a class that is marked with CompileStatic because the compiler cannot verify that the dynamic finder method exists, because it doesn’t exist at compile time. It may be that you want to take advantage of Groovy’s static compilation benefits without giving up access to dynamic dispatch for Grails specific things like dynamic finders and this is where grails.compiler.GrailsCompileStatic comes in. GrailsCompileStatic behaves just like CompileStatic but is aware of certain Grails features and allows access to those specific features to be accessed dynamically.

      +

      One limitation of using CompileStatic is that when you use it you give up access to the power and flexibility offered by dynamic dispatch. For example, in Grails you would not be able to invoke a GORM dynamic finder from a class that is marked with CompileStatic because the compiler cannot verify that the dynamic finder method exists, because it doesn’t exist at compile time. It may be that you want to take advantage of Groovy’s static compilation benefits without giving up access to dynamic dispatch for Grails specific things like dynamic finders and this is where grails.compiler.GrailsCompileStatic comes in. GrailsCompileStatic behaves just like CompileStatic but is aware of certain Grails features and allows access to those specific features to be accessed dynamically.

      14.1 The GrailsCompileStatic Annotation

      -
      @@ -15035,7 +15310,7 @@

      GrailsCompileStatic

      14.2 The GrailsTypeChecked Annotation

      -
      @@ -15044,7 +15319,7 @@

      14.2 The GrailsTypeChecked Annotation

      GrailsTypeChecked

      -

      The grails.compiler.GrailsTypeChecked annotation works a lot like the GrailsCompileStatic annotation except that it only enables static type checking, not static compilation. This affords compile time feedback for expressions which cannot be validated statically at compile time while still leaving dynamic dispatch in place for the class.

      +

      The grails.compiler.GrailsTypeChecked annotation works a lot like the GrailsCompileStatic annotation except that it only enables static type checking, not static compilation. This affords compile time feedback for expressions which cannot be validated statically at compile time while still leaving dynamic dispatch in place for the class.

      @@ -15076,7 +15351,7 @@

      GrailsTypeChecked

      15 Testing

      -
      @@ -15148,7 +15423,7 @@

      Running Tests

      -

      Grails writes HTML test reports to the build/reports/tests directory and the original XML files to the build/test-results directory. The HTML reports are generally the best ones to look at.

      +

      Grails writes HTML test reports to the build/reports/tests directory and JUnit XML test reports to the build/test-results directory. The HTML reports are generally the best ones to look at.

      Using Grails' interactive mode confers some distinct advantages when executing tests. First, the tests will execute significantly faster on the second and subsequent runs. Second, a shortcut is available to open the HTML reports in your browser:

      @@ -15324,7 +15599,7 @@

      Targeting Tests When Using Phases15.1 Unit Testing

      -
      @@ -15373,7 +15648,7 @@

      15.1 Unit Testing

      15.2 Integration Testing

      -
      @@ -15396,7 +15671,7 @@

      15.2 Integration Testing

      Transactions

      -

      Integration test methods run inside their own database transaction by default, which is rolled back at the end of each test method. This means that data saved during a test is not persisted to the database (which is shared across all tests). The default generated integration test template includes the Rollback annotation:

      +

      Integration test methods run inside their own database transaction by default, which is rolled back at the end of each test method. This means that data saved during a test is not persisted to the database (which is shared across all tests). The default generated integration test template includes the Rollback annotation:

      @@ -15447,7 +15722,7 @@

      Transactions

      -

      To automatically roll back setup logic, any persistence operations need to be called from the test method itself so that they are run within the test method’s rolled back transaction. Similar to usage of the setupData() method shown below:

      +

      To preload the database and automatically roll back setup logic, any persistence operations need to be called from the test method itself so that they can run within the test method’s rolled back transaction. Similar to usage of the setupData() method shown below which creates a record in database and after running other test will be rolled back:

      @@ -15478,7 +15753,7 @@

      Transactions

      Using Spring’s Rollback annotation

      -

      Another transactional approach could be to use Spring’s @Rollback instead.

      +

      Another transactional approach could be to use Spring’s @Rollback instead.

      @@ -15518,13 +15793,13 @@

      Using Spring’s Rollback annota

      DirtiesContext

      -

      If you do have a series of tests that will share state you can remove the Rollback and the last test in the suite should feature the DirtiesContext annotation which will shutdown the environment and restart it fresh (note that this will have an impact on test run times).

      +

      If you do have a series of tests that will share state you can remove the Rollback and the last test in the suite should feature the DirtiesContext annotation which will shutdown the environment and restart it fresh (note that this will have an impact on test run times).

      Autowiring

      -

      To obtain a reference to a bean you can use the Autowired annotation. For example:

      +

      To obtain a reference to a bean you can use the Autowired annotation. For example:

      @@ -15558,7 +15833,7 @@

      Testing Controllers

      15.3 Functional Testing

      -
      @@ -15576,7 +15851,7 @@

      15.3 Functional Testing

      -

      The above command will create a new Spock spec called MyFunctionalSpec.groovy in the src/integration-test/groovy directory. The test is annotated with the Integration annotation to indicate it is an integration test and extends the GebSpec super class:

      +

      The above command will create a new Spock spec called MyFunctionalSpec.groovy in the src/integration-test/groovy directory. The test is annotated with the Integration annotation to indicate it is an integration test and extends the GebSpec super class:

      @@ -15609,7 +15884,7 @@

      15.3 Functional Testing

      In addition the application is loaded in the JVM as the test, this means that the test has full access to the application state and can interact directly with data services such as GORM to setup and cleanup test data.

      -

      The Integration annotation supports an optional applicationClass attribute which may be used to specify the application class to use for the functional test. The class must extend GrailsAutoConfiguration.

      +

      The Integration annotation supports an optional applicationClass attribute which may be used to specify the application class to use for the functional test. The class must extend GrailsAutoConfiguration.

      @@ -15650,7 +15925,7 @@

      15.3 Functional Testing

      16 Internationalization

      -
      @@ -15674,7 +15949,7 @@

      16 Internationalization

      16.1 Understanding Message Bundles

      -
      @@ -15716,7 +15991,7 @@

      16.1 Understanding Message Bundles

      16.2 Changing Locales

      -
      @@ -15734,7 +16009,7 @@

      16.2 Changing Locales

      Grails will automatically switch the user’s locale and subsequent requests will use the switched locale.

      -

      By default, Grails uses SessionLocaleResolver as the localeResolver bean.

      +

      By default, Grails uses SessionLocaleResolver as the localeResolver bean.

      You can change the default locale easily:

      @@ -15784,7 +16059,7 @@

      16.2 Changing Locales

      16.3 Reading Messages

      -
      @@ -15793,7 +16068,7 @@

      16.3 Reading Messages

      Reading Messages in the View

      -

      The most common place that you need messages is inside the view. Use the message tag for this:

      +

      The most common place that you need messages is inside the view. Use the message tag for this:

      @@ -15876,14 +16151,14 @@

      16.4 Scaffolding and i18n

      -
      -

      Grails scaffolding templates for controllers and views are fully i18n-aware. The GSPs use the message tag for labels, buttons etc. and controller flash messages use i18n to resolve locale-specific messages.

      +

      Grails scaffolding templates for controllers and views are fully i18n-aware. The GSPs use the message tag for labels, buttons etc. and controller flash messages use i18n to resolve locale-specific messages.

      The scaffolding includes locale specific labels for domain classes and domain fields. For example, if you have a Book domain class with a title field:

      @@ -15912,7 +16187,7 @@

      16.4 Scaffolding and i18n

      17 Security

      -
      @@ -15938,7 +16213,7 @@

      What Grails Automatically Does

      The default scaffolding templates HTML escape all data fields when displayed

    • -

      Grails link creating tags (link, form, createLink, createLinkTo and others) all use appropriate escaping mechanisms to prevent code injection

      +

      Grails link creating tags (link, form, createLink, createLinkTo and others) all use appropriate escaping mechanisms to prevent code injection

    • Grails provides codecs to let you trivially escape data when rendered as HTML, JavaScript and URLs to prevent injection attacks here.

      @@ -15951,7 +16226,7 @@

      What Grails Automatically Does

      17.1 Securing Against Attacks

      -
      @@ -16071,7 +16346,7 @@

      Guessable IDs

      17.2 Cross Site Scripting (XSS) Prevention

      -
      @@ -16313,7 +16588,7 @@

      Default Encoding for All Output

      17.3 Encoding and Decoding Objects

      -
      @@ -16573,7 +16848,7 @@

      Custom Codecs

      17.4 Authentication

      -
      @@ -16647,7 +16922,7 @@

      17.4 Authentication

      17.5 Security Plugins

      -
      @@ -16661,7 +16936,7 @@

      17.5 Security Plugins

      17.5.1 Spring Security

      -
      @@ -16671,17 +16946,17 @@

      17.5.1 Spring Security

      The Spring Security plugins are built on the Spring Security project which provides a flexible, extensible framework for building all sorts of authentication and authorization schemes. The plugins are modular so you can install just the functionality that you need for your application. The Spring Security plugins are the official security plugins for Grails and are actively maintained and supported.

    • -

      There is a Core plugin which supports form-based authentication, encrypted/salted passwords, HTTP Basic authentication, etc. and secondary dependent plugins provide alternate functionality such as ACL support, single sign-on with Jasig CAS, LDAP authentication, Kerberos authentication, and a plugin providing user interface extensions and security workflows.

      +

      There is a Core plugin which supports form-based authentication, encrypted/salted passwords, HTTP Basic authentication, etc. and secondary dependent plugins provide alternate functionality such as ACL support, single sign-on with Jasig CAS, LDAP authentication, Kerberos authentication, and a plugin providing user interface extensions and security workflows.

      -

      See the Core plugin page for basic information and the user guide for detailed information.

      +

      See the Core plugin page for basic information and the user guide for detailed information.

      18 Plugins

      -
      @@ -16698,7 +16973,7 @@

      18 Plugins

      18.1 Creating and Installing Plugins

      -
      @@ -16836,6 +17111,54 @@

      Creating Plugins

      +

      Plugin Configuration

      +
      +

      Instead of directly accessing Grails configuration as grailsApplication.config.mail.hostName, use a Spring Boot configuration bean (or a POJO) annotated with ConfigurationProperties annotation. Here is an example plugin configuration:

      +
      +
      +

      ./src/main/groovy/example/MailPluginConfiguration.groovy

      +
      +
      +
      +
      package example
      +
      +import org.springframework.boot.context.properties.ConfigurationProperties
      +
      +@ConfigurationProperties(prefix = "mail")
      +class MailPluginConfiguration {
      +
      +    String hostName
      +    int port
      +    String from
      +}
      +
      +
      +
      +

      You can inject the MailPluginConfiguration bean into your bean like any other bean.

      +
      +
      +

      ./grails-app/services/example/MailService.groovy

      +
      +
      +
      +
      package example
      +
      +class MailService {
      +
      +    MainPluginConfiguration mailPluginConfiguration
      +
      +    void sendMail() {
      +
      +    }
      +
      +}
      +
      +
      +
      +

      Please read the Spring Boot Externalized Configuration section for more information.

      +
      +
      +

      Installing Local Plugins

      To make your plugin available for use in a Grails application run the install command:

      @@ -17078,7 +17401,7 @@

      Inline Plugins in Grails 3.0

      18.2 Plugin Repositories

      -
      @@ -17123,7 +17446,7 @@

      Distribut

      18.3 Providing Basic Artefacts

      -
      @@ -17155,7 +17478,7 @@

      Add Command Line Commands

      -

      This will create a file called grails-app/commands/PACKAGE_PATH/MyExampleCommand.groovy that extends ApplicationCommand:

      +

      This will create a file called grails-app/commands/PACKAGE_PATH/MyExampleCommand.groovy that extends ApplicationCommand:

      @@ -17295,20 +17618,20 @@

      Excluded Artefacts

      18.4 Evaluating Conventions

      -
      -

      Before looking at providing runtime configuration based on conventions you first need to understand how to evaluate those conventions from a plugin. Every plugin has an implicit application variable which is an instance of the GrailsApplication interface.

      +

      Before looking at providing runtime configuration based on conventions you first need to understand how to evaluate those conventions from a plugin. Every plugin has an implicit application variable which is an instance of the GrailsApplication interface.

      The GrailsApplication interface provides methods to evaluate the conventions within the project and internally stores references to all artifact classes within your application.

      -

      Artifacts implement the GrailsClass interface, which represents a Grails resource such as a controller or a tag library. For example to get all GrailsClass instances you can do:

      +

      Artifacts implement the GrailsClass interface, which represents a Grails resource such as a controller or a tag library. For example to get all GrailsClass instances you can do:

      @@ -17381,14 +17704,14 @@

      18.4 Evaluating Conventions

    -

    For a full reference refer to the javadoc API.

    +

    For a full reference refer to the javadoc API.

    18.5 Hooking into Runtime Configuration

    -
    @@ -17400,7 +17723,7 @@

    18.5 Hooking into Runtime Configuration

    Hooking into the Grails Spring configuration

    -

    First, you can hook in Grails runtime configuration overriding the doWithSpring method from the Plugin class and returning a closure that defines additional beans. For example the following snippet is from one of the core Grails plugins that provides i18n support:

    +

    First, you can hook in Grails runtime configuration overriding the doWithSpring method from the Plugin class and returning a closure that defines additional beans. For example the following snippet is from one of the core Grails plugins that provides i18n support:

    @@ -17503,7 +17826,7 @@

    Adding New Servlet Filters

    Doing Post Initialisation Configuration

    -

    Sometimes it is useful to be able do some runtime configuration after the Spring ApplicationContext has been built. In this case you can define a doWithApplicationContext closure property.

    +

    Sometimes it is useful to be able do some runtime configuration after the Spring ApplicationContext has been built. In this case you can define a doWithApplicationContext closure property.

    @@ -17526,7 +17849,7 @@

    Doing Post Initialisation Conf

    18.6 Adding Methods at Compile Time

    -
    @@ -17551,7 +17874,7 @@

    18.6 Adding Methods at Compile Time

    The @Enhances annotation defines the types of artefacts that the trait should be applied to.

    -

    As an alternative to using the @Enhances annotation above, you can implement a TraitInjector to tell Grails which artefacts you want to inject the trait into at compile time:

    +

    As an alternative to using the @Enhances annotation above, you can implement a TraitInjector to tell Grails which artefacts you want to inject the trait into at compile time:

    @@ -17578,7 +17901,7 @@

    18.6 Adding Methods at Compile Time

    Applying traits conditionally

    -

    A TraitInjector implementation can also implement the SupportsClassNode interface to apply traits to only those artefacts which satisfy a custom requirement. +

    A TraitInjector implementation can also implement the SupportsClassNode interface to apply traits to only those artefacts which satisfy a custom requirement. For example, if a trait should only be applied if the target artefact class has a specific annotation, it can be done as below

    @@ -17638,7 +17961,7 @@

    Applying traits conditionally

    18.7 Adding Dynamic Methods at Runtime

    -
    @@ -17751,7 +18074,7 @@

    Interacting with the Applicati

    18.8 Participating in Auto Reload Events

    -
    @@ -17859,7 +18182,7 @@

    Observing other plugins

    18.9 Understanding Plugin Load Order

    -
    @@ -17947,7 +18270,7 @@

    Controlling Load Order

    -

    Here the Hibernate plugin will only register an OpenSessionInViewInterceptor if the controllers plugin has been loaded. The manager variable is an instance of the GrailsPluginManager interface and it provides methods to interact with other plugins.

    +

    Here the Hibernate plugin will only register an OpenSessionInViewInterceptor if the controllers plugin has been loaded. The manager variable is an instance of the GrailsPluginManager interface and it provides methods to interact with other plugins.

    You can also use the loadBefore property to specify one or more plugins that your plugin should load before:

    @@ -17973,7 +18296,7 @@

    Scopes and Environments

    In this example, the plugin will only load in the 'development' and 'test' environments. Nor will it be packaged into the WAR file, because it’s excluded from the 'war' phase. This allows development-only plugins to not be packaged for production use.

    -

    The full list of available scopes are defined by the enum BuildScope, but here’s a summary:

    +

    The full list of available scopes are defined by the enum BuildScope, but here’s a summary:

      @@ -18043,7 +18366,7 @@

      Scopes and Environments

      18.10 The Artefact API

      -
      @@ -18057,14 +18380,14 @@

      18.10 The Artefact API

      18.10.1 Asking About Available Artefacts

      -
      -

      As a plugin developer, it can be important for you to find out about what domain classes, controllers, or other types of artefact are available in an application. For example, the Elasticsearch plugin needs to know what domain classes exist so it can check them for any searchable properties and index the appropriate ones. So how does it do it? The answer lies with the grailsApplication object, and instance of GrailsApplication that’s available automatically in controllers and GSPs and can be injected everywhere else.

      +

      As a plugin developer, it can be important for you to find out about what domain classes, controllers, or other types of artefact are available in an application. For example, the Elasticsearch plugin needs to know what domain classes exist so it can check them for any searchable properties and index the appropriate ones. So how does it do it? The answer lies with the grailsApplication object, and instance of GrailsApplication that’s available automatically in controllers and GSPs and can be injected everywhere else.

      The grailsApplication object has several important properties and methods for querying artefacts. Probably the most common is the one that gives you all the classes of a particular artefact type:

      @@ -18125,7 +18448,7 @@

      18.10.1 Asking About Available Artefacts

    -

    You need to be aware that the objects returned by these properties are not instances of Class. Instead, they are instances of GrailsClass that has some particularly useful properties and methods, including one for the underlying Class:

    +

    You need to be aware that the objects returned by these properties are not instances of Class. Instead, they are instances of GrailsClass that has some particularly useful properties and methods, including one for the underlying Class:

      @@ -18164,7 +18487,7 @@

      18.10.1 Asking About Available Artefacts

      18.10.2 Adding Your Own Artefact Types

      -
      @@ -18185,10 +18508,10 @@

      18.10.2 Adding Your Own Artefact Types

      The artefacts list can contain either handler classes (as above) or instances of handlers.

    -

    So, what does an artefact handler look like? Well, put simply it is an implementation of the ArtefactHandler interface. To make life a bit easier, there is a skeleton implementation that can readily be extended: ArtefactHandlerAdapter.

    +

    So, what does an artefact handler look like? Well, put simply it is an implementation of the ArtefactHandler interface. To make life a bit easier, there is a skeleton implementation that can readily be extended: ArtefactHandlerAdapter.

    -

    In addition to the handler itself, every new artefact needs a corresponding wrapper class that implements GrailsClass. Again, skeleton implementations are available such as AbstractInjectableGrailsClass, which is particularly useful as it turns your artefact into a Spring bean that is auto-wired, just like controllers and services.

    +

    In addition to the handler itself, every new artefact needs a corresponding wrapper class that implements GrailsClass. Again, skeleton implementations are available such as AbstractInjectableGrailsClass, which is particularly useful as it turns your artefact into a Spring bean that is auto-wired, just like controllers and services.

    The best way to understand how both the handler and wrapper classes work is to look at the Quartz plugin:

    @@ -18214,7 +18537,7 @@

    18.10.2 Adding Your Own Artefact Types

    19 Grails and Spring

    -
    @@ -18228,7 +18551,7 @@

    19 Grails and Spring

    19.1 Configuring Additional Beans

    -
    @@ -18450,7 +18773,7 @@

    Referencing Existing Beans

    19.2 Runtime Spring with the Beans DSL

    -
    @@ -18460,7 +18783,7 @@

    19.2 Runtime Spring with the Beans DSL

    This Bean builder in Grails aims to provide a simplified way of wiring together dependencies that uses Spring at its core.

    -

    In addition, Spring’s regular way of configuration (via XML and annotations) is static and difficult to modify and configure at runtime, other than programmatic XML creation which is both error prone and verbose. Grails' BeanBuilder changes all that by making it possible to programmatically wire together components at runtime, allowing you to adapt the logic based on system properties or environment variables.

    +

    In addition, Spring’s regular way of configuration (via XML and annotations) is static and difficult to modify and configure at runtime, other than programmatic XML creation which is both error prone and verbose. Grails' BeanBuilder changes all that by making it possible to programmatically wire together components at runtime, allowing you to adapt the logic based on system properties or environment variables.

    This enables the code to adapt to its environment and avoids unnecessary duplication of code (having different Spring configs for test, development and production environments)

    @@ -18468,7 +18791,7 @@

    19.2 Runtime Spring with the Beans DSL

    The BeanBuilder class

    -

    Grails provides a grails.spring.BeanBuilder class that uses dynamic Groovy to construct bean definitions. The basics are as follows:

    +

    Grails provides a grails.spring.BeanBuilder class that uses dynamic Groovy to construct bean definitions. The basics are as follows:

    @@ -18647,7 +18970,7 @@

    Adding Variables to the Bindin

    19.3 The BeanBuilder DSL Explained

    -
    @@ -18681,7 +19004,7 @@

    Using Constructor Arguments

    Configuring the BeanDefinition (Using factory methods)

    -

    The first argument to the closure is a reference to the bean configuration instance, which you can use to configure factory methods and invoke any method on the AbstractBeanDefinition class:

    +

    The first argument to the closure is a reference to the bean configuration instance, which you can use to configure factory methods and invoke any method on the AbstractBeanDefinition class:

    @@ -19042,17 +19365,17 @@

    Using Spring Namespaces

    19.4 Property Placeholder Configuration

    -
    -

    Grails supports the notion of property placeholder configuration through an extended version of Spring’s PropertyPlaceholderConfigurer.

    +

    Grails supports the notion of property placeholder configuration through an extended version of Spring’s PropertyPlaceholderConfigurer.

    -

    Settings defined in either ConfigSlurper scripts or Java properties files can be used as placeholder values for Spring configuration in grails-app/conf/spring/resources.xml and grails-app/conf/spring/resources.groovy. For example given the following entries in grails-app/conf/application.groovy (or an externalized config):

    +

    Settings defined in either ConfigSlurper scripts or Java properties files can be used as placeholder values for Spring configuration in grails-app/conf/spring/resources.xml and grails-app/conf/spring/resources.groovy. For example given the following entries in grails-app/conf/application.groovy (or an externalized config):

    @@ -19109,7 +19432,7 @@

    19.4 Property Placeholder Configuratio

    19.5 Property Override Configuration

    -
    @@ -19151,14 +19474,14 @@

    19.5 Property Override Configuration

    19.6 Spring Boot Actuators

    -
    -

    Spring Boot Actuator endpoints allow you to monitor and interact with your application. Spring Boot includes a number of built-in endpoints. For example the health endpoint provides basic application health information.

    +

    Spring Boot Actuator endpoints allow you to monitor and interact with your application. Spring Boot includes a number of built-in endpoints. For example the health endpoint provides basic application health information.

    These endpoints are disabled by default since Grails 3.1.8.

    @@ -19179,7 +19502,7 @@

    19.6 Spring Boot Actuators

    20 Scaffolding

    -
    @@ -19436,7 +19759,7 @@

    Customizing the Scaffolding temp

    21 Deployment

    -
    @@ -19450,7 +19773,7 @@

    21 Deployment

    21.1 Standalone

    -
    @@ -19527,7 +19850,7 @@

    A TAR/ZIP distribution

    21.2 Container Deployment (e.g. Tomcat)

    -
    @@ -19574,7 +19897,7 @@

    Application servers

    21.3 Deployment Configuration Tasks

    -
    @@ -19618,10 +19941,13 @@

    Settin @@ -19631,7 +19957,7 @@

    Settin

    22 Contributing to Grails

    -
    @@ -19645,7 +19971,7 @@

    22 Contributing to Grails

    22.1 Report Issues in Github's issue tracker

    -
    @@ -19674,7 +20000,7 @@

    Reviewing issues

    22.2 Build From Source and Run Tests

    -
    @@ -19849,7 +20175,7 @@

    Debugging Grails or a Grails

    22.3 Submit Patches to Grails Core

    -
    @@ -19968,7 +20294,7 @@

    Say what your pull request is for22.4 Submit Patches to Grails Documentation

    -
    diff --git a/snapshot/guide/single.pdf b/snapshot/guide/single.pdf index eda52ef9c67..3b943de25bf 100644 Binary files a/snapshot/guide/single.pdf and b/snapshot/guide/single.pdf differ diff --git a/snapshot/guide/spring.html b/snapshot/guide/spring.html index 15754f9786b..f246408beb7 100644 --- a/snapshot/guide/spring.html +++ b/snapshot/guide/spring.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 19 Grails and Spring 4.0.13 + 19 Grails and Spring 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    19 Grails and Spring

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -168,7 +168,7 @@

    Table of Contents

    19 Grails and Spring

    -
    @@ -182,7 +182,7 @@

    19 Grails and Spring

    19.1 Configuring Additional Beans

    -
    @@ -404,7 +404,7 @@

    Referencing Existing Beans

    19.2 Runtime Spring with the Beans DSL

    -
    @@ -414,7 +414,7 @@

    19.2 Runtime Spring with the Beans DSL

    This Bean builder in Grails aims to provide a simplified way of wiring together dependencies that uses Spring at its core.

    -

    In addition, Spring’s regular way of configuration (via XML and annotations) is static and difficult to modify and configure at runtime, other than programmatic XML creation which is both error prone and verbose. Grails' BeanBuilder changes all that by making it possible to programmatically wire together components at runtime, allowing you to adapt the logic based on system properties or environment variables.

    +

    In addition, Spring’s regular way of configuration (via XML and annotations) is static and difficult to modify and configure at runtime, other than programmatic XML creation which is both error prone and verbose. Grails' BeanBuilder changes all that by making it possible to programmatically wire together components at runtime, allowing you to adapt the logic based on system properties or environment variables.

    This enables the code to adapt to its environment and avoids unnecessary duplication of code (having different Spring configs for test, development and production environments)

    @@ -422,7 +422,7 @@

    19.2 Runtime Spring with the Beans DSL

    The BeanBuilder class

    -

    Grails provides a grails.spring.BeanBuilder class that uses dynamic Groovy to construct bean definitions. The basics are as follows:

    +

    Grails provides a grails.spring.BeanBuilder class that uses dynamic Groovy to construct bean definitions. The basics are as follows:

    @@ -601,7 +601,7 @@

    Adding Variables to the Bindin

    19.3 The BeanBuilder DSL Explained

    -
    @@ -635,7 +635,7 @@

    Using Constructor Arguments

    Configuring the BeanDefinition (Using factory methods)

    -

    The first argument to the closure is a reference to the bean configuration instance, which you can use to configure factory methods and invoke any method on the AbstractBeanDefinition class:

    +

    The first argument to the closure is a reference to the bean configuration instance, which you can use to configure factory methods and invoke any method on the AbstractBeanDefinition class:

    @@ -996,17 +996,17 @@

    Using Spring Namespaces

    19.4 Property Placeholder Configuration

    -
    -

    Grails supports the notion of property placeholder configuration through an extended version of Spring’s PropertyPlaceholderConfigurer.

    +

    Grails supports the notion of property placeholder configuration through an extended version of Spring’s PropertyPlaceholderConfigurer.

    -

    Settings defined in either ConfigSlurper scripts or Java properties files can be used as placeholder values for Spring configuration in grails-app/conf/spring/resources.xml and grails-app/conf/spring/resources.groovy. For example given the following entries in grails-app/conf/application.groovy (or an externalized config):

    +

    Settings defined in either ConfigSlurper scripts or Java properties files can be used as placeholder values for Spring configuration in grails-app/conf/spring/resources.xml and grails-app/conf/spring/resources.groovy. For example given the following entries in grails-app/conf/application.groovy (or an externalized config):

    @@ -1063,7 +1063,7 @@

    19.4 Property Placeholder Configuratio

    19.5 Property Override Configuration

    -
    @@ -1105,14 +1105,14 @@

    19.5 Property Override Configuration

    19.6 Spring Boot Actuators

    -
    -

    Spring Boot Actuator endpoints allow you to monitor and interact with your application. Spring Boot includes a number of built-in endpoints. For example the health endpoint provides basic application health information.

    +

    Spring Boot Actuator endpoints allow you to monitor and interact with your application. Spring Boot includes a number of built-in endpoints. For example the health endpoint provides basic application health information.

    These endpoints are disabled by default since Grails 3.1.8.

    diff --git a/snapshot/guide/staticTypeCheckingAndCompilation.html b/snapshot/guide/staticTypeCheckingAndCompilation.html index 7d4a37c21b4..4791c8547ad 100644 --- a/snapshot/guide/staticTypeCheckingAndCompilation.html +++ b/snapshot/guide/staticTypeCheckingAndCompilation.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 14 Static Type Checking And Compilation 4.0.13 + 14 Static Type Checking And Compilation 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    14 Static Type Checking And Compilation

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -156,7 +156,7 @@

    Table of Contents

    14 Static Type Checking And Compilation

    -
    @@ -181,14 +181,14 @@

    14 Static Type Checking And Compilatio

    See these notes on Groovy static compilation for more details on how CompileStatic works and why you might want to use it.

    -

    One limitation of using CompileStatic is that when you use it you give up access to the power and flexibility offered by dynamic dispatch. For example, in Grails you would not be able to invoke a GORM dynamic finder from a class that is marked with CompileStatic because the compiler cannot verify that the dynamic finder method exists, because it doesn’t exist at compile time. It may be that you want to take advantage of Groovy’s static compilation benefits without giving up access to dynamic dispatch for Grails specific things like dynamic finders and this is where grails.compiler.GrailsCompileStatic comes in. GrailsCompileStatic behaves just like CompileStatic but is aware of certain Grails features and allows access to those specific features to be accessed dynamically.

    +

    One limitation of using CompileStatic is that when you use it you give up access to the power and flexibility offered by dynamic dispatch. For example, in Grails you would not be able to invoke a GORM dynamic finder from a class that is marked with CompileStatic because the compiler cannot verify that the dynamic finder method exists, because it doesn’t exist at compile time. It may be that you want to take advantage of Groovy’s static compilation benefits without giving up access to dynamic dispatch for Grails specific things like dynamic finders and this is where grails.compiler.GrailsCompileStatic comes in. GrailsCompileStatic behaves just like CompileStatic but is aware of certain Grails features and allows access to those specific features to be accessed dynamically.

    14.1 The GrailsCompileStatic Annotation

    -
    @@ -288,7 +288,7 @@

    GrailsCompileStatic

    14.2 The GrailsTypeChecked Annotation

    -
    @@ -297,7 +297,7 @@

    14.2 The GrailsTypeChecked Annotation

    GrailsTypeChecked

    -

    The grails.compiler.GrailsTypeChecked annotation works a lot like the GrailsCompileStatic annotation except that it only enables static type checking, not static compilation. This affords compile time feedback for expressions which cannot be validated statically at compile time while still leaving dynamic dispatch in place for the class.

    +

    The grails.compiler.GrailsTypeChecked annotation works a lot like the GrailsCompileStatic annotation except that it only enables static type checking, not static compilation. This affords compile time feedback for expressions which cannot be validated statically at compile time while still leaving dynamic dispatch in place for the class.

    diff --git a/snapshot/guide/testing.html b/snapshot/guide/testing.html index 2a09d1459a6..c12d89bdca4 100644 --- a/snapshot/guide/testing.html +++ b/snapshot/guide/testing.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 15 Testing 4.0.13 + 15 Testing 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    15 Testing

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -159,7 +159,7 @@

    Table of Contents

    15 Testing

    -
    @@ -231,7 +231,7 @@

    Running Tests

    -

    Grails writes HTML test reports to the build/reports/tests directory and the original XML files to the build/test-results directory. The HTML reports are generally the best ones to look at.

    +

    Grails writes HTML test reports to the build/reports/tests directory and JUnit XML test reports to the build/test-results directory. The HTML reports are generally the best ones to look at.

    Using Grails' interactive mode confers some distinct advantages when executing tests. First, the tests will execute significantly faster on the second and subsequent runs. Second, a shortcut is available to open the HTML reports in your browser:

    @@ -407,7 +407,7 @@

    Targeting Tests When Using Phases15.1 Unit Testing

    -
    @@ -456,7 +456,7 @@

    15.1 Unit Testing

    15.2 Integration Testing

    -
    @@ -479,7 +479,7 @@

    15.2 Integration Testing

    Transactions

    -

    Integration test methods run inside their own database transaction by default, which is rolled back at the end of each test method. This means that data saved during a test is not persisted to the database (which is shared across all tests). The default generated integration test template includes the Rollback annotation:

    +

    Integration test methods run inside their own database transaction by default, which is rolled back at the end of each test method. This means that data saved during a test is not persisted to the database (which is shared across all tests). The default generated integration test template includes the Rollback annotation:

    @@ -530,7 +530,7 @@

    Transactions

    -

    To automatically roll back setup logic, any persistence operations need to be called from the test method itself so that they are run within the test method’s rolled back transaction. Similar to usage of the setupData() method shown below:

    +

    To preload the database and automatically roll back setup logic, any persistence operations need to be called from the test method itself so that they can run within the test method’s rolled back transaction. Similar to usage of the setupData() method shown below which creates a record in database and after running other test will be rolled back:

    @@ -561,7 +561,7 @@

    Transactions

    Using Spring’s Rollback annotation

    -

    Another transactional approach could be to use Spring’s @Rollback instead.

    +

    Another transactional approach could be to use Spring’s @Rollback instead.

    @@ -601,13 +601,13 @@

    Using Spring’s Rollback annota

    DirtiesContext

    -

    If you do have a series of tests that will share state you can remove the Rollback and the last test in the suite should feature the DirtiesContext annotation which will shutdown the environment and restart it fresh (note that this will have an impact on test run times).

    +

    If you do have a series of tests that will share state you can remove the Rollback and the last test in the suite should feature the DirtiesContext annotation which will shutdown the environment and restart it fresh (note that this will have an impact on test run times).

    Autowiring

    -

    To obtain a reference to a bean you can use the Autowired annotation. For example:

    +

    To obtain a reference to a bean you can use the Autowired annotation. For example:

    @@ -641,7 +641,7 @@

    Testing Controllers

    15.3 Functional Testing

    -
    @@ -659,7 +659,7 @@

    15.3 Functional Testing

    -

    The above command will create a new Spock spec called MyFunctionalSpec.groovy in the src/integration-test/groovy directory. The test is annotated with the Integration annotation to indicate it is an integration test and extends the GebSpec super class:

    +

    The above command will create a new Spock spec called MyFunctionalSpec.groovy in the src/integration-test/groovy directory. The test is annotated with the Integration annotation to indicate it is an integration test and extends the GebSpec super class:

    @@ -692,7 +692,7 @@

    15.3 Functional Testing

    In addition the application is loaded in the JVM as the test, this means that the test has full access to the application state and can interact directly with data services such as GORM to setup and cleanup test data.

    -

    The Integration annotation supports an optional applicationClass attribute which may be used to specify the application class to use for the functional test. The class must extend GrailsAutoConfiguration.

    +

    The Integration annotation supports an optional applicationClass attribute which may be used to specify the application class to use for the functional test. The class must extend GrailsAutoConfiguration.

    diff --git a/snapshot/guide/theWebLayer.html b/snapshot/guide/theWebLayer.html index e9210c49d68..e16b17d6492 100644 --- a/snapshot/guide/theWebLayer.html +++ b/snapshot/guide/theWebLayer.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 8 The Web Layer 4.0.13 + 8 The Web Layer 5.0.1 @@ -44,7 +44,7 @@ -
    3Upgrading from Grails 3.3.x +
    4Configuration @@ -135,7 +135,7 @@

    8 The Web Layer

    -

    Version: 4.0.13

    +

    Version: 5.0.1

    @@ -255,7 +255,7 @@

    Table of Contents

    8 The Web Layer

    -
    @@ -267,7 +267,7 @@

    8 The Web Layer

    8.1 Controllers

    -
    @@ -284,7 +284,7 @@

    8.1 Controllers

    8.1.1 Understanding Controllers and Actions

    -
    @@ -384,7 +384,7 @@

    The Default Action

    8.1.2 Controllers and Scopes

    -
    @@ -398,13 +398,13 @@

    Available Scopes

    • -

      servletContext - Also known as application scope, this scope lets you share state across the entire web application. The servletContext is an instance of ServletContext

      +

      servletContext - Also known as application scope, this scope lets you share state across the entire web application. The servletContext is an instance of ServletContext

    • -

      session - The session allows associating state with a given user and typically uses cookies to associate a session with a client. The session object is an instance of HttpSession

      +

      session - The session allows associating state with a given user and typically uses cookies to associate a session with a client. The session object is an instance of HttpSession

    • -

      request - The request object allows the storage of objects for the current request only. The request object is an instance of HttpServletRequest

      +

      request - The request object allows the storage of objects for the current request only. The request object is an instance of HttpServletRequest

    • params - Mutable map of incoming request query string or POST parameters

      @@ -418,7 +418,7 @@

      Available Scopes

      Accessing Scopes

      -

      Scopes can be accessed using the variable names above in combination with Groovy’s array index operator, even on classes provided by the Servlet API such as the HttpServletRequest:

      +

      Scopes can be accessed using the variable names above in combination with Groovy’s array index operator, even on classes provided by the Servlet API such as the HttpServletRequest:

      @@ -531,7 +531,7 @@

      Scoped Controllers

      8.1.3 Models and Views

      -
      @@ -562,7 +562,7 @@

      Returning the Model

      -

      A more advanced approach is to return an instance of the Spring ModelAndView class:

      +

      A more advanced approach is to return an instance of the Spring ModelAndView class:

      @@ -767,7 +767,7 @@

      Rendering a Response

      8.1.4 Redirects and Chaining

      -
      @@ -795,7 +795,7 @@

      Redirects

      -

      Internally the redirect method uses the HttpServletResponse object’s sendRedirect method.

      +

      Internally the redirect method uses the HttpServletResponse object’s sendRedirect method.

      The redirect method expects one of:

      @@ -958,7 +958,7 @@

      Chaining

      8.1.5 Data Binding

      -
      @@ -1531,7 +1531,7 @@

      Data binding and type conversi

      The BindUsing Annotation

      -

      The BindUsing annotation may be used to define a custom binding mechanism for a particular field in a class. Any time data binding is being applied to the field the closure value of the annotation will be invoked with 2 arguments. The first argument is the object that data binding is being applied to and the second argument is DataBindingSource which is the data source for the data binding. The value returned from the closure will be bound to the property. The following example would result in the upper case version of the name value in the source being applied to the name field during data binding.

      +

      The BindUsing annotation may be used to define a custom binding mechanism for a particular field in a class. Any time data binding is being applied to the field the closure value of the annotation will be invoked with 2 arguments. The first argument is the object that data binding is being applied to and the second argument is DataBindingSource which is the data source for the data binding. The value returned from the closure will be bound to the property. The following example would result in the upper case version of the name value in the source being applied to the name field during data binding.

      @@ -1564,7 +1564,7 @@

      The BindUsing Annotation

      -

      The BindUsing annotation may be used to define a custom binding mechanism for all of the fields on a particular class. When the annotation is applied to a class, the value assigned to the annotation should be a class which implements the BindingHelper interface. An instance of that class will be used any time a value is bound to a property in the class that this annotation has been applied to.

      +

      The BindUsing annotation may be used to define a custom binding mechanism for all of the fields on a particular class. When the annotation is applied to a class, the value assigned to the annotation should be a class which implements the BindingHelper interface. An instance of that class will be used any time a value is bound to a property in the class that this annotation has been applied to.

      @@ -1579,8 +1579,8 @@

      The BindUsing Annotation

      The BindInitializer Annotation

      -

      The BindInitializer annotation may be used to initialize an associated field in a class if it is undefined. -Unlike the BindUsing annotation, databinding will continue binding all nested properties on this association.

      +

      The BindInitializer annotation may be used to initialize an associated field in a class if it is undefined. +Unlike the BindUsing annotation, databinding will continue binding all nested properties on this association.

      @@ -1618,7 +1618,7 @@

      The BindInitializer Annotation

      Custom Data Converters

      -

      The binder will do a lot of type conversion automatically. Some applications may want to define their own mechanism for converting values and a simple way to do this is to write a class which implements ValueConverter and register an instance of that class as a bean in the Spring application context.

      +

      The binder will do a lot of type conversion automatically. Some applications may want to define their own mechanism for converting values and a simple way to do this is to write a class which implements ValueConverter and register an instance of that class as a bean in the Spring application context.

      @@ -1682,7 +1682,7 @@

      Custom Data Converters

      Date Formats For Data Binding

      -

      A custom date format may be specified to be used when binding a String to a Date value by applying the BindingFormat annotation to a Date field.

      +

      A custom date format may be specified to be used when binding a String to a Date value by applying the BindingFormat annotation to a Date field.

      @@ -1729,7 +1729,7 @@

      Date Formats For Data Binding

      Custom Formatted Converters

      -

      You may supply your own handler for the BindingFormat annotation by writing a class which implements the FormattedValueConverter interface and registering an instance of that class as a bean in the Spring application context. Below is an example of a trivial custom String formatter that might convert the case of a String based on the value assigned to the BindingFormat annotation.

      +

      You may supply your own handler for the BindingFormat annotation by writing a class which implements the FormattedValueConverter interface and registering an instance of that class as a bean in the Spring application context. Below is an example of a trivial custom String formatter that might convert the case of a String based on the value assigned to the BindingFormat annotation.

      @@ -1846,7 +1846,7 @@

      Structured Data Binding Editors

      A Gadget has 2 Shape fields. A Shape has an area property. It may be that the application wants to accept request parameters like width and height and use those to calculate the area of a Shape at binding time. A structured binding editor is well suited for that.

      -

      The way to register a structured editor with the data binding process is to add an instance of the grails.databinding.TypedStructuredBindingEditor interface to the Spring application context. The easiest way to implement the TypedStructuredBindingEditor interface is to extend the org.grails.databinding.converters.AbstractStructuredBindingEditor abstract class and override the getPropertyValue method as shown below:

      +

      The way to register a structured editor with the data binding process is to add an instance of the grails.databinding.TypedStructuredBindingEditor interface to the Spring application context. The easiest way to implement the TypedStructuredBindingEditor interface is to extend the org.grails.databinding.converters.AbstractStructuredBindingEditor abstract class and override the getPropertyValue method as shown below:

      src/main/groovy/databinding/converters/StructuredShapeEditor.groovy
      @@ -1914,7 +1914,7 @@

      Structured Data Binding Editors

      Data Binding Event Listeners

      -

      The DataBindingListener interface provides a mechanism for listeners to be notified of data binding events. The interface looks like this:

      +

      The DataBindingListener interface provides a mechanism for listeners to be notified of data binding events. The interface looks like this:

      @@ -1984,7 +1984,7 @@

      Data Binding Event Listeners

      -

      Any bean in the Spring application context which implements that interface will automatically be registered with the data binder. The DataBindingListenerAdapter class implements the DataBindingListener interface and provides default implementations for all of the methods in the interface so this class is well suited for subclassing so your listener class only needs to provide implementations for the methods your listener is interested in.

      +

      Any bean in the Spring application context which implements that interface will automatically be registered with the data binder. The DataBindingListenerAdapter class implements the DataBindingListener interface and provides default implementations for all of the methods in the interface so this class is well suited for subclassing so your listener class only needs to provide implementations for the methods your listener is interested in.

      @@ -2019,7 +2019,7 @@

      Using The Data Binder Directly

      -

      An instance of the data binder is in the Spring application context with a bean name of grailsWebDataBinder. That bean implements the DataBinder interface. The following code demonstrates using the data binder directly.

      +

      An instance of the data binder is in the Spring application context with a bean name of grailsWebDataBinder. That bean implements the DataBinder interface. The following code demonstrates using the data binder directly.

      grails-app/services/bindingdmeo/WidgetService
      @@ -2041,7 +2041,7 @@

      Using The Data Binder Directly

      -

      See the DataBinder documentation for more information about overloaded versions +

      See the DataBinder documentation for more information about overloaded versions of the bind method.

      @@ -2111,7 +2111,7 @@

      Data Binding and Security Concerns<

      8.1.6 Responding with JSON

      -
      @@ -2154,7 +2154,7 @@

      Using the respond method to ou

      -

      The respond method will then look for an appriopriate Renderer for the object and the calculated media type from the RendererRegistry.

      +

      The respond method will then look for an appriopriate Renderer for the object and the calculated media type from the RendererRegistry.

      Grails includes a number of pre-configured Renderer implementations that will produce default representations of JSON responses for the argument passed to respond. For example going to the /book.json URI will produce JSON such as:

      @@ -2363,7 +2363,7 @@

      Using the render method to outp

      8.1.7 More on JSONBuilder

      -
      @@ -2373,14 +2373,14 @@

      8.1.7 More on JSONBuilder

      The previous section on XML and JSON responses covered simplistic examples of rendering XML and JSON responses. Whilst the XML builder used by Grails is the standard XmlSlurper found in Groovy.

      -

      For JSON, since Grails 3.1, Grails uses Groovy’s StreamingJsonBuilder by default and you can refer to the Groovy documentation and StreamingJsonBuilder API documentation on how to use it.

      +

      For JSON, since Grails 3.1, Grails uses Groovy’s StreamingJsonBuilder by default and you can refer to the Groovy documentation and StreamingJsonBuilder API documentation on how to use it.

      8.1.8 Responding with XML

      -
      @@ -2392,7 +2392,7 @@

      8.1.8 Responding with XML

      8.1.9 Uploading Files

      -
      @@ -2401,7 +2401,7 @@

      8.1.9 Uploading Files

      Programmatic File Uploads

      -

      Grails supports file uploads using Spring’s MultipartHttpServletRequest interface. The first step for file uploading is to create a multipart form like this:

      +

      Grails supports file uploads using Spring’s MultipartHttpServletRequest interface. The first step for file uploading is to create a multipart form like this:

      @@ -2416,7 +2416,7 @@

      Programmatic File Uploads

      The uploadForm tag conveniently adds the enctype="multipart/form-data" attribute to the standard <g:form> tag.

      -

      There are then a number of ways to handle the file upload. One is to work with the Spring MultipartFile instance directly:

      +

      There are then a number of ways to handle the file upload. One is to work with the Spring MultipartFile instance directly:

      @@ -2434,7 +2434,7 @@

      Programmatic File Uploads

      -

      This is convenient for doing transfers to other destinations and manipulating the file directly as you can obtain an InputStream and so on with the MultipartFile interface.

      +

      This is convenient for doing transfers to other destinations and manipulating the file directly as you can obtain an InputStream and so on with the MultipartFile interface.

      @@ -2529,7 +2529,7 @@

      Increase Upload Max File Size

      8.1.10 Command Objects

      -
      @@ -2886,14 +2886,14 @@

      Working with Lists of Command Ob

      8.1.11 Handling Duplicate Form Submissions

      -
      -

      Grails has built-in support for handling duplicate form submissions using the "Synchronizer Token Pattern". To get started you define a token on the form tag:

      +

      Grails has built-in support for handling duplicate form submissions using the "Synchronizer Token Pattern". To get started you define a token on the form tag:

      @@ -2939,7 +2939,7 @@

      8.1.11 Handling Duplicate Form Submissions

      8.1.12 Simple Type Converters

      -
      @@ -2991,7 +2991,7 @@

      Handling Multi Parameters

      8.1.13 Declarative Controller Exception Handling

      -
      @@ -3107,7 +3107,7 @@

      8.1.13 Declarative Controller Exception Han

      8.2 Groovy Server Pages

      -
      @@ -3189,7 +3189,7 @@

      8.2 Groovy Server Pages

      8.3 URL Mappings

      -
      @@ -3216,7 +3216,7 @@

      8.3 URL Mappings

      8.3.1 Mapping to Controllers and Actions

      -
      @@ -3291,7 +3291,7 @@

      8.3.1 Mapping to Controllers and Actions

      8.3.2 Mapping to REST resources

      -
      @@ -3660,7 +3660,7 @@

      Linking to RESTful Mappings

      8.3.3 Redirects In URL Mappings

      -
      @@ -3700,7 +3700,7 @@

      8.3.3 Redirects In URL Mappings

      8.3.4 Embedded Variables

      -
      @@ -3863,7 +3863,7 @@

      Dynamically Resolved Variables

      8.3.5 Mapping to Views

      -
      @@ -3894,7 +3894,7 @@

      8.3.5 Mapping to Views

      8.3.6 Mapping to Response Codes

      -
      @@ -3978,7 +3978,7 @@

      Declarative Error Handling

      8.3.7 Mapping to HTTP methods

      -
      @@ -4005,7 +4005,7 @@

      8.3.7 Mapping to HTTP methods

      8.3.8 Mapping Wildcards

      -
      @@ -4082,14 +4082,14 @@

      8.3.8 Mapping Wildcards

      8.3.9 Automatic Link Re-Writing

      -
      -

      Another great feature of URL mappings is that they automatically customize the behaviour of the link tag so that changing the mappings don’t require you to go and change all of your links.

      +

      Another great feature of URL mappings is that they automatically customize the behaviour of the link tag so that changing the mappings don’t require you to go and change all of your links.

      This is done through a URL re-writing technique that reverse engineers the links from the URL mappings. So given a mapping such as the blog one from an earlier section:

      @@ -4131,7 +4131,7 @@

      8.3.9 Automatic Link Re-Writing

      8.3.10 Applying Constraints

      -
      @@ -4187,7 +4187,7 @@

      8.3.10 Applying Constraints

      8.3.11 Named URL Mappings

      -
      @@ -4314,7 +4314,7 @@

      8.3.11 Named URL Mappings

      8.3.12 Customizing URL Formats

      -
      @@ -4330,7 +4330,7 @@

      8.3.12 Customizing URL Formats

      -

      Arbitrary strategies may be plugged in by providing a class which implements the UrlConverter interface and adding an instance of that class to the Spring application context with the bean name of grails.web.UrlConverter.BEAN_NAME. If Grails finds a bean in the context with that name, it will be used as the default converter and there is no need to assign a value to the grails.web.url.converter config property.

      +

      Arbitrary strategies may be plugged in by providing a class which implements the UrlConverter interface and adding an instance of that class to the Spring application context with the bean name of grails.web.UrlConverter.BEAN_NAME. If Grails finds a bean in the context with that name, it will be used as the default converter and there is no need to assign a value to the grails.web.url.converter config property.

      src/main/groovy/com/myapplication/MyUrlConverterImpl.groovy
      @@ -4358,7 +4358,7 @@

      8.3.12 Customizing URL Formats

      8.3.13 Namespaced Controllers

      -
      @@ -4506,7 +4506,7 @@

      8.3.13 Namespaced Controllers

      8.4 CORS

      -
      @@ -4557,12 +4557,12 @@

      8.4 CORS

      allowCredentials

      -

      true

      +

      false

      -

      Some of these settings come directly from Spring Boot and can change in future versions. See Spring CORS Configuration Documentation

      +

      Some of these settings come directly from Spring Boot and can change in future versions. See Spring CORS Configuration Documentation

      All of those settings can be easily overridden.

      @@ -4592,12 +4592,15 @@

      8.4 CORS

      allowedHeaders: - Content-Type mappings: - /api/**: + '[/api/**]': allowedOrigins: - http://localhost:5000 # Other configurations not specified default to the global config
      +
      +

      Note that the mapping key must be made with bracket notation (see https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-Configuration-Binding#map-based-binding), which is a breaking change between Spring Boot 1.5 (Grails 3) and Spring Boot 2 (Grails 4).

      +
      @@ -4641,7 +4644,7 @@

      8.4 CORS

      - +

      allowCredentials

      true

      false

      @@ -4655,7 +4658,7 @@

      8.4 CORS

      cors: enabled: true mappings: - /api/**: inherit + '[/api/**]': inherit
      @@ -4663,7 +4666,7 @@

      8.4 CORS

      8.5 Interceptors

      -
      @@ -4709,7 +4712,7 @@

      Interceptors vs Filters

      8.5.1 Defining Interceptors

      -
      @@ -4719,7 +4722,7 @@

      8.5.1 Defining Interceptors

      By default interceptors will match the controllers with the same name. For example if you have an interceptor called BookInterceptor then all requests to the actions of the BookController will trigger the interceptor.

      -

      An Interceptor implements the Interceptor trait and provides 3 methods that can be used to intercept requests:

      +

      An Interceptor implements the Interceptor trait and provides 3 methods that can be used to intercept requests:

      @@ -4759,24 +4762,24 @@

      8.5.1 Defining Interceptors

      -

      The afterView method is executed after view rendering completes. If an exception occurs, the exception is available using the throwable property of the Interceptor trait.

      +

      The afterView method is executed after view rendering completes. If an exception occurs, the exception is available using the throwable property of the Interceptor trait.

      8.5.2 Matching Requests with Interceptors

      -
      -

      As mention in the previous section, by default an interceptor will match only requests to the associated controller by convention. However you can configure the interceptor to match any request using the match or matchAll methods defined in the Interceptor API.

      +

      As mention in the previous section, by default an interceptor will match only requests to the associated controller by convention. However you can configure the interceptor to match any request using the match or matchAll methods defined in the Interceptor API.

      -

      The matching methods return a Matcher instance which can be used to configure how the interceptor matches the request.

      +

      The matching methods return a Matcher instance which can be used to configure how the interceptor matches the request.

      For example the following interceptor will match all requests except those to the login controller:

      @@ -4826,7 +4829,7 @@

      8.5.2 Matching Requests with Interceptors

    -

    All named arguments except for uri accept either a String or a Regex expression. The uri argument supports a String path that is compatible with Spring’s AntPathMatcher. The possible named arguments are:

    +

    All named arguments except for uri accept either a String or a Regex expression. The uri argument supports a String path that is compatible with Spring’s AntPathMatcher. The possible named arguments are:

      @@ -4852,7 +4855,7 @@

      8.5.2 Matching Requests with Interceptors

      8.5.3 Ordering Interceptor Execution

      -
      @@ -4930,7 +4933,7 @@

      8.5.3 Ordering Interceptor Execution

      8.6 Content Negotiation

      -
      diff --git a/snapshot/guide/traits.html b/snapshot/guide/traits.html index d4a18ae97cf..b05c4415d37 100644 --- a/snapshot/guide/traits.html +++ b/snapshot/guide/traits.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 9 Traits 4.0.13 + 9 Traits 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -135,7 +135,7 @@

      9 Traits

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -156,7 +156,7 @@

      Table of Contents

      9 Traits

      -
      @@ -173,7 +173,7 @@

      Overview

      9.1 Traits Provided by Grails

      -
      @@ -187,16 +187,16 @@

      Domain Class Traits

      @@ -206,16 +206,16 @@

      Controller Traits

      @@ -225,7 +225,7 @@

      Interceptor Trait

      @@ -235,7 +235,7 @@

      Tag Library Trait

      @@ -255,31 +255,31 @@

      Tag Library Trait

      -

      grails.web.api.WebAttributes

      +

      grails.web.api.WebAttributes

      Common Web Attributes

      -

      grails.web.api.ServletAttributes

      +

      grails.web.api.ServletAttributes

      Servlet API Attributes

      -

      grails.web.databinding.DataBinder

      +

      grails.web.databinding.DataBinder

      Data Binding API

      -

      grails.artefact.controller.support.RequestForwarder

      +

      grails.artefact.controller.support.RequestForwarder

      Request Forwarding API

      -

      grails.artefact.controller.support.ResponseRedirector

      +

      grails.artefact.controller.support.ResponseRedirector

      Response Redirecting API

      -

      grails.artefact.controller.support.ResponseRenderer

      +

      grails.artefact.controller.support.ResponseRenderer

      Response Rendering API

      -

      grails.validation.Validateable

      +

      grails.validation.Validateable

      Validation API

      @@ -290,14 +290,14 @@

      Tag Library Trait

      9.1.1 WebAttributes Trait Example

      -
      -

      WebAttributes is one of the traits provided by the framework. Any Groovy class may implement this trait to inherit all of the properties and behaviors provided by the trait.

      +

      WebAttributes is one of the traits provided by the framework. Any Groovy class may implement this trait to inherit all of the properties and behaviors provided by the trait.

      src/main/groovy/demo/Helper.groovy
      diff --git a/snapshot/guide/upgrading.html b/snapshot/guide/upgrading.html index 7de97fc9f42..603db8c9df3 100644 --- a/snapshot/guide/upgrading.html +++ b/snapshot/guide/upgrading.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 3 Upgrading from Grails 3.3.x 4.0.13 + 3 Upgrading from the previous versions 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -133,19 +133,200 @@
      -

      3 Upgrading from Grails 3.3.x

      +

      3 Upgrading from the previous versions

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      + + -

      3 Upgrading from Grails 3.3.x

      +

      3 Upgrading from the previous versions

      + +
      + +
      + + + + + +

      3.1 Upgrading from Grails 4.0.x

      + +
      + +
      + + +
      +

      Bump up Grails Version

      +
      +

      You will need to upgrade your Grails version defined in gradle.properties as:

      +
      +
      +
      gradle.properties
      +
      +
      ...
      +grailsVersion=5.0.0.RC1
      +...
      +
      +
      +
      +
      +

      Apache Groovy 3.0.7

      +
      +

      Grails 5.0.0.RC1 provide support for Groovy 3. We would recommend you to please check the Release notes for Groovy 3 to update your application in case you are using a specific feature which might not work in Groovy 3.

      +
      +
      +

      Define groovyVersion in gradle.properties to force the application to use Groovy 3.

      +
      +
      +

      Grails 5.0 app’s gradle.properties

      +
      +
      +
      gradle.properties
      +
      +
      ...
      +groovyVersion=3.0.7
      +...
      +
      +
      +
      +
      +

      Bump up GORM Version

      +
      +

      If you were using GORM, you will need to update the version defined in gradle.properties as:

      +
      +
      +
      gradle.properties
      +
      +
      ...
      +gormVersion=7.1.0.M5
      +...
      +
      +
      +
      +
      +

      GORM for MonogDB Sync Driver

      +
      +

      The GORM for MongoDB is updated to support latest mongodb-driver-sync. If you are using GORM for MongoDB and doing something specific to MongoDB Driver or low level Mongo API then you might want to take a look at Upgrading to the 4.0 Driver

      +
      +
      +
      +

      Bump up Asset Pipeline plugin version

      +
      +

      The previous version of asset-pipeline is not supported with Grails 5.0 as it is compiled with a version of Groovy which is binary incompatible with Groovy 3. So, please update the plugin version to 3.1.0.

      +
      +
      +
      +

      Disabled StringCharArrayAccessor by default

      +
      +

      The previous version of Grails use the StringCharArrayAccessor which is enabled by default and provides optimized access to java.lang.String internals. In Grails 5.0 it is disabled by default but you can enable it by setting a system property with name stringchararrayaccessor.disabled and value false.

      +
      +
      + + + + + +
      + + +Enabling StringCharArrayAccessor would show IllegalReflectiveAccess warnings as it uses reflection to do the optimizations. +
      +
      +
      +
      +

      Changes in profile.yml and feature.yml files in Grails Profiles

      +
      +

      The format of how dependencies are defined in features and profiles has been changed. See the section on Application Profiles for more information.

      +
      +
      +
      +

      Deprecation of dot navigation of Grails configuration

      +
      +

      In order to reduce complexity, improve performance, and increase maintainability, accessing configuration through dot notation (config.a.b.c) has been deprecated. This functionality will be removed in a future release.

      +
      +
      +

      Also, you would see a warning message if you are accessing configuration through the dot notation.

      +
      +
      +

      The recommended way to access configuration is:

      +
      +
      +
      +
      grailsApplication.config.getProperty("hola", String.class)
      +
      +
      +
      + +
      +

      Spring 5.3

      +
      +

      Grails 5.0.0.RC1 is built on Spring 5.3.2 See the Upgrading to Spring 5.3 if you are using Spring specific features.

      +
      +
      +
      +

      Spring Boot 2.4

      +
      +

      Grails 5.0.0.RC1 updates to Spring Boot 2.4. Please check Spring Boot 2.4 Release Notes for more information.

      +
      +
      +
      +

      Micronaut 2.0

      +
      +

      Grails 5.0.0.RC1 is shipped with Micronaut 2.0. Please check the Upgrading to Micronaut 2.x if you are using a specific feature.

      +
      +
      +
      +

      Micronaut for Spring 3.0.0

      +
      +

      Grails 5.0.0.RC1 is updated to Micronaut for Spring 3.0.0, please check out release notes for more information.

      +
      +
      +
      +

      Convert logback.groovy to logback.xml

      +
      +

      Support for logback.groovy was removed in logback 2.9.0 to mitigate CVE-2021-42550. See the upstream issue for more information.

      +
      +
      + + +

      3.2 Upgrading from Grails 3.3.x

      -
      @@ -174,7 +355,7 @@

      Bump up Grails Version

      gradle.properties
      ...
      -grailsVersion=4.0.0
      +grailsVersion=4.0.4
       ...
      @@ -202,7 +383,7 @@

      Bump up GORM Version

      gradle.properties
      ...
      -gormVersion=7.0.2
      +gormVersion=7.0.4
       ...
      @@ -238,7 +419,7 @@

      Hibernate 5.4 and GORM 7.x

      Spring Boot 2.1 Actuator

      -

      Please check the Spring Boot Actuator documentation since it has changed substantially from Spring Boot 1.5 the version Grails 3.x used.

      +

      Please check the Spring Boot Actuator documentation since it has changed substantially from Spring Boot 1.5 the version Grails 3.x used.

      If you had configuration such as:

      @@ -274,7 +455,7 @@

      Spring Boot Developer To

      Previous versions of Grails used a reloading agent called Spring Loaded. Since this library is no longer maintained and does not support Java 11 support for Spring Loaded has been removed.

      -

      As a replacement, Grails 4 applications include Spring Boot Developer Tools dependencies in the build.gradle build script. If you are migrating a Grails 3.x app, please include the following set of dependencies:

      +

      As a replacement, Grails 4 applications include Spring Boot Developer Tools dependencies in the build.gradle build script. If you are migrating a Grails 3.x app, please include the following set of dependencies:

      build.gradle
      @@ -348,7 +529,7 @@

      Spring Boot Gradle Plugin Changes

      -

      Grails 4 apps are built on top of Spring Boot 2.1. Starting from Spring Boot 2.0, the addResources property no longer exists. Instead, you need to set the sourceResources property to the source set that you want to use. Typically, that’s sourceSets.main. This is described in the Spring Boot Gradle plugin’s documentation.

      +

      Grails 4 apps are built on top of Spring Boot 2.1. Starting from Spring Boot 2.0, the addResources property no longer exists. Instead, you need to set the sourceResources property to the source set that you want to use. Typically that’s sourceSets.main. This is described in the Spring Boot Gradle plugin’s documentation.

      Your Grails 4 app’s build.gradle can be configured:

      @@ -402,43 +583,61 @@

      Upgrading to Gradle 5

      Grails 3 apps by default used Gradle 3.5. Grails 4 apps use Gradle 5.

      -

      To upgrade to Gradle 5, first do it in gradle.properties

      +

      To upgrade to Gradle 5 execute:

      -
      build.gradle | Grails 3
      -
      gradleWrapperVersion=3.5
      +
      ./gradlew wrapper --gradle-version 5.0
      -

      replace it with:

      +

      Due to changes in Gradle 5, transitive dependencies are no longer resolved for plugins. If your project makes use of a plugin that has transitive dependencies, you will need to add those explicitly to your build.gradle file.

      -
      -
      build.gradle | Grails 4
      -
      -
      gradleWrapperVersion=5.0
      +
      +

      If you customized your app’s build, other migrations may be necessary. Please check +Gradle Upgrading your build documentation. Especially notice, that default Gradle daemon now starts with 512MB of heap instead of 1GB. Please check Default memory settings changed documentation.

      +
      +

      Groovy language update to 2.5.6

      -

      Then execute:

      +

      Keep in mind, that with grails 4.0.x there is a minor groovy language upgrade (e.g. 3.3.9. used groovy 2.4.x), which requires a couple of changes, that are immediately obvious when trying to compile your source code. However there are also issues with changed implementations of core linkedlist functions! Check an overview of the breaking changes here: Breaking changes of Groovy 2.5

      +
      +
      +

      Removed date helper functions

      +
      +

      Most common issue is that date util functions have been moved to individual project, e.g new Date().format("ddMMyyyy") no longer works without adding:

      +
      build.gradle
      -
      ./gradlew wrapper --gradle-version 5.0
      +
      dependencies {
      +    compile "org.codehaus.groovy:groovy-dateutil:3.0.4"
      +}
      -
      -

      Due to changes in Gradle 5, transitive dependencies are no longer resolved for plugins. If your project makes use of a plugin that has transitive dependencies, you will need to add those explicitly to your build.gradle file.

      +
      +

      Changed linked list method implementations

      -

      If you customized your app’s build, other migrations may be necessary. Please check -Gradle Upgrading your build documentation.

      +

      Check whether you are using the groovy version of linkedlist implementations:

      +
      +
      +
        +
      • +

        [].pop() - will no longer remove the last, but the first element of the list. Replace it with [].removeLast() is recommended.

        +
      • +
      • +

        [].push(..) - will no longer add to the end, but to the beginning of the list. Replace it with [].add(..) is recommended.

        +
      • +
      +

      H2 Web Console

      -

      Spring Boot 2.1 includes native support for the H2 database web console. Since this is already included in Spring Boot the equivalent feature has been removed from Grails. The H2 console is therefore now available at /h2-console instead of the previous URI of /dbconsole. See Using H2’s Web Console in the Spring Boot documentation for more information.

      +

      Spring Boot 2.1 includes native support for the H2 database web console. Since this is already included in Spring Boot the equivalent feature has been removed from Grails. The H2 console is therefore now available at /h2-console instead of the previous URI of /dbconsole. See Using H2’s Web Console in the Spring Boot documentation for more information.

      diff --git a/snapshot/guide/validation.html b/snapshot/guide/validation.html index bda72f23163..136db68cd14 100644 --- a/snapshot/guide/validation.html +++ b/snapshot/guide/validation.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - 12 Validation 4.0.13 + 12 Validation 5.0.1 @@ -44,7 +44,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -135,7 +135,7 @@

      12 Validation

      -

      Version: 4.0.13

      +

      Version: 5.0.1

      @@ -168,14 +168,14 @@

      Table of Contents

      12 Validation

      -
      -

      Grails validation capability is built on Spring’s Validator API and data binding capabilities. However Grails takes this further and provides a unified way to define validation "constraints" with its constraints mechanism.

      +

      Grails validation capability is built on Spring’s Validator API and data binding capabilities. However Grails takes this further and provides a unified way to define validation "constraints" with its constraints mechanism.

      Constraints in Grails are a way to declaratively specify validation rules. Most commonly they are applied to domain classes, however URL Mappings and Command Objects also support constraints.

      @@ -185,7 +185,7 @@

      12 Validation

      12.1 Declaring Constraints

      -
      @@ -300,7 +300,7 @@

      12.2 Validating Constraints

      -
      @@ -326,7 +326,7 @@

      Validation Basics

      -

      The errors property on domain classes is an instance of the Spring Errors interface. The Errors interface provides methods to navigate the validation errors and also retrieve the original values.

      +

      The errors property on domain classes is an instance of the Spring Errors interface. The Errors interface provides methods to navigate the validation errors and also retrieve the original values.

      @@ -372,7 +372,7 @@

      Validation Phases

      12.3 Sharing Constraints Between Classes

      -
      @@ -494,7 +494,7 @@

      Importing Constraints

      12.4 Validation on the Client

      -
      @@ -503,7 +503,7 @@

      12.4 Validation on the Client

      Displaying Errors

      -

      Typically if you get a validation error you redirect back to the view for rendering. Once there you need some way of displaying errors. Grails supports a rich set of tags for dealing with errors. To render the errors as a list you can use renderErrors:

      +

      Typically if you get a validation error you redirect back to the view for rendering. Once there you need some way of displaying errors. Grails supports a rich set of tags for dealing with errors. To render the errors as a list you can use renderErrors:

      @@ -511,7 +511,7 @@

      Displaying Errors

      -

      If you need more control you can use hasErrors and eachError:

      +

      If you need more control you can use hasErrors and eachError:

      @@ -528,7 +528,7 @@

      Displaying Errors

      Highlighting Errors

      -

      It is often useful to highlight using a red box or some indicator when a field has been incorrectly input. This can also be done with the hasErrors by invoking it as a method. For example:

      +

      It is often useful to highlight using a red box or some indicator when a field has been incorrectly input. This can also be done with the hasErrors by invoking it as a method. For example:

      @@ -544,7 +544,7 @@

      Highlighting Errors

      Retrieving Input Values

      -

      Each error is actually an instance of the FieldError class in Spring, which retains the original input value within it. This is useful as you can use the error object to restore the value input by the user using the fieldValue tag:

      +

      Each error is actually an instance of the FieldError class in Spring, which retains the original input value within it. This is useful as you can use the error object to restore the value input by the user using the fieldValue tag:

      @@ -560,14 +560,14 @@

      Retrieving Input Values

      12.5 Validation and Internationalization

      -
      -

      Another important thing to note about errors in Grails is that error messages are not hard coded anywhere. The FieldError class in Spring resolves messages from message bundles using Grails' i18n support.

      +

      Another important thing to note about errors in Grails is that error messages are not hard coded anywhere. The FieldError class in Spring resolves messages from message bundles using Grails' i18n support.

      Constraints and Message Codes

      @@ -689,7 +689,7 @@

      Constraints and Message Codes

      Displaying Messages

      -

      The renderErrors tag will automatically look up messages for you using the message tag. If you need more control of rendering you can handle this yourself:

      +

      The renderErrors tag will automatically look up messages for you using the message tag. If you need more control of rendering you can handle this yourself:

      @@ -703,7 +703,7 @@

      Displaying Messages

      -

      In this example within the body of the eachError tag we use the message tag in combination with its error argument to read the message for the given error.

      +

      In this example within the body of the eachError tag we use the message tag in combination with its error argument to read the message for the given error.

      @@ -711,7 +711,7 @@

      Displaying Messages

      12.6 Applying Validation to Other Classes

      -
      @@ -723,7 +723,7 @@

      12.6 Applying Validation to

      The Validateable Trait

      -

      Classes which define the static constraints property and implement the Validateable trait will be validateable. Consider this example:

      +

      Classes which define the static constraints property and implement the Validateable trait will be validateable. Consider this example:

      src/main/groovy/com/mycompany/myapp/User.groovy
      @@ -747,7 +747,7 @@

      The Validateable Trait

      Programmatic access
      -

      Accessing the constraints on a validateable object is slightly different. You can access a command object’s constraints programmatically in another context by accessing the constraintsMap static property of the class. That property is an instance of Map<String, ConstrainedProperty>

      +

      Accessing the constraints on a validateable object is slightly different. You can access a command object’s constraints programmatically in another context by accessing the constraintsMap static property of the class. That property is an instance of Map<String, ConstrainedProperty>

      In the example above, accessing User.constraintsMap.login.blank would yield false, while diff --git a/snapshot/index.html b/snapshot/index.html index 28c64dcfe37..88b646b749b 100644 --- a/snapshot/index.html +++ b/snapshot/index.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -41,7 +41,7 @@

      - + @@ -103,7 +103,7 @@

      The Grails Framework

      Authors: The Grails Team

      -

      Version:

      +

      Version: 

      @@ -113,12 +113,10 @@

      Table of Contents

      - + - - @@ -147,7 +145,11 @@

      Table of Contents

      - + + + + + diff --git a/snapshot/ref/Command Line/Usage.html b/snapshot/ref/Command Line/Usage.html index b03f1ce066d..9e95e03a175 100644 --- a/snapshot/ref/Command Line/Usage.html +++ b/snapshot/ref/Command Line/Usage.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Command Line/bug-report.html b/snapshot/ref/Command Line/bug-report.html index a4144b518b0..4d1a340aa90 100644 --- a/snapshot/ref/Command Line/bug-report.html +++ b/snapshot/ref/Command Line/bug-report.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Command Line/clean.html b/snapshot/ref/Command Line/clean.html index 69200e2fda4..55acfe76799 100644 --- a/snapshot/ref/Command Line/clean.html +++ b/snapshot/ref/Command Line/clean.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Command Line/compile.html b/snapshot/ref/Command Line/compile.html index c8a0bdd75e1..2656493ff69 100644 --- a/snapshot/ref/Command Line/compile.html +++ b/snapshot/ref/Command Line/compile.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Command Line/console.html b/snapshot/ref/Command Line/console.html index 78f1fa97a91..d381683a19d 100644 --- a/snapshot/ref/Command Line/console.html +++ b/snapshot/ref/Command Line/console.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Command Line/create-app.html b/snapshot/ref/Command Line/create-app.html index cf75e41df01..74ac5ff2263 100644 --- a/snapshot/ref/Command Line/create-app.html +++ b/snapshot/ref/Command Line/create-app.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Command Line/create-command.html b/snapshot/ref/Command Line/create-command.html index f154430e072..349687da063 100644 --- a/snapshot/ref/Command Line/create-command.html +++ b/snapshot/ref/Command Line/create-command.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      @@ -227,7 +227,7 @@

      Description

      In order to separate the code generation and build layer, in Grails 3.x scripts created with create-script do not have access to the running application instance.

      -

      Instead, Grails 3.x features a new concept called an ApplicationCommand that is invoked via Gradle to perform tasks such as interact with classes in the runtime.

      +

      Instead, Grails 3.x features a new concept called an ApplicationCommand that is invoked via Gradle to perform tasks such as interact with classes in the runtime.

      diff --git a/snapshot/ref/Command Line/create-controller.html b/snapshot/ref/Command Line/create-controller.html index b236535428f..a15df0c6823 100644 --- a/snapshot/ref/Command Line/create-controller.html +++ b/snapshot/ref/Command Line/create-controller.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Command Line/create-domain-class.html b/snapshot/ref/Command Line/create-domain-class.html index d2f58a5bff1..226cf6f8fe2 100644 --- a/snapshot/ref/Command Line/create-domain-class.html +++ b/snapshot/ref/Command Line/create-domain-class.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Command Line/create-functional-test.html b/snapshot/ref/Command Line/create-functional-test.html index 7165f48b061..5609473b431 100644 --- a/snapshot/ref/Command Line/create-functional-test.html +++ b/snapshot/ref/Command Line/create-functional-test.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Command Line/create-hibernate-cfg-xml.html b/snapshot/ref/Command Line/create-hibernate-cfg-xml.html index 864ea8776a8..a619381dc10 100644 --- a/snapshot/ref/Command Line/create-hibernate-cfg-xml.html +++ b/snapshot/ref/Command Line/create-hibernate-cfg-xml.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Command Line/create-integration-test.html b/snapshot/ref/Command Line/create-integration-test.html index c90e2b66e7c..d36d46cd7f4 100644 --- a/snapshot/ref/Command Line/create-integration-test.html +++ b/snapshot/ref/Command Line/create-integration-test.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Command Line/create-interceptor.html b/snapshot/ref/Command Line/create-interceptor.html index e8be20152b7..31bc8c9edb2 100644 --- a/snapshot/ref/Command Line/create-interceptor.html +++ b/snapshot/ref/Command Line/create-interceptor.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Command Line/create-plugin.html b/snapshot/ref/Command Line/create-plugin.html index 5402749d197..bd4fad9360d 100644 --- a/snapshot/ref/Command Line/create-plugin.html +++ b/snapshot/ref/Command Line/create-plugin.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Command Line/create-profile.html b/snapshot/ref/Command Line/create-profile.html index 6020e28f077..e8554b7abc9 100644 --- a/snapshot/ref/Command Line/create-profile.html +++ b/snapshot/ref/Command Line/create-profile.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Command Line/create-script.html b/snapshot/ref/Command Line/create-script.html index 9e93344aa8c..797f1567e88 100644 --- a/snapshot/ref/Command Line/create-script.html +++ b/snapshot/ref/Command Line/create-script.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      @@ -177,7 +177,7 @@

      Examples

      Description

      -

      Each script extends from the super class GroovyScriptCommand which provides an API for achieving a number of different tasks.

      +

      Each script extends from the super class GroovyScriptCommand which provides an API for achieving a number of different tasks.

      @@ -199,7 +199,7 @@

      Invoking Gradle

      -

      Code generation can be performed using the TemplateRenderer API

      +

      Code generation can be performed using the TemplateRenderer API

      For more information, see the section on creating custom scripts.

      diff --git a/snapshot/ref/Command Line/create-service.html b/snapshot/ref/Command Line/create-service.html index 24f8085f3ba..5aae4078c7a 100644 --- a/snapshot/ref/Command Line/create-service.html +++ b/snapshot/ref/Command Line/create-service.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Command Line/create-taglib.html b/snapshot/ref/Command Line/create-taglib.html index b7734880929..16d9b7d3320 100644 --- a/snapshot/ref/Command Line/create-taglib.html +++ b/snapshot/ref/Command Line/create-taglib.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Command Line/create-unit-test.html b/snapshot/ref/Command Line/create-unit-test.html index 97a8db5fd0a..8f788243a3c 100644 --- a/snapshot/ref/Command Line/create-unit-test.html +++ b/snapshot/ref/Command Line/create-unit-test.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Command Line/dependency-report.html b/snapshot/ref/Command Line/dependency-report.html index 19c791f31cc..01a9075009c 100644 --- a/snapshot/ref/Command Line/dependency-report.html +++ b/snapshot/ref/Command Line/dependency-report.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Command Line/docs.html b/snapshot/ref/Command Line/docs.html index 08471b906e8..a88a2eea1a0 100644 --- a/snapshot/ref/Command Line/docs.html +++ b/snapshot/ref/Command Line/docs.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Command Line/generate-all.html b/snapshot/ref/Command Line/generate-all.html index 3490511e587..46c23149b54 100644 --- a/snapshot/ref/Command Line/generate-all.html +++ b/snapshot/ref/Command Line/generate-all.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Command Line/generate-controller.html b/snapshot/ref/Command Line/generate-controller.html index 36dbb0e0e9d..cfd01b7059b 100644 --- a/snapshot/ref/Command Line/generate-controller.html +++ b/snapshot/ref/Command Line/generate-controller.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Command Line/generate-views.html b/snapshot/ref/Command Line/generate-views.html index 36ed95a06ae..a6d741475c0 100644 --- a/snapshot/ref/Command Line/generate-views.html +++ b/snapshot/ref/Command Line/generate-views.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Command Line/help.html b/snapshot/ref/Command Line/help.html index 13737f9eca8..1b76c9e902a 100644 --- a/snapshot/ref/Command Line/help.html +++ b/snapshot/ref/Command Line/help.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Command Line/install-templates.html b/snapshot/ref/Command Line/install-templates.html index 5a46c9bdb87..edfe124b729 100644 --- a/snapshot/ref/Command Line/install-templates.html +++ b/snapshot/ref/Command Line/install-templates.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Command Line/list-plugins.html b/snapshot/ref/Command Line/list-plugins.html index 3b5c017c5d0..e596ddab2e9 100644 --- a/snapshot/ref/Command Line/list-plugins.html +++ b/snapshot/ref/Command Line/list-plugins.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Command Line/list-profiles.html b/snapshot/ref/Command Line/list-profiles.html index dd2ebf85d48..b5bf7d4ec82 100644 --- a/snapshot/ref/Command Line/list-profiles.html +++ b/snapshot/ref/Command Line/list-profiles.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Command Line/package-plugin.html b/snapshot/ref/Command Line/package-plugin.html index 07b1bf5323d..281f9edda84 100644 --- a/snapshot/ref/Command Line/package-plugin.html +++ b/snapshot/ref/Command Line/package-plugin.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Command Line/package.html b/snapshot/ref/Command Line/package.html index 5db3af7a39a..872c93842f4 100644 --- a/snapshot/ref/Command Line/package.html +++ b/snapshot/ref/Command Line/package.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Command Line/plugin-info.html b/snapshot/ref/Command Line/plugin-info.html index 23e6f07e717..480ea99a926 100644 --- a/snapshot/ref/Command Line/plugin-info.html +++ b/snapshot/ref/Command Line/plugin-info.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Command Line/profile-info.html b/snapshot/ref/Command Line/profile-info.html index c1419e5b232..effd5b346f3 100644 --- a/snapshot/ref/Command Line/profile-info.html +++ b/snapshot/ref/Command Line/profile-info.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Command Line/run-app.html b/snapshot/ref/Command Line/run-app.html index 3ba26948aac..dc2337a6255 100644 --- a/snapshot/ref/Command Line/run-app.html +++ b/snapshot/ref/Command Line/run-app.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      @@ -222,7 +222,7 @@

      Description

      -

      For more information see the Spring Boot documentation on Embedded Containers.

      +

      For more information see the Spring Boot documentation on Embedded Containers.

      diff --git a/snapshot/ref/Command Line/run-command.html b/snapshot/ref/Command Line/run-command.html index ee9230dc7d7..80ede0a5ccc 100644 --- a/snapshot/ref/Command Line/run-command.html +++ b/snapshot/ref/Command Line/run-command.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Command Line/run-script.html b/snapshot/ref/Command Line/run-script.html index d6c61962079..4ce79854ed2 100644 --- a/snapshot/ref/Command Line/run-script.html +++ b/snapshot/ref/Command Line/run-script.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Command Line/schema-export.html b/snapshot/ref/Command Line/schema-export.html index d7358d73332..9b7fb075361 100644 --- a/snapshot/ref/Command Line/schema-export.html +++ b/snapshot/ref/Command Line/schema-export.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Command Line/shell.html b/snapshot/ref/Command Line/shell.html index 47d508dda9b..13a58cb3b02 100644 --- a/snapshot/ref/Command Line/shell.html +++ b/snapshot/ref/Command Line/shell.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Command Line/stats.html b/snapshot/ref/Command Line/stats.html index 885a5e7c69c..9355c49de0a 100644 --- a/snapshot/ref/Command Line/stats.html +++ b/snapshot/ref/Command Line/stats.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Command Line/stop-app.html b/snapshot/ref/Command Line/stop-app.html index 44320e67a14..e578de7171e 100644 --- a/snapshot/ref/Command Line/stop-app.html +++ b/snapshot/ref/Command Line/stop-app.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Command Line/test-app.html b/snapshot/ref/Command Line/test-app.html index 0aa430852f5..1ab69bbf656 100644 --- a/snapshot/ref/Command Line/test-app.html +++ b/snapshot/ref/Command Line/test-app.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Command Line/war.html b/snapshot/ref/Command Line/war.html index dee4b44ca0e..7260c5ac7ab 100644 --- a/snapshot/ref/Command Line/war.html +++ b/snapshot/ref/Command Line/war.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Constraints/Usage.html b/snapshot/ref/Constraints/Usage.html index f84a88ef3d8..3b6949aba33 100644 --- a/snapshot/ref/Constraints/Usage.html +++ b/snapshot/ref/Constraints/Usage.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      @@ -417,7 +417,7 @@

      Scaffolding

      Programmatic access

      -

      You can access a domain’s constraints programmatically in another context by accessing the constrainedProperties static property of a domain class. That property is an instance of Map<String, ConstrainedProperty>.

      +

      You can access a domain’s constraints programmatically in another context by accessing the constrainedProperties static property of a domain class. That property is an instance of Map<String, ConstrainedProperty>.

      @@ -439,7 +439,7 @@

      Programmatic access

      Command Objects

      -

      Accessing the constraints on a command object is slightly different. You can access a command object’s constraints programmatically in another context by accessing the constraintsMap static property of a class that implements Validateable. That property is an instance of Map<String, ConstrainedProperty>

      +

      Accessing the constraints on a command object is slightly different. You can access a command object’s constraints programmatically in another context by accessing the constraintsMap static property of a class that implements Validateable. That property is an instance of Map<String, ConstrainedProperty>

      diff --git a/snapshot/ref/Constraints/attributes.html b/snapshot/ref/Constraints/attributes.html index f94549dbe87..f983e8159fa 100644 --- a/snapshot/ref/Constraints/attributes.html +++ b/snapshot/ref/Constraints/attributes.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Constraints/bindable.html b/snapshot/ref/Constraints/bindable.html index 6d536f674d4..430d4cffcd1 100644 --- a/snapshot/ref/Constraints/bindable.html +++ b/snapshot/ref/Constraints/bindable.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Constraints/blank.html b/snapshot/ref/Constraints/blank.html index ddef3fb7698..377c1ce079e 100644 --- a/snapshot/ref/Constraints/blank.html +++ b/snapshot/ref/Constraints/blank.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Constraints/creditCard.html b/snapshot/ref/Constraints/creditCard.html index dd0ed3ced1b..5f4ceaf0552 100644 --- a/snapshot/ref/Constraints/creditCard.html +++ b/snapshot/ref/Constraints/creditCard.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Constraints/email.html b/snapshot/ref/Constraints/email.html index 7bf7d5703e0..1be1a0defc8 100644 --- a/snapshot/ref/Constraints/email.html +++ b/snapshot/ref/Constraints/email.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      @@ -156,10 +156,7 @@

      Examples

      Description

      -

      Set to true if a string value must be an email address.

      -
      -
      -

      Internally uses the org.apache.commons.validator.routines.EmailValidator class (i.e. in contrast to earlier Grails versions no longer the deprecated org.apache.commons.validator.EmailValidator with the most notable difference that the new version validates the emails TLDs).

      +

      Set to true if a string value must be an email address. Internally uses the org.apache.commons.validator.EmailValidator class.

      Error Code: className.propertyName.email.invalid

      diff --git a/snapshot/ref/Constraints/inList.html b/snapshot/ref/Constraints/inList.html index 3e48dbb1576..af263498c47 100644 --- a/snapshot/ref/Constraints/inList.html +++ b/snapshot/ref/Constraints/inList.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Constraints/matches.html b/snapshot/ref/Constraints/matches.html index 9799a9a8afc..172c2522744 100644 --- a/snapshot/ref/Constraints/matches.html +++ b/snapshot/ref/Constraints/matches.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Constraints/max.html b/snapshot/ref/Constraints/max.html index ed6ff20343f..999522a27eb 100644 --- a/snapshot/ref/Constraints/max.html +++ b/snapshot/ref/Constraints/max.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Constraints/maxSize.html b/snapshot/ref/Constraints/maxSize.html index 969b9a9a341..d13c859ee9b 100644 --- a/snapshot/ref/Constraints/maxSize.html +++ b/snapshot/ref/Constraints/maxSize.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Constraints/min.html b/snapshot/ref/Constraints/min.html index f633349d0a9..679d90ec3f7 100644 --- a/snapshot/ref/Constraints/min.html +++ b/snapshot/ref/Constraints/min.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Constraints/minSize.html b/snapshot/ref/Constraints/minSize.html index 82acc44e0b3..985b6084873 100644 --- a/snapshot/ref/Constraints/minSize.html +++ b/snapshot/ref/Constraints/minSize.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Constraints/notEqual.html b/snapshot/ref/Constraints/notEqual.html index 0ba3a51488c..f6975dd40bf 100644 --- a/snapshot/ref/Constraints/notEqual.html +++ b/snapshot/ref/Constraints/notEqual.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Constraints/nullable.html b/snapshot/ref/Constraints/nullable.html index ca58bd4323b..162517c42d1 100644 --- a/snapshot/ref/Constraints/nullable.html +++ b/snapshot/ref/Constraints/nullable.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Constraints/range.html b/snapshot/ref/Constraints/range.html index e5302a6138d..13b3fe7160e 100644 --- a/snapshot/ref/Constraints/range.html +++ b/snapshot/ref/Constraints/range.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Constraints/scale.html b/snapshot/ref/Constraints/scale.html index 1e0c0b4584c..ed599cf2bad 100644 --- a/snapshot/ref/Constraints/scale.html +++ b/snapshot/ref/Constraints/scale.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Constraints/size.html b/snapshot/ref/Constraints/size.html index 71990ffb024..438197bf82f 100644 --- a/snapshot/ref/Constraints/size.html +++ b/snapshot/ref/Constraints/size.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Constraints/unique.html b/snapshot/ref/Constraints/unique.html index a3b728b29ae..f6f553a1dec 100644 --- a/snapshot/ref/Constraints/unique.html +++ b/snapshot/ref/Constraints/unique.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Constraints/url.html b/snapshot/ref/Constraints/url.html index 87bfc3f464b..ed45b539cd4 100644 --- a/snapshot/ref/Constraints/url.html +++ b/snapshot/ref/Constraints/url.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Constraints/validator.html b/snapshot/ref/Constraints/validator.html index 885fd7de437..6c6eed9ace2 100644 --- a/snapshot/ref/Constraints/validator.html +++ b/snapshot/ref/Constraints/validator.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Constraints/widget.html b/snapshot/ref/Constraints/widget.html index 424b08fa4c3..9f97257e316 100644 --- a/snapshot/ref/Constraints/widget.html +++ b/snapshot/ref/Constraints/widget.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Controllers/Usage.html b/snapshot/ref/Controllers/Usage.html index aef4d83b7af..2ea1cd95091 100644 --- a/snapshot/ref/Controllers/Usage.html +++ b/snapshot/ref/Controllers/Usage.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Controllers/actionName.html b/snapshot/ref/Controllers/actionName.html index d0f2e8ed675..a54c388149e 100644 --- a/snapshot/ref/Controllers/actionName.html +++ b/snapshot/ref/Controllers/actionName.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Controllers/allowedMethods.html b/snapshot/ref/Controllers/allowedMethods.html index da93630cc64..3d3936390b6 100644 --- a/snapshot/ref/Controllers/allowedMethods.html +++ b/snapshot/ref/Controllers/allowedMethods.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Controllers/bindData.html b/snapshot/ref/Controllers/bindData.html index e5edf2d7a04..775f0d50e82 100644 --- a/snapshot/ref/Controllers/bindData.html +++ b/snapshot/ref/Controllers/bindData.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Controllers/chain.html b/snapshot/ref/Controllers/chain.html index e255d62c55f..8104ff93e4b 100644 --- a/snapshot/ref/Controllers/chain.html +++ b/snapshot/ref/Controllers/chain.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Controllers/controllerName.html b/snapshot/ref/Controllers/controllerName.html index 8cd8c5126ee..ea8aa3059d9 100644 --- a/snapshot/ref/Controllers/controllerName.html +++ b/snapshot/ref/Controllers/controllerName.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Controllers/defaultAction.html b/snapshot/ref/Controllers/defaultAction.html index 92d7eb100dd..610f0e73fec 100644 --- a/snapshot/ref/Controllers/defaultAction.html +++ b/snapshot/ref/Controllers/defaultAction.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Controllers/errors.html b/snapshot/ref/Controllers/errors.html index c40d63cd0dd..2b786e43ca0 100644 --- a/snapshot/ref/Controllers/errors.html +++ b/snapshot/ref/Controllers/errors.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      @@ -142,7 +142,7 @@

      errors

      Purpose

      -

      An instance of the Spring Errors interface containing errors associated with this controller.

      +

      An instance of the Spring Errors interface containing errors associated with this controller.

      diff --git a/snapshot/ref/Controllers/flash.html b/snapshot/ref/Controllers/flash.html index 53d4f3fa6c1..bba19e731b7 100644 --- a/snapshot/ref/Controllers/flash.html +++ b/snapshot/ref/Controllers/flash.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Controllers/forward.html b/snapshot/ref/Controllers/forward.html index ac5d36a7ba7..1a424d3d9bb 100644 --- a/snapshot/ref/Controllers/forward.html +++ b/snapshot/ref/Controllers/forward.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Controllers/grailsApplication.html b/snapshot/ref/Controllers/grailsApplication.html index 9e71d745f5f..2b594025dc0 100644 --- a/snapshot/ref/Controllers/grailsApplication.html +++ b/snapshot/ref/Controllers/grailsApplication.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      @@ -142,7 +142,7 @@

      grailsApplication

      Purpose

      -

      An instance of the GrailsApplication class.

      +

      An instance of the GrailsApplication class.

      @@ -161,7 +161,7 @@

      Examples

      Description

      -

      The GrailsApplication class provides information about the conventions within Grails and access to metadata, config and the ClassLoader

      +

      The GrailsApplication class provides information about the conventions within Grails and access to metadata, config and the ClassLoader

      diff --git a/snapshot/ref/Controllers/hasErrors.html b/snapshot/ref/Controllers/hasErrors.html index 21e4421e47a..0c146924ef6 100644 --- a/snapshot/ref/Controllers/hasErrors.html +++ b/snapshot/ref/Controllers/hasErrors.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Controllers/header.html b/snapshot/ref/Controllers/header.html index 6ab5f77b63c..d46138d244a 100644 --- a/snapshot/ref/Controllers/header.html +++ b/snapshot/ref/Controllers/header.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Controllers/namespace.html b/snapshot/ref/Controllers/namespace.html index f7298447372..c079b5fda90 100644 --- a/snapshot/ref/Controllers/namespace.html +++ b/snapshot/ref/Controllers/namespace.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Controllers/params.html b/snapshot/ref/Controllers/params.html index 6ebcf3f675b..302164c85ff 100644 --- a/snapshot/ref/Controllers/params.html +++ b/snapshot/ref/Controllers/params.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      @@ -142,8 +142,7 @@

      params

      Purpose

      -

      A mutable multi-dimensional map (hash) of request (CGI) parameters. -See api documentation for details.

      +

      A mutable multi-dimensional map (hash) of request (CGI) parameters.

      diff --git a/snapshot/ref/Controllers/redirect.html b/snapshot/ref/Controllers/redirect.html index 53a46c30969..c10183ae8c4 100644 --- a/snapshot/ref/Controllers/redirect.html +++ b/snapshot/ref/Controllers/redirect.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Controllers/render.html b/snapshot/ref/Controllers/render.html index dc4a85982ab..be834fa17bb 100644 --- a/snapshot/ref/Controllers/render.html +++ b/snapshot/ref/Controllers/render.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Controllers/request.html b/snapshot/ref/Controllers/request.html index 57629e942e7..78d19729a7e 100644 --- a/snapshot/ref/Controllers/request.html +++ b/snapshot/ref/Controllers/request.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      @@ -142,7 +142,7 @@

      request

      Purpose

      -

      The request object is an instance of the Servlet API’s HttpServletRequest class.

      +

      The request object is an instance of the Servlet API’s HttpServletRequest class.

      @@ -162,7 +162,7 @@

      Examples

      Description

      -

      The HttpServletRequest class is useful for, amongst other things, obtaining request headers, storing request scoped attributes and establishing information about the client. Refer to the Servlet API’s javadocs for further information.

      +

      The HttpServletRequest class is useful for, amongst other things, obtaining request headers, storing request scoped attributes and establishing information about the client. Refer to the Servlet API’s javadocs for further information.

      diff --git a/snapshot/ref/Controllers/respond.html b/snapshot/ref/Controllers/respond.html index f4660725ff3..177ea174f35 100644 --- a/snapshot/ref/Controllers/respond.html +++ b/snapshot/ref/Controllers/respond.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Controllers/response.html b/snapshot/ref/Controllers/response.html index c4c156f3741..01d92db51b6 100644 --- a/snapshot/ref/Controllers/response.html +++ b/snapshot/ref/Controllers/response.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      @@ -142,7 +142,7 @@

      response

      Purpose

      -

      The response object is an instance of the Servlet API’s HttpServletResponse class.

      +

      The response object is an instance of the Servlet API’s HttpServletResponse class.

      @@ -161,7 +161,7 @@

      Examples

      Description

      -

      The Servlet API’s HttpServletResponse class can be used within Grails to perform all typical activities such as writing out binary data, writing directly to the response and sending error response codes to name but a few. Refer to the documentation on the HttpServletResponse class in the Servlet API for more information.

      +

      The Servlet API’s HttpServletResponse class can be used within Grails to perform all typical activities such as writing out binary data, writing directly to the response and sending error response codes to name but a few. Refer to the documentation on the HttpServletResponse class in the Servlet API for more information.

      diff --git a/snapshot/ref/Controllers/responseFormats.html b/snapshot/ref/Controllers/responseFormats.html index 94d29c9e9cb..7dfb9fe79e5 100644 --- a/snapshot/ref/Controllers/responseFormats.html +++ b/snapshot/ref/Controllers/responseFormats.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Controllers/scope.html b/snapshot/ref/Controllers/scope.html index bd1ce575341..82fc1f14bf2 100644 --- a/snapshot/ref/Controllers/scope.html +++ b/snapshot/ref/Controllers/scope.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Controllers/servletContext.html b/snapshot/ref/Controllers/servletContext.html index 4f809a6da55..43f6e5fffa9 100644 --- a/snapshot/ref/Controllers/servletContext.html +++ b/snapshot/ref/Controllers/servletContext.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      @@ -142,7 +142,7 @@

      servletContext

      Purpose

      -

      The servletContext object is an instance of the Servlet API’s ServletContext class.

      +

      The servletContext object is an instance of the Servlet API’s ServletContext class.

      @@ -168,7 +168,7 @@

      Examples

      Description

      -

      The Servlet API’s ServletContext is useful for, amongst other things, storing global application attributes, reading local server resources and establishing information about the servlet container.

      +

      The Servlet API’s ServletContext is useful for, amongst other things, storing global application attributes, reading local server resources and establishing information about the servlet container.

      diff --git a/snapshot/ref/Controllers/session.html b/snapshot/ref/Controllers/session.html index a6a29a18d65..1929adb9bac 100644 --- a/snapshot/ref/Controllers/session.html +++ b/snapshot/ref/Controllers/session.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      @@ -142,7 +142,7 @@

      session

      Purpose

      -

      The session object is an instance of the Servlet API’s HttpSession class.

      +

      The session object is an instance of the Servlet API’s HttpSession class.

      @@ -165,7 +165,7 @@

      Examples

      Description

      -

      The HttpSession class is useful for associated session data with a client.

      +

      The HttpSession class is useful for associated session data with a client.

      diff --git a/snapshot/ref/Controllers/withForm.html b/snapshot/ref/Controllers/withForm.html index 4efe03c6795..eb62a8dc2b4 100644 --- a/snapshot/ref/Controllers/withForm.html +++ b/snapshot/ref/Controllers/withForm.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      @@ -160,7 +160,7 @@

      Examples

      Description

      -

      The withForm method requires the use of the useToken attribute in a form

      +

      The withForm method requires the use of the useToken attribute in a form

      diff --git a/snapshot/ref/Controllers/withFormat.html b/snapshot/ref/Controllers/withFormat.html index 46d31b03894..ecf3c475fc3 100644 --- a/snapshot/ref/Controllers/withFormat.html +++ b/snapshot/ref/Controllers/withFormat.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Database Mapping/Usage.html b/snapshot/ref/Database Mapping/Usage.html index 84ea02f51a6..05d6501c3d5 100644 --- a/snapshot/ref/Database Mapping/Usage.html +++ b/snapshot/ref/Database Mapping/Usage.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Database Mapping/autoImport.html b/snapshot/ref/Database Mapping/autoImport.html index a2ef6504dbf..0a818de8ce0 100644 --- a/snapshot/ref/Database Mapping/autoImport.html +++ b/snapshot/ref/Database Mapping/autoImport.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Database Mapping/autoTimestamp.html b/snapshot/ref/Database Mapping/autoTimestamp.html index c8ecd32f4ff..dcf1335a21e 100644 --- a/snapshot/ref/Database Mapping/autoTimestamp.html +++ b/snapshot/ref/Database Mapping/autoTimestamp.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Database Mapping/batchSize.html b/snapshot/ref/Database Mapping/batchSize.html index 4f3a8baf680..a1f0697cbf1 100644 --- a/snapshot/ref/Database Mapping/batchSize.html +++ b/snapshot/ref/Database Mapping/batchSize.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Database Mapping/cache.html b/snapshot/ref/Database Mapping/cache.html index 9e45f1afb91..d22304a74cf 100644 --- a/snapshot/ref/Database Mapping/cache.html +++ b/snapshot/ref/Database Mapping/cache.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Database Mapping/cascade.html b/snapshot/ref/Database Mapping/cascade.html index 682ba3b3336..3596d111035 100644 --- a/snapshot/ref/Database Mapping/cascade.html +++ b/snapshot/ref/Database Mapping/cascade.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Database Mapping/column.html b/snapshot/ref/Database Mapping/column.html index 98c442a3096..a1f52b1d0c5 100644 --- a/snapshot/ref/Database Mapping/column.html +++ b/snapshot/ref/Database Mapping/column.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Database Mapping/comment.html b/snapshot/ref/Database Mapping/comment.html index a0491de4d93..6cd7fc64737 100644 --- a/snapshot/ref/Database Mapping/comment.html +++ b/snapshot/ref/Database Mapping/comment.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Database Mapping/discriminator.html b/snapshot/ref/Database Mapping/discriminator.html index d272fc73aea..a1dadfedc62 100644 --- a/snapshot/ref/Database Mapping/discriminator.html +++ b/snapshot/ref/Database Mapping/discriminator.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Database Mapping/dynamicInsert.html b/snapshot/ref/Database Mapping/dynamicInsert.html index 81f574e2360..b034a8724b6 100644 --- a/snapshot/ref/Database Mapping/dynamicInsert.html +++ b/snapshot/ref/Database Mapping/dynamicInsert.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Database Mapping/dynamicUpdate.html b/snapshot/ref/Database Mapping/dynamicUpdate.html index 53a0b2457c7..72244ee6ba8 100644 --- a/snapshot/ref/Database Mapping/dynamicUpdate.html +++ b/snapshot/ref/Database Mapping/dynamicUpdate.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Database Mapping/fetch.html b/snapshot/ref/Database Mapping/fetch.html index 3853b91a31c..1ad73160325 100644 --- a/snapshot/ref/Database Mapping/fetch.html +++ b/snapshot/ref/Database Mapping/fetch.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Database Mapping/id.html b/snapshot/ref/Database Mapping/id.html index bf0e05f8173..f9a6eb12527 100644 --- a/snapshot/ref/Database Mapping/id.html +++ b/snapshot/ref/Database Mapping/id.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Database Mapping/ignoreNotFound.html b/snapshot/ref/Database Mapping/ignoreNotFound.html index caf3164163c..8457e946692 100644 --- a/snapshot/ref/Database Mapping/ignoreNotFound.html +++ b/snapshot/ref/Database Mapping/ignoreNotFound.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Database Mapping/indexColumn.html b/snapshot/ref/Database Mapping/indexColumn.html index a62d6d9926e..6bcb9155dce 100644 --- a/snapshot/ref/Database Mapping/indexColumn.html +++ b/snapshot/ref/Database Mapping/indexColumn.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Database Mapping/insertable.html b/snapshot/ref/Database Mapping/insertable.html index 330b380f1de..a193b4efac9 100644 --- a/snapshot/ref/Database Mapping/insertable.html +++ b/snapshot/ref/Database Mapping/insertable.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Database Mapping/joinTable.html b/snapshot/ref/Database Mapping/joinTable.html index a7e759cac20..8b7b48f0fe7 100644 --- a/snapshot/ref/Database Mapping/joinTable.html +++ b/snapshot/ref/Database Mapping/joinTable.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Database Mapping/lazy.html b/snapshot/ref/Database Mapping/lazy.html index 1f6c8eaa662..6bbc56b48de 100644 --- a/snapshot/ref/Database Mapping/lazy.html +++ b/snapshot/ref/Database Mapping/lazy.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Database Mapping/order.html b/snapshot/ref/Database Mapping/order.html index a3b91fbe78e..e63e6df8fa8 100644 --- a/snapshot/ref/Database Mapping/order.html +++ b/snapshot/ref/Database Mapping/order.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Database Mapping/sort.html b/snapshot/ref/Database Mapping/sort.html index 77b45930ef7..d498280d27e 100644 --- a/snapshot/ref/Database Mapping/sort.html +++ b/snapshot/ref/Database Mapping/sort.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Database Mapping/table.html b/snapshot/ref/Database Mapping/table.html index dec78ad1aa6..219b9e349f0 100644 --- a/snapshot/ref/Database Mapping/table.html +++ b/snapshot/ref/Database Mapping/table.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Database Mapping/type.html b/snapshot/ref/Database Mapping/type.html index ee20b65bc8c..5ece109969b 100644 --- a/snapshot/ref/Database Mapping/type.html +++ b/snapshot/ref/Database Mapping/type.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Database Mapping/updateable.html b/snapshot/ref/Database Mapping/updateable.html index e5ac6d270ec..95cc07469e5 100644 --- a/snapshot/ref/Database Mapping/updateable.html +++ b/snapshot/ref/Database Mapping/updateable.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Database Mapping/version.html b/snapshot/ref/Database Mapping/version.html index 32942fa6f13..38ef24484a8 100644 --- a/snapshot/ref/Database Mapping/version.html +++ b/snapshot/ref/Database Mapping/version.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/Usage.html b/snapshot/ref/Domain Classes/Usage.html index e51b339b150..27f86c7237e 100644 --- a/snapshot/ref/Domain Classes/Usage.html +++ b/snapshot/ref/Domain Classes/Usage.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/addTo.html b/snapshot/ref/Domain Classes/addTo.html index 5cfd3cfd4d7..afbe537999b 100644 --- a/snapshot/ref/Domain Classes/addTo.html +++ b/snapshot/ref/Domain Classes/addTo.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/attach.html b/snapshot/ref/Domain Classes/attach.html index 6c8e58b43e3..2c1fff0a1b8 100644 --- a/snapshot/ref/Domain Classes/attach.html +++ b/snapshot/ref/Domain Classes/attach.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/belongsTo.html b/snapshot/ref/Domain Classes/belongsTo.html index 1f26af22911..e0334a8f483 100644 --- a/snapshot/ref/Domain Classes/belongsTo.html +++ b/snapshot/ref/Domain Classes/belongsTo.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/clearErrors.html b/snapshot/ref/Domain Classes/clearErrors.html index 9d5a71b4e0b..121cd2b07ba 100644 --- a/snapshot/ref/Domain Classes/clearErrors.html +++ b/snapshot/ref/Domain Classes/clearErrors.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/constraints.html b/snapshot/ref/Domain Classes/constraints.html index c4bb4f6e983..9c8485d9366 100644 --- a/snapshot/ref/Domain Classes/constraints.html +++ b/snapshot/ref/Domain Classes/constraints.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      @@ -174,7 +174,7 @@

      Description

      -

      The static constrainedProperties property is a Map such that the keys in the Map are property names and the values associated with the keys are instances of ConstrainedProperty:

      +

      The static constrainedProperties property is a Map such that the keys in the Map are property names and the values associated with the keys are instances of ConstrainedProperty:

      diff --git a/snapshot/ref/Domain Classes/count.html b/snapshot/ref/Domain Classes/count.html index a9c0cc297ef..b566cb63426 100644 --- a/snapshot/ref/Domain Classes/count.html +++ b/snapshot/ref/Domain Classes/count.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/countBy.html b/snapshot/ref/Domain Classes/countBy.html index 3aff7caee01..651ce75e7a4 100644 --- a/snapshot/ref/Domain Classes/countBy.html +++ b/snapshot/ref/Domain Classes/countBy.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/createCriteria.html b/snapshot/ref/Domain Classes/createCriteria.html index 28e4779ccaa..4bd19880305 100644 --- a/snapshot/ref/Domain Classes/createCriteria.html +++ b/snapshot/ref/Domain Classes/createCriteria.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/delete.html b/snapshot/ref/Domain Classes/delete.html index 13ed981c8bb..67d48d7a528 100644 --- a/snapshot/ref/Domain Classes/delete.html +++ b/snapshot/ref/Domain Classes/delete.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/discard.html b/snapshot/ref/Domain Classes/discard.html index 05485d5ffdb..f076c76d2b7 100644 --- a/snapshot/ref/Domain Classes/discard.html +++ b/snapshot/ref/Domain Classes/discard.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/embedded.html b/snapshot/ref/Domain Classes/embedded.html index f4e3beee3d5..e101a54af5b 100644 --- a/snapshot/ref/Domain Classes/embedded.html +++ b/snapshot/ref/Domain Classes/embedded.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/errors.html b/snapshot/ref/Domain Classes/errors.html index e41b7620e75..caa0256f4e4 100644 --- a/snapshot/ref/Domain Classes/errors.html +++ b/snapshot/ref/Domain Classes/errors.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      @@ -142,7 +142,7 @@

      errors

      Purpose

      -

      An instance of the Spring Errors interface containing data binding and/or validation errors.

      +

      An instance of the Spring Errors interface containing data binding and/or validation errors.

      @@ -168,7 +168,7 @@

      Description

      The errors property is used by Grails during data binding to store type conversion errors and during validation when calling the validate or save methods.

      -

      You can also add your own errors using the reject and rejectValue methods:

      +

      You can also add your own errors using the reject and rejectValue methods:

      diff --git a/snapshot/ref/Domain Classes/executeQuery.html b/snapshot/ref/Domain Classes/executeQuery.html index 5cf82946740..0e3b6ddb6ba 100644 --- a/snapshot/ref/Domain Classes/executeQuery.html +++ b/snapshot/ref/Domain Classes/executeQuery.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/executeUpdate.html b/snapshot/ref/Domain Classes/executeUpdate.html index a53c12aed39..2f0b26f0fde 100644 --- a/snapshot/ref/Domain Classes/executeUpdate.html +++ b/snapshot/ref/Domain Classes/executeUpdate.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/exists.html b/snapshot/ref/Domain Classes/exists.html index 310663f5501..4eac834185a 100644 --- a/snapshot/ref/Domain Classes/exists.html +++ b/snapshot/ref/Domain Classes/exists.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/fetchMode.html b/snapshot/ref/Domain Classes/fetchMode.html index 0d912d6c8cc..d39f813551c 100644 --- a/snapshot/ref/Domain Classes/fetchMode.html +++ b/snapshot/ref/Domain Classes/fetchMode.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      @@ -142,7 +142,7 @@

      fetchMode

      Purpose

      -

      Allows the configuration of an associations fetch strategy ('eager' or 'lazy')

      +

      Allows the configuration of an associations fetch strategy. Default to lazy: true, other options are lazy: false or fetch: 'join'

      @@ -155,12 +155,14 @@

      Examples

      static hasMany = [books: Book] - static fetchMode = [books: 'eager'] + static mapping = { + books lazy: false + } }
      -

      In this example the fetchMode static property specifies that the book association should be fetching eagerly

      +

      In this example the book association should be fetching eagerly

      @@ -171,6 +173,9 @@

      Description

      In the case of eager fetching and a one-to-many association, the instance as well as the association will be initialized when they are loaded (eagerly). However, caution should be observed when using eager fetching, since being too eager can result in your entire database being loaded into memory!

      +
      +

      For more information see the section on Eager and Lazy Fetching in the user guide.

      +
      diff --git a/snapshot/ref/Domain Classes/find.html b/snapshot/ref/Domain Classes/find.html index d72f8e97680..7902d0be4ed 100644 --- a/snapshot/ref/Domain Classes/find.html +++ b/snapshot/ref/Domain Classes/find.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/findAll.html b/snapshot/ref/Domain Classes/findAll.html index 0b56944bb0b..4b06d1fb62d 100644 --- a/snapshot/ref/Domain Classes/findAll.html +++ b/snapshot/ref/Domain Classes/findAll.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/findAllBy.html b/snapshot/ref/Domain Classes/findAllBy.html index d7472bffd13..774564ad12f 100644 --- a/snapshot/ref/Domain Classes/findAllBy.html +++ b/snapshot/ref/Domain Classes/findAllBy.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/findAllWhere.html b/snapshot/ref/Domain Classes/findAllWhere.html index d91f4c3e604..9c1516f6be0 100644 --- a/snapshot/ref/Domain Classes/findAllWhere.html +++ b/snapshot/ref/Domain Classes/findAllWhere.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/findBy.html b/snapshot/ref/Domain Classes/findBy.html index bef7427b60b..4fd8bc1f6d7 100644 --- a/snapshot/ref/Domain Classes/findBy.html +++ b/snapshot/ref/Domain Classes/findBy.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/findOrCreateBy.html b/snapshot/ref/Domain Classes/findOrCreateBy.html index 7f47ddb29fd..6ef38634650 100644 --- a/snapshot/ref/Domain Classes/findOrCreateBy.html +++ b/snapshot/ref/Domain Classes/findOrCreateBy.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/findOrCreateWhere.html b/snapshot/ref/Domain Classes/findOrCreateWhere.html index 15287945452..3a63603b904 100644 --- a/snapshot/ref/Domain Classes/findOrCreateWhere.html +++ b/snapshot/ref/Domain Classes/findOrCreateWhere.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/findOrSaveBy.html b/snapshot/ref/Domain Classes/findOrSaveBy.html index e07417b88eb..5f6fbc8e891 100644 --- a/snapshot/ref/Domain Classes/findOrSaveBy.html +++ b/snapshot/ref/Domain Classes/findOrSaveBy.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/findOrSaveWhere.html b/snapshot/ref/Domain Classes/findOrSaveWhere.html index 1e146764471..0499c692d1f 100644 --- a/snapshot/ref/Domain Classes/findOrSaveWhere.html +++ b/snapshot/ref/Domain Classes/findOrSaveWhere.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/findWhere.html b/snapshot/ref/Domain Classes/findWhere.html index 440ca1f286d..af6ac034d96 100644 --- a/snapshot/ref/Domain Classes/findWhere.html +++ b/snapshot/ref/Domain Classes/findWhere.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/first.html b/snapshot/ref/Domain Classes/first.html index 75fa7efc0ed..0bd10c11569 100644 --- a/snapshot/ref/Domain Classes/first.html +++ b/snapshot/ref/Domain Classes/first.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/get.html b/snapshot/ref/Domain Classes/get.html index 98a323e91aa..857876e9335 100644 --- a/snapshot/ref/Domain Classes/get.html +++ b/snapshot/ref/Domain Classes/get.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/getAll.html b/snapshot/ref/Domain Classes/getAll.html index 9df1dc015df..50b5b6b5b66 100644 --- a/snapshot/ref/Domain Classes/getAll.html +++ b/snapshot/ref/Domain Classes/getAll.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/getDirtyPropertyNames.html b/snapshot/ref/Domain Classes/getDirtyPropertyNames.html index b5e54094857..2a6ba9ff5ba 100644 --- a/snapshot/ref/Domain Classes/getDirtyPropertyNames.html +++ b/snapshot/ref/Domain Classes/getDirtyPropertyNames.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/getPersistentValue.html b/snapshot/ref/Domain Classes/getPersistentValue.html index 1d8903d1562..d02c31319d9 100644 --- a/snapshot/ref/Domain Classes/getPersistentValue.html +++ b/snapshot/ref/Domain Classes/getPersistentValue.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/hasErrors.html b/snapshot/ref/Domain Classes/hasErrors.html index 181b855e62b..af8dba3a3f5 100644 --- a/snapshot/ref/Domain Classes/hasErrors.html +++ b/snapshot/ref/Domain Classes/hasErrors.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/hasMany.html b/snapshot/ref/Domain Classes/hasMany.html index 0f98d61cc65..57f328dab5d 100644 --- a/snapshot/ref/Domain Classes/hasMany.html +++ b/snapshot/ref/Domain Classes/hasMany.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/hasOne.html b/snapshot/ref/Domain Classes/hasOne.html index 8ab59390d7e..33733171643 100644 --- a/snapshot/ref/Domain Classes/hasOne.html +++ b/snapshot/ref/Domain Classes/hasOne.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/ident.html b/snapshot/ref/Domain Classes/ident.html index ff93c525ce0..28c3161f3c6 100644 --- a/snapshot/ref/Domain Classes/ident.html +++ b/snapshot/ref/Domain Classes/ident.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/instanceOf.html b/snapshot/ref/Domain Classes/instanceOf.html index d06544cefe4..7403c6b13c6 100644 --- a/snapshot/ref/Domain Classes/instanceOf.html +++ b/snapshot/ref/Domain Classes/instanceOf.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/isAttached.html b/snapshot/ref/Domain Classes/isAttached.html index ef6f82cf3a0..5e01c68b9c0 100644 --- a/snapshot/ref/Domain Classes/isAttached.html +++ b/snapshot/ref/Domain Classes/isAttached.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/isDirty.html b/snapshot/ref/Domain Classes/isDirty.html index ac6fb4013b7..f257b66cdd6 100644 --- a/snapshot/ref/Domain Classes/isDirty.html +++ b/snapshot/ref/Domain Classes/isDirty.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/last.html b/snapshot/ref/Domain Classes/last.html index 60641e71f7e..8d2dd03be84 100644 --- a/snapshot/ref/Domain Classes/last.html +++ b/snapshot/ref/Domain Classes/last.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/list.html b/snapshot/ref/Domain Classes/list.html index b230e467f13..9ce459c22b0 100644 --- a/snapshot/ref/Domain Classes/list.html +++ b/snapshot/ref/Domain Classes/list.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/listOrderBy.html b/snapshot/ref/Domain Classes/listOrderBy.html index df698f70314..2a2ab18fe3f 100644 --- a/snapshot/ref/Domain Classes/listOrderBy.html +++ b/snapshot/ref/Domain Classes/listOrderBy.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/load.html b/snapshot/ref/Domain Classes/load.html index 6853a54f963..3bfd04162e9 100644 --- a/snapshot/ref/Domain Classes/load.html +++ b/snapshot/ref/Domain Classes/load.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/lock.html b/snapshot/ref/Domain Classes/lock.html index 042e12d57eb..e8fab0cddfd 100644 --- a/snapshot/ref/Domain Classes/lock.html +++ b/snapshot/ref/Domain Classes/lock.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/mapWith.html b/snapshot/ref/Domain Classes/mapWith.html index 1f6dba9b7b8..9a95104d7e2 100644 --- a/snapshot/ref/Domain Classes/mapWith.html +++ b/snapshot/ref/Domain Classes/mapWith.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/mappedBy.html b/snapshot/ref/Domain Classes/mappedBy.html index 876735eeab6..c1cd13cea52 100644 --- a/snapshot/ref/Domain Classes/mappedBy.html +++ b/snapshot/ref/Domain Classes/mappedBy.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/mapping.html b/snapshot/ref/Domain Classes/mapping.html index 43c25699b99..68cccd6af7d 100644 --- a/snapshot/ref/Domain Classes/mapping.html +++ b/snapshot/ref/Domain Classes/mapping.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/merge.html b/snapshot/ref/Domain Classes/merge.html index 0b50a2e2ae2..c15928a7e20 100644 --- a/snapshot/ref/Domain Classes/merge.html +++ b/snapshot/ref/Domain Classes/merge.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/namedQueries.html b/snapshot/ref/Domain Classes/namedQueries.html index 5375ae94041..c9ecbd3e5db 100644 --- a/snapshot/ref/Domain Classes/namedQueries.html +++ b/snapshot/ref/Domain Classes/namedQueries.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/properties.html b/snapshot/ref/Domain Classes/properties.html index 958c9fb1a98..7258940b712 100644 --- a/snapshot/ref/Domain Classes/properties.html +++ b/snapshot/ref/Domain Classes/properties.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/read.html b/snapshot/ref/Domain Classes/read.html index 0399c90d20f..5db244ff563 100644 --- a/snapshot/ref/Domain Classes/read.html +++ b/snapshot/ref/Domain Classes/read.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/refresh.html b/snapshot/ref/Domain Classes/refresh.html index 0c32b873f6a..4e944c000b5 100644 --- a/snapshot/ref/Domain Classes/refresh.html +++ b/snapshot/ref/Domain Classes/refresh.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/removeFrom.html b/snapshot/ref/Domain Classes/removeFrom.html index 3997e15d5d3..62730c27093 100644 --- a/snapshot/ref/Domain Classes/removeFrom.html +++ b/snapshot/ref/Domain Classes/removeFrom.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/save.html b/snapshot/ref/Domain Classes/save.html index 0aaafa4ed24..e0f85dffc7a 100644 --- a/snapshot/ref/Domain Classes/save.html +++ b/snapshot/ref/Domain Classes/save.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/transients.html b/snapshot/ref/Domain Classes/transients.html index cf334656d6b..bc960c098dc 100644 --- a/snapshot/ref/Domain Classes/transients.html +++ b/snapshot/ref/Domain Classes/transients.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/validate.html b/snapshot/ref/Domain Classes/validate.html index 6943af5b90c..e2203532353 100644 --- a/snapshot/ref/Domain Classes/validate.html +++ b/snapshot/ref/Domain Classes/validate.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/where.html b/snapshot/ref/Domain Classes/where.html index f9b4526e3e8..fac05cb66bb 100644 --- a/snapshot/ref/Domain Classes/where.html +++ b/snapshot/ref/Domain Classes/where.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/whereAny.html b/snapshot/ref/Domain Classes/whereAny.html index f2eead98ec8..78e65a603cd 100644 --- a/snapshot/ref/Domain Classes/whereAny.html +++ b/snapshot/ref/Domain Classes/whereAny.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/withCriteria.html b/snapshot/ref/Domain Classes/withCriteria.html index 01f6f7b7f42..8206e7cb9fc 100644 --- a/snapshot/ref/Domain Classes/withCriteria.html +++ b/snapshot/ref/Domain Classes/withCriteria.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/withNewSession.html b/snapshot/ref/Domain Classes/withNewSession.html index 62b3b1672fe..12eed1eaed2 100644 --- a/snapshot/ref/Domain Classes/withNewSession.html +++ b/snapshot/ref/Domain Classes/withNewSession.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/withSession.html b/snapshot/ref/Domain Classes/withSession.html index 54e7e08e1f9..c2303e6bb77 100644 --- a/snapshot/ref/Domain Classes/withSession.html +++ b/snapshot/ref/Domain Classes/withSession.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Domain Classes/withTransaction.html b/snapshot/ref/Domain Classes/withTransaction.html index 70d98032fa4..baaf8e6ea43 100644 --- a/snapshot/ref/Domain Classes/withTransaction.html +++ b/snapshot/ref/Domain Classes/withTransaction.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      @@ -186,7 +186,7 @@

      Examples

      Description

      -

      The withTransaction method accepts a Closure with a TransactionStatus argument. The TransactionStatus object can be used to programmatically control rollback of the transaction.

      +

      The withTransaction method accepts a Closure with a TransactionStatus argument. The TransactionStatus object can be used to programmatically control rollback of the transaction.

      Refer to the user guide section of Programmatic Transactions for more information.

      diff --git a/snapshot/ref/Plug-ins/URL mappings.html b/snapshot/ref/Plug-ins/URL mappings.html index a0966ffd232..736d208e010 100644 --- a/snapshot/ref/Plug-ins/URL mappings.html +++ b/snapshot/ref/Plug-ins/URL mappings.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      @@ -179,13 +179,13 @@

      Description

      diff --git a/snapshot/ref/Plug-ins/Usage.html b/snapshot/ref/Plug-ins/Usage.html index 0d062f0eee8..e7f416d0642 100644 --- a/snapshot/ref/Plug-ins/Usage.html +++ b/snapshot/ref/Plug-ins/Usage.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Plug-ins/codecs.html b/snapshot/ref/Plug-ins/codecs.html index c0d070bead4..543c4a1edc2 100644 --- a/snapshot/ref/Plug-ins/codecs.html +++ b/snapshot/ref/Plug-ins/codecs.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Plug-ins/controllers.html b/snapshot/ref/Plug-ins/controllers.html index 5bbf805ca25..5ad291ad8ec 100644 --- a/snapshot/ref/Plug-ins/controllers.html +++ b/snapshot/ref/Plug-ins/controllers.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      @@ -185,19 +185,19 @@

      Description

      • -

        exceptionHandler - An instance of GrailsExceptionResolver for dealing with exceptions

        +

        exceptionHandler - An instance of GrailsExceptionResolver for dealing with exceptions

      • -

        multipartResolver - An instance of CommonsMultipartResolver used for dealing with file uploads using Apache Commons File Upload. If you do not wish to use this, set grails.disableCommonsMultipart to true in application.groovy. Be aware that disabling multipart handling will effect the behaviour of g:actionSubmit which needs to inspect the parameters (requiring the multipart request to be parsed) during the URL mapping phase.

        +

        multipartResolver - An instance of CommonsMultipartResolver used for dealing with file uploads using Apache Commons File Upload. If you do not wish to use this, set grails.disableCommonsMultipart to true in application.groovy. Be aware that disabling multipart handling will effect the behaviour of g:actionSubmit which needs to inspect the parameters (requiring the multipart request to be parsed) during the URL mapping phase.

      • groovyPageResourceLoader - Configured in development mode only or when the grails.gsp.view.dir is set. This is a Spring ResourceLoader that knows how to load GSP views from the an arbitrary location

      • -

        groovyPagesTemplateEngine - An instance of GroovyPagesTemplateEngine, this class deals with rendering of GSP views

        +

        groovyPagesTemplateEngine - An instance of GroovyPagesTemplateEngine, this class deals with rendering of GSP views

      • -

        jspViewResolver - An instance of GrailsViewResolver that knows how to resolve GSP views and is environment aware

        +

        jspViewResolver - An instance of GrailsViewResolver that knows how to resolve GSP views and is environment aware

      diff --git a/snapshot/ref/Plug-ins/core.html b/snapshot/ref/Plug-ins/core.html index 1e4544a8d8a..847cde3d4ab 100644 --- a/snapshot/ref/Plug-ins/core.html +++ b/snapshot/ref/Plug-ins/core.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      @@ -162,7 +162,7 @@

      Description

      classEditor - A PropertyEditor that populates classes with String data

    • -

      customEditors - An instance of CustomEditorConfigurer, that uses allows the classEditor bean to be used as a PropertyEditor

      +

      customEditors - An instance of CustomEditorConfigurer, that uses allows the classEditor bean to be used as a PropertyEditor

    • diff --git a/snapshot/ref/Plug-ins/dataSource.html b/snapshot/ref/Plug-ins/dataSource.html index b700271b04b..00aca951197 100644 --- a/snapshot/ref/Plug-ins/dataSource.html +++ b/snapshot/ref/Plug-ins/dataSource.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      @@ -184,7 +184,7 @@

      Description

      • -

        dataSource - An instance of the Apache DBCP library’s org.apache.commons.dbcp.BasicDataSource class or a JndiObjectFactoryBean in the case of a JNDI DataSource

        +

        dataSource - An instance of the Apache DBCP library’s org.apache.commons.dbcp.BasicDataSource class or a JndiObjectFactoryBean in the case of a JNDI DataSource

      diff --git a/snapshot/ref/Plug-ins/domainClasses.html b/snapshot/ref/Plug-ins/domainClasses.html index 46933cfe35c..92976400152 100644 --- a/snapshot/ref/Plug-ins/domainClasses.html +++ b/snapshot/ref/Plug-ins/domainClasses.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      @@ -171,13 +171,13 @@

      Description

      diff --git a/snapshot/ref/Plug-ins/servlets.html b/snapshot/ref/Plug-ins/servlets.html index b9313959462..34d8fd9ed3e 100644 --- a/snapshot/ref/Plug-ins/servlets.html +++ b/snapshot/ref/Plug-ins/servlets.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Services/Usage.html b/snapshot/ref/Services/Usage.html index 67e6982df42..2a199f16040 100644 --- a/snapshot/ref/Services/Usage.html +++ b/snapshot/ref/Services/Usage.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Services/scope.html b/snapshot/ref/Services/scope.html index be0fb59b06b..f4a6ffd3924 100644 --- a/snapshot/ref/Services/scope.html +++ b/snapshot/ref/Services/scope.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Services/transactional.html b/snapshot/ref/Services/transactional.html index 2e29c54c351..7e382a58252 100644 --- a/snapshot/ref/Services/transactional.html +++ b/snapshot/ref/Services/transactional.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      diff --git a/snapshot/ref/Servlet API/request.html b/snapshot/ref/Servlet API/request.html index ff06dbe5fbc..6a66d8bebd1 100644 --- a/snapshot/ref/Servlet API/request.html +++ b/snapshot/ref/Servlet API/request.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      @@ -142,7 +142,7 @@

      request

      Purpose

      -

      The request object is an instance of the Servlet API’s HttpServletRequest interface

      +

      The request object is an instance of the Servlet API’s HttpServletRequest interface

      @@ -162,7 +162,7 @@

      Examples

      Description

      -

      The HttpServletRequest class is useful for, amongst other things, obtaining request headers, storing request scoped attributes and establishing information about the client. Refer to the Servlet API’s javadocs for further information.

      +

      The HttpServletRequest class is useful for, amongst other things, obtaining request headers, storing request scoped attributes and establishing information about the client. Refer to the Servlet API’s javadocs for further information.

      Grails enhances the HttpServletRequest instance by adding the following new properties and methods:

      @@ -227,7 +227,7 @@

      Description

      -

      Request attributes which are normally accessible from the getAttribute can also be indexed into using the array index operator or de-reference operator:

      +

      Request attributes which are normally accessible from the getAttribute can also be indexed into using the array index operator or de-reference operator:

      diff --git a/snapshot/ref/Servlet API/response.html b/snapshot/ref/Servlet API/response.html index 3a8bb60f830..fed05fcd375 100644 --- a/snapshot/ref/Servlet API/response.html +++ b/snapshot/ref/Servlet API/response.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
      3Upgrading from Grails 3.3.x +
      4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
      -
      @@ -142,7 +142,7 @@

      response

      Purpose

      -

      The response object is an instance of the Servlet API’s HttpServletResponse class

      +

      The response object is an instance of the Servlet API’s HttpServletResponse class

      @@ -161,7 +161,7 @@

      Examples

      Description

      -

      The Servlet API’s HttpServletResponse class can be used within Grails to perform all typical activities such as writing out binary data, writing directly to the response and sending error response codes to name but a few. Refer to the documentation on the HttpServletResponse class in the Servlet API for more information. Grails provides the following additional methods and/or properties on the response object

      +

      The Servlet API’s HttpServletResponse class can be used within Grails to perform all typical activities such as writing out binary data, writing directly to the response and sending error response codes to name but a few. Refer to the documentation on the HttpServletResponse class in the Servlet API for more information. Grails provides the following additional methods and/or properties on the response object

        diff --git a/snapshot/ref/Servlet API/servletContext.html b/snapshot/ref/Servlet API/servletContext.html index 64a5e3b688a..0d85e4e4299 100644 --- a/snapshot/ref/Servlet API/servletContext.html +++ b/snapshot/ref/Servlet API/servletContext.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
        -
        @@ -142,7 +142,7 @@

        servletContext

        Purpose

        -

        The servletContext object is an instance of the Servlet API’s ServletContext class.

        +

        The servletContext object is an instance of the Servlet API’s ServletContext class.

        @@ -168,10 +168,10 @@

        Examples

        Description

        -

        The Servlet API’s ServletContext is useful for, amongst other things, storing global application attributes, reading local server resources and establishing information about the servlet container.

        +

        The Servlet API’s ServletContext is useful for, amongst other things, storing global application attributes, reading local server resources and establishing information about the servlet container.

        -

        Application attributes which are normally accessible from the getAttribute can also be indexed into using the array index operator or de-reference operator:

        +

        Application attributes which are normally accessible from the getAttribute can also be indexed into using the array index operator or de-reference operator:

        diff --git a/snapshot/ref/Servlet API/session.html b/snapshot/ref/Servlet API/session.html index 7d933bd08ca..775b2d060b3 100644 --- a/snapshot/ref/Servlet API/session.html +++ b/snapshot/ref/Servlet API/session.html @@ -11,7 +11,7 @@ gtag('config', 'UA-82213539-2'); - The Grails Framework 4.0.13 + The Grails Framework 5.0.1 @@ -51,7 +51,7 @@ -
        3Upgrading from Grails 3.3.x +
        4Configuration @@ -130,7 +130,7 @@ (Quick Reference)
        -
        @@ -142,7 +142,7 @@

        session

        Purpose

        -

        The session object is an instance of the Servlet API’s HttpSession class

        +

        The session object is an instance of the Servlet API’s HttpSession class

        @@ -165,10 +165,10 @@

        Examples

        Description

        -

        The HttpSession class is useful for associated session data with a client.

        +

        The HttpSession class is useful for associated session data with a client.

        -

        Session attributes which are normally accessible from the getAttribute can also be indexed into using the array index operator or de-reference operator:

        +

        Session attributes which are normally accessible from the getAttribute can also be indexed into using the array index operator or de-reference operator: