[[new-features]]
= New Features

NOTE: As of the 1.2.0.RELEASE, this project, formerly known as Spring GemFire, has been renamed to {sdg-name}
to reflect that it is now a module of the {spring-data-website}[Spring Data] project and built on
{x-data-store-website}[{data-store-name}].

[[new-in-1-2-0]]
== New in the 1.2 Release

* Full support for {data-store-name} configuration through the SDG `gfe` XML namespace. Now {data-store-name} components
may be configured completely without requiring a native `cache.xml` file.
* WAN Gateway support for {data-store-name} 6.6.x. See <<bootstrap:gateway>>
* Spring Data Repository support using a dedicated SDG XML namespace, *gfe-data*. See <<gemfire-repositories>>
* `gfe-data` XML Namespace support for registering {data-store-name} Functions. See <<bootstrap:function>>
* A top-level `<disk-store>` element has been added to the SDG `gfe` XML namespace to allow sharing of persist stores
among regions as well as other {data-store-name} components that support persistent backup or overflow.
See <<bootstrap-diskstore>>
+
WARNING: `<*-region>` elements no longer allow a nested `<disk-store>` element.
+
* {data-store-name} Sub-Regions are supported by nested `<*-region>` elements.
* A `<local-region>` element has been added to configure a Local Region.
* Support for the re-designed WAN Gateway in {data-store-name} 7.0.

[[new-in-1-3-0]]
== New in the 1.3 Release

* Upgraded to Spring Framework 3.2.8.
* Upgraded to Spring Data Commons 1.7.1.
* Annotation support for {data-store-name} Functions. It is now possible to declare and register Functions
written as POJOs by using annotations. In addition, Function executions are defined as
annotated interfaces, similar to the way Spring Data Repositories work. See <<function-annotations>>.
* Added a `<datasource>` element to the SDG XML namespace to simplify establishing a basic <<data-access:datasource,client connection>>
to a {data-store-name} data grid.
* Added a `<json-region-autoproxy>` element to the SDG `gfe-data` XML namespace to <<bootstrap:region:json,support JSON>>
features introduced in {data-store-name} 7.0, enabling Spring AOP to perform the necessary conversions automatically
on Region data access operations.
* Upgraded to {data-store-name} 7.0.1 and added XML namespace support for new `AsyncEventQueue` attributes.
* Added support for setting subscription interest policy on Regions.
* Support for void returns on Function executions.  See <<function-annotations>> for complete details.
* Support for persisting Local Regions. See <<bootstrap:region:local>>.
* Support for entry time-to-live (TTL) and entry idle-time (TTI) on a {data-store-name} Client Cache. See <<bootstrap:cache:client>>
* Support for multiple {sdg-name} web-based applications by using a single {data-store-name} cluster,
operating concurrently inside tc Server.
* Support for `concurrency-checks-enabled` on all Cache Region definitions by using the SDG `gfe` XML namespace.
See <<bootstrap:region:common:attributes>>
* Support for `CacheLoaders` and `CacheWriters` on client, Local Regions.
* Support for registering `CacheListeners`, `AsyncEventQueues`, and `GatewaySenders` on {data-store-name} Cache Sub-Regions.
* Support for PDX persistent keys in Regions.
* Support for correct Partition Region bean creation in a Spring context when collocation is specified with
the `colocated-with` attribute.
* Full support for Cache Sub-Regions using proper, nested `<*-region>` element syntax in the SDG `gfe` XML namespace.

[[new-in-1-4-0]]
== New in the 1.4 Release

* Upgraded to {data-store-name} 7.0.2.
* Upgraded to Spring Framework 3.2.13.RELEASE.
* Upgraded to Spring Data Commons 1.8.6.RELEASE.
* Integrated {sdg-name} with Spring Boot, which includes both a `spring-boot-starter-data-gemfire` POM
and a Spring Boot sample application that demonstrates {data-store-name} Cache Transactions configured with SDG
and bootstrapped with Spring Boot.
* Added support for bootstrapping a Spring `ApplicationContext` in a {data-store-name} Server when started from `Gfsh`.
See <<gemfire-bootstrap>>
* Added support for persisting application domain object and entities to multiple {data-store-name} Cache Regions.
See <<mapping.entities>>
* Added support for persisting application domain object and entities to {data-store-name} Cache Sub-Regions,
avoiding collisions when Sub-Regions are uniquely identifiable, but identically named.
See <<mapping.entities>>
* Added strict XSD type rules to Data Policies and Region Shortcuts on all {data-store-name} Cache Region types.
* Changed the default behavior of SDG `<*-region>` elements from lookup to always create a new Region
with an option to restore the old behavior using the `ignore-if-exists` attribute.
See <<bootstrap:region:common:attributes, Common Region Attributes>>
and <<bootstrap:region:common:regions-subregions-lookups-caution>>
* {sdg-name} can now be fully built and run on JDK 7 and JDK 8.

[[new-in-1-5-0]]
== New in the 1.5 Release

* Maintained compatibility with {data-store-name} 7.0.2.
* Upgraded to _Spring Framework_ 4.0.9.RELEASE.
* Upgraded to _Spring Data Commons_ 1.9.4.RELEASE.
* Converted Reference Guide to Asciidoc.
* Renewed support for deploying {sdg-name} in an OSGi container.
* Removed all default values specified in {sdg-name} XML namespace Region-type elements
to rely on {data-store-name} defaults instead.
* Added convenience to automatically create `DiskStore` directory locations.
* SDG annotated Function implementations can now be executed from `Gfsh`.
* Enabled {data-store-name} `GatewayReceivers` to be started manually.
* Added support for Auto Region Lookups. See <<bootstrap:region:auto-lookup>>
* Added support for Region Templates. See <<bootstrap:region:common:region-templates>>

[[new-in-1-6-0]]
== New in the 1.6 Release

* Upgraded to {data-store-name} 8.0.0.
* Maintained compatibility with Spring Framework 4.0.9.RELEASE.
* Upgraded to Spring Data Commons 1.10.2.RELEASE.
* Added support for {data-store-name} 8's new Cluster-based Configuration Service.
* Enabled 'auto-reconnect' functionality to be employed in Spring-configured {data-store-name} Servers.
* Allowed the creation of concurrent and parallel `AsyncEventQueues` and `GatewaySenders`.
* Added support for {data-store-name} 8's Region data compression.
* Added attributes to set both critical and warning percentages on `DiskStore` usage.
* Supported the capability to add `EventSubstitutionFilters` to `GatewaySenders`.

[[new-in-1-7-0]]
== New in the 1.7 Release

* Upgraded to {data-store-name} 8.1.0.
* Upgraded to Spring Framework 4.1.9.RELEASE.
* Upgraded to Spring Data Commons 1.11.6.RELEASE.
* Added early access support for Apache Geode.
* Added support for adding Spring-defined `CacheListeners`, `CacheLoaders`, and `CacheWriters` on existing Regions
configured in Spring XML, `cache.xml`, or even with {data-store-name}'s Cluster Configuration Service.
* Added Spring JavaConfig support to `SpringContextBootstrappingInitializer`.
* Added support for custom `ClassLoaders` in `SpringContextBootstrappingInitializer` to load Spring-defined bean classes.
* Added support for `LazyWiringDeclarableSupport` re-initialization and complete replacement for `WiringDeclarableSupport`.
* Added `locators` and `servers` attributes to the `<gfe:pool>` element, allowing variable Locator and Server
endpoint lists configured with Spring's property placeholders.
* Enables the use of the `<gfe-data:datasource>` element with non-Spring-configured {data-store-name} Servers.
* Added multi-index definition and creation support.
* <<bootstrap:region:expiration:annotation>>
* <<gemfire-repositories:oql-extensions>>
* Added support for Cache and Region data snapshots.  See <<bootstrap:snapshot>>

[[new-in-1-8-0]]
== New in the 1.8 Release

* Upgraded to {data-store-name} 8.2.0.
* Upgraded to Spring Framework 4.2.9.RELEASE.
* Upgraded to Spring Data Commons 1.12.11.RELEASE.
* Added Maven POM to build SDG with Maven.
* Added support for CDI.
* Enabled a `ClientCache` to be configured without a `Pool`.
* Defaulted `<gfe:cache>` and `<gfe:client-cache>` elements `use-bean-factory-locator` attribute to *false*.
* Added `durable-client-id` and `durable-client-timeout` attributes to `<gfe:client-cache>`.
* Made `GemfirePersistentProperty` now properly handle other non-entity, scalar-like types
(e.g. `BigDecimal` and `BigInteger`).
* Prevented SDG-defined `Pools` from being destroyed before `Regions` that use those `Pools`.
* Handled case-insensitive {data-store-name} OQL queries defined as Repository query methods.
* Changed `GemFireCache.evict(key)` to call `Region.remove(key)` in SDG's Spring _Cache Abstraction_ support.
* Fixed `RegionNotFoundException` with Repository queries on a client `Region` associated with a specific `Pool`
configured for {data-store-name} server groups.
* Changed `GatewaySenders/Receivers` to no longer be tied to the Spring container.

[[new-in-1-9-0]]
== New in the 1.9 Release

* Upgraded to {data-store-name} 8.2.11.
* Upgraded to Spring Framework 4.3.18.RELEASE.
* Upgraded to Spring Data Commons 1.13.13.RELEASE.
* Introduced an entirely new Annotation-based configuration model inspired by Spring Boot.
* Added support for suspend and resume in the `GemfireTransactionManager`.
* Added support in Repositories to use the bean `id` property as the Region key when the `@Id` annotation
is not present.
* Used `MappingPdxSerializer` as the default {data-store-name} serialization strategy when `@EnablePdx` is used.
* Enabled `GemfireCacheManager` to explicitly list Region names to be used in the Spring's _Caching Abstraction_.
* Configured {data-store-name} Caches, CacheServers, Locators, Pools, Regions, Indexes, DiskStores, Expiration, Eviction,
Statistics, Mcast, HttpService, Auth, SSL, Logging, System Properties.
* Added Repository support with multiple Spring Data modules on the classpath.

[[new-in-2-0-0]]
== New in the 2.0 Release

* Upgraded to {data-store-name} 9.1.1.
* Upgraded to Spring Data Commons 2.0.8.RELEASE.
* Upgraded to Spring Framework 5.0.7.RELEASE.
* Reorganized the SDG codebase by packaging different classes and components by concern.
* Added extensive support for Java 8 types, particularly in the SD Repository abstraction.
* Changed to the Repository interface and abstraction, e.g. IDs are no longer required to be `java.io.Serializable`.
* Set `@EnableEntityDefinedRegions` annotation `ignoreIfExists` attribute to `true` by default.
* Set `@Indexed` annotation `override` attribute to `false` by default.
* Renamed `@EnableIndexes` to `@EnableIndexing`.
* Introduced a `InterestsBuilder` class to easily and conveniently express Interests in keys and values between client
and server when using JavaConfig.
* Added support in the Annotation configuration model for Off-Heap, Redis Adapter,
and {data-store-name}'s new Security framework.

[[new-in-2-1-0]]
== New in the 2.1 Release

* Upgraded to {data-store-name} {data-store-version}.
* Upgraded to Spring Framework 5.1.0.RELEASE.
* Upgraded to Spring Data Commons 2.1.0.RELEASE.
* Added support for parallel cache/Region snapshots along with invoking callbacks when loading snapshots.
* Added support for registering QueryPostProcessors to customize the OQL generated fro Repository query methods.
* Added support for include/exclude TypeFilters in o.s.d.g.mapping.MappingPdxSerializer.
* Updated docs.
