This is an automated email from the ASF dual-hosted git repository.
bbender pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode-native.git
The following commit(s) were added to refs/heads/develop by this push:
new 74dd4f5 GEODE-8210: Geode-native C++ user manual - update
serialization description (#612)
74dd4f5 is described below
commit 74dd4f52e0ea30f046f6a8f4e3643ba43955d21e
Author: Dave Barnes <[email protected]>
AuthorDate: Fri Jun 5 09:57:05 2020 -0700
GEODE-8210: Geode-native C++ user manual - update serialization description
(#612)
* C++ user guide - update serialization description
* reorganize source files
---
.../source/subnavs/geode-nc-nav.erb | 15 +-
.../source/subnavs/geode-nc-nav.erb | 2 +-
.../{ => archive}/data-as-blob.html.md.erb | 0
...enting-pdxserializable-custom-class.html.md.erb | 43 +++++
.../{ => archive}/object-graphs.html.md.erb | 0
.../pdx-ignore-unread-fields.html.md.erb | 0
.../{ => archive}/pdx-serialization.html.md.erb | 2 +-
.../pdx-with-delta-propagation.html.md.erb | 0
.../pdxserializable-example.html.md.erb | 0
.../performing-ops-with-pdx-object.html.md.erb | 0
.../serialization-options.html.md.erb | 0
.../serialization-overview.html.md.erb | 0
.../serialization-using-serializable.html.md.erb | 0
.../using-enum-type-with-pdx.html.md.erb | 0
.../{ => archive}/using-pdxinstance.html.md.erb | 0
.../using-pdxinstancefactory.html.md.erb | 0
.../using-pdxserialization.html.md.erb | 2 +-
.../{ => archive}/using-pdxserializer.html.md.erb | 0
.../cpp-pdx-serialization.html.md.erb} | 31 ++--
.../pdx-serializable-examples.html.md.erb} | 50 +-----
.../pdxserializable-interface.html.md.erb | 6 +-
.../serialization/data-serialization.html.md.erb | 184 +--------------------
.../dotnet-pdx-serialization.html.md.erb | 2 +-
.../pdx-serializable-examples.html.md.erb | 11 +-
24 files changed, 95 insertions(+), 253 deletions(-)
diff --git
a/docs/geode-native-book-cpp/master_middleman/source/subnavs/geode-nc-nav.erb
b/docs/geode-native-book-cpp/master_middleman/source/subnavs/geode-nc-nav.erb
index 1968220..5c800d8 100644
---
a/docs/geode-native-book-cpp/master_middleman/source/subnavs/geode-nc-nav.erb
+++
b/docs/geode-native-book-cpp/master_middleman/source/subnavs/geode-nc-nav.erb
@@ -65,8 +65,21 @@ limitations under the License.
</ul>
</li>
- <li>
+ <li class="has_submenu">
<a
href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/serialization/data-serialization.html">Serializing
Data</a>
+ <ul>
+ <li class="has_submenu">
+ <a
href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/serialization/cpp-serialization/cpp-pdx-serialization.html">Geode
PDX Serialization</a>
+ <ul>
+ <li>
+ <a
href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/serialization/cpp-serialization/pdxserializable-interface.html">Using
the PdxSerializable Abstract Class</a>
+ </li>
+ <li>
+ <a
href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/serialization/cpp-serialization/pdx-serializable-examples.html">PdxSerializable
Example</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
</li>
<li>
diff --git
a/docs/geode-native-book-dotnet/master_middleman/source/subnavs/geode-nc-nav.erb
b/docs/geode-native-book-dotnet/master_middleman/source/subnavs/geode-nc-nav.erb
index 2db5b66..d14cb26 100644
---
a/docs/geode-native-book-dotnet/master_middleman/source/subnavs/geode-nc-nav.erb
+++
b/docs/geode-native-book-dotnet/master_middleman/source/subnavs/geode-nc-nav.erb
@@ -78,7 +78,7 @@ limitations under the License.
<a
href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/serialization/dotnet-serialization/serialize-using-ipdxserializable.html">Using
the IPdxSerializable Interface</a>
</li>
<li>
- <a
href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/serialization/dotnet-serialization/pdx-serializable-examples.html">IPdxSerializable
Examples</a>
+ <a
href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/serialization/dotnet-serialization/pdx-serializable-examples.html">IPdxSerializable
Example</a>
</li>
</ul>
</li>
diff --git
a/docs/geode-native-docs-cpp/serialization/cpp-serialization/data-as-blob.html.md.erb
b/docs/geode-native-docs-cpp/serialization/cpp-serialization/archive/data-as-blob.html.md.erb
similarity index 100%
rename from
docs/geode-native-docs-cpp/serialization/cpp-serialization/data-as-blob.html.md.erb
rename to
docs/geode-native-docs-cpp/serialization/cpp-serialization/archive/data-as-blob.html.md.erb
diff --git
a/docs/geode-native-docs-cpp/serialization/cpp-serialization/archive/implementing-pdxserializable-custom-class.html.md.erb
b/docs/geode-native-docs-cpp/serialization/cpp-serialization/archive/implementing-pdxserializable-custom-class.html.md.erb
new file mode 100644
index 0000000..47897f0
--- /dev/null
+++
b/docs/geode-native-docs-cpp/serialization/cpp-serialization/archive/implementing-pdxserializable-custom-class.html.md.erb
@@ -0,0 +1,43 @@
+---
+title: Implementing a PdxSerializable Custom Class
+---
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+Pdx serialization provides custom serialization to an individual class. Fields
within an object can be serialized separately from the rest of the class.
+
+The type of serialization and its implementation can be specified entirely in
the client
+application, with no need to create corresponding code on the
<%=product_name%> server.
+
+<a id="setup_pdxsbl_class"></a>
+### Setup
+
+Pdx serialization provides custom serialization to an individual class. Fields
within an object can be serialized separately from the rest of the class.
+
+Setting up a custom class for PdxSerializable treatment requires some
preparatory steps:
+
+- The custom class must inherit from the C++ PdxSerializable interface.
+
+- You must provide serialization instructions for objects of the custom class.
Specifically:
+
+ - You must implement the `toData()` and `fromData()` methods.
+ - You must provide a "factory method" that returns an instance of the
custom object.
+
+- Your application must register your custom class with the cache, which takes
care of informing the server of your
+ serialization scheme. With registration, you provide the name of the
"factory method" you created for instantiating
+ objects of the custom class.
diff --git
a/docs/geode-native-docs-cpp/serialization/cpp-serialization/object-graphs.html.md.erb
b/docs/geode-native-docs-cpp/serialization/cpp-serialization/archive/object-graphs.html.md.erb
similarity index 100%
rename from
docs/geode-native-docs-cpp/serialization/cpp-serialization/object-graphs.html.md.erb
rename to
docs/geode-native-docs-cpp/serialization/cpp-serialization/archive/object-graphs.html.md.erb
diff --git
a/docs/geode-native-docs-cpp/serialization/cpp-serialization/pdx-ignore-unread-fields.html.md.erb
b/docs/geode-native-docs-cpp/serialization/cpp-serialization/archive/pdx-ignore-unread-fields.html.md.erb
similarity index 100%
rename from
docs/geode-native-docs-cpp/serialization/cpp-serialization/pdx-ignore-unread-fields.html.md.erb
rename to
docs/geode-native-docs-cpp/serialization/cpp-serialization/archive/pdx-ignore-unread-fields.html.md.erb
diff --git
a/docs/geode-native-docs-cpp/serialization/cpp-serialization/pdx-serialization.html.md.erb
b/docs/geode-native-docs-cpp/serialization/cpp-serialization/archive/pdx-serialization.html.md.erb
similarity index 97%
rename from
docs/geode-native-docs-cpp/serialization/cpp-serialization/pdx-serialization.html.md.erb
rename to
docs/geode-native-docs-cpp/serialization/cpp-serialization/archive/pdx-serialization.html.md.erb
index e39ab50..021cb6b 100644
---
a/docs/geode-native-docs-cpp/serialization/cpp-serialization/pdx-serialization.html.md.erb
+++
b/docs/geode-native-docs-cpp/serialization/cpp-serialization/archive/pdx-serialization.html.md.erb
@@ -28,7 +28,7 @@ domain object or register a `PdxSerializer` for the entire
cache.
You can also set the object preference of the cache to the `PdxInstance` type,
which allows you to access fields of a PDX object without deserializing the
entire object.
-- **[Serialize Using the PdxSerializable
Class](pdxserializable-interface.html)**
+<!-- - **[Serialize Using the PdxSerializable
Class](pdxserializable-interface.html)** -->
Domain classes need to inherit the `PdxSerializable` abstract class to
serialize and de-serialize the object. When you write objects using PDX
serialization, they are distributed to the server tier in PDX serialized form.
diff --git
a/docs/geode-native-docs-cpp/serialization/cpp-serialization/pdx-with-delta-propagation.html.md.erb
b/docs/geode-native-docs-cpp/serialization/cpp-serialization/archive/pdx-with-delta-propagation.html.md.erb
similarity index 100%
rename from
docs/geode-native-docs-cpp/serialization/cpp-serialization/pdx-with-delta-propagation.html.md.erb
rename to
docs/geode-native-docs-cpp/serialization/cpp-serialization/archive/pdx-with-delta-propagation.html.md.erb
diff --git
a/docs/geode-native-docs-cpp/serialization/cpp-serialization/pdxserializable-example.html.md.erb
b/docs/geode-native-docs-cpp/serialization/cpp-serialization/archive/pdxserializable-example.html.md.erb
similarity index 100%
rename from
docs/geode-native-docs-cpp/serialization/cpp-serialization/pdxserializable-example.html.md.erb
rename to
docs/geode-native-docs-cpp/serialization/cpp-serialization/archive/pdxserializable-example.html.md.erb
diff --git
a/docs/geode-native-docs-cpp/serialization/cpp-serialization/performing-ops-with-pdx-object.html.md.erb
b/docs/geode-native-docs-cpp/serialization/cpp-serialization/archive/performing-ops-with-pdx-object.html.md.erb
similarity index 100%
rename from
docs/geode-native-docs-cpp/serialization/cpp-serialization/performing-ops-with-pdx-object.html.md.erb
rename to
docs/geode-native-docs-cpp/serialization/cpp-serialization/archive/performing-ops-with-pdx-object.html.md.erb
diff --git
a/docs/geode-native-docs-cpp/serialization/cpp-serialization/serialization-options.html.md.erb
b/docs/geode-native-docs-cpp/serialization/cpp-serialization/archive/serialization-options.html.md.erb
similarity index 100%
rename from
docs/geode-native-docs-cpp/serialization/cpp-serialization/serialization-options.html.md.erb
rename to
docs/geode-native-docs-cpp/serialization/cpp-serialization/archive/serialization-options.html.md.erb
diff --git
a/docs/geode-native-docs-cpp/serialization/cpp-serialization/serialization-overview.html.md.erb
b/docs/geode-native-docs-cpp/serialization/cpp-serialization/archive/serialization-overview.html.md.erb
similarity index 100%
rename from
docs/geode-native-docs-cpp/serialization/cpp-serialization/serialization-overview.html.md.erb
rename to
docs/geode-native-docs-cpp/serialization/cpp-serialization/archive/serialization-overview.html.md.erb
diff --git
a/docs/geode-native-docs-cpp/serialization/cpp-serialization/serialization-using-serializable.html.md.erb
b/docs/geode-native-docs-cpp/serialization/cpp-serialization/archive/serialization-using-serializable.html.md.erb
similarity index 100%
rename from
docs/geode-native-docs-cpp/serialization/cpp-serialization/serialization-using-serializable.html.md.erb
rename to
docs/geode-native-docs-cpp/serialization/cpp-serialization/archive/serialization-using-serializable.html.md.erb
diff --git
a/docs/geode-native-docs-cpp/serialization/cpp-serialization/using-enum-type-with-pdx.html.md.erb
b/docs/geode-native-docs-cpp/serialization/cpp-serialization/archive/using-enum-type-with-pdx.html.md.erb
similarity index 100%
rename from
docs/geode-native-docs-cpp/serialization/cpp-serialization/using-enum-type-with-pdx.html.md.erb
rename to
docs/geode-native-docs-cpp/serialization/cpp-serialization/archive/using-enum-type-with-pdx.html.md.erb
diff --git
a/docs/geode-native-docs-cpp/serialization/cpp-serialization/using-pdxinstance.html.md.erb
b/docs/geode-native-docs-cpp/serialization/cpp-serialization/archive/using-pdxinstance.html.md.erb
similarity index 100%
rename from
docs/geode-native-docs-cpp/serialization/cpp-serialization/using-pdxinstance.html.md.erb
rename to
docs/geode-native-docs-cpp/serialization/cpp-serialization/archive/using-pdxinstance.html.md.erb
diff --git
a/docs/geode-native-docs-cpp/serialization/cpp-serialization/using-pdxinstancefactory.html.md.erb
b/docs/geode-native-docs-cpp/serialization/cpp-serialization/archive/using-pdxinstancefactory.html.md.erb
similarity index 100%
rename from
docs/geode-native-docs-cpp/serialization/cpp-serialization/using-pdxinstancefactory.html.md.erb
rename to
docs/geode-native-docs-cpp/serialization/cpp-serialization/archive/using-pdxinstancefactory.html.md.erb
diff --git
a/docs/geode-native-docs-cpp/serialization/cpp-serialization/using-pdxserialization.html.md.erb
b/docs/geode-native-docs-cpp/serialization/cpp-serialization/archive/using-pdxserialization.html.md.erb
similarity index 97%
rename from
docs/geode-native-docs-cpp/serialization/cpp-serialization/using-pdxserialization.html.md.erb
rename to
docs/geode-native-docs-cpp/serialization/cpp-serialization/archive/using-pdxserialization.html.md.erb
index 23a5cd9..1132067 100644
---
a/docs/geode-native-docs-cpp/serialization/cpp-serialization/using-pdxserialization.html.md.erb
+++
b/docs/geode-native-docs-cpp/serialization/cpp-serialization/archive/using-pdxserialization.html.md.erb
@@ -36,7 +36,7 @@ the `registerPdxSerializer` API.
You can also set the object preference of the cache to the `PdxInstance` type,
which allows you to access fields of a PDX object without deserializing the
entire object.
-- **[Serialize Using the PdxSerializable
Class](pdxserializable-interface.html)**
+<!-- - **[Serialize Using the PdxSerializable
Class](pdxserializable-interface.html)** -->
Domain classes need to inherit the `PdxSerializable` abstract class to
serialize and de-serialize the object. When you write objects using PDX
serialization, they are distributed to the server tier in PDX serialized form.
diff --git
a/docs/geode-native-docs-cpp/serialization/cpp-serialization/using-pdxserializer.html.md.erb
b/docs/geode-native-docs-cpp/serialization/cpp-serialization/archive/using-pdxserializer.html.md.erb
similarity index 100%
rename from
docs/geode-native-docs-cpp/serialization/cpp-serialization/using-pdxserializer.html.md.erb
rename to
docs/geode-native-docs-cpp/serialization/cpp-serialization/archive/using-pdxserializer.html.md.erb
diff --git
a/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/dotnet-pdx-serialization.html.md.erb
b/docs/geode-native-docs-cpp/serialization/cpp-serialization/cpp-pdx-serialization.html.md.erb
similarity index 65%
copy from
docs/geode-native-docs-dotnet/serialization/dotnet-serialization/dotnet-pdx-serialization.html.md.erb
copy to
docs/geode-native-docs-cpp/serialization/cpp-serialization/cpp-pdx-serialization.html.md.erb
index 2cafd97..0e63c31 100644
---
a/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/dotnet-pdx-serialization.html.md.erb
+++
b/docs/geode-native-docs-cpp/serialization/cpp-serialization/cpp-pdx-serialization.html.md.erb
@@ -19,7 +19,7 @@ limitations under the License.
<%=vars.product_name%>'s Portable Data eXchange (PDX) is a cross-language data
format that can reduce the cost of distributing and serializing your objects.
-<%=vars.product_name%> .NET PDX serialization:
+<%=vars.product_name%> C++ PDX serialization:
- Is <a href="#pdx-ser-portability">interoperable with other languages by
<%=vars.product_name%></a> -- no need to program a Java-side implementation
@@ -30,32 +30,26 @@ limitations under the License.
- <a href="#pdx-ser-delta-prop">Works with <%=vars.product_name%> delta
propagation</a>
-The simplest option is to use [automatic
serialization](dotnet-pdx-autoserializer.html) by registering the
<%=vars.product_name%> .NET
-PDX reflection-based autoserializer in your application. When you have an
autoserializer,
-<%=vars.product_name%> uses it for all domain objects that are not separately
treated under the IPDXSerializable interface.
-
-For greater control, you can specify individual treatment for domain objects
using the `IPdxSerializable` interface.
-Objects derived from the `IPdxSerializable` interface are not subject to
autoserialization.
+For greater control, you can specify individual treatment for domain objects
using the `PdxSerializable` interface.
## <a id="pdx-ser-portability"></a>Portability of PDX Serializable Objects
-When you create an `IPdxSerializable` object, <%=vars.product_name%> stores
the object's type
+When you create a `PdxSerializable` object, <%=vars.product_name%> stores the
object's type
information in a central registry. The information is passed between peers,
between clients and
servers, and between distributed systems.
-This offers a notable advantage to the .NET client, which shares data with
Java cache
-servers. When using PDX serialization, clients automatically pass registry
information to servers when they store an
-`IPdxSerializable` object. Clients can run queries and functions against the
data in the servers
+When using PDX serialization, clients automatically pass registry information
to servers when they store a
+`PdxSerializable` object. Clients can run queries and functions against the
data in the servers
without the servers needing to know anything about the stored objects. One
client can store data on
the server to be retrieved by another client, with the server never needing to
know the object
-type. This means you can code your .NET clients to manage data using Java
servers without having to
-create Java implementations of your .NET domain objects.
+type. This means you can code your C++ clients to manage data using Java
servers without having to
+create Java implementations of your C++ domain objects.
## <a id="pdx-ser-reduced-deserialization"></a>Reduced Deserialization of
Serialized Objects
-The access methods for `IPdxSerializable` objects allow you to examine
specific fields of your
+The access methods for `PdxSerializable` objects allow you to examine specific
fields of your
domain object without deserializing the entire object. This can reduce
-deserialization costs significantly. Client .NET apps can run queries and
execute functions against
+deserialization costs significantly. Client C++ apps can run queries and
execute functions against
the objects in the server caches without deserializing the entire object on
the server side. The
query engine automatically recognizes PDX objects and uses only the fields it
needs.
@@ -70,8 +64,7 @@ You can use <%=vars.product_name%> delta propagation with PDX
serialization.
## <a id='pdx-ser-details'></a>PDX Serialization Details
-See the following sections for details on implementing PDX serialization and
autoserialization:
+See the following sections for details on implementing PDX serialization:
-- [Using the Geode PDX Autoserializer](dotnet-pdx-autoserializer.html)
-- [Using the IPdxSerializable Interface](serialize-using-ipdxserializable.html)
-- [IPdxSerializable Examples](pdx-serializable-examples.html)
+- [Using the PdxSerializable Abstract Class](pdxserializable-interface.html)
+- [PdxSerializable Examples](pdx-serializable-examples.html)
diff --git
a/docs/geode-native-docs-cpp/serialization/data-serialization.html.md.erb
b/docs/geode-native-docs-cpp/serialization/cpp-serialization/pdx-serializable-examples.html.md.erb
similarity index 67%
copy from
docs/geode-native-docs-cpp/serialization/data-serialization.html.md.erb
copy to
docs/geode-native-docs-cpp/serialization/cpp-serialization/pdx-serializable-examples.html.md.erb
index 8a7f443..cf613dd 100644
--- a/docs/geode-native-docs-cpp/serialization/data-serialization.html.md.erb
+++
b/docs/geode-native-docs-cpp/serialization/cpp-serialization/pdx-serializable-examples.html.md.erb
@@ -1,5 +1,5 @@
---
-title: Serializing Data
+title: PdxSerializable Example
---
<!--
@@ -19,49 +19,12 @@ See the License for the specific language governing
permissions and
limitations under the License.
-->
-Data in your client application's <%=vars.product_name%> cache must be
serializable to be shared with <%=vars.product_name%> servers and other
-<%=vars.product_name%> clients.
-<%=vars.product_name%> provides multiple data serialization options for
storage and transmittal
-between processes, of which **<%=vars.product_name%> Portable Data eXchange
(PDX) serialization** offers
-the best combination of versatility and ease-of-use for most applications.
-
-To learn more about other serialization options, see the [Data Serialization
section in the _<%=vars.product_name_long%> User
Guide_](serverman/developing/data_serialization/chapter_overview.html).
-
-<a id="implementing_pdxsbl_class"></a>
-## Implementing a PdxSerializable Custom Class
-
-Pdx serialization provides custom serialization to an individual class. Fields
within an object can be serialized separately from the rest of the class.
-
-The type of serialization and its implementation can be specified entirely in
the client
-application, with no need to create corresponding code on the
<%=product_name%> server.
-
-<a id="setup_pdxsbl_class"></a>
-### Setup
-
-Pdx serialization provides custom serialization to an individual class. Fields
within an object can be serialized separately from the rest of the class.
-
-Setting up a custom class for PdxSerializable treatment requires some
preparatory steps:
-
-- The custom class must inherit from the C++ PdxSerializable interface.
-
-- You must provide serialization instructions for objects of the custom class.
Specifically:
-
- - You must implement the `toData()` and `fromData()` methods.
- - You must provide a "factory method" that returns an instance of the
custom object.
-
-- Your application must register your custom class with the cache, which takes
care of informing the server of your
- serialization scheme. With registration, you provide the name of the
"factory method" you created for instantiating
- objects of the custom class.
-
-<a id="pdxsbl_examples"></a>
-## PdxSerializable Examples
-
-The native client release contains examples showing how a client application
+The native client release contains an example showing how a client application
can register for serialization of custom objects using the C++ PdxSerializable
interface.
-The examples are located in `examples/cpp/pdxserializable`.
+The example is located in `examples/cpp/pdxserializable`.
-The examples define the serializable class, `Orders`, including its
serialization and deserialization methods and its factory method.
+The example defines the serializable class, `Orders`, including its
serialization and deserialization methods and its factory method.
Once these pieces are in place, execution is simple: the main routine of the
example registers the serializable class then performs some put and get
operations.
<a id="pdxsbl_execution"></a>
@@ -69,7 +32,8 @@ Once these pieces are in place, execution is simple: the main
routine of the exa
The example performs a sequence of operations, displaying simple log entries
as they run.
-- To run an example, follow the instructions in the README.md file in the
example directory.
+- To run the example, follow the instructions in the README.md file in the
example directory.
+
- Review the source code in the example directory to see exactly how it
operates.
- Begin by running a script that sets up the server-side environment by
invoking `gfsh` commands to create a region, a locator, and a server.
@@ -110,7 +74,7 @@ class Order : public PdxSerializable {
```
-Using the PdxSerializable read and write methods, the `Order` class defines
`fromData()` and `toData()`
+Using the `PdxSerializable` read and write methods, the `Order` class defines
`fromData()` and `toData()`
methods that perform the deserialization and serialization operations,
respectively, and the
`createDeserializable()` factory method:
diff --git
a/docs/geode-native-docs-cpp/serialization/cpp-serialization/pdxserializable-interface.html.md.erb
b/docs/geode-native-docs-cpp/serialization/cpp-serialization/pdxserializable-interface.html.md.erb
index 56cb7fa..eecc566 100644
---
a/docs/geode-native-docs-cpp/serialization/cpp-serialization/pdxserializable-interface.html.md.erb
+++
b/docs/geode-native-docs-cpp/serialization/cpp-serialization/pdxserializable-interface.html.md.erb
@@ -1,5 +1,5 @@
---
-title: Serialize Using the PdxSerializable Class
+title: Using the PdxSerializable Abstract Class
---
<!--
@@ -49,9 +49,9 @@ Use this procedure to program your domain object for PDX
serialization using the
<br><br>
If no fields are set as identity fields, then all fields will be used in
`hashCode` and equality checks. The identity fields should make marked after
they are written using a `write*` method.
-## <a class="no-quick-link" id="pdx-serializable-example"></a>PdxSerializable
Example
+For example:
-``` pre
+``` cpp
class PdxObject: public PdxSerializable {
private:
diff --git
a/docs/geode-native-docs-cpp/serialization/data-serialization.html.md.erb
b/docs/geode-native-docs-cpp/serialization/data-serialization.html.md.erb
index 8a7f443..a99a879 100644
--- a/docs/geode-native-docs-cpp/serialization/data-serialization.html.md.erb
+++ b/docs/geode-native-docs-cpp/serialization/data-serialization.html.md.erb
@@ -19,184 +19,12 @@ See the License for the specific language governing
permissions and
limitations under the License.
-->
-Data in your client application's <%=vars.product_name%> cache must be
serializable to be shared with <%=vars.product_name%> servers and other
-<%=vars.product_name%> clients.
+Data in your client application's <%=vars.product_name%> cache must be
serializable to be shared
+with <%=vars.product_name%> servers and other <%=vars.product_name%> clients.
<%=vars.product_name%> provides multiple data serialization options for
storage and transmittal
-between processes, of which **<%=vars.product_name%> Portable Data eXchange
(PDX) serialization** offers
-the best combination of versatility and ease-of-use for most applications.
+between processes, of which [**<%=vars.product_name%> Portable Data eXchange
(PDX) serialization**](cpp-serialization/cpp-pdx-serialization.html))
+offers the best combination of versatility and ease-of-use for most
applications.
-To learn more about other serialization options, see the [Data Serialization
section in the _<%=vars.product_name_long%> User
Guide_](serverman/developing/data_serialization/chapter_overview.html).
+To learn more about other serialization options, see the [Data Serialization
section in the
+_<%=vars.product_name_long%> User
Guide_](serverman/developing/data_serialization/chapter_overview.html).
-<a id="implementing_pdxsbl_class"></a>
-## Implementing a PdxSerializable Custom Class
-
-Pdx serialization provides custom serialization to an individual class. Fields
within an object can be serialized separately from the rest of the class.
-
-The type of serialization and its implementation can be specified entirely in
the client
-application, with no need to create corresponding code on the
<%=product_name%> server.
-
-<a id="setup_pdxsbl_class"></a>
-### Setup
-
-Pdx serialization provides custom serialization to an individual class. Fields
within an object can be serialized separately from the rest of the class.
-
-Setting up a custom class for PdxSerializable treatment requires some
preparatory steps:
-
-- The custom class must inherit from the C++ PdxSerializable interface.
-
-- You must provide serialization instructions for objects of the custom class.
Specifically:
-
- - You must implement the `toData()` and `fromData()` methods.
- - You must provide a "factory method" that returns an instance of the
custom object.
-
-- Your application must register your custom class with the cache, which takes
care of informing the server of your
- serialization scheme. With registration, you provide the name of the
"factory method" you created for instantiating
- objects of the custom class.
-
-<a id="pdxsbl_examples"></a>
-## PdxSerializable Examples
-
-The native client release contains examples showing how a client application
-can register for serialization of custom objects using the C++ PdxSerializable
interface.
-
-The examples are located in `examples/cpp/pdxserializable`.
-
-The examples define the serializable class, `Orders`, including its
serialization and deserialization methods and its factory method.
-Once these pieces are in place, execution is simple: the main routine of the
example registers the serializable class then performs some put and get
operations.
-
-<a id="pdxsbl_execution"></a>
-### Execution
-
-The example performs a sequence of operations, displaying simple log entries
as they run.
-
-- To run an example, follow the instructions in the README.md file in the
example directory.
-- Review the source code in the example directory to see exactly how it
operates.
-
-- Begin by running a script that sets up the server-side environment by
invoking `gfsh` commands to create a region, a locator, and a server.
-
-- Run the example client application, which performs the following steps:
-
- - Connects to the server
- - Registers the PdxSerializable class
- - Creates orders
- - Stores orders
- - Retrieves orders
-
-<a id="pdxsbl_cpp_example"></a>
-### C++ Example
-
-This section contains code snippets showing highlights of the C++
PdxSerialiable example. They are not intended for cut-and-paste execution.
-For the complete source, see the example source directory.
-
-The C++ example defines a PdxSerializable class called `Order` that inherits
from the `PdxSerializable` interface.
-An `Order` object contains three fields:
-
-- an integer `order_id`
-- a string `name`
-- a short-int `quantity`
-
-From Order.hpp:
-
-```cpp
-class Order : public PdxSerializable {
- public:
- ...
-
- private:
- int32_t order_id_;
- std::string name_;
- int16_t quantity_;
-};
-
-```
-
-Using the PdxSerializable read and write methods, the `Order` class defines
`fromData()` and `toData()`
-methods that perform the deserialization and serialization operations,
respectively, and the
-`createDeserializable()` factory method:
-
-From Order.cpp:
-
-```cpp
-void Order::fromData(PdxReader& pdxReader) {
- order_id_ = pdxReader.readInt(ORDER_ID_KEY_);
- name_ = pdxReader.readString(NAME_KEY_);
- quantity_ = pdxReader.readShort(QUANTITY_KEY_);
-}
-
-void Order::toData(PdxWriter& pdxWriter) const {
- pdxWriter.writeInt(ORDER_ID_KEY_, order_id_);
- pdxWriter.markIdentityField(ORDER_ID_KEY_);
-
- pdxWriter.writeString(NAME_KEY_, name_);
- pdxWriter.markIdentityField(NAME_KEY_);
-
- pdxWriter.writeShort(QUANTITY_KEY_, quantity_);
- pdxWriter.markIdentityField(QUANTITY_KEY_);
-}
-
-...
-
-std::shared_ptr<PdxSerializable> Order::createDeserializable() {
- return std::make_shared<Order>();
-}
-```
-
-The C++ example mainline creates a cache, then uses it to create a connection
pool and a region object (of class `Region`).
-
-```cpp
- auto cacheFactory = CacheFactory();
- cacheFactory.set("log-level", "none");
- auto cache = cacheFactory.create();
- auto poolFactory = cache.getPoolManager().createFactory();
-
- poolFactory.addLocator("localhost", 10334);
- auto pool = poolFactory.create("pool");
- auto regionFactory = cache.createRegionFactory(RegionShortcut::PROXY);
- auto region = regionFactory.setPoolName("pool").create("custom_orders");
-```
-
-The client registers the PdxSerializable class that was created in Orders.cpp:
-
-```cpp
- cache.getTypeRegistry().registerPdxType(Order::createDeserializable);
-```
-
-The client then instantiates and stores two `Order` objects:
-
-```cpp
- auto order1 = std::make_shared<Order>(1, "product x", 23);
- auto order2 = std::make_shared<Order>(2, "product y", 37);
-
- region->put("Customer1", order1);
- region->put("Customer2", order2);
-```
-
-Next, the application retrieves the stored values, in one case extracting the
fields defined in
-the serialization code:
-
-```cpp
- if (auto order1retrieved =
- std::dynamic_pointer_cast<Order>(region->get("Customer1"))) {
- std::cout << "OrderID: " << order1retrieved->getOrderId() << std::endl;
- std::cout << "Product Name: " << order1retrieved->getName() << std::endl;
- std::cout << "Quantity: " << order1retrieved->getQuantity() << std::endl;
- } else {
- std::cout << "Order 1 not found." << std::endl;
- }
-```
-
-The application retrieves the second object and displays it without extracting
the separate fields:
-
-```cpp
- if (region->existsValue("rtimmons")) {
- std::cout << "rtimmons's info not deleted" << std::endl;
- } else {
- std::cout << "rtimmons's info successfully deleted" << std::endl;
- }
-```
-
-Finally, the application closes the cache:
-
-```cpp
- cache.close();
-```
diff --git
a/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/dotnet-pdx-serialization.html.md.erb
b/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/dotnet-pdx-serialization.html.md.erb
index 2cafd97..5ae12e4 100644
---
a/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/dotnet-pdx-serialization.html.md.erb
+++
b/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/dotnet-pdx-serialization.html.md.erb
@@ -72,6 +72,6 @@ You can use <%=vars.product_name%> delta propagation with PDX
serialization.
See the following sections for details on implementing PDX serialization and
autoserialization:
-- [Using the Geode PDX Autoserializer](dotnet-pdx-autoserializer.html)
+- [Using the <%=vars.product_name%>
Autoserializer](dotnet-pdx-autoserializer.html)
- [Using the IPdxSerializable Interface](serialize-using-ipdxserializable.html)
- [IPdxSerializable Examples](pdx-serializable-examples.html)
diff --git
a/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/pdx-serializable-examples.html.md.erb
b/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/pdx-serializable-examples.html.md.erb
index 0670bfa..9635e7f 100644
---
a/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/pdx-serializable-examples.html.md.erb
+++
b/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/pdx-serializable-examples.html.md.erb
@@ -1,5 +1,5 @@
---
-title: IPdxSerializable Examples
+title: IPdxSerializable Example
---
<!--
@@ -19,12 +19,12 @@ See the License for the specific language governing
permissions and
limitations under the License.
-->
-The native client release contains examples showing how a client application
+The native client release contain an example showing how a client application
can register for serialization of domain objects using the .NET
IPdxSerializable interface.
-The examples are located in `examples\dotnet\pdxserializable`.
+The example is located in `examples\dotnet\pdxserializable`.
-The examples define the serializable class, `Orders`, including its
serialization and deserialization methods and its factory method.
+The example defines the serializable class, `Orders`, including its
serialization and deserialization methods and its factory method.
Once these pieces are in place, execution is simple: the main routine of the
example registers the serializable class then performs some put and get
operations.
<a id="pdxsbl_execution"></a>
@@ -32,7 +32,8 @@ Once these pieces are in place, execution is simple: the main
routine of the exa
The example performs a sequence of operations, displaying simple log entries
as they run.
-- To run an example, follow the instructions in the README.md file in the
example directory.
+- To run the example, follow the instructions in the README.md file in the
example directory.
+
- Review the source code in the example directory to see exactly how it
operates.
- Begin by running a script that sets up the server-side environment by
invoking `gfsh` commands to create a region, a locator, and a server.