merged changes for SGF-93. Updated documentation

This commit is contained in:
David Turanski
2013-02-12 12:56:56 -05:00
parent 7bce8b649c
commit b8af5931a5
27 changed files with 151 additions and 74 deletions

View File

@@ -68,7 +68,8 @@ dependencies {
}
~~~~~
Latest GA release is _1.2.1.RELEASE_
Latest GA release is _1.2.1.RELEASE_
Latest Milestone release is _1.3.0.M1_
Latest nightly build is _1.3.0.BUILD-SNAPSHOT_

View File

@@ -3,8 +3,7 @@ buildscript {
maven { url 'http://repo.springsource.org/plugins-release' }
}
dependencies {
// classpath 'org.springframework.build.gradle:bundlor-plugin:0.1.2'
classpath 'org.springframework.build.gradle:docbook-reference-plugin:0.1.5'
classpath 'org.springframework.build.gradle:docbook-reference-plugin:0.2.4'
}
}
@@ -103,11 +102,7 @@ javadoc {
title = "${rootProject.description} ${version} API"
}
/*
bundlor {
manifestTemplate = file("${projectDir}/template.mf").text
}
*/
jar {
manifest.attributes['Implementation-Title'] = 'spring-data-gemfire'
manifest.attributes['Implementation-Version'] = project.version

View File

@@ -4,7 +4,7 @@
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xlink="http://www.w3.org/1999/xlink">
<bookinfo>
<title>Spring Data Gemfire Reference Guide</title>
<title>Spring Data GemFire Reference Guide</title>
<releaseinfo>${version}</releaseinfo>
<titleabbrev>Spring Data GemFire ${version}</titleabbrev>
<productname>Spring Data GemFire</productname>

View File

@@ -16,6 +16,26 @@
project.
</note>
<section id="new-in-1-3-0">
<title>New in the 1.3.0.Release</title>
<itemizedlist>
<listitem>
<para>Annotation support for GemFire functions. It is now possible to
declare and register functions written as POJOs with annotations. In
addition function executions are defined as annotated interfaces,
similar to the way Spring Data repositories work. See <xref
linkend="function-annotations"/></para>
</listitem>
<listitem>
<para>A <tag>&lt;datasource&gt;</tag> tag has been added to the
<emphasis>gfe-data</emphasis> XML namespace. This simplifies
establishing a basic client <link linkend="data-access:datasource">connection</link> to a GemFire data grid.</para>
</listitem>
</itemizedlist>
</section>
<section id="new-in-1-2-1">
<title>New in the 1.2.1 Release</title>
@@ -26,20 +46,6 @@
</itemizedlist>
</section>
<section id="new-in-1-3-0">
<title>New in the 1.3.0.Release</title>
<itemizedlist>
<listitem>
<para>Annotation support for GemFire functions. It is now possible to declare and register functions written as POJOs with annotations.
In addition function executions are defined as annotated interfaces, similar to the way Spring Data repositories work. See <xref
linkend="gemfire-function-annotations"/></para>
</listitem>
<listitem>
<para>A <emphasis>datasource</emphasis> tag has been added to the <emphasis>gfe-data</emphasis> XML namespace. This simplifies establishing
a basic client connection to a Cache cluster.</para>
</listitem>
</itemizedlist>
</section>
<section id="new-in-1-2-0">
<title>New in the 1.2.0 Release</title>

View File

@@ -24,7 +24,7 @@
<title>Advantages of using Spring over GemFire
<literal>cache.xml</literal></title>
<para xmlns="">As of release 1.2.0, Spring Data Gemfire's XML namespace
<para xmlns="">As of release 1.2.0, Spring Data GemFire's XML namespace
supports full configuration of the data grid. In fact, the Spring
namespace is considered the preferred way to configure GemFire. GemFire
will continue to support <filename>cache.xml</filename> for legacy
@@ -56,7 +56,7 @@
<section id="bootstrap:namespace">
<title>Using the Core Spring Data GemFire Namespace</title>
<para>To simplify configuration, Spring Data Gemfire provides a dedicated
<para>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 Springs standard &lt;bean&gt;
definition. However, as of Spring Data GemFire 1.2.0, all bean properties
@@ -163,6 +163,8 @@
<xi:include href="cache.xml"/>
<xi:include href="data-access.xml"/>
<xi:include href="region.xml"/>
<section id="bootstrap:indicies">

View File

@@ -294,7 +294,7 @@
to use a different pool.</para>
<para>Pools can be defined through the <literal>pool</literal> element;
The client side <literal>pool</literal>s can be used to configure
The client side <literal>pool</literal> can be used to configure
connectivity to the server for individual entities or for the entire
cache. For example, to customize the default pool used by
<literal>client-cache</literal>, one needs to define a pool and wire it to
@@ -309,6 +309,10 @@
&lt;/beans&gt;</programlisting>
</section>
<para>The &lt;client-cache&gt; tag also includes a <literal>ready-for-events</literal>
attribute. If set to <literal>true</literal>, the client cache initialization will include
<ulink url="http://www.vmware.com/support/developer/vfabric-gemfire/700-api/com/gemstone/gemfire/cache/client/ClientCache.html#readyForEvents()">ClientCache.readyForEvents()</ulink>. </para>
<para>Client side configuration is covered in more detail in <xref
linkend="bootstrap:region:client"/>.</para>
</section>

View File

@@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<section id="bootstrap:client" xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
<title>Cache Client Configuration</title>
</section>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<section id="data-access" version="5.0" xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:m="http://www.w3.org/1998/Math/MathML"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:db="http://docbook.org/ns/docbook">
<title>Using the GemFire Data Access Namespace</title>
<para>In addition to the core <literal>gfe</literal> namespace, Spring Data
GemFire provides a <literal>gfe-data</literal> namespace intended primarily
to simplify the development of GemFire client applications. This namespace
currently supports for GemFire <link
linkend="gemfire-repositories">repositories</link> and function <link
linkend="function-execution">execution</link> and a
<tag>&lt;datasource&gt;</tag> tag that offers a convenient way to connect to
the data grid. </para>
<section id="data-access:datasource">
<title>An Easy Way to Connect to GemFire </title>
<para>For many applications, A basic connection to a GemFire grid, using
default values is sufficient. Spring Data GemFire's &lt;datasource&gt; tag
provides a simple way to access data. The data source creates a client
cache and connection pool. In addition, it will query the member servers
for all existing root regions and create a proxy (empty) client region for
each one. </para>
<programlisting language="xml">&lt;gfe-data:datasource&gt;
&lt;locator host="somehost" port="1234"/&gt;
&lt;/gfe-data:datasource&gt;</programlisting>
<para>The datasource tag is synactically similar to <tag>&lt;gfe:pool&gt;.
It may be configured with one or more locator or server tags to connect to
an existing data grid. Additionally, all attributes available to configure
a pool are supported. This configuration will automatically create
ClientRegion beans for each region defined on members connected to the
locator, so they may be seamlessly referenced by Spring Data mapping
annotations, GemfireTemplate, and wired into application
classes.</tag></para>
<para><tag>Of course, you can explicitly configure client regions. For
example, if you want to cache data in local memory: </tag><programlisting
language="xml">&lt;gfe-data:datasource&gt;
&lt;locator host="somehost" port="1234"/&gt;
&lt;/gfe-data:datasource&gt;
&lt;gfe:client-region id="Customer" shortcut="CACHING_PROXY"/&gt;</programlisting></para>
</section>
</section>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<chapter>
<chapter id="function-annotations">
<title>Annotation Support for Function Execution</title>
<section>
@@ -9,7 +9,7 @@
<para>Spring Data GemFire 1.3.0 introduces annotation support to simplify
working with <ulink
url="?http://pubs.vmware.com/vfabricNoSuite/index.jsp?topic=/com.vmware.vfabric.gemfire.7.0/developing/function_exec/chapter_overview.html??">GemFire
url="http://pubs.vmware.com/vfabricNoSuite/index.jsp?topic=/com.vmware.vfabric.gemfire.7.0/developing/function_exec/chapter_overview.html??">GemFire
function execution</ulink>. The GemFire API provides classes to implement
and register <ulink
url="https://www.vmware.com/support/developer/vfabric-gemfire/700-api/com/gemstone/gemfire/cache/execute/Function.html">Functions</ulink>
@@ -69,7 +69,7 @@
<section>
<title>Implementing a Function</title>
<para>Using Gemfire APIs, the FunctionContext provides a runtime
<para>Using GemFire APIs, the FunctionContext provides a runtime
invocation context including the client's calling arguments and a
ResultSender interface to send results back to the client. Additionally,
if the function is executed on a Region, the FunctionContext is an
@@ -103,7 +103,7 @@
signature similar to the following. Let's ignore the return type for the
moment:</para>
<para><programlisting>public Object method1(String s1, int i2) {...}
<para><programlisting language="java">public Object method1(String s1, int i2) {...}
public Object method2(Map&lt;?,?&gt; data, String s1, int i2) {...}
public Object method3(String s1, Map&lt;?,?&gt;data, int i2) {...}
public Object method4(String s1, Map&lt;?,?&gt; data, Set&lt;?&gt; filter, int i2) {...}
@@ -127,7 +127,7 @@ public void method6(FunctionContest fc);</programlisting>The general rule is
<para>The following example illustrates how annotations are used to
expose a POJO as a GemFire function:</para>
<para><programlisting>@Component
<para><programlisting language="java">@Component
public class MyFunctions {
@GemfireFunction
public String function1(String s1, @RegionData Map&lt;?,?&gt; data, int i2) { ... }
@@ -209,7 +209,7 @@ public class MyFunctions {
</section>
</section>
<section>
<section id="function-execution">
<title>Executing a Function</title>
<para>A process invoking a remote function needs to provide calling
@@ -289,7 +289,7 @@ public interface FunctionExecution {
simply wire your interface into a bean that will invoke the function:
</para>
<programlisting>@Component
<programlisting language="java">@Component
public class MyApp {
@Autowired FunctionExecution functionExecution;
@@ -304,7 +304,7 @@ public interface FunctionExecution {
example GemfireOnRegionFunctionTemplate creates an onRegion execution. For
example:</para>
<para><programlisting>Set&lt;?,?&gt; myFilter = getFilter();
<para><programlisting language="java">Set&lt;?,?&gt; myFilter = getFilter();
Region&lt;?,?&gt; myRegion = getRegion();
GemfireOnRegionOperations template = new GemfireOnRegionFunctionTemplate(myRegion);
String result = template.executeAndExtract("someFunction",myFilter,"hello","world",1234);</programlisting>Internally,

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<section version="5.0" id="bootstrap:function"
<section id="bootstrap:function" version="5.0"
xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude"
@@ -9,8 +9,11 @@
xmlns:db="http://docbook.org/ns/docbook">
<title>Configuring GemFire's Function Service</title>
<para>As of Release 1.2.0, Spring Data GemFire provides namespace support
for registering GemFire <interfacename>Function</interfacename>s for remote
<para>As of Release 1.3.0, Spring Data GemFire provides <link linkend="function-annotations">annotation</link> support
for implementing and registering functions. Spring Data GemFire also provides
namespace support for registering GemFire <ulink
url="https://www.vmware.com/support/developer/vfabric-gemfire/700-api/com/gemstone/gemfire/cache/execute/Function.html">Functions</ulink>
for remote
function execution. Please refer to the GemFire documentation for more
information on the function execution framework. Functions are declared as
Spring beans and must implement the

View File

@@ -1,18 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude" xml:id="samples">
<chapter version="5.0" xml:id="samples" xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:ns5="http://www.w3.org/2000/svg"
xmlns:ns4="http://www.w3.org/1999/xhtml"
xmlns:ns3="http://www.w3.org/1998/Math/MathML"
xmlns:ns="http://docbook.org/ns/docbook">
<title>Sample Applications</title>
<para>The Spring Data GemFire project 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
<para><note>
Sample applications are now maintained in the
<ulink
url="https://github.com/SpringSource/spring-gemfire-examples">Spring
Data GemFire Examples</ulink>
repository.
</note></para>
<para>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
<emphasis>shell</emphasis> 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.</para>
<para>
Additional sample applications may be found in the <ulink url="https://github.com/SpringSource/spring-gemfire-examples">Spring Data GemFire Examples</ulink> repository.
</para>
<para>The sample is bundled with the distribution and is Maven-based. One
can easily import them into any Maven-aware IDE (such as SpringSource <ulink
@@ -30,12 +42,15 @@
<note>
<title>Running under Linux</title>
<para>If you experience networking problems when starting GemFire or the samples,
try adding the following system property <literal>java.net.preferIPv4Stack=true</literal>
to the command line (insert <literal>-Djava.net.preferIPv4Stack=true</literal>).
For an alternative (global) fix especially on Ubuntu see
this <ulink url="https://jira.springsource.org/browse/SGF-28">link</ulink></para>
<para>If you experience networking problems when starting GemFire or the
samples, try adding the following system property
<literal>java.net.preferIPv4Stack=true</literal> to the command line
(insert <literal>-Djava.net.preferIPv4Stack=true</literal>). For an
alternative (global) fix especially on Ubuntu see this <ulink
url="https://jira.springsource.org/browse/SGF-28">link</ulink></para>
</note>
<section id="samples:hello-world:start-stop">
<title>Starting and stopping the sample</title>
@@ -133,4 +148,4 @@ Hello World!
their dependency and life-cycle callbacks.</para>
</section>
</section>
</chapter>
</chapter>

View File

@@ -27,9 +27,9 @@ import com.gemstone.gemfire.cache.execute.ResultSender;
* Sends collection results using a {@link ResultSender} in chunks determined by batchSize
*
* @author David Turanski
*
* @since 1.3.0
*/
public class BatchingResultSender {
class BatchingResultSender {
private final int batchSize;
private ResultSender<Object> resultSender;

View File

@@ -16,9 +16,10 @@ import com.gemstone.gemfire.cache.execute.FunctionContext;
/**
* @author David Turanski
* @since 1.3.0
*
*/
public class DefaultFunctionArgumentResolver implements FunctionArgumentResolver {
class DefaultFunctionArgumentResolver implements FunctionArgumentResolver {
/* (non-Javadoc)
* @see org.springframework.data.gemfire.function.FunctionArgumentResolver#resolveFunctionArguments(com.gemstone.gemfire.cache.execute.FunctionContext)

View File

@@ -17,8 +17,9 @@ import com.gemstone.gemfire.cache.execute.FunctionContext;
/**
* Strategy Interface for resolving function invocation arguments, given a {@link FunctionContext}
* @author David Turanski
* @since 1.3.0
*
*/
public interface FunctionArgumentResolver {
public Object[] resolveFunctionArguments(FunctionContext functionContext);
interface FunctionArgumentResolver {
Object[] resolveFunctionArguments(FunctionContext functionContext);
}

View File

@@ -32,9 +32,10 @@ import com.gemstone.gemfire.cache.partition.PartitionRegionHelper;
/**
* @author David Turanski
* @since 1.3.0
*
*/
public class FunctionContextInjectingArgumentResolver extends DefaultFunctionArgumentResolver {
class FunctionContextInjectingArgumentResolver extends DefaultFunctionArgumentResolver {
private static Log logger = LogFactory.getLog(FunctionContextInjectingArgumentResolver.class);

View File

@@ -31,7 +31,7 @@ import org.springframework.util.StringUtils;
* @author David Turanski
*
*/
public class FunctionExecutionBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {
class FunctionExecutionBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {
/* (non-Javadoc)
* @see org.springframework.context.annotation.ImportBeanDefinitionRegistrar#registerBeanDefinitions(org.springframework.core.type.AnnotationMetadata, org.springframework.beans.factory.support.BeanDefinitionRegistry)

View File

@@ -16,10 +16,11 @@ import com.gemstone.gemfire.cache.execute.Execution;
import com.gemstone.gemfire.cache.execute.FunctionService;
/**
* A FunctionExecution wrapper for onMembers execution
* @author David Turanski
*
* @since 1.3.0
*/
public class AllMembersFunctionExecution extends AbstractFunctionExecution {
class AllMembersFunctionExecution extends AbstractFunctionExecution {
@Override
protected Execution getExecution() {

View File

@@ -19,7 +19,7 @@ import com.gemstone.gemfire.cache.execute.FunctionService;
* @author David Turanski
*
*/
public class DefaultMemberFunctionExecution extends AbstractFunctionExecution {
class DefaultMemberFunctionExecution extends AbstractFunctionExecution {
@Override
protected Execution getExecution() {

View File

@@ -22,7 +22,7 @@ import com.gemstone.gemfire.distributed.DistributedMember;
* @author David Turanski
*
*/
public class DistributedMemberFunctionExecution extends AbstractFunctionExecution {
class DistributedMemberFunctionExecution extends AbstractFunctionExecution {
private final DistributedMember distributedMember;

View File

@@ -22,7 +22,7 @@ import com.gemstone.gemfire.distributed.DistributedMember;
* @author David Turanski
*
*/
public class DistributedMembersFunctionExecution extends AbstractFunctionExecution {
class DistributedMembersFunctionExecution extends AbstractFunctionExecution {
private final Set<DistributedMember> distributedMembers;
/**

View File

@@ -21,7 +21,7 @@ import com.gemstone.gemfire.cache.execute.FunctionService;
* @author David Turanski
*
*/
public class GroupMemberFunctionExecution extends AbstractFunctionExecution {
class GroupMemberFunctionExecution extends AbstractFunctionExecution {
private final String groups[];

View File

@@ -21,7 +21,7 @@ import com.gemstone.gemfire.cache.execute.FunctionService;
* @author David Turanski
*
*/
public class GroupMembersFunctionExecution extends AbstractFunctionExecution {
class GroupMembersFunctionExecution extends AbstractFunctionExecution {
private final String groups[];

View File

@@ -25,7 +25,7 @@ import com.gemstone.gemfire.cache.execute.FunctionService;
* @author David Turanski
*
*/
public class PoolServerFunctionExecution extends AbstractFunctionExecution implements InitializingBean {
class PoolServerFunctionExecution extends AbstractFunctionExecution implements InitializingBean {
private Pool pool;

View File

@@ -23,7 +23,7 @@ import com.gemstone.gemfire.cache.execute.FunctionService;
* @author David Turanski
*
*/
public class PoolServersFunctionExecution extends AbstractFunctionExecution {
class PoolServersFunctionExecution extends AbstractFunctionExecution {
private final Pool pool;

View File

@@ -25,7 +25,7 @@ import com.gemstone.gemfire.cache.execute.FunctionService;
* @author David Turanski
*
*/
public class RegionFunctionExecution extends AbstractFunctionExecution {
class RegionFunctionExecution extends AbstractFunctionExecution {
private final Region<?, ?> region;

View File

@@ -23,7 +23,7 @@ import com.gemstone.gemfire.cache.execute.FunctionService;
* @author David Turanski
*
*/
public class ServerFunctionExecution extends AbstractFunctionExecution {
class ServerFunctionExecution extends AbstractFunctionExecution {
private RegionService regionService;

View File

@@ -23,7 +23,7 @@ import com.gemstone.gemfire.cache.execute.FunctionService;
* @author David Turanski
*
*/
public class ServersFunctionExecution extends AbstractFunctionExecution {
class ServersFunctionExecution extends AbstractFunctionExecution {
private final RegionService regionService;