From f2b03a26d0c28aff227a8a4d5287dff7bf0b663e Mon Sep 17 00:00:00 2001 From: John Blum Date: Fri, 10 Oct 2014 15:14:57 -0700 Subject: [PATCH] SGF-340 - Change a SpringSource-based links in the SDG Reference Guide to Spring.io-based links. --- src/asciidoc/introduction/new-features.adoc | 2 +- src/asciidoc/introduction/requirements.adoc | 1 - src/asciidoc/reference/bootstrap.adoc | 2 +- src/asciidoc/reference/cache.adoc | 4 ++-- src/asciidoc/reference/data.adoc | 8 ++++---- src/asciidoc/reference/function-annotations.adoc | 4 ++-- src/asciidoc/reference/region.adoc | 2 +- src/asciidoc/reference/repositories.adoc | 2 +- src/asciidoc/reference/samples.adoc | 8 ++++---- src/asciidoc/reference/serialization.adoc | 2 +- 10 files changed, 17 insertions(+), 18 deletions(-) diff --git a/src/asciidoc/introduction/new-features.adoc b/src/asciidoc/introduction/new-features.adoc index e780c073..40bb9799 100644 --- a/src/asciidoc/introduction/new-features.adoc +++ b/src/asciidoc/introduction/new-features.adoc @@ -2,7 +2,7 @@ = New Features NOTE: As of the 1.2.0 release, this project, formerly known as Spring GemFire, has been renamed to Spring Data GemFire -to reflect that it is now a component of the http://www.springsource.org/spring-data[Spring Data] project. +to reflect that it is now a component of the http://projects.spring.io/spring-data/[Spring Data] project. [[new-in-1-2-0]] == New in the 1.2.0 Release diff --git a/src/asciidoc/introduction/requirements.adoc b/src/asciidoc/introduction/requirements.adoc index fd08b83f..e61a459d 100644 --- a/src/asciidoc/introduction/requirements.adoc +++ b/src/asciidoc/introduction/requirements.adoc @@ -2,4 +2,3 @@ = Requirements Spring Data GemFire requires JDK 6.0 or above, http://projects.spring.io/spring-framework[Spring Framework] 3 and http://www.pivotal.io/big-data/pivotal-gemfire[Pivotal GemFire] 6.6 or above (version 7 or above is recommended). - diff --git a/src/asciidoc/reference/bootstrap.adoc b/src/asciidoc/reference/bootstrap.adoc index 0fcae161..37bbeb3b 100644 --- a/src/asciidoc/reference/bootstrap.adoc +++ b/src/asciidoc/reference/bootstrap.adoc @@ -17,7 +17,7 @@ In addition, IDEs such as the Spring Tool Suite (STS) provide excellent support [[bootstrap:namespace]] == Using the Core Spring Data GemFire Namespace -To simplify configuration, Spring Data GemFire provides a dedicated XML namespace for configuring core GemFire components. It is also possible to configure the beans directly through Spring's standard definition. However, as of Spring Data GemFire 1.2.0, all bean properties are exposed via the namespace so there is little benefit to using raw bean definitions. For more information about XML Schema-based configuration in Spring, see http://static.springsource.org/spring/docs/current/spring-framework-reference/html/xsd-config.html[this] appendix in the Spring Framework reference documentation. +To simplify configuration, Spring Data GemFire provides a dedicated XML namespace for configuring core GemFire components. It is also possible to configure the beans directly through Spring's standard definition. However, as of Spring Data GemFire 1.2.0, all bean properties are exposed via the namespace so there is little benefit to using raw bean definitions. For more information about XML Schema-based configuration in Spring, see http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#xsd-config[this] appendix in the Spring Framework reference documentation. NOTE: Spring Data Repository support uses a separate XML namespace. See <> for more information on how to configure GemFire Repositories. diff --git a/src/asciidoc/reference/cache.adoc b/src/asciidoc/reference/cache.adoc index 523777d2..8a69dba1 100644 --- a/src/asciidoc/reference/cache.adoc +++ b/src/asciidoc/reference/cache.adoc @@ -30,7 +30,7 @@ Starting with Spring Data GemFire 1.2.0, The GemFire Cache may be fully configur In this example, if the cache needs to be created, it will use the file named `cache.xml` located in the classpath root. -NOTE: Note that the configuration makes use of Spring's http://static.springsource.org/spring/docs/current/spring-framework-reference/html/resources.html[`Resource`] abstraction to locate the file. This allows various search patterns to be used, depending on the runtime environment or the prefix specified (if any) in the resource location. +NOTE: Note that the configuration makes use of Spring's http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#resources[`Resource`] abstraction to locate the file. This allows various search patterns to be used, depending on the runtime environment or the prefix specified (if any) in the resource location. In addition to referencing an external configuration file one can specify GemFire http://gemfire.docs.pivotal.io/latest/userguide/index.html#reference/topics/gemfire_properties.html[properties] using any of Spring's common properties support features. For example, one can use the `properties` element defined in the `util` namespace to define properties directly or load properties from properties files. The latter is recommended for externalizing environment specific settings outside the application configuration: @@ -145,7 +145,7 @@ In Spring Data GemFire 1.1 dedicated support for configuring a http://gemfire.do The configuration above illustrates the `cache-server` element and the many options available. -NOTE: Rather than hard-coding the port, this configuration uses Spring's http://static.springsource.org/spring/docs/current/spring-framework-reference/html/xsd-config.html#xsd-config-body-schemas-context[context] namespace to declare a `property-placeholder`. The http://static.springsource.org/spring/docs/current/spring-framework-reference/html/beans.html#beans-factory-placeholderconfigurer[property placeholder] reads one or more properties file and then replaces property placeholders with values at runtime. This allows administrators to change such values without having to touch the main application configuration. Spring also provides http://static.springsource.org/spring/docs/current/spring-framework-reference/html/new-in-3.0.html#new-feature-el[SpEL] and the http://static.springsource.org/spring/docs/current/spring-framework-reference/html/new-in-3.1.html#new-in-3.1-environment-abstraction[environment abstraction] one to support externalization of environment specific properties from the main code base, easing the deployment across multiple machines. +NOTE: Rather than hard-coding the port, this configuration uses Spring's http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#xsd-config-body-schemas-context[context] namespace to declare a `property-placeholder`. http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#beans-factory-placeholderconfigurer[property placeholder] reads one or more properties file and then replaces property placeholders with values at runtime. This allows administrators to change such values without having to touch the main application configuration. Spring also provides http://docs.spring.io/spring/docs/3.2.11.RELEASE/spring-framework-reference/htmlsingle/#new-feature-el[SpEL] and the http://docs.spring.io/spring/docs/3.2.11.RELEASE/spring-framework-reference/htmlsingle/#new-in-3.1-environment-abstraction[environment abstraction] one to support externalization of environment specific properties from the main code base, easing the deployment across multiple machines. NOTE: To avoid initialization problems, the `CacheServer`s started by Spring Data GemFire will start *after* the container has been fully initialized. This allows potential regions, listeners, writers or instantiators defined declaratively to be fully initialized and registered before the server starts accepting connections. Keep this in mind when programmatically configuring these items as the server might start after your components and thus not be seen by the clients connecting right away. diff --git a/src/asciidoc/reference/data.adoc b/src/asciidoc/reference/data.adoc index 927d8770..0ffee84d 100644 --- a/src/asciidoc/reference/data.adoc +++ b/src/asciidoc/reference/data.adoc @@ -6,7 +6,7 @@ Once the GemFire Cache and Regions have been configured they can be injected and [[apis:exception-translation]] == Exception Translation -Using a new data access technology requires not only accommodating a new API but also handling exceptions specific to that technology. To accommodate this case, Spring Framework provides a technology agnostic, consistent http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/dao.html#dao-exceptions[exception hierarchy] that abstracts the application from proprietary (and usually checked) exceptions to a set of focused runtime exceptions. As mentioned in the Spring Framework documentation, http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/orm.html#orm-exception-translation[exception translation] can be applied transparently to your data access objects through the use of the `@Repository` annotation and AOP by defining a `PersistenceExceptionTranslationPostProcessor` bean. The same exception translation functionality is enabled when using GemFire as long as at least a `CacheFactoryBean` is declared, e.g. using a `` declaration, as it acts as an exception translator which is automatically detected by the Spring infrastructure and used accordingly. +Using a new data access technology requires not only accommodating a new API but also handling exceptions specific to that technology. To accommodate this case, Spring Framework provides a technology agnostic, consistent http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#dao-exceptions[exception hierarchy] that abstracts the application from proprietary (and usually checked) exceptions to a set of focused runtime exceptions. As mentioned in the Spring Framework documentation, http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#orm-exception-translation[exception translation] can be applied transparently to your data access objects through the use of the `@Repository` annotation and AOP by defining a `PersistenceExceptionTranslationPostProcessor` bean. The same exception translation functionality is enabled when using GemFire as long as at least a `CacheFactoryBean` is declared, e.g. using a `` declaration, as it acts as an exception translator which is automatically detected by the Spring infrastructure and used accordingly. [[apis:template]] == GemfireTemplate @@ -42,7 +42,7 @@ For accessing the full power of the GemFire query language, one can use the `fin [[apis:spring-cache-abstraction]] == Support for Spring Cache Abstraction -Since 1.1, Spring Data GemFire provides an implementation of the Spring 3.1 http://static.springsource.org/spring/docs/current/spring-framework-reference/htmlsingle/spring-framework-reference.html#cache[cache abstraction]. To use GemFire as a backing implementation, simply add `GemfireCacheManager` to your configuration: +Since 1.1, Spring Data GemFire provides an implementation of the Spring 3.1 http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#cache[cache abstraction]. To use GemFire as a backing implementation, simply add `GemfireCacheManager` to your configuration: [source,xml] ---- @@ -68,7 +68,7 @@ Since 1.1, Spring Data GemFire provides an implementation of the Spring 3.1 http [[apis:tx-mgmt]] == Transaction Management -One of the most popular features of Spring Framework is http://static.springsource.org/spring/docs/current/spring-framework-reference/htmlsingle/spring-framework-reference.html#transaction[transaction management]. If you are not familiar with it, we strongly recommend http://static.springsource.org/spring/docs/current/spring-framework-reference/htmlsingle/spring-framework-reference.html#transaction-motivation[reading] about it as it offers a consistent programming model that works transparently across multiple APIs and can be configured either programmatically or declaratively (the most popular choice). +One of the most popular features of Spring Framework is http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#transaction[transaction management]. If you are not familiar with it, we strongly recommend http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#transaction-motivation[reading] about it as it offers a consistent programming model that works transparently across multiple APIs and can be configured either programmatically or declaratively (the most popular choice). For GemFire, Spring Data GemFire provides a dedicated, per-cache, transaction manager that, once declared, allows Region operations to be executed atomically through Spring: @@ -197,7 +197,7 @@ NOTE: The *template* bean definitions do not have to be declared in XML - any fo [[apis:declarable:autowiring]] === Configuration using auto-wiring and annotations -If no bean definition is found, by default, `WiringDeclarableSupport` will http://static.springsource.org/spring/docs/current/spring-framework-reference/htmlsingle/spring-framework-reference.html#beans-factory-autowire[autowire] the declaring instance. This means that unless any dependency injection *metadata* is offered by the instance, the container will find the object setters and try to automatically satisfy these dependencies. However, one can also use JDK 5 annotations to provide additional information to the auto-wiring process. We strongly recommend reading the dedicated http://static.springsource.org/spring/docs/current/spring-framework-reference/htmlsingle/spring-framework-reference.html#beans-annotation-config[chapter] in the Spring documentation for more information on the supported annotations and enabling factors. +If no bean definition is found, by default, `WiringDeclarableSupport` will http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#beans-factory-autowire[autowire] the declaring instance. This means that unless any dependency injection *metadata* is offered by the instance, the container will find the object setters and try to automatically satisfy these dependencies. However, one can also use JDK 5 annotations to provide additional information to the auto-wiring process. We strongly recommend reading the dedicated http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#beans-annotation-config[chapter] in the Spring documentation for more information on the supported annotations and enabling factors. For example, the hypothetical `DBLoader` declaration above can be injected with a Spring-configured `DataSource` in the following way: diff --git a/src/asciidoc/reference/function-annotations.adoc b/src/asciidoc/reference/function-annotations.adoc index 32a180b5..8fd46e47 100644 --- a/src/asciidoc/reference/function-annotations.adoc +++ b/src/asciidoc/reference/function-annotations.adoc @@ -55,7 +55,7 @@ public class MyFunctions { } ---- -Note that the class itself must be registered as a Spring bean. Here the `@Component` annotation is used, but you may register the bean by any method provided by Spring (e.g. XML configuration or Java configuration class). This allows the Spring container to create an instance of this class and wrap it in a https://github.com/SpringSource/spring-gemfire/blob/master/src/main/java/org/springframework/data/gemfire/function/PojoFunctionWrapper.java[PojoFunctionWrapper](PFW). Spring creates one PFW instance for each method annotated with `@GemfireFunction`. Each will all share the same target object instance to invoke the corresponding method. +Note that the class itself must be registered as a Spring bean. Here the `@Component` annotation is used, but you may register the bean by any method provided by Spring (e.g. XML configuration or Java configuration class). This allows the Spring container to create an instance of this class and wrap it in a https://github.com/spring-projects/spring-data-gemfire/blob/master/src/main/java/org/springframework/data/gemfire/function/PojoFunctionWrapper.java[PojoFunctionWrapper](PFW). Spring creates one PFW instance for each method annotated with `@GemfireFunction`. Each will all share the same target object instance to invoke the corresponding method. NOTE: The fact that the function class is a Spring bean may offer other benefits since it shares the application context with GemFire components such as a Cache and Regions. These may be injected into the class if necessary. @@ -119,7 +119,7 @@ The client side uses Spring's component scanning capability to discover annotate ---- -Note that the `function-executions` tag is provided in the `gfe-data` namespace. The `base-package` attribute is required to avoid scanning the entiire class path. Additional filters are provided as described in the Spring http://static.springsource.org/spring/docs/current/spring-framework-reference/html/beans.html#beans-scanning-filters[reference]. +Note that the `function-executions` tag is provided in the `gfe-data` namespace. The `base-package` attribute is required to avoid scanning the entiire class path. Additional filters are provided as described in the Spring http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#beans-scanning-filters[reference]. Or annotate your Java configuration class: diff --git a/src/asciidoc/reference/region.adoc b/src/asciidoc/reference/region.adoc index 3894018e..873b5cc5 100644 --- a/src/asciidoc/reference/region.adoc +++ b/src/asciidoc/reference/region.adoc @@ -747,7 +747,7 @@ A special key `ALL_KEYS` means interest is registered for all keys (identical to [[bootstrap:region:json]] == JSON Support -Gemfire 7.0 introduced support for caching JSON documents with OQL query support. These are stored internally as http://gemfire.docs.pivotal.io/latest/javadocs/japi/com/gemstone/gemfire/pdx/PdxInstance.html[PdxInstance] types using the http://gemfire.docs.pivotal.io/latest/javadocs/japi/com/gemstone/gemfire/pdx/JSONFormatter.html[JSONFormatter] to perform conversion to and from JSON strings. Spring Data GemFire provides a `` tag to enable a http://static.springsource.org/spring/docs/current/spring-framework-reference/htmlsingle/#aop-introduction[Spring AOP] component to advise appropropriate region operations, effectively encapsulating the JSONFormatter, allowing your application to work directly with JSON strings. In addition, Java objects written to JSON configured regions will be automatically converted to JSON using the Jackson ObjectMapper. Reading these values will return a JSON string. +Gemfire 7.0 introduced support for caching JSON documents with OQL query support. These are stored internally as http://gemfire.docs.pivotal.io/latest/javadocs/japi/com/gemstone/gemfire/pdx/PdxInstance.html[PdxInstance] types using the http://gemfire.docs.pivotal.io/latest/javadocs/japi/com/gemstone/gemfire/pdx/JSONFormatter.html[JSONFormatter] to perform conversion to and from JSON strings. Spring Data GemFire provides a `` tag to enable a http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#aop-introduction[AOP with Spring] component to advise appropriate region operations, effectively encapsulating the JSONFormatter, allowing your application to work directly with JSON strings. In addition, Java objects written to JSON configured regions will be automatically converted to JSON using the Jackson ObjectMapper. Reading these values will return a JSON string. By default, `` will perform the conversion on all regions. To apply this feature to selected regions, provide a comma delimited list of their ids via the `region-refs` attribute. Other attributes include a `pretty-print` flag (false by default) and `convert-returned-collections`. By default the results of region operations getAll() and values() will be converted for configured regions. This is done by creating a parallel structure in local memory. This can incur significant overhead for large collections. Set this flag to false to disable automatic conversion for these operation. NOTE: Certain region operations, specifically those that use GemFire's proprietary Region.Entry such as entries(boolean), entrySet(boolean) and getEntry() type are not targeted for AOP advice. In addition, the entrySet() method which returns a Set> is not affected. diff --git a/src/asciidoc/reference/repositories.adoc b/src/asciidoc/reference/repositories.adoc index 1b33c435..971ff487 100644 --- a/src/asciidoc/reference/repositories.adoc +++ b/src/asciidoc/reference/repositories.adoc @@ -3,7 +3,7 @@ == Introduction -Spring Data GemFire provides support to use the Spring Data repository abstraction to easily persist entities into GemFire and execute queries. A general introduction into the repository programming model is been provided http://static.springsource.org/spring-data/data-commons/docs/current/reference/html/#repositories[here]. +Spring Data GemFire provides support to use the Spring Data repository abstraction to easily persist entities into GemFire and execute queries. A general introduction into the repository programming model is been provided http://docs.spring.io/spring-data/data-commons/docs/current/reference/html/#repositories[here]. [[gemfire-repositories.spring-configuration]] == Spring configuration diff --git a/src/asciidoc/reference/samples.adoc b/src/asciidoc/reference/samples.adoc index 8f7e1d49..8f176c43 100644 --- a/src/asciidoc/reference/samples.adoc +++ b/src/asciidoc/reference/samples.adoc @@ -1,11 +1,11 @@ [[samples]] = Sample Applications -NOTE: Sample applications are now maintained in the https://github.com/SpringSource/spring-gemfire-examples[Spring Data GemFire Examples] repository. +NOTE: Sample applications are now maintained in the https://github.com/spring-projects/spring-gemfire-examples[Spring Data GemFire Examples] repository. The Spring Data GemFire project also includes one sample application. Named "Hello World", the sample demonstrates how to configure and use GemFire inside a Spring application. At runtime, the sample offers a *shell* to the user allowing him to run various commands against the grid. It provides an excellent starting point for users unfamiliar with the essential components or the Spring and GemFire concepts. -The sample is bundled with the distribution and is Maven-based. One can easily import them into any Maven-aware IDE (such as SpringSource http://www.springsource.com/products/sts[Tool Suite]) or run them from the command-line. +The sample is bundled with the distribution and is Maven-based. One can easily import them into any Maven-aware IDE (such as https://spring.io/tools/sts[Spring Tool Suite]) or run them from the command-line. [[samples:hello-world]] == Hello World @@ -13,7 +13,7 @@ The sample is bundled with the distribution and is Maven-based. One can easily i The Hello World sample demonstrates the core functionality of the Spring GemFire project. It bootstraps GemFire, configures it, executes arbitrary commands against it and shuts it down when the application exits. Multiple instances can be started at the same time as they will work with each other sharing data without any user intervention. .Running under Linux -NOTE: If you experience networking problems when starting GemFire or the samples, try adding the following system property `java.net.preferIPv4Stack=true` to the command line (insert `-Djava.net.preferIPv4Stack=true`). For an alternative (global) fix especially on Ubuntu see this https://jira.springsource.org/browse/SGF-28[link] +NOTE: If you experience networking problems when starting GemFire or the samples, try adding the following system property `java.net.preferIPv4Stack=true` to the command line (insert `-Djava.net.preferIPv4Stack=true`). For an alternative (global) fix especially on Ubuntu see this https://jira.spring.io/browse/SGF-28[link] [[samples:hello-world:start-stop]] === Starting and stopping the sample @@ -82,7 +82,7 @@ Experiment with the example, start (and stop) as many instances as you want, run [[samples:hello-world:explained]] === Hello World Sample Explained -Hello World uses both Spring XML and annotations for its configuration. The initial boostrapping configuration is `app-context.xml` which includes the cache configuration, defined under `cache-context.xml` file and performs classpath http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-classpath-scanning[scanning] for Spring http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-factorybeans-annotations[components]. The cache configuration defines the GemFire cache, region and for illustrative purposes a simple cache listener that acts as a logger. +Hello World uses both Spring XML and annotations for its configuration. The initial boostrapping configuration is `app-context.xml` which includes the cache configuration, defined under `cache-context.xml` file and performs classpath http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#beans-classpath-scanning[scanning] for Spring http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#beans-annotation-config[components]. The cache configuration defines the GemFire cache, region and for illustrative purposes a simple cache listener that acts as a logger. The main *beans* are `HelloWorld` and `CommandProcessor` which rely on the `GemfireTemplate` to interact with the distributed fabric. Both classes use annotations to define their dependency and life-cycle callbacks. diff --git a/src/asciidoc/reference/serialization.adoc b/src/asciidoc/reference/serialization.adoc index c9c6ceba..663cce82 100644 --- a/src/asciidoc/reference/serialization.adoc +++ b/src/asciidoc/reference/serialization.adoc @@ -8,7 +8,7 @@ To improve overall performance of the data grid, GemFire supports a dedicated se It is fairly common for serialized objects to have transient data. Transient data is often dependent on the node or environment where it lives at a certain point in time, for example a DataSource. Serializing such information is useless (and potentially even dangerous) since it is local to a certain VM/machine. For such cases, Spring Data GemFire offers a special http://gemfire.docs.pivotal.io/latest/javadocs/japi/com/gemstone/gemfire/Instantiator.html[`Instantiator`] that performs wiring for each new instance created by GemFire during deserialization. -Through such a mechanism, one can rely on the Spring container to inject (and manage) certain dependencies making it easy to split transient from persistent data and have *rich domain objects* in a transparent manner (Spring users might find this approach similar to that of http://static.springsource.org/spring/docs/current/spring-framework-reference/html/aop.html#aop-atconfigurable[`@Configurable`]). The `WiringInstantiator` works just like `WiringDeclarableSupport`, trying to first locate a bean definition as a wiring template and following to autowiring otherwise. Please refer to the previous section (<>) for more details on wiring functionality. +Through such a mechanism, one can rely on the Spring container to inject (and manage) certain dependencies making it easy to split transient from persistent data and have *rich domain objects* in a transparent manner (Spring users might find this approach similar to that of http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#aop-atconfigurable[`@Configurable`]). The `WiringInstantiator` works just like `WiringDeclarableSupport`, trying to first locate a bean definition as a wiring template and following to autowiring otherwise. Please refer to the previous section (<>) for more details on wiring functionality. To use this `Instantiator`, simply declare it as a usual bean: