SGF-402 - Polish.

This commit is contained in:
John Blum
2017-03-29 12:52:20 -07:00
parent 556afed877
commit 479bc4e325
10 changed files with 37 additions and 39 deletions

View File

@@ -187,6 +187,8 @@ javadoc {
links = [
"http://docs.oracle.com/javase/6/docs/api/",
"http://docs.spring.io/spring/docs/current/javadoc-api/",
"http://docs.spring.io/spring-data-gemfire/docs/current/api/",
"http://docs.spring.io/spring-data/commons/docs/current/api/index.html?index-all.html",
"http://gemfire.docs.pivotal.io/docs-gemfire/latest/javadocs/japi/",
"http://logging.apache.org/log4j/1.2/apidocs/",
]

View File

@@ -19,9 +19,9 @@ can be created in _Spring (Data GemFire)_ XML config like so...
Additionally, Apache Lucene allows the specification of
http://lucene.apache.org/core/6_5_0/core/org/apache/lucene/analysis/Analyzer.html[Analyzers] per field
and can be configured like so...
and can be configured using...
[source.xml]
[source,xml]
----
<gfe:lucene-index id="IndexTwo" lucene-service-ref="luceneService" region-path="/AnotherExample">
<gfe:field-analyzers>
@@ -37,10 +37,10 @@ and can be configured like so...
</gfe:lucene-index>
----
Of course, the `Map` can be specified at top-level bean definitions and referenced using the `ref` attribute
on the `<gfe:field-analyzers>` element like this, `<gfe-field-analyzers ref="refToTopLevelMapBeanDefinition"/>`.
Of course, the `Map` can be specified as a top-level bean definition and referenced using the `ref` attribute
on the nested `<gfe:field-analyzers>` element like this, `<gfe-field-analyzers ref="refToTopLevelMapBeanDefinition"/>`.
Alternatively, a `LuceneIndex` can be declared in _Spring_ Java config, inside a `@Configuration` class like so...
Alternatively, a `LuceneIndex` can be declared in _Spring_ Java config, inside a `@Configuration` class with...
[source,java]
----
@@ -73,12 +73,13 @@ be created on a Geode `PARTITION` Region. Second, all `LuceneIndexes` must be c
the `LuceneIndex` is applied.
It is possible that these Apache Geode restrictions will not apply in a future release which is why
the SDG `LuceneIndexFactoryBean` can take a reference to the Region directly rather than just the Region path,
which is more ideal. For instance, it is reasonable to assume that some users may want to define a `LuceneIndex`
on an already existing Region with data at a later point in the application lifecycle and as requirements demand.
Where possible, SDG strives to stick to strongly-typed objects and classes.
the SDG `LuceneIndexFactoryBean` API takes a reference to the Region directly as well, rather than just the Region path.
Now that we have a `LuceneIndex` we can perform Lucene based data access operations, such as queries and so on.
This is more ideal if think about the case in which users may want to define a `LuceneIndex` on an existing Region
with data at a later point during the application's lifecycle and as requirements demand. Where possible, SDG strives
to stick to strongly-typed objects.
Now that we have a `LuceneIndex` we can perform Lucene based data access operations, such as queries.
#### Lucene Template Data Accessors
@@ -114,15 +115,17 @@ public interface LuceneOperations {
}
----
The operations in the `LuceneOperations` interface match the operations provided by the Apache Geode
http://geode.apache.org/releases/latest/javadoc/org/apache/geode/cache/lucene/LuceneQuery.html[LuceneQuery] interface,
however SDG has the added value of translating proprietary Geode or Lucene `Exceptions` into _Spring's_ highly
NOTE: The `[, int resultLimit]` indicates that the `resultLimit` parameter is optional.
The operations in the `LuceneOperations` interface match the operations provided by the Apache Geode's
http://geode.apache.org/releases/latest/javadoc/org/apache/geode/cache/lucene/LuceneQuery.html[LuceneQuery] interface.
However, SDG has the added value of translating proprietary Geode or Lucene `Exceptions` into _Spring's_ highly
consistent and expressive DAO
http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#dao-exceptions[Exception Hierarchy],
particularly as many modern data access operations involve more than one store or repository.
particularly as many modern data access operations involve more than single store or repository.
Additionally, SDG's `LuceneOperations` interface can shield your application from interface breaking changes
introduced by the underlying Apache Geode or Apache Lucene APIs when they do and will change.
introduced by the underlying Apache Geode or Apache Lucene APIs when they do and will occur.
However, it would be remorse to only offer a Lucene Data Access Object that only uses Apache Geode and Apache Lucene
data types (e.g. Geode's `LuceneResultStruct`), therefore SDG gives you the `ProjectingLuceneOperations` interface
@@ -143,7 +146,7 @@ public interface ProjectingLuceneOperations {
----
The `ProjectingLuceneOperations` interface primarily uses application domain object types to work with
your application data. The `query` method variants accept a "projection type" and the template applies
your application data. The `query` method variants accept a projection type and the template applies
the query results to instances of the given projection type using the _Spring Data Commons_
Projection infrastructure.
@@ -172,7 +175,7 @@ class Person {
}
----
Additionally, I might have a single interface to represent people as Customers depending on my application view...
Additionally, I might have a single interface to represent people as `Customers` depending on my application view...
[source,java]
----
@@ -205,7 +208,7 @@ Then it is a simple matter to query for people as either `Person` objects...
List<Person> people = luceneTemplate.query("lastName: D*", "lastName", Person.class);
----
Or as a page of type `Customer`...
Or as a `Page` of type `Customer`...
[source,java]
----
@@ -222,19 +225,19 @@ List<Customer> firstPage = customers.getContent();
Conveniently, the _Spring Data Commons_ `Page` interface implements `java.lang.Iterable<T>` too making it very easy
to iterate over the content as well.
The only restriction to the _Spring Data Commons_ Projection infrastructure is that the "projection type"
The only restriction to the _Spring Data Commons_ Projection infrastructure is that the projection type
must be an interface. However, it is possible to extend the provided, out-of-the-box (OOTB)
SDC Projection infrastructure and provide a "custom"
SDC Projection infrastructure and provide a custom
http://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/projection/ProjectionFactory.html[ProjectionFactory]
that uses https://github.com/cglib/cglib[CGLIB] to generate proxy classes as the projected entity.
The "custom" `ProjectionFactory` can then be set on the template using `setProjectionFactory(:ProjectionFactory)`.
A custom `ProjectionFactory` can be set on a Lucene template using `setProjectionFactory(:ProjectionFactory)`.
#### Annotation configuration support
Finally, _Spring Data Geode_ provides Annotation configuration support for `LuceneIndexes`. Eventually, the SDG Lucene
support will find its way into the Repository infrastructure extension for Apache Geode so that Lucene queries
can be expressed as methods on an application Repository interface, much like the
support will find its way into the _Repository_ infrastructure extension for Apache Geode so that Lucene queries
can be expressed as methods on an application `Repository` interface, much like the
http://docs.spring.io/spring-data-gemfire/docs/current/reference/html/#gemfire-repositories.executing-queries[OQL support]
today.

View File

@@ -1,5 +1,5 @@
[[bootstrap:snapshot]]
= Using the GemFire Snapshot Service
= Using the Snapshot Service
Spring Data GemFire supports `Cache` and `Region` snapshots using http://gemfire81.docs.pivotal.io/latest/userguide/index.html#managing/cache_snapshots/chapter_overview.html[GemFire's Snapshot Service].
The out-of-the-box Snapshot Service support offers several convenient features to simply the use of GemFire's http://data-docs-samples.cfapps.io/docs-gemfire/latest/javadocs/japi/com/gemstone/gemfire/cache/snapshot/CacheSnapshotService.html[Cache]

View File

@@ -197,7 +197,7 @@ public class Interest<K> implements InitializingBean {
* using {@link Pattern#compile(String)}, then the {@code key} is considered a Regular Expression
* and interest will be registered using {@link org.apache.geode.cache.Region#registerInterestRegex(String)}.
*
* @param key {@link String} to evaluate.
* @param value {@link String} to evaluate.
* @return a boolean value indicating whether the given {@link String} {@code value} is a Regular Expression.
* @see #containsNonAlphaNumericWhitespace(String)
* @see java.util.regex.Pattern#compile(String)

View File

@@ -34,6 +34,7 @@ import org.springframework.data.gemfire.config.xml.GemfireConstants;
* {@link Annotation} defining the Client {@link Region} in which the application persistent entity will be stored.
*
* @author John Blum
* @see org.springframework.data.gemfire.config.annotation.EnableEntityDefinedRegions
* @see org.springframework.data.gemfire.config.annotation.EntityDefinedRegionsConfiguration
* @see org.springframework.data.gemfire.mapping.annotation.Region
* @since 1.9.0
@@ -91,8 +92,6 @@ public @interface ClientRegion {
* Determines whether an entity annotated with this Region annotation will ignore any existing Region definition
* identified by the given {@link #name()} for this entity.
*
* Overrides the global, {@link EnableEntityDefinedRegions#ignoreIfExists()} setting.
*
* Defaults to {@literal true}.
*/
boolean ignoreIfExists() default true;

View File

@@ -26,13 +26,13 @@ import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.core.annotation.AliasFor;
import org.springframework.data.gemfire.config.annotation.EnableEntityDefinedRegions;
/**
* {@link Annotation} defining the Local {@link Region} in which the application persistent entity will be stored.
*
* @author John Blum
* @see org.springframework.data.gemfire.config.annotation.EnableEntityDefinedRegions
* @see org.springframework.data.gemfire.config.annotation.EntityDefinedRegionsConfiguration
* @see org.springframework.data.gemfire.mapping.annotation.Region
* @since 1.9.0
*/
@@ -89,8 +89,6 @@ public @interface LocalRegion {
* Determines whether an entity annotated with this Region annotation will ignore any existing Region definition
* identified by the given {@link #name()} for this entity.
*
* Overrides the global, {@link EnableEntityDefinedRegions#ignoreIfExists()} setting.
*
* Defaults to {@literal true}.
*/
boolean ignoreIfExists() default true;

View File

@@ -31,6 +31,7 @@ import org.springframework.core.annotation.AliasFor;
* {@link Annotation} defining the Partition {@link Region} in which the application persistent entity will be stored.
*
* @author John Blum
* @see org.springframework.data.gemfire.config.annotation.EnableEntityDefinedRegions
* @see org.springframework.data.gemfire.config.annotation.EntityDefinedRegionsConfiguration
* @see org.springframework.data.gemfire.mapping.annotation.Region
* @since 1.9.0
@@ -110,8 +111,6 @@ public @interface PartitionRegion {
* Determines whether an entity annotated with this Region annotation will ignore any existing Region definition
* identified by the given {@link #name()} for this entity.
*
* Overrides the global, {@link EnableEntityDefinedRegions#ignoreIfExists()} setting.
*
* Defaults to {@literal true}.
*/
boolean ignoreIfExists() default true;

View File

@@ -75,8 +75,6 @@ public @interface Region {
* Determines whether an entity annotated with this Region annotation will ignore any existing Region definition
* identified by the given {@link #name()} for this entity.
*
* Overrides the global, {@link EnableEntityDefinedRegions#ignoreIfExists()} setting.
*
* Defaults to {@literal true}.
*/
boolean ignoreIfExists() default true;

View File

@@ -32,6 +32,7 @@ import org.springframework.data.gemfire.ScopeType;
* {@link Annotation} defining the Replicate {@link Region} in which the application persistent entity will be stored.
*
* @author John Blum
* @see org.springframework.data.gemfire.config.annotation.EnableEntityDefinedRegions
* @see org.springframework.data.gemfire.config.annotation.EntityDefinedRegionsConfiguration
* @see org.springframework.data.gemfire.mapping.annotation.Region
* @since 1.9.0
@@ -89,8 +90,6 @@ public @interface ReplicateRegion {
* Determines whether an entity annotated with this Region annotation will ignore any existing Region definition
* identified by the given {@link #name()} for this entity.
*
* Overrides the global, {@link EnableEntityDefinedRegions#ignoreIfExists()} setting.
*
* Defaults to {@literal true}.
*/
boolean ignoreIfExists() default true;

View File

@@ -134,7 +134,7 @@ public abstract class LuceneAccessor extends LuceneOperationsSupport implements
/**
* Creates an instance of the {@link LuceneQueryFactory} to create and execute {@link LuceneQuery Lucene queries}.
*
* @param projectionFields {@link String[]} containing the fields of the object to project.
* @param projectionFields {@link String} array containing the fields of the object to project.
* @return an instance of the {@link LuceneQueryFactory} to create and execute {@link LuceneQuery Lucene queries}.
* @see org.apache.geode.cache.lucene.LuceneQueryFactory
* @see #createLuceneQueryFactory(int, int, String...)
@@ -147,7 +147,7 @@ public abstract class LuceneAccessor extends LuceneOperationsSupport implements
* Creates an instance of the {@link LuceneQueryFactory} to create and execute {@link LuceneQuery Lucene queries}.
*
* @param resultLimit limit to the number of results returned by the query.
* @param projectionFields {@link String[]} containing the fields of the object to project.
* @param projectionFields {@link String} array containing the fields of the object to project.
* @return an instance of the {@link LuceneQueryFactory} to create and execute {@link LuceneQuery Lucene queries}.
* @see org.apache.geode.cache.lucene.LuceneQueryFactory
* @see #createLuceneQueryFactory(int, int, String...)
@@ -161,7 +161,7 @@ public abstract class LuceneAccessor extends LuceneOperationsSupport implements
*
* @param resultLimit limit to the number of results returned by the query.
* @param pageSize number of results appearing on a single page.
* @param projectionFields {@link String[]} containing the fields of the object to project.
* @param projectionFields {@link String} array containing the fields of the object to project.
* @return an instance of the {@link LuceneQueryFactory} to create and execute {@link LuceneQuery Lucene queries}.
* @see #createLuceneQueryFactory()
*/