(Quick Reference)

11 Changelog

Version: 3.1.0

Table of Contents

11 Changelog

11.1 Grails 3.x

Version 3.1.0

  • Upgrade to support Grails 3.3.x (huge thanks Alex Stoia!)

Version 3.0.4

  • Integrate Swagger into the jaxrs-jersey1 plugin.
  • Introduce the jaxrs-swagger-ui plugin.

Version 3.0.3

  • Added missing jersey-client dependency for the jersey1 plugin. (#25)
  • Refactored JAX-RS servlet initialization order due to call order differences between the embedded tomcat server and the standalone tomcat server. (#26)

Version 3.0.2

  • Add ResourceRegistrar and ScanningResourceRegistrar so that applications and plugins can provide a set of resources or providers outside of the normal artefact scanning process.
  • Move integration tests out of the jaxrs-core plugin and into the jaxrs-integration-test plugin.
  • Add tests to the jaxrs-restlet plugin.
  • Changed how URL mappings work:
  • URL mappings are no longer configured statically via application configuration.
  • URL mappings are compiled by scanning resource classes and their methods, and a new URL mapping entry will be added per unique path. This works for both resource classes present in grails-app/resources and other resource classes registered via other means.
  • Update restlet to 2.3.6.

Version 3.0.1

  • Fix jaxrs-core plugin descriptor class name.
  • Compile the plugin with JDK 1.7 compatibility.
  • Update authors.
  • Fill in missing information in plugin descriptor files.
  • Lowered Grails version requirement to 3.0.0.

Version 3.0.0

This is the initial release of the jaxrs project for Grails 3. Structurally, this is a major refactor from the existing codebase. Procedurally, the plugin has not changed much.

Major changes include:

  • Plugin has been broken up into several plugins.
    • jaxrs-core contains the base logic for the plugin but will not work standalone.
    • jaxrs-jersey1 uses the Jersey 1.9 implementation.
    • jaxrs-restlet uses the Restlet 2.1.4 implementation.
    • jaxrs-integration-test provides base classes to test resources in integration tests.
  • Most source files have been changed from *.java to *.groovy files.
  • Many class packages have changed, and all class packages have been moved under org.grails.plugins.jaxrs.
  • Grails-generated documentation has been created.
  • Ownership and maintenance of the project has been transferred.

11.2 Grails 2.x

Version 0.11

Version 0.11 of the plugin is a release of the Grails 2.4.x compatibility branch and is probably not compatible with any previous versions.
  • Grails 2.4.x compatibility modifications.

Version 0.10

Version 0.10 of the plugin is a release of the Grails 2.3.x compatibility branch and is probably not compatible with any previous versions.
  • Re-introduced Spock testing infrastructure using Spock bundled with Grails 2.3.x
  • Includes all fixes and features added to the release of version 0.9.
  • Grails 2.3.x compatibility modifications.
  • Upgrade to Restlet 2.1.4.

Version 0.9

To improve the compatibility of this plugin across Groovy and Grails versions, the Spock test infrastructure has been removed and is now available through the new Grails JAXRS-Spock plugin. Please review the new plugin's README file for installation instructions.
  • Added exclusions for un-required dependencies.
  • Modified the order of the servlet configuration; the load-on-startup field is now specified last.
  • Add the ability to specify query parameters in the test request path.
  • Take Encoding into consideration when decoding the input stream.
  • Remove copy-pasted MockHttpServletRequest from plugin.
  • Allow for multiple resources creation at once.
  • Downgraded the Grails version requirement to 2.0.x.

Version 0.8

This version enables the plugin to be used by Grails 2.2.x applications but breaks backwards compatibility for versions prior to 2.2.x.

Version 0.7

  • Enhancement: Added infrastructure to enable Spock integration testing
  • Fix: Cannot use jaxrs 0.6 with servlet 2.5 (it needs servlet api 3.0).
  • Fix: Removed usages of the deprecated Grails ConfigurationHolder.

Version 0.6

  • Upgrade to Grails 2.0.0
  • Upgrade to Jersey 1.8
  • Enhancement: Allow applications to configure init parameters for the JerseyServlet
  • Enhancement: Separate service class used by generated resources
  • Enhancement: Transaction boundaries in generated resource code
  • Enhancement: Support deep object conversion in domain object providers
  • Fix: Support for alphanumeric domain object identifiers
  • Fix: POST method doesn't work
  • Fix: java.lang.IllegalStateException: getOutputStream() has already been called for this response

Version 0.5-m1

  • New integration test framework
  • Upgrade to Grails 1.3.7
  • Upgrade to Jersey 1.5
  • Enhancement: Add support for configuring Jersey with additional provider paths
  • Enhancement: Switch to Grails' dependency management mechanism
  • Enhancement: JaxrsController moved to package org.grails.jaxrs
  • Fix: Responses with Content-Type text/html eaten by Grails
  • Fix: Service injection into resources doesn't work in integration tests

Version 0.4

  • Automated generation of WADL documents (with some known limitations)
  • Upgrade to Grails 1.3.1
  • Upgrade to Jersey 1.2
  • Upgrade to Restlet 2.0-RC3
  • Fix: Object ids in XML or JSON requests are not set on the domain object.
  • Fix: Unmarshalling from JSON (and XML) to nested domain objects doesn't work properly

There's a bug (issue 971) in Restlet 2.0-RC3 that forces implementors of MessageBodyReader and MessageBodyWriter to directly implement these interfaces. Extending a class that implements these interfaces doesn't work. Restlet will ignore the provider in this case.

Version 0.3

  • Domain object providers
    • Convert between Grails domain objects and XML or JSON representations
    • Allow usage of Grails domain classes in resource method signatures
    • Support for content negotiation using the Accept request header
    • Can be disabled by means of configuration
  • Custom entity provider support
    • Base classes for custom domain object providers
      • org.grails.jaxrs.support.DomainObjectReaderSupport
      • org.grails.jaxrs.support.DomainObjectWriterSupport
    • Base classes for more general entity providers (improved)
      • org.grails.jaxrs.support.MessageBodyReaderSupport
      • org.grails.jaxrs.support.MessageBodyWriterSupport
  • Scaffolding enhancements
    • XML and JSON representations
    • Content negotiation support
  • Auto-detection of JAX-RS resource classes better aligned with the JAX-RS specification (incl. support for annotation inheritance)
  • Auto-detection of JAX-RS provider classes better aligned with the JAX-RS specification
  • Default URL mapping for JaxrsController changed
  • Upgrade to Grails 1.1.2
  • Upgrade to Jersey 1.1.4.1
  • Upgrade to Restlet 2.0-M6

Version 0.2

In version 0.2 the way how JAX-RS resources and providers are auto-detected has changed. In version 0.1 plain Spring mechanisms were used (<context:component-scan />, Component annotation, etc.) whereas in version 0.2 the plugin follows Grails conventions regarding how to detect and manage resources. Now, there's no need to provide a custom Spring application context. The jaxrs plugin is now making these changes behind the scenes.

Similar changes have been introduced for injection of other beans into JAX-RS resources and providers. In version 0.1 plain Spring mechanisms were necessary such as the Autowired annotation whereas in version 0.2 other beans are auto-injected by name similar to Grails controllers, for example.