You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by kl...@apache.org on 2017/11/17 20:53:05 UTC

[geode] branch feature/GEODE-3781 updated (f40cef0 -> 69337aa)

This is an automated email from the ASF dual-hosted git repository.

klund pushed a change to branch feature/GEODE-3781
in repository https://gitbox.apache.org/repos/asf/geode.git.


 discard f40cef0  Fix spotless format
 discard b85f756  Move geode-connectors further up
 discard 7fd92d5  Refactor long methods and add types
 discard ab71e44  Add missing test
 discard 24096e7  Fix formatting on copyright messages
 discard 88ab7b2  Rename classes and cleanup packages
 discard 76abaff  Wired jdbc loaders and writers to the connector service and cleaned up tests
 discard b4d203c  Added xml parsing and generation for jdbc connector service
 discard 1680078  Renaming and code cleanup
 discard defb7e1  Refactor JDBCManager and its tests
 discard c5325c1  Rearchitect JDBC connector for easier testing Add new system for handling configuration Expand test coverage for connector
 discard 002f656  simplify jdbc configuration
 discard 32b11ec  implemented 'fieldToColumn' option. Renamed jdbcRegionSeparator to jdbcSeparator.
 discard a97c762  implemented regionToTable configuration property.
 discard 5d4e14c  use Function.
 discard faa974e  added isKeyPartOfValue configuration property. make the jdbc region separator configurable.
 discard 5ef3139  added valueClassName config property
 discard 66339f4  removed Driver property
 discard b52be2d  added close
 discard 44be3fa  added JDBCSynchronousWriter and integration test Also added code to force a PdxInstance and tests to validate what happens if the value can not be converted to pdx.
 discard f20c3a6  added comment
 discard 2b22fd8  removed some whitespace
 discard 0b07793  Added JDBCLoader and integration test
 discard 5983660  moved stuff to internal package
 discard 42a9928  added read method for loader
 discard 722c54f  removed some unneeded test code
 discard 0a37762  renamed test
 discard 37158a5  added user and password properties
 discard 62c9803  test no longer configures cache to not deserialize pdx
 discard 9094ced  code coverage tests
 discard 0d77029  added upsert tests
 discard 9f292f0  cleaned up imports
 discard 6f7e1fb  tests that invalidate is unsupported
 discard 2bb4416  added test for bad driver
 discard 7dc90f9  more mocking
 discard 83566d4  minor cleanup
 discard c7d6986  renamed k to tableName
 discard 72fa66f  spotless
 discard 796e81d  added sync on event counts
 discard ad0873f  more geode-connectors project stuff for gradle
 discard 6c6ea56  started unit test for JDBCManager
 discard e23aa67  Made prepared statment cache thread safe. Now each thread has its own prepared statement cache.
 discard fdbfb14  Added prepared statement cache Debug logging added that should be cleaned up later
 discard 77f119d  Extracted ColumnValue class.
 discard c80d024  Added support for upsert operation.
 discard 9e8fbf6  Added test validation to compare with table contents
 discard c9b89a2  Support for getting key column info from database.
 discard ba2ad22  implemented get primary key
 discard 8871ff9  id column is now primary
 discard 0b6e410  test now validates insert, update, and destroy
 discard 51dcaf0  unit test now does actual inserts
 discard 007baf9  Added getConnection().
 discard d941196  spotless
 discard eae6c07  implemented getConnection
 discard 7c70ae3  Added implementation for building the pdx field table column mapping.
 discard ad900a1  spotless
 discard efcbd7d  added prepareStatementCache
 discard 0ff46e6  more getColumnToValueList work
 discard 30d8f82  rat and spotless
 discard 52d5053  made ColumnValue a class
 discard 624ddd9  Add JDBCManager class with implementation to build an insert query string. Also did spotless formatting.
 discard 5348bed  Added JDBCConfiguration class and test
 discard 238ed94  Added successfulEvent counter. Made changes in the test to validate successfulEvents.
 discard 6fe8b52  whitespace cleanup
 discard f312f30  Initial project setup for jdbc-connector. Added basic source and test implementation for JDBCAsyncWriter.
     add 472b96c  GEODE-3719: Improve invocations of disk store backups (#853)
     add 7e1d029  GEODE-3859: Simplify API for reading output from a GfshScript
     add ff6bfd9  GEODE-3830: Add more logging for GfshRule
     add dc9acd2  GEODE-3345: Refactor ClusterConfigurationDUnitTest to use test rules
     add 2cb5fed  GEODE-3810: Incremented test timestamp by 1 in case it is the same as the previous event
     add 378a1de  GEODE-3521: Correct a javadoc issue.
     add 65f6c6c  GEODE-1772: Removal of flaky tag.
     add b92f295  GEODE-3870: regenerate Region Entry classes from Linux
     add 70d428f  GEODE-3871 allow exclusion of serializable classes in AnalyzeSerializablesJUnitTest
     add caf71d8  GEODE-3882: ClusterConfiguration to support GatewayReceiver hostnameForSenders
     add c61d002  GEODE-3245: Flattening LuceneSerializer should support PDX values (#965)
     add 0e21c08  GEODE-1897: refactor GfshParseResult for easy access of converted opt… (#961)
     add c092bc6  GEODE-3885: Fix backup from AdminDistributedSystem (#964)
     add d0fcdfc  GEODE-1319: Awaitility clause added.
     add e358943  GEODE-1036: Refactored InitializeIndexEntryDestroyQueryDUnitTest
     add bbb097a  GEODE-3520: Additional tests for corrupt index
     add da45b65  User Guide: Data Storage corrections
     add 7c344c0  Merge branch 'feature/disk-store-doc' into develop
     add 0259f77  GEODE-3764: prevent early idle expiration (#940)
     add ab09388  GEODE-3861: Marking test as Flaky
     add 7a7c2ef  GEODE-1897: Initial refactor of CreateRegionCommand (#956)
     add 6a4e50e  GEODE-3801: Use hardlinks for backup oplog files (#963)
     add 547f0cb  GEODE-3815: Changed to remove the conflation index only if its for the same event
     add 44e8432  GEODE-3705: Refactor code to process authentication message as per normal message framework
     add 648d172  Feature/geode 3897 (#968)
     add f775a8f  GEODE-3880: Fix typo in Javadoc (#960)
     add dae5406  GEODE-3705: Reverting changes made to AcceptorImpl.java
     add 8ff23e0  GEODE-3870: move region entry classes to new entries package (#972)
     add 0ccf9fa  GEODE-3299: throw CacheClosedException in FunctionContext.getCache() (#975)
     add 21d2e40  GEODE-3903: Splitting of client protocol code from protobuf implementation
     add 5bd8fcf  GEODE-3903: Moved serialization package to under protocol.serialization moved META-INF services from protobuf to client-protocol
     add aad405a  GEODE-3903: added geode-client-protocol to geode-assembly
     add 4e8ee72  GEODE-3843 gfsh shutdown error message suggests non-existent option
     add c36bbb0  GEODE-3843 gfsh shutdown error message suggests non-existent option
     add 4fd5bdb  GEODE-3903: Added geode-client-protocol module to geode-dependencies.jar
     add fd059e0  GEODE-3908: Fixed the javadoc issue with LuceneSerializer.java
     add 5ca7659  GEODE-3910: Simplify MemberVM - remove generic type (#981)
     add 4193787  GEODE-3539: add tests for GetCommand and PutCommand (#966)
     add e004309  GEODE-3896: Remove Experimental tag from LuceneSerializer (#970)
     add 9a30e8a  GEODE-3914: Allow gfsh test rules to use more than 4 VMs (#982)
     add 01877ec  GEODE-3909: Use varargs for Query.execute
     add a3e5c67  User Guide: Typo correction in Cluster Configuration example
     add 348ab5b  GEODE-3913 Allow the SerializableCallables of the same transaction can be run by different threads.
     add 36655bc  GEODE-3902: Wait for all async invoked commands to complete (#986)
     add f04227f  GEODE-3901: Shut gfsh down cleanly so as not to produce suspect messages in the log (#988)
     add 529f6c5  GEODE-3872: Consolidate GfshShellConnectionRule Assertions
     add 255f056  GEODE-3899: add expected exception for possible race condition (#990)
     add e630cd3  GEODE-3190: Fix a race by checking if region is destroyed (#984)
     add 95bc7b6  Removed SNAPSHOT from releaseType
     add 9e07673  Fixing gradle script to: - have the correct name for signing the distribution - disable uploading iof the geode-modules.
     add 59f2a73  GEODE-3859: Simplify API for reading output from a GfshScript
     add cef1d79  Merge branch 'release/1.3.0' into develop
     add e8196df  GEODE-3902: Correct region used by test (#993)
     add 147552e  Add instructions for pushing "latest" docker image
     add 3b70ee6  Updating Dockerfile - for release 1.3.0 - removing references to incubating
     add 6a31190  GEODE-3861: Mark ClientHealthMonistorSelectorJUnitTest as flaky.
     add 4e5833b  GEODE-1897: Add eviction option to create region (#969)
     add fd907a0  GEODE-3919: Changed test to wait for the appropriate queue size since conflation is async
     add 19e5f8c  GEODE-3539: Consolidate CliUtil and DataCommandUtils, DataCommandsUtil (#992)
     add be27e6d  Restored SNAPSHOT releaseType
     add 5055d01  GEODE-3872: Remove executeAndVerify method
     add d0a2c3d  GEODE-3338 Refactor WAN command tests to use new Rules
     add 0e7b373  GEODE-3894: Create HandshakeRequest
     add ba40a7f  GEODE-3933: remove tests from the test suite and run them individually with parameters to avoid test contamination. (#996)
     add 93a6d81  User Guide: fixed typo in a gfsh command option (start locator —load-cluster configuration-from-dir)
     add 721a7e9  User Guide: fixed typo in the cluster config section
     add cd6fa12  User Guide: fixed language and command examples in the cluster config deployment section
     add 8f3d052  User Guide: Corrections to the cluster config deployment section
     add ec6820a  GEODE-3778: mark tests flaky (#1004)
     add a9a444f  GEODE-3936: remove ThreadUtil (#998)
     add 891274c  Add files necessary for Concourse CI infrastructure. (#1006)
     add b5603c1  Fix up branches. GEODE-3942 (#1008)
     add 2c30b7e  GEODE-3637: Moved client queue initialization into the ServerConnection.java Added test to confirm asynchronous client queue creation
     add 8876dd5  GEODE-3637: Amended AcceptorImpl.java to use a Connection pool that provides stats
     add a733b39  GEODE-3895: Add Handshake/Message version byte (#1001)
     add 0b636c2  Fix version number in email subject.
     add 235790c  GEODE-3895: fixup: Add exceptions to excludedClasses.txt
     add a8e1fab  GEODE-3941: Pulse issues when SecurityManager is enabled (#1007)
     add 3487b3a  GEODE-3947: add the necessary dependency in geode-dependency.jar (#1010)
     add 9829873  GEODE-3870: clean up region entry classes (#989)
     add 7a429e8  User Guide: fixed typo in the ‘configuring’ section
     add 302b7e2  GEODE-3940: Revert "GEODE-3801: Use hardlinks for backup oplog files (#963)"
     add 9cb7e42  User Guide: Fixed a typo in Basic Config/Data Regions/Region Management
     add 50eb158  Geode 3539: Add missing test coverage for 'version' command. (#1009)
     add 76cda80  Feature/geode 3795 (#1012)
     add a1b9725  GEODE-3539: Add missing test coverage for 'describe connection' command.
     add 96684f3  GEODE-3952: Improve and apply spotless.
     add 70b4327  Revert "GEODE-3539: Add missing test coverage for 'describe connection' command."
     add 01dc11f  GEODE-3953: Incorrect use of .equals() for comparison of fieldname arrays GEODE-3954: Misleading Exception message with mismatched fieldAnalyzers
     add f53bdf0  GEODE-3637: Revert changes to client queue initialization
     add 26e393d  GEODE_3959: Use temporary folder rule for TomcatSessionBackwardsCompatibilityTest (#1023)
     add d1fc134  GEODE-3539: LocatorServerStartupRule enhancement (#1021)
     add 2a7fcd2  GEODE-3930: Create lucene index on an existing region
     add c98335d  User Guide: Clarify gfsh create region options ‘recovery-delay’ and ‘startup-recovery-delay’
     add 00e1cb1  GEODE-2566: Add --if-exists option to destroy index (#1014)
     add a5ea077  GEODE-2566 Missed merge issues (#1031)
     add 080730b  GEODE-3801: Use hardlinks for backup oplog files (#963)
     add 11a385e  GEODE-3940: fix deadlock in backup messages
     add 2c46f7d  GEODE-3957: User Guide - Strengthen anti-SYNCOOKIES host machine requ… (#1018)
     add e2caeb5  GEODE-3335: Fix expected member count (#1034)
     add 44f449c  GEODE-3591: remove getAnyInstance call (#1027)
     add cb4f06c  GEODE-3601: remove getExisting call (#1036)
     add c1c6e74  GEODE-3539: add more tests for get, put, locate entry commands (#1025)
     add 650ed4e  GEODE-3963: make DM.getCache thread safe
     add 2d5d643  GEODE-3599: remove getInstance calls (#1037)
     add d9393de  GEODE-3598: remove getInstance calls (#1035)
     add 8987dc0  GEODE-3597: remove getInstance calls (#1033)
     add 66c3ba1  GEODE-3596: remove getInstanceCalls (#1032)
     add cd81d55  GEODE-3595: remove getInstance calls (#1030)
     add 369af90  GEODE-3594: remove calls of getInstance (#1029)
     add 8ca7000  GEODE-3593: remove call to getInstance (#1028)
     add 3bc8c1a  GEODE-3592: remove getAnyInstance call (#1026)
     add 36408b7  GEODE-3872: simplify the Command result Assert (#1043)
     add e67456d  GEODE-3539: cleanup GfshCommand and refactor tests
     add 36a1165  Revert "GEODE-3592: remove getAnyInstance call (#1026)"
     add 576bf71  GEODE-3539: rename GfshShellConnectionRule to GfshCommandRule (#1051)
     add abb39cf  GEODE-3970: Adjust default Travis _JAVA_OPTIONS (#1049)
     add bd523c3  GEODE-3951: PULSE Logout exception when using the defaults. (#1041)
     add 141c793  GEODE-2565: add if-exists option to DestoryGatewaySenderCommand (#1048)
     add ae03b84  GEODE-3973: have the cluster configuration start synchronously when starting a locator (#1050)
     add 9ebc4f7  Fix for GEODE-3898: Defined Indexes are not Persisted in Cluster Configuration. (#1022)
     add 1b985b0  GEODE-3898: fix merge conflict
     add 69143c1  GEODE-3961: Refactor ShowMetricsCommand to handle --categories uniformly
     add 7fae1a1  GEODE-3961: Correct test after bad rebase.
     add 23846b3  GEODE-3920: Added test to validate lucene 6 to 7 upgrade
     add 740ce79  GEODE-3539: Correct typo in javadoc annotation (#1057)
     add 944436a  GEODE-3738: Add Flaky category to ClientAuthorizationDUnitTest (#1054)
     add 5f08a9e  GEODE-3935: Closing down the cache after each test.
     add 4dafde1  GEODE-1019: Removing the flaky tag
     add dfaa0f1  GEODE-3978: add wait with respect to region size (#1060)
     add 7718945  GEODE-3979: fix flaky test (#1061)
     add e2bf74c  GEODE-3938: Allow query parameters within the to_date preset query function (#1003)
     add 0e5dd6b  GEODE-3007: Simplify support for custom GFSH commands (#1042)
     add 7f0d5f5  GEODE-1920 Addition of more logs to the test
     add 478665f  Revert "GEODE-1920 Addition of more logs to the test"
     add ad786a5  Merge remote-tracking branch 'origin/develop' into feature/GEODE-3940
     add d59c730  Merge pull request #1053 from apache/feature/GEODE-3940
     add c1db889  GEODE-1897: Ensure that eviction-object-sizer also implements Declarable (#1068)
     add 9d72237  GEODE-3761 Document the deprecation of manual start of gateway senders - updated wording per reviewer feedback.
     add d5e0462  GEODE-3985: rolling upgrade tests is prone to accidentally roll the vms back to current version (#1067)
     add 245a4ff  GEODE-3982: MemoryIndexStoreIterator should not call GemFireCacheImpl (#1064)
     new 69337aa  GEODE-3781: add geode-connectors module

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (f40cef0)
            \
             N -- N -- N   refs/heads/feature/GEODE-3781 (69337aa)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .travis.yml                                        |    4 +
 build.gradle                                       |   46 +-
 ci/docker/Dockerfile                               |   37 +
 ci/docker/cache_dependencies.sh                    |   39 +
 ci/pipelines/develop.yml                           |  110 +
 ci/pipelines/docker-images.yml                     |   49 +
 ci/pipelines/meta.yml                              |   74 +
 ci/scripts/build.sh                                |  189 ++
 dev-tools/generateRegionEntryClasses.sh            |    2 +-
 docker/Dockerfile                                  |   14 +-
 docker/README.md                                   |    3 +-
 extensions/geode-modules-assembly/build.gradle     |    1 +
 .../internal/common/AbstractSessionCache.java      |    7 +-
 .../internal/common/ClientServerSessionCache.java  |   15 +-
 .../internal/common/PeerToPeerSessionCache.java    |   13 +-
 .../session/internal/common/SessionCache.java      |    4 +-
 .../common/SessionExpirationCacheListener.java     |   11 +-
 .../internal/filter/DummySessionManager.java       |    4 +-
 .../internal/filter/GemfireHttpSession.java        |   22 +-
 .../internal/filter/GemfireSessionManager.java     |   28 +-
 .../attributes/AbstractDeltaSessionAttributes.java |    8 +-
 .../attributes/AbstractSessionAttributes.java      |   12 +-
 .../internal/filter/attributes/DeltaEvent.java     |   13 +-
 .../attributes/DeltaQueuedSessionAttributes.java   |    5 +-
 .../filter/attributes/DeltaSessionAttributes.java  |    5 +-
 .../filter/attributes/SessionAttributes.java       |    4 +-
 .../session/internal/filter/util/TypeAwareMap.java |    4 +-
 .../modules/session/filter/SessionListener.java    |    7 +-
 .../session/installer/InstallerJUnitTest.java      |   11 +-
 .../session/internal/filter/BasicServlet.java      |    1 +
 .../modules/session/internal/filter/Callback.java  |    3 +-
 .../session/internal/filter/CallbackServlet.java   |    1 +
 .../filter/HttpSessionBindingListenerImpl.java     |    1 +
 .../SessionReplicationIntegrationJUnitTest.java    |   46 +-
 .../filter/SessionReplicationJUnitTest.java        |    7 +-
 .../SessionReplicationLocalCacheJUnitTest.java     |    7 +-
 .../session/junit/PerTestClassLoaderRunner.java    |   18 +-
 .../catalina/Tomcat7DeltaSessionManager.java       |    4 +-
 .../modules/session/Tomcat7SessionsJUnitTest.java  |    6 +-
 .../modules/session/TestSessionsTomcat8Base.java   |    1 +
 .../modules/session/Tomcat8SessionsDUnitTest.java  |   10 +-
 .../gatewaydelta/AbstractGatewayDeltaEvent.java    |    8 +-
 .../gatewaydelta/GatewayDeltaCreateEvent.java      |    9 +-
 .../gatewaydelta/GatewayDeltaDestroyEvent.java     |    9 +-
 .../GatewayDeltaEventApplicationCacheListener.java |    4 +-
 .../GatewayDeltaForwarderCacheListener.java        |    4 +-
 .../modules/session/bootstrap/AbstractCache.java   |   23 +-
 .../catalina/AbstractCacheLifecycleListener.java   |    5 +-
 .../session/catalina/AbstractSessionCache.java     |    7 +-
 .../session/catalina/ClientServerSessionCache.java |   11 +-
 .../session/catalina/CommitSessionValve.java       |    7 +-
 .../modules/session/catalina/DeltaSession.java     |    2 +-
 .../session/catalina/DeltaSessionFacade.java       |    4 +-
 .../session/catalina/DeltaSessionInterface.java    |    3 +-
 .../session/catalina/DeltaSessionManager.java      |   49 +-
 .../session/catalina/JvmRouteBinderValve.java      |    7 +-
 .../session/catalina/PeerToPeerSessionCache.java   |    7 +-
 .../modules/session/catalina/SessionCache.java     |   10 +-
 .../catalina/callback/LocalSessionCacheLoader.java |    7 +-
 .../catalina/callback/LocalSessionCacheWriter.java |    7 +-
 .../callback/SessionExpirationCacheListener.java   |   11 +-
 .../internal/DeltaSessionAttributeEventBatch.java  |   13 +-
 .../DeltaSessionDestroyAttributeEvent.java         |    9 +-
 .../internal/DeltaSessionUpdateAttributeEvent.java |    9 +-
 .../java/org/apache/geode/modules/util/Banner.java |    4 +-
 .../geode/modules/util/BootstrappingFunction.java  |    6 +-
 .../apache/geode/modules/util/ContextMapper.java   |    4 +-
 .../geode/modules/util/CreateRegionFunction.java   |    1 -
 .../geode/modules/util/DebugCacheListener.java     |    4 +-
 .../geode/modules/util/RegionConfiguration.java    |   11 +-
 .../util/RegionConfigurationCacheListener.java     |    4 +-
 .../apache/geode/modules/util/RegionHelper.java    |   12 +-
 .../geode/modules/util/RegionSizeFunction.java     |    4 +-
 .../modules/util/ResourceManagerValidator.java     |    6 +-
 .../geode/modules/util/SessionCustomExpiry.java    |    9 +-
 .../TouchPartitionedRegionEntriesFunction.java     |    7 +-
 .../util/TouchReplicatedRegionEntriesFunction.java |    7 +-
 .../org/apache/geode/modules/session/Callback.java |    3 +-
 .../geode/modules/session/CommandServlet.java      |    5 +-
 .../geode/modules/session/EmbeddedTomcat.java      |   12 +-
 .../geode/modules/session/TestSessionsBase.java    |    1 +
 .../modules/session/Tomcat6SessionsJUnitTest.java  |    5 +-
 .../util/ClassLoaderObjectInputStreamTest.java     |   25 +-
 .../geode/modules/session/CommandServlet.java      |    1 +
 .../modules/session/SessionCountingListener.java   |    1 +
 .../modules/session/functions/GetSessionCount.java |    5 +-
 .../session/functions/GetSessionCreatedCount.java  |    5 +-
 .../functions/GetSessionDestroyedCount.java        |    5 +-
 geode-assembly/build.gradle                        |   12 +-
 .../management/internal/AgentUtilJUnitTest.java    |    7 +-
 .../cli/commands/GfshStartLocatorLogTest.java      |    2 +-
 .../LauncherLifecycleCommandsDUnitTest.java        |    6 +-
 .../cli/commands/PutCommandWithJsonTest.java       |   63 +
 .../StartLocatorCommandIntegrationTest.java        |    8 +-
 .../StartServerCommandIntegrationTest.java         |    8 +-
 .../cli/commands/StatusLocatorRealGfshTest.java    |    3 +-
 .../StopServerWithSecurityAcceptanceTest.java      |    8 +-
 .../cli/shell/GfshExitCodeStatusCommandsTest.java  |    2 +-
 .../geode/rest/internal/web/GeodeRestClient.java   |   27 +-
 .../internal/web/RestInterfaceIntegrationTest.java |    2 +-
 .../internal/web/RestSecurityIntegrationTest.java  |    2 +-
 .../web/RestSecurityPostProcessorTest.java         |    2 +-
 .../rest/internal/web/RestSecurityWithSSLTest.java |    2 +-
 .../internal/web/RestServersIntegrationTest.java   |    2 +-
 .../web/SwaggerVerificationIntegrationTest.java    |   16 +-
 .../rest/internal/web/controllers/Customer.java    |    7 +-
 .../rest/internal/web/controllers/Gender.java      |    2 +-
 .../internal/web/controllers/GetAllEntries.java    |    3 +-
 .../web/controllers/GetDeliveredOrders.java        |    2 +-
 .../rest/internal/web/controllers/GetRegions.java  |    2 +-
 .../internal/web/controllers/GetValueForKey.java   |    1 -
 .../geode/rest/internal/web/controllers/Item.java  |    2 +-
 .../web/controllers/NoArgumentFunction.java        |   14 +-
 .../geode/rest/internal/web/controllers/Order.java |    2 +-
 .../rest/internal/web/controllers/Person.java      |    6 +-
 .../internal/web/controllers/PutKeyFunction.java   |    1 -
 .../web/controllers/RedactingPostProcessor.java    |    4 +-
 .../RestAPIOnRegionFunctionExecutionDUnitTest.java |    2 +-
 .../internal/web/controllers/RestAPITestBase.java  |   39 +-
 .../controllers/RestAPIsAndInterOpsDUnitTest.java  |   53 +-
 ...RestAPIsOnGroupsFunctionExecutionDUnitTest.java |    1 -
 ...estAPIsOnMembersFunctionExecutionDUnitTest.java |   19 +-
 .../web/controllers/RestAPIsWithSSLDUnitTest.java  |    1 +
 .../internal/web/controllers/RestTestUtils.java    |    7 +-
 .../apache/geode/session/tests/CargoTestBase.java  |    4 +-
 .../org/apache/geode/session/tests/Client.java     |   15 +-
 .../geode/session/tests/ContainerInstall.java      |   16 +-
 .../tests/GenericAppServerClientServerTest.java    |   21 +-
 .../session/tests/TomcatClientServerTest.java      |    8 +-
 .../TomcatSessionBackwardsCompatibilityTest.java   |   31 +-
 .../geode/tools/pulse/PulseConnectivityTest.java   |    2 +-
 .../geode/tools/pulse/PulseDataExportTest.java     |   11 +-
 .../tools/pulse/PulseSecurityIntegrationTest.java  |   57 +
 .../geode/tools/pulse/PulseSecurityTest.java       |   13 +-
 .../tools/pulse/PulseSecurityWithSSLTest.java      |    2 +-
 .../benchmark/RangeQueryWithIndexBenchmark.java    |   15 +-
 .../cache/benchmark/RegionOperationBenchmark.java  |   15 +-
 .../source/subnavs/geode-subnav.erb                |    3 +
 geode-client-protocol/build.gradle                 |   30 +
 .../protocol/ClientProtocolMessageHandler.java     |   40 +
 .../apache/geode/internal/protocol/Failure.java    |   48 +
 .../internal/protocol/MessageExecutionContext.java |   93 +
 .../geode/internal/protocol/OperationContext.java  |   64 +
 .../geode/internal/protocol/ProtocolErrorCode.java |   44 +
 .../org/apache/geode/internal/protocol/Result.java |   28 +
 .../apache/geode/internal/protocol/Success.java    |   48 +
 .../exception/InvalidProtocolMessageException.java |    0
 .../protocol/operations/OperationHandler.java      |   36 +
 .../protobuf/v1/serializer/ProtocolSerializer.java |   34 +
 ...ompatibleAuthenticationMechanismsException.java |   23 +
 .../serialization/SerializationService.java        |   34 +
 .../protocol/serialization/SerializationType.java  |   32 +
 .../internal/protocol/serialization/TypeCodec.java |   36 +
 .../protocol/serialization/codec/JSONCodec.java    |   39 +
 .../UnsupportedEncodingTypeException.java          |   31 +
 .../registry/SerializationCodecRegistry.java       |   67 +
 .../CodecAlreadyRegisteredForTypeException.java    |   28 +
 .../CodecNotRegisteredForTypeException.java        |   27 +
 .../ConnectionAuthenticatingStateProcessor.java    |   31 +
 .../state/ConnectionHandshakingStateProcessor.java |   28 +
 .../ConnectionShiroAuthorizingStateProcessor.java  |   58 +
 .../protocol/state/ConnectionStateProcessor.java   |   61 +
 .../LegacySecurityConnectionStateProcessor.java    |   36 +
 .../state/NoSecurityConnectionStateProcessor.java  |   32 +
 .../state/exception/ConnectionStateException.java  |   30 +
 .../protocol/statistics/NoOpStatistics.java        |   47 +
 .../statistics/ProtocolClientStatistics.java       |   33 +
 ...geode.internal.protocol.serialization.TypeCodec |    1 +
 .../org/apache/geode/annotations/Experimental.java |    4 +-
 .../ClassInExperimentalPackage.java                |    2 +-
 .../experimentalpackage/package-info.java          |    2 +-
 .../ClassInNonExperimentalPackage.java             |    2 +-
 .../nonexperimentalpackage/package-info.java       |    2 +-
 .../src/main/java/java/net/InetAddress.java        |    1 -
 .../connectors/jdbc/JdbcSynchronousWriter.java     |  102 -
 .../apache/geode/connectors/jdbc/JdbcWriter.java   |  102 +
 .../geode/connectors/jdbc/JdbcAsyncWriterTest.java |    3 +
 .../geode/connectors/jdbc/JdbcLoaderTest.java      |    3 +
 .../jdbc/JdbcSynchronousWriterIntegrationTest.java |  234 --
 .../connectors/jdbc/JdbcSynchronousWriterTest.java |  116 -
 .../connectors/jdbc/JdbcWriterIntegrationTest.java |  234 ++
 .../geode/connectors/jdbc/JdbcWriterTest.java      |  119 ++
 .../jdbc/internal/AbstractJdbcCallbackTest.java    |    3 -
 .../geode/internal/ra/GFConnectionFactoryImpl.java |    6 +-
 .../apache/geode/internal/ra/GFConnectionImpl.java |    2 +-
 .../geode/internal/ra/spi/JCALocalTransaction.java |    2 +-
 .../ra/spi/JCAManagedConnectionFactory.java        |    2 +-
 .../ra/spi/JCAManagedConnectionMetaData.java       |    2 +-
 .../apache/geode/cache/query/internal/parse/oql.g  |    2 +-
 .../java/org/apache/geode/CancelCriterion.java     |   20 +-
 .../java/org/apache/geode/CancelException.java     |   10 +-
 .../org/apache/geode/CanonicalInstantiator.java    |    4 +-
 .../main/java/org/apache/geode/CopyException.java  |    1 -
 .../src/main/java/org/apache/geode/CopyHelper.java |   20 +-
 .../main/java/org/apache/geode/DataSerializer.java |   35 +-
 .../src/main/java/org/apache/geode/Delta.java      |   10 +-
 .../apache/geode/DeltaSerializationException.java  |    4 +-
 .../apache/geode/ForcedDisconnectException.java    |    2 +-
 .../org/apache/geode/GemFireCheckedException.java  |    2 +-
 .../java/org/apache/geode/GemFireRethrowable.java  |    4 +-
 .../org/apache/geode/InternalGemFireError.java     |    8 +-
 .../org/apache/geode/InvalidDeltaException.java    |    8 +-
 .../src/main/java/org/apache/geode/LogWriter.java  |   12 +-
 .../apache/geode/OutOfOffHeapMemoryException.java  |    2 +-
 .../org/apache/geode/SerializationException.java   |    8 +-
 .../java/org/apache/geode/StatisticDescriptor.java |    2 -
 .../src/main/java/org/apache/geode/Statistics.java |   25 +-
 .../java/org/apache/geode/StatisticsFactory.java   |   20 +-
 .../main/java/org/apache/geode/StatisticsType.java |    3 -
 .../org/apache/geode/StatisticsTypeFactory.java    |   18 +-
 .../main/java/org/apache/geode/SystemFailure.java  |  110 +-
 .../java/org/apache/geode/ToDataException.java     |    2 +-
 .../java/org/apache/geode/admin/AdminConfig.java   |    6 +-
 .../apache/geode/admin/AdminDistributedSystem.java |   50 +-
 .../geode/admin/AdminDistributedSystemFactory.java |    9 +-
 .../java/org/apache/geode/admin/AlertListener.java |    2 +-
 .../java/org/apache/geode/admin/BackupStatus.java  |   23 +-
 .../geode/admin/CacheDoesNotExistException.java    |    1 -
 .../org/apache/geode/admin/CacheHealthConfig.java  |   12 +-
 .../java/org/apache/geode/admin/CacheServer.java   |    6 +-
 .../apache/geode/admin/ConfigurationParameter.java |    1 -
 .../geode/admin/DistributedSystemConfig.java       |   39 +-
 .../apache/geode/admin/DistributionLocator.java    |    1 -
 .../geode/admin/DistributionLocatorConfig.java     |    4 +-
 .../apache/geode/admin/GemFireMemberStatus.java    |   25 +-
 .../org/apache/geode/admin/MemberHealthConfig.java |    4 +-
 .../geode/admin/OperationCancelledException.java   |    1 -
 .../geode/admin/RegionNotFoundException.java       |    1 -
 .../geode/admin/RegionSubRegionSnapshot.java       |    8 +-
 .../java/org/apache/geode/admin/Statistic.java     |    1 -
 .../org/apache/geode/admin/StatisticResource.java  |    1 -
 .../java/org/apache/geode/admin/SystemMember.java  |    5 +-
 .../geode/admin/SystemMemberBridgeServer.java      |   46 +-
 .../org/apache/geode/admin/SystemMemberCache.java  |    3 +-
 .../geode/admin/SystemMemberCacheListener.java     |   10 +-
 .../geode/admin/SystemMemberCacheServer.java       |   46 +-
 .../org/apache/geode/admin/SystemMemberRegion.java |   24 +-
 .../org/apache/geode/admin/SystemMemberType.java   |    6 +-
 .../apache/geode/admin/SystemMembershipEvent.java  |    2 +-
 .../admin/UnmodifiableConfigurationException.java  |    1 -
 .../admin/internal/AdminDistributedSystemImpl.java |   92 +-
 .../admin/internal/BackupDataStoreHelper.java      |   74 -
 .../admin/internal/BackupDataStoreResult.java      |   48 -
 .../geode/admin/internal/BackupStatusImpl.java     |   36 +-
 .../admin/internal/CacheServerConfigImpl.java      |    4 +-
 .../geode/admin/internal/CacheServerImpl.java      |    8 +-
 .../admin/internal/ConfigurationParameterImpl.java |   10 +-
 .../internal/ConfigurationParameterListener.java   |    1 -
 .../internal/DistributedSystemConfigImpl.java      |   32 +-
 .../internal/DistributedSystemHealthEvaluator.java |    6 +-
 .../internal/DistributedSystemHealthMonitor.java   |    2 +-
 .../internal/DistributionLocatorConfigImpl.java    |   10 +-
 .../admin/internal/DistributionLocatorImpl.java    |   12 +-
 .../internal/EnabledManagedEntityController.java   |   15 +-
 .../geode/admin/internal/FinishBackupRequest.java  |  174 --
 .../geode/admin/internal/FinishBackupResponse.java |   76 -
 .../geode/admin/internal/FlushToDiskRequest.java   |   92 -
 .../geode/admin/internal/FlushToDiskResponse.java  |   43 -
 .../geode/admin/internal/GemFireHealthImpl.java    |   16 +-
 .../geode/admin/internal/InetAddressUtil.java      |    5 +-
 .../apache/geode/admin/internal/LogCollator.java   |   11 +-
 .../admin/internal/ManagedEntityConfigImpl.java    |   10 +-
 .../admin/internal/ManagedEntityConfigXml.java     |    7 +-
 .../internal/ManagedEntityConfigXmlGenerator.java  |   14 +-
 .../internal/ManagedEntityConfigXmlParser.java     |   12 +-
 .../admin/internal/ManagedEntityController.java    |    2 +-
 .../internal/ManagedEntityControllerFactory.java   |    2 +-
 .../admin/internal/ManagedSystemMemberImpl.java    |    4 +-
 .../geode/admin/internal/PrepareBackupRequest.java |  134 --
 .../admin/internal/PrepareBackupResponse.java      |   80 -
 .../apache/geode/admin/internal/StatisticImpl.java |    3 +-
 .../admin/internal/StatisticResourceImpl.java      |   13 +-
 .../admin/internal/SystemMemberCacheEventImpl.java |    2 +-
 .../internal/SystemMemberCacheEventProcessor.java  |    2 +-
 .../admin/internal/SystemMemberCacheImpl.java      |    7 +-
 .../geode/admin/internal/SystemMemberImpl.java     |   18 +-
 .../internal/SystemMemberRegionEventImpl.java      |    2 +-
 .../admin/internal/SystemMemberRegionImpl.java     |   15 +-
 .../java/org/apache/geode/admin/jmx/Agent.java     |   11 +-
 .../org/apache/geode/admin/jmx/AgentConfig.java    |   31 +-
 .../org/apache/geode/admin/jmx/AgentFactory.java   |    1 -
 .../internal/AdminDistributedSystemJmxImpl.java    |   89 +-
 .../geode/admin/jmx/internal/AgentConfigImpl.java  |   41 +-
 .../apache/geode/admin/jmx/internal/AgentImpl.java |    5 +-
 .../geode/admin/jmx/internal/AgentLauncher.java    |   18 +-
 .../admin/jmx/internal/CacheServerJmxImpl.java     |   24 +-
 .../admin/jmx/internal/ConfigAttributeInfo.java    |    6 +-
 .../internal/ConfigurationParameterJmxImpl.java    |    1 -
 .../DistributedSystemHealthConfigJmxImpl.java      |    7 +-
 .../jmx/internal/DistributionLocatorJmxImpl.java   |   26 +-
 .../admin/jmx/internal/DynamicManagedBean.java     |    7 +-
 .../admin/jmx/internal/GemFireHealthJmxImpl.java   |    1 -
 .../admin/jmx/internal/GenerateMBeanHTML.java      |    1 -
 .../apache/geode/admin/jmx/internal/MBeanUtil.java |   13 +-
 .../jmx/internal/MX4JServerSocketFactory.java      |   19 +-
 .../geode/admin/jmx/internal/MailManager.java      |   26 +-
 .../geode/admin/jmx/internal/ManagedResource.java  |    1 -
 .../admin/jmx/internal/ManagedResourceType.java    |    1 -
 .../jmx/internal/MemberInfoWithStatsMBean.java     |  100 +-
 .../admin/jmx/internal/RMIRegistryService.java     |   33 +-
 .../jmx/internal/RMIRegistryServiceMBean.java      |   14 +-
 .../jmx/internal/RefreshNotificationType.java      |    1 -
 .../admin/jmx/internal/StatAlertNotification.java  |   14 +-
 .../admin/jmx/internal/StatAlertsAggregator.java   |   20 +-
 .../admin/jmx/internal/StatisticAttributeInfo.java |    7 +-
 .../jmx/internal/StatisticResourceJmxImpl.java     |    9 +-
 .../internal/SystemMemberBridgeServerJmxImpl.java  |   10 +-
 .../jmx/internal/SystemMemberCacheJmxImpl.java     |   13 +-
 .../geode/admin/jmx/internal/SystemMemberJmx.java  |   34 +-
 .../admin/jmx/internal/SystemMemberJmxImpl.java    |   29 +-
 .../jmx/internal/SystemMemberRegionJmxImpl.java    |   11 +-
 .../org/apache/geode/cache/AttributesFactory.java  |   77 +-
 .../org/apache/geode/cache/AttributesMutator.java  |   30 +-
 .../main/java/org/apache/geode/cache/Cache.java    |   54 +-
 .../java/org/apache/geode/cache/CacheEvent.java    |   12 +-
 .../apache/geode/cache/CacheExistsException.java   |    4 +-
 .../java/org/apache/geode/cache/CacheFactory.java  |   50 +-
 .../java/org/apache/geode/cache/CacheListener.java |   30 +-
 .../apache/geode/cache/CacheLoaderException.java   |    6 +-
 .../apache/geode/cache/CacheRuntimeException.java  |    6 +-
 .../org/apache/geode/cache/CacheStatistics.java    |    6 +-
 .../geode/cache/CacheTransactionManager.java       |   72 +-
 .../java/org/apache/geode/cache/CacheWriter.java   |    6 +-
 .../apache/geode/cache/CacheWriterException.java   |    6 +-
 .../java/org/apache/geode/cache/ClientSession.java |   18 +-
 .../geode/cache/CommitConflictException.java       |    6 +-
 .../geode/cache/CommitDistributionException.java   |    1 -
 .../geode/cache/CommitIncompleteException.java     |    2 +-
 .../java/org/apache/geode/cache/CustomExpiry.java  |    4 +-
 .../java/org/apache/geode/cache/DataPolicy.java    |   32 +-
 .../apache/geode/cache/DiskAccessException.java    |    1 -
 .../java/org/apache/geode/cache/DiskStore.java     |   20 +-
 .../org/apache/geode/cache/DiskStoreFactory.java   |   30 +-
 .../apache/geode/cache/DiskWriteAttributes.java    |   12 +-
 .../geode/cache/DiskWriteAttributesFactory.java    |   28 +-
 .../cache/DuplicatePrimaryPartitionException.java  |    2 +-
 .../apache/geode/cache/DynamicRegionFactory.java   |   34 +-
 .../apache/geode/cache/DynamicRegionListener.java  |    2 +-
 .../geode/cache/EntryDestroyedException.java       |    8 +-
 .../java/org/apache/geode/cache/EntryEvent.java    |   13 +-
 .../apache/geode/cache/EntryExistsException.java   |    2 +-
 .../apache/geode/cache/EntryNotFoundException.java |    4 +-
 .../org/apache/geode/cache/EntryOperation.java     |   16 +-
 .../org/apache/geode/cache/EvictionAction.java     |    6 +-
 .../org/apache/geode/cache/EvictionAlgorithm.java  |    8 +-
 .../org/apache/geode/cache/EvictionAttributes.java |    6 +-
 .../geode/cache/EvictionAttributesMutator.java     |    4 +-
 .../org/apache/geode/cache/ExpirationAction.java   |   24 +-
 .../apache/geode/cache/ExpirationAttributes.java   |   24 +-
 .../cache/FailedSynchronizationException.java      |    4 +-
 .../geode/cache/FixedPartitionAttributes.java      |   20 +-
 .../apache/geode/cache/FixedPartitionResolver.java |    8 +-
 .../geode/cache/GatewayConfigurationException.java |    2 +-
 .../org/apache/geode/cache/GatewayException.java   |    6 +-
 .../java/org/apache/geode/cache/GemFireCache.java  |   32 +-
 .../org/apache/geode/cache/InterestPolicy.java     |    8 +-
 .../geode/cache/InterestRegistrationEvent.java     |    6 +-
 .../geode/cache/InterestRegistrationListener.java  |    4 +-
 .../apache/geode/cache/InterestResultPolicy.java   |   15 +-
 .../java/org/apache/geode/cache/LoaderHelper.java  |    2 +-
 .../java/org/apache/geode/cache/LossAction.java    |    9 +-
 .../org/apache/geode/cache/LowMemoryException.java |    8 +-
 .../apache/geode/cache/MembershipAttributes.java   |   23 +-
 .../java/org/apache/geode/cache/MirrorType.java    |   12 +-
 .../cache/NoQueueServersAvailableException.java    |   10 +-
 .../NoSubscriptionServersAvailableException.java   |   10 +-
 .../java/org/apache/geode/cache/Operation.java     |  113 +-
 .../geode/cache/OperationAbortedException.java     |    6 +-
 .../apache/geode/cache/PartitionAttributes.java    |   38 +-
 .../geode/cache/PartitionAttributesFactory.java    |   46 +-
 .../org/apache/geode/cache/PartitionResolver.java  |   10 +-
 .../cache/PartitionedRegionStorageException.java   |   26 +-
 .../main/java/org/apache/geode/cache/Region.java   |   94 +-
 .../apache/geode/cache/RegionAccessException.java  |    8 +-
 .../org/apache/geode/cache/RegionAttributes.java   |   58 +-
 .../geode/cache/RegionDestroyedException.java      |    4 +-
 .../geode/cache/RegionDistributionException.java   |    8 +-
 .../apache/geode/cache/RegionExistsException.java  |    8 +-
 .../java/org/apache/geode/cache/RegionFactory.java |   52 +-
 .../geode/cache/RegionMembershipListener.java      |   16 +-
 .../geode/cache/RegionReinitializedException.java  |    4 +-
 .../apache/geode/cache/RegionRoleException.java    |    7 +-
 .../org/apache/geode/cache/RegionRoleListener.java |    5 +-
 .../java/org/apache/geode/cache/RegionService.java |   10 +-
 .../org/apache/geode/cache/RegionShortcut.java     |    2 +-
 .../java/org/apache/geode/cache/RequiredRoles.java |    5 +-
 .../org/apache/geode/cache/ResourceException.java  |    8 +-
 .../org/apache/geode/cache/ResumptionAction.java   |    9 +-
 .../java/org/apache/geode/cache/RoleException.java |    7 +-
 .../main/java/org/apache/geode/cache/Scope.java    |   28 +-
 .../apache/geode/cache/SerializedCacheValue.java   |    4 +-
 .../geode/cache/StatisticsDisabledException.java   |    6 +-
 .../apache/geode/cache/SubscriptionAttributes.java |   11 +-
 .../SynchronizationCommitConflictException.java    |    4 +-
 .../org/apache/geode/cache/TimeoutException.java   |    6 +-
 .../cache/TransactionDataRebalancedException.java  |    2 +-
 .../org/apache/geode/cache/TransactionEvent.java   |    8 +-
 .../apache/geode/cache/TransactionException.java   |    2 +-
 .../java/org/apache/geode/cache/TransactionId.java |    4 +-
 .../geode/cache/TransactionInDoubtException.java   |    2 +-
 .../apache/geode/cache/TransactionListener.java    |    6 +-
 .../org/apache/geode/cache/TransactionWriter.java  |    4 +-
 .../geode/cache/TransactionWriterException.java    |    4 +-
 .../geode/cache/UnsupportedVersionException.java   |    4 +-
 .../apache/geode/cache/asyncqueue/AsyncEvent.java  |    2 +-
 .../geode/cache/asyncqueue/AsyncEventListener.java |   12 +-
 .../geode/cache/asyncqueue/AsyncEventQueue.java    |   32 +-
 .../cache/asyncqueue/AsyncEventQueueFactory.java   |   40 +-
 .../asyncqueue/internal/AsyncEventQueueStats.java  |    2 +-
 .../internal/SerialAsyncEventQueueImpl.java        |    2 +-
 .../cache/client/AllConnectionsInUseException.java |    8 +-
 .../org/apache/geode/cache/client/ClientCache.java |   18 +-
 .../geode/cache/client/ClientCacheFactory.java     |   26 +-
 .../cache/client/ClientNotReadyException.java      |    8 +-
 .../geode/cache/client/ClientRegionFactory.java    |   26 +-
 .../geode/cache/client/ClientRegionShortcut.java   |    2 +-
 .../cache/client/NoAvailableLocatorsException.java |    8 +-
 .../cache/client/NoAvailableServersException.java  |    8 +-
 .../java/org/apache/geode/cache/client/Pool.java   |   58 +-
 .../org/apache/geode/cache/client/PoolFactory.java |   58 +-
 .../org/apache/geode/cache/client/PoolManager.java |   12 +-
 .../cache/client/ServerConnectivityException.java  |   10 +-
 .../cache/client/ServerOperationException.java     |   10 +-
 .../client/ServerRefusedConnectionException.java   |    2 +-
 .../client/SubscriptionNotEnabledException.java    |    8 +-
 .../geode/cache/client/internal/AbstractOp.java    |   22 +-
 .../geode/cache/client/internal/AddPDXEnumOp.java  |    4 +-
 .../geode/cache/client/internal/AddPDXTypeOp.java  |    4 +-
 .../cache/client/internal/AuthenticateUserOp.java  |   24 +-
 .../client/internal/AutoConnectionSourceImpl.java  |    6 +-
 .../client/internal/CacheServerLoadMessage.java    |    2 +-
 .../geode/cache/client/internal/ClearOp.java       |    8 +-
 .../client/internal/ClientMetadataService.java     |   31 +-
 .../client/internal/ClientPartitionAdvisor.java    |   10 +-
 .../client/internal/ClientRegionFactoryImpl.java   |    2 +-
 .../cache/client/internal/CloseConnectionOp.java   |    4 +-
 .../geode/cache/client/internal/CommitOp.java      |    4 +-
 .../geode/cache/client/internal/Connection.java    |    4 +-
 .../cache/client/internal/ConnectionFactory.java   |    8 +-
 .../client/internal/ConnectionFactoryImpl.java     |   11 +-
 .../cache/client/internal/ConnectionImpl.java      |   26 +-
 .../cache/client/internal/ConnectionSource.java    |   10 +-
 .../cache/client/internal/ConnectionStats.java     |  956 ++++-----
 .../geode/cache/client/internal/ContainsKeyOp.java |    4 +-
 .../geode/cache/client/internal/DestroyOp.java     |    6 +-
 .../cache/client/internal/DestroyRegionOp.java     |    8 +-
 .../geode/cache/client/internal/Endpoint.java      |    2 +-
 .../cache/client/internal/EndpointManager.java     |    6 +-
 .../cache/client/internal/EndpointManagerImpl.java |   14 +-
 .../cache/client/internal/ExecutablePool.java      |   28 +-
 .../client/internal/ExecuteFunctionHelper.java     |    4 +-
 .../client/internal/ExecuteFunctionNoAckOp.java    |    4 +-
 .../cache/client/internal/ExecuteFunctionOp.java   |    4 +-
 .../internal/ExecuteRegionFunctionNoAckOp.java     |    4 +-
 .../client/internal/ExecuteRegionFunctionOp.java   |    4 +-
 .../internal/ExplicitConnectionSourceImpl.java     |   13 +-
 .../geode/cache/client/internal/GetAllOp.java      |    4 +-
 .../client/internal/GetClientPRMetaDataOp.java     |    4 +-
 .../internal/GetClientPartitionAttributesOp.java   |    8 +-
 .../geode/cache/client/internal/GetEntryOp.java    |    2 +-
 .../cache/client/internal/GetEventValueOp.java     |    4 +-
 .../apache/geode/cache/client/internal/GetOp.java  |    4 +-
 .../cache/client/internal/GetPDXEnumByIdOp.java    |    4 +-
 .../geode/cache/client/internal/GetPDXEnumsOp.java |    2 +-
 .../cache/client/internal/GetPDXIdForEnumOp.java   |    4 +-
 .../cache/client/internal/GetPDXIdForTypeOp.java   |    4 +-
 .../cache/client/internal/GetPDXTypeByIdOp.java    |    4 +-
 .../geode/cache/client/internal/GetPDXTypesOp.java |    2 +-
 .../internal/InstantiatorRecoveryListener.java     |    6 +-
 .../geode/cache/client/internal/InternalPool.java  |    4 +-
 .../geode/cache/client/internal/InvalidateOp.java  |    4 +-
 .../geode/cache/client/internal/KeySetOp.java      |   16 +-
 .../client/internal/LocatorDiscoveryCallback.java  |    6 +-
 .../internal/LocatorDiscoveryCallbackAdapter.java  |    2 +-
 .../geode/cache/client/internal/MakePrimaryOp.java |    4 +-
 .../org/apache/geode/cache/client/internal/Op.java |    4 +-
 .../cache/client/internal/OpExecutorImpl.java      |   36 +-
 .../internal/PdxRegistryRecoveryListener.java      |    8 +-
 .../apache/geode/cache/client/internal/PingOp.java |    4 +-
 .../geode/cache/client/internal/PoolImpl.java      |   50 +-
 .../geode/cache/client/internal/PrimaryAckOp.java  |   10 +-
 .../geode/cache/client/internal/ProxyCache.java    |    4 +-
 .../geode/cache/client/internal/ProxyRegion.java   |   12 +-
 .../geode/cache/client/internal/PutAllOp.java      |    6 +-
 .../apache/geode/cache/client/internal/PutOp.java  |   28 +-
 .../geode/cache/client/internal/QueryOp.java       |   27 +-
 .../cache/client/internal/QueueConnectionImpl.java |    4 +-
 .../geode/cache/client/internal/QueueManager.java  |    4 +-
 .../cache/client/internal/QueueManagerImpl.java    |   22 +-
 .../geode/cache/client/internal/QueueState.java    |    1 +
 .../cache/client/internal/QueueStateImpl.java      |   20 +-
 .../cache/client/internal/ReadyForEventsOp.java    |    4 +-
 .../client/internal/RegisterInstantiatorsOp.java   |    6 +-
 .../client/internal/RegisterInterestListOp.java    |    8 +-
 .../cache/client/internal/RegisterInterestOp.java  |   10 +-
 .../client/internal/RegisterInterestTracker.java   |   18 +-
 .../geode/cache/client/internal/RemoveAllOp.java   |    6 +-
 .../geode/cache/client/internal/RollbackOp.java    |    4 +-
 .../cache/client/internal/ServerBlackList.java     |   17 +-
 .../geode/cache/client/internal/ServerProxy.java   |    8 +-
 .../client/internal/ServerRegionDataAccess.java    |   18 +-
 .../cache/client/internal/ServerRegionProxy.java   |   52 +-
 .../client/internal/SingleHopClientExecutor.java   |    4 +-
 .../internal/SingleHopOperationCallable.java       |   11 +-
 .../apache/geode/cache/client/internal/SizeOp.java |    4 +-
 .../geode/cache/client/internal/TXFailoverOp.java  |    2 +-
 .../cache/client/internal/TXSynchronizationOp.java |    6 +-
 .../client/internal/UnregisterInterestListOp.java  |   10 +-
 .../client/internal/UnregisterInterestOp.java      |    6 +-
 .../internal/locator/GetAllServersRequest.java     |    2 +-
 .../internal/locator/GetAllServersResponse.java    |    2 +-
 .../internal/locator/LocatorListResponse.java      |    4 +-
 .../internal/locator/LocatorStatusRequest.java     |    2 +-
 .../internal/locator/LocatorStatusResponse.java    |   16 +-
 .../locator/wan/LocatorMembershipListener.java     |   12 +-
 .../client/internal/pooling/ConnectionManager.java |   16 +-
 .../internal/pooling/ConnectionManagerImpl.java    |   35 +-
 .../client/internal/pooling/PooledConnection.java  |    8 +-
 .../geode/cache/control/RebalanceFactory.java      |    6 +-
 .../geode/cache/control/RebalanceOperation.java    |    2 +-
 .../geode/cache/control/RebalanceResults.java      |   22 +-
 .../geode/cache/control/ResourceManager.java       |   22 +-
 .../execute/EmptyRegionFunctionException.java      |   10 +-
 .../org/apache/geode/cache/execute/Execution.java  |   16 +-
 .../org/apache/geode/cache/execute/Function.java   |   12 +-
 .../geode/cache/execute/FunctionAdapter.java       |    6 +-
 .../geode/cache/execute/FunctionContext.java       |   10 +-
 .../geode/cache/execute/FunctionException.java     |   14 +-
 .../execute/FunctionInvocationTargetException.java |   16 +-
 .../geode/cache/execute/FunctionService.java       |   38 +-
 .../geode/cache/execute/RegionFunctionContext.java |   18 +-
 .../geode/cache/execute/ResultCollector.java       |   28 +-
 .../apache/geode/cache/execute/ResultSender.java   |   26 +-
 .../execute/internal/FunctionServiceManager.java   |   36 +-
 .../cache/operations/CloseCQOperationContext.java  |    6 +-
 .../cache/operations/DestroyOperationContext.java  |    8 +-
 .../operations/ExecuteCQOperationContext.java      |    6 +-
 .../ExecuteFunctionOperationContext.java           |    2 +-
 .../operations/GetDurableCQsOperationContext.java  |    8 +-
 .../cache/operations/GetOperationContext.java      |   10 +-
 .../cache/operations/InterestOperationContext.java |    6 +-
 .../geode/cache/operations/InterestType.java       |    6 +-
 .../operations/InvalidateOperationContext.java     |    8 +-
 .../cache/operations/KeyOperationContext.java      |   14 +-
 .../cache/operations/KeySetOperationContext.java   |   14 +-
 .../cache/operations/KeyValueOperationContext.java |   20 +-
 .../cache/operations/PutAllOperationContext.java   |   16 +-
 .../cache/operations/PutOperationContext.java      |   14 +-
 .../cache/operations/QueryOperationContext.java    |   20 +-
 .../operations/RegionClearOperationContext.java    |    6 +-
 .../operations/RegionCreateOperationContext.java   |    6 +-
 .../operations/RegionDestroyOperationContext.java  |    6 +-
 .../cache/operations/RegionOperationContext.java   |   10 +-
 .../RegisterInterestOperationContext.java          |    8 +-
 .../operations/RemoveAllOperationContext.java      |   10 +-
 .../cache/operations/StopCQOperationContext.java   |    6 +-
 .../UnregisterInterestOperationContext.java        |    6 +-
 .../cache/operations/internal/UpdateOnlyMap.java   |    5 +-
 .../geode/cache/partition/PartitionListener.java   |   26 +-
 .../cache/partition/PartitionListenerAdapter.java  |    6 +-
 .../geode/cache/partition/PartitionMemberInfo.java |   12 +-
 .../partition/PartitionNotAvailableException.java  |    2 +-
 .../cache/partition/PartitionRebalanceInfo.java    |   32 +-
 .../cache/partition/PartitionRegionHelper.java     |   40 +-
 .../geode/cache/partition/PartitionRegionInfo.java |   18 +-
 .../ConflictingPersistentDataException.java        |    4 +-
 .../persistence/PartitionOfflineException.java     |    8 +-
 .../geode/cache/persistence/PersistentID.java      |    6 +-
 .../PersistentReplicatesOfflineException.java      |    4 +-
 .../cache/persistence/RevokeFailedException.java   |    2 +-
 .../RevokedPersistentDataException.java            |    4 +-
 .../org/apache/geode/cache/query/Aggregator.java   |    6 +-
 .../geode/cache/query/AmbiguousNameException.java  |    4 +-
 .../org/apache/geode/cache/query/CqAttributes.java |    6 +-
 .../geode/cache/query/CqAttributesFactory.java     |    6 +-
 .../geode/cache/query/CqAttributesMutator.java     |    8 +-
 .../geode/cache/query/CqClosedException.java       |    8 +-
 .../java/org/apache/geode/cache/query/CqEvent.java |   17 +-
 .../org/apache/geode/cache/query/CqException.java  |    8 +-
 .../geode/cache/query/CqExistsException.java       |    8 +-
 .../org/apache/geode/cache/query/CqListener.java   |    2 +-
 .../java/org/apache/geode/cache/query/CqQuery.java |   30 +-
 .../org/apache/geode/cache/query/CqResults.java    |   16 +-
 .../geode/cache/query/CqServiceStatistics.java     |   12 +-
 .../java/org/apache/geode/cache/query/CqState.java |    2 +-
 .../org/apache/geode/cache/query/CqStatistics.java |   10 +-
 .../apache/geode/cache/query/CqStatusListener.java |    2 +-
 .../geode/cache/query/FunctionDomainException.java |    2 +-
 .../java/org/apache/geode/cache/query/Index.java   |   13 +-
 .../geode/cache/query/IndexCreationException.java  |    6 +-
 .../geode/cache/query/IndexExistsException.java    |    4 +-
 .../geode/cache/query/IndexInvalidException.java   |    6 +-
 .../cache/query/IndexMaintenanceException.java     |    6 +-
 .../cache/query/IndexNameConflictException.java    |    4 +-
 .../apache/geode/cache/query/IndexStatistics.java  |    1 -
 .../org/apache/geode/cache/query/IndexType.java    |    2 +-
 .../cache/query/MultiIndexCreationException.java   |   10 +-
 .../geode/cache/query/NameNotFoundException.java   |    4 +-
 .../geode/cache/query/NameResolutionException.java |    4 +-
 .../query/ParameterCountInvalidException.java      |    2 +-
 .../java/org/apache/geode/cache/query/Query.java   |   30 +-
 .../apache/geode/cache/query/QueryException.java   |    8 +-
 .../query/QueryExecutionLowMemoryException.java    |   10 +-
 .../query/QueryExecutionTimeoutException.java      |    6 +-
 .../geode/cache/query/QueryInvalidException.java   |    4 +-
 .../query/QueryInvocationTargetException.java      |    6 +-
 .../org/apache/geode/cache/query/QueryService.java |  131 +-
 .../geode/cache/query/RegionNotFoundException.java |    4 +-
 .../apache/geode/cache/query/SelectResults.java    |   13 +-
 .../java/org/apache/geode/cache/query/Struct.java  |    3 +-
 .../geode/cache/query/TypeMismatchException.java   |    4 +-
 .../query/internal/AbstractCompiledValue.java      |    8 +-
 .../internal/AbstractGroupOrRangeJunction.java     |   14 +-
 .../cache/query/internal/AllGroupJunction.java     |    7 +-
 .../cache/query/internal/AttributeDescriptor.java  |    3 +-
 .../org/apache/geode/cache/query/internal/Bag.java |   10 +-
 .../query/internal/CompiledAggregateFunction.java  |    6 +-
 .../cache/query/internal/CompiledBindArgument.java |    6 +-
 .../cache/query/internal/CompiledComparison.java   |   20 +-
 .../cache/query/internal/CompiledConstruction.java |    1 +
 .../cache/query/internal/CompiledFunction.java     |    2 +-
 .../query/internal/CompiledGroupBySelect.java      |    2 +-
 .../geode/cache/query/internal/CompiledID.java     |    3 +-
 .../geode/cache/query/internal/CompiledIn.java     |    8 +-
 .../query/internal/CompiledIndexOperation.java     |    7 +-
 .../cache/query/internal/CompiledIteratorDef.java  |    2 +-
 .../cache/query/internal/CompiledJunction.java     |   36 +-
 .../geode/cache/query/internal/CompiledLike.java   |    6 +-
 .../cache/query/internal/CompiledLiteral.java      |    2 -
 .../cache/query/internal/CompiledOperation.java    |    2 +-
 .../geode/cache/query/internal/CompiledPath.java   |    2 +-
 .../geode/cache/query/internal/CompiledRegion.java |    3 +-
 .../geode/cache/query/internal/CompiledSelect.java |   24 +-
 .../cache/query/internal/CompiledUnaryMinus.java   |   11 +-
 .../cache/query/internal/CompiledUndefined.java    |    6 +-
 .../geode/cache/query/internal/CompiledValue.java  |    6 +-
 .../query/internal/CompositeGroupJunction.java     |   25 +-
 .../apache/geode/cache/query/internal/CqEntry.java |    8 +-
 .../cache/query/internal/CqQueryVsdStats.java      |   24 +-
 .../geode/cache/query/internal/CqStateImpl.java    |    2 +-
 .../internal/CumulativeNonDistinctResults.java     |    4 +-
 .../geode/cache/query/internal/DefaultQuery.java   |    4 +-
 .../cache/query/internal/DefaultQueryService.java  |   45 +-
 .../geode/cache/query/internal/DerivedInfo.java    |    4 +-
 .../cache/query/internal/ExecutionContext.java     |   14 +-
 .../apache/geode/cache/query/internal/Filter.java  |   21 +-
 .../geode/cache/query/internal/Functions.java      |    3 +-
 .../geode/cache/query/internal/GroupJunction.java  |    7 +-
 .../cache/query/internal/HashingStrategy.java      |    6 +-
 .../geode/cache/query/internal/IndexInfo.java      |    2 +-
 .../query/internal/IndexTrackingQueryObserver.java |    6 +-
 .../geode/cache/query/internal/Indexable.java      |    8 +-
 .../cache/query/internal/LinkedStructSet.java      |   11 +-
 .../cache/query/internal/NWayMergeResults.java     |   28 +-
 .../geode/cache/query/internal/Negatable.java      |    1 -
 .../geode/cache/query/internal/NullToken.java      |    2 +-
 .../cache/query/internal/ObjectIntHashMap.java     |   28 +-
 .../cache/query/internal/OrderByComparator.java    |    4 +-
 .../apache/geode/cache/query/internal/Ordered.java |    2 +-
 .../cache/query/internal/OrganizedOperands.java    |    8 +-
 .../geode/cache/query/internal/PathUtils.java      |    2 +-
 .../geode/cache/query/internal/PlanInfo.java       |    4 +-
 .../cache/query/internal/ProxyQueryService.java    |    2 +-
 .../geode/cache/query/internal/QCompiler.java      |   16 +-
 .../apache/geode/cache/query/internal/QRegion.java |    7 +-
 .../apache/geode/cache/query/internal/QScope.java  |    8 +-
 .../internal/QueryExecutionCanceledException.java  |    8 +-
 .../geode/cache/query/internal/QueryExecutor.java  |    2 +-
 .../geode/cache/query/internal/QueryMonitor.java   |   14 +-
 .../geode/cache/query/internal/QueryObserver.java  |   61 +-
 .../cache/query/internal/QueryObserverAdapter.java |   56 +-
 .../cache/query/internal/QueryObserverHolder.java  |   12 +-
 .../geode/cache/query/internal/QueryUtils.java     |   32 +-
 .../geode/cache/query/internal/RangeJunction.java  |   52 +-
 .../ResultsCollectionCopyOnReadWrapper.java        |    4 +-
 .../query/internal/ResultsCollectionWrapper.java   |   19 +-
 .../geode/cache/query/internal/ResultsSet.java     |    8 +-
 .../cache/query/internal/RuntimeIterator.java      |    6 +-
 .../query/internal/SelectResultsComparator.java    |    2 +-
 .../cache/query/internal/SortedResultSet.java      |    9 +-
 .../cache/query/internal/SortedResultsBag.java     |   16 +-
 .../cache/query/internal/SortedStructBag.java      |   12 +-
 .../cache/query/internal/SortedStructSet.java      |   19 +-
 .../geode/cache/query/internal/StructBag.java      |   14 +-
 .../geode/cache/query/internal/StructFields.java   |    4 +-
 .../geode/cache/query/internal/StructImpl.java     |    2 +-
 .../geode/cache/query/internal/StructSet.java      |   24 +-
 .../apache/geode/cache/query/internal/Support.java |    2 +-
 .../geode/cache/query/internal/Undefined.java      |    5 +-
 .../internal/aggregate/AbstractAggregator.java     |    2 +-
 .../geode/cache/query/internal/aggregate/Avg.java  |    2 +-
 .../query/internal/aggregate/AvgBucketNode.java    |    2 +-
 .../query/internal/aggregate/AvgDistinct.java      |    2 +-
 .../internal/aggregate/AvgDistinctPRQueryNode.java |    2 +-
 .../query/internal/aggregate/AvgPRQueryNode.java   |    2 +-
 .../cache/query/internal/aggregate/Count.java      |    2 +-
 .../query/internal/aggregate/CountDistinct.java    |    4 +-
 .../aggregate/CountDistinctPRQueryNode.java        |    2 +-
 .../query/internal/aggregate/CountPRQueryNode.java |    2 +-
 .../internal/aggregate/DistinctAggregator.java     |    2 +-
 .../cache/query/internal/aggregate/MaxMin.java     |    2 +-
 .../geode/cache/query/internal/aggregate/Sum.java  |    2 +-
 .../internal/aggregate/SumDistinctPRQueryNode.java |    2 +-
 .../geode/cache/query/internal/cq/ClientCQ.java    |    2 +-
 .../cache/query/internal/cq/CqAttributesImpl.java  |   14 +-
 .../geode/cache/query/internal/cq/CqService.java   |   26 +-
 .../cache/query/internal/cq/CqServiceProvider.java |    8 +-
 .../cache/query/internal/cq/InternalCqQuery.java   |    4 +-
 .../geode/cache/query/internal/cq/ServerCQ.java    |    8 +-
 .../cache/query/internal/index/AbstractIndex.java  |   22 +-
 .../query/internal/index/CompactRangeIndex.java    |   34 +-
 .../cache/query/internal/index/HashIndex.java      |    2 +-
 .../cache/query/internal/index/HashIndexSet.java   |   52 +-
 .../cache/query/internal/index/IMQException.java   |    6 +-
 .../internal/index/IndexConcurrentHashSet.java     |    8 +-
 .../query/internal/index/IndexCreationData.java    |    4 +-
 .../cache/query/internal/index/IndexData.java      |    6 +-
 .../cache/query/internal/index/IndexElemArray.java |   24 +-
 .../cache/query/internal/index/IndexManager.java   |   34 +-
 .../cache/query/internal/index/IndexProtocol.java  |   24 +-
 .../cache/query/internal/index/IndexStats.java     |    2 +-
 .../cache/query/internal/index/IndexStore.java     |   10 +-
 .../internal/index/IndexedExpressionEvaluator.java |    2 +-
 .../cache/query/internal/index/MapRangeIndex.java  |    1 +
 .../query/internal/index/MemoryIndexStore.java     |    9 +-
 .../query/internal/index/PartitionedIndex.java     |   26 +-
 .../cache/query/internal/index/RangeIndex.java     |   16 +-
 .../query/internal/parse/ASTAggregateFunc.java     |    2 +-
 .../geode/cache/query/internal/parse/ASTAnd.java   |    1 +
 .../cache/query/internal/parse/ASTCombination.java |    1 +
 .../cache/query/internal/parse/ASTCompareOp.java   |    1 +
 .../query/internal/parse/ASTConstruction.java      |    1 +
 .../query/internal/parse/ASTConversionExpr.java    |    1 +
 .../cache/query/internal/parse/ASTGroupBy.java     |    4 +-
 .../geode/cache/query/internal/parse/ASTHint.java  |    4 +-
 .../query/internal/parse/ASTHintIdentifier.java    |    4 +-
 .../cache/query/internal/parse/ASTIdentifier.java  |    1 +
 .../cache/query/internal/parse/ASTImport.java      |    1 +
 .../geode/cache/query/internal/parse/ASTIn.java    |    1 +
 .../cache/query/internal/parse/ASTIteratorDef.java |    4 +-
 .../geode/cache/query/internal/parse/ASTLike.java  |    2 +-
 .../geode/cache/query/internal/parse/ASTLimit.java |    1 +
 .../cache/query/internal/parse/ASTLiteral.java     |    6 +-
 .../query/internal/parse/ASTMethodInvocation.java  |    3 +-
 .../geode/cache/query/internal/parse/ASTOr.java    |    1 +
 .../cache/query/internal/parse/ASTOrderBy.java     |    4 +-
 .../cache/query/internal/parse/ASTParameter.java   |    1 +
 .../cache/query/internal/parse/ASTPostfix.java     |    1 +
 .../cache/query/internal/parse/ASTProjection.java  |    1 +
 .../cache/query/internal/parse/ASTRegionPath.java  |    1 +
 .../cache/query/internal/parse/ASTSelect.java      |    2 +-
 .../query/internal/parse/ASTSortCriterion.java     |    1 +
 .../geode/cache/query/internal/parse/ASTTrace.java |    4 +-
 .../geode/cache/query/internal/parse/ASTType.java  |    1 +
 .../cache/query/internal/parse/ASTTypeCast.java    |    1 +
 .../geode/cache/query/internal/parse/ASTUnary.java |    6 +-
 .../query/internal/parse/ASTUndefinedExpr.java     |    1 +
 .../cache/query/internal/parse/ASTUnsupported.java |    1 +
 .../cache/query/internal/parse/GemFireAST.java     |    3 +-
 .../cache/query/internal/parse/UtilParser.java     |    3 +-
 .../query/internal/types/CollectionTypeImpl.java   |    2 +-
 .../internal/types/ExtendedNumericComparator.java  |    2 +-
 .../cache/query/internal/types/MapTypeImpl.java    |    5 +-
 .../query/internal/types/NumericComparator.java    |    2 -
 .../cache/query/internal/types/ObjectTypeImpl.java |    4 +-
 .../cache/query/internal/types/StructTypeImpl.java |    5 +-
 .../query/internal/types/TemporalComparator.java   |    2 -
 .../cache/query/internal/types/TypeUtils.java      |   23 +-
 .../geode/cache/query/types/CollectionType.java    |    4 +-
 .../apache/geode/cache/query/types/MapType.java    |    2 +-
 .../apache/geode/cache/query/types/StructType.java |    4 +-
 .../org/apache/geode/cache/server/CacheServer.java |   74 +-
 .../cache/server/ClientSubscriptionConfig.java     |   28 +-
 .../org/apache/geode/cache/server/ServerLoad.java  |   18 +-
 .../apache/geode/cache/server/ServerLoadProbe.java |    8 +-
 .../geode/cache/server/ServerLoadProbeAdapter.java |    4 +-
 .../apache/geode/cache/server/ServerMetrics.java   |    2 +-
 .../server/internal/ConnectionCountProbe.java      |    8 +-
 .../geode/cache/server/internal/LoadMonitor.java   |    4 +-
 .../cache/server/internal/ServerMetricsImpl.java   |    2 +-
 .../geode/cache/snapshot/CacheSnapshotService.java |   32 +-
 .../cache/snapshot/RegionSnapshotService.java      |   40 +-
 .../geode/cache/snapshot/SnapshotFilter.java       |    9 +-
 .../geode/cache/snapshot/SnapshotIterator.java     |   18 +-
 .../geode/cache/snapshot/SnapshotOptions.java      |   10 +-
 .../geode/cache/snapshot/SnapshotReader.java       |    9 +-
 .../geode/cache/util/CacheListenerAdapter.java     |    6 +-
 .../apache/geode/cache/util/CqListenerAdapter.java |    2 +-
 .../java/org/apache/geode/cache/util/Gateway.java  |    6 +-
 .../geode/cache/util/GatewayConflictHelper.java    |    4 +-
 .../geode/cache/util/GatewayConflictResolver.java  |    4 +-
 .../org/apache/geode/cache/util/GatewayEvent.java  |   24 +-
 .../org/apache/geode/cache/util/ObjectSizer.java   |   20 +-
 .../util/RegionMembershipListenerAdapter.java      |    4 +-
 .../cache/util/RegionRoleListenerAdapter.java      |    3 +-
 .../cache/util/StringPrefixPartitionResolver.java  |    4 +-
 .../geode/cache/util/TimestampedEntryEvent.java    |    2 +-
 .../cache/util/TransactionListenerAdapter.java     |    6 +-
 .../apache/geode/cache/wan/GatewayEventFilter.java |   10 +-
 .../cache/wan/GatewayEventSubstitutionFilter.java  |    2 +-
 .../apache/geode/cache/wan/GatewayQueueEvent.java  |   20 +-
 .../apache/geode/cache/wan/GatewayReceiver.java    |   28 +-
 .../geode/cache/wan/GatewayReceiverFactory.java    |   24 +-
 .../org/apache/geode/cache/wan/GatewaySender.java  |   74 +-
 .../geode/cache/wan/GatewaySenderFactory.java      |   46 +-
 .../geode/compression/CompressionException.java    |    2 +-
 .../org/apache/geode/compression/Compressor.java   |   14 +-
 .../apache/geode/compression/SnappyCompressor.java |    4 +-
 .../apache/geode/distributed/AbstractLauncher.java |    2 +-
 .../geode/distributed/ClientSocketFactory.java     |   10 +-
 .../geode/distributed/ConfigurationProperties.java |  103 +-
 .../geode/distributed/DistributedLockService.java  |   40 +-
 .../geode/distributed/DistributedMember.java       |   10 +-
 .../geode/distributed/DistributedSystem.java       |   92 +-
 .../DistributedSystemDisconnectedException.java    |    2 +-
 .../geode/distributed/DurableClientAttributes.java |    6 +-
 .../distributed/FutureCancelledException.java      |    3 +-
 .../distributed/GatewayCancelledException.java     |    2 +-
 .../java/org/apache/geode/distributed/Locator.java |   46 +-
 .../apache/geode/distributed/LocatorLauncher.java  |    8 +-
 .../geode/distributed/LockNotHeldException.java    |    1 -
 .../distributed/LockServiceDestroyedException.java |    1 -
 .../geode/distributed/OplogCancelledException.java |    2 +-
 .../geode/distributed/PoolCancelledException.java  |    2 +-
 .../java/org/apache/geode/distributed/Role.java    |    1 -
 .../distributed/ServerLauncherCacheProvider.java   |    4 +-
 .../distributed/TXManagerCancelledException.java   |    2 +-
 .../internal/AbstractDistributionConfig.java       |   11 +-
 .../internal/AtomicLongWithTerminalState.java      |    4 +-
 .../geode/distributed/internal/CacheTime.java      |    2 +-
 .../internal/ClusterConfigurationService.java      |   78 +-
 .../internal/CollectingReplyProcessor.java         |    8 +-
 .../geode/distributed/internal/ConflationKey.java  |    3 +-
 .../org/apache/geode/distributed/internal/DM.java  |  210 +-
 .../apache/geode/distributed/internal/DMStats.java |   16 +-
 .../apache/geode/distributed/internal/DSClock.java |   19 +-
 .../distributed/internal/DirectReplyProcessor.java |   12 +-
 .../distributed/internal/DistributionAdvisee.java  |   20 +-
 .../distributed/internal/DistributionAdvisor.java  |  125 +-
 .../distributed/internal/DistributionChannel.java  |    2 +-
 .../distributed/internal/DistributionConfig.java   |  488 ++---
 .../internal/DistributionConfigImpl.java           |   43 +-
 .../internal/DistributionConfigSnapshot.java       |    2 +-
 .../distributed/internal/DistributionManager.java  |  189 +-
 .../distributed/internal/DistributionMessage.java  |   16 +-
 .../internal/DistributionMessageObserver.java      |   24 +-
 .../distributed/internal/DistributionStats.java    |  331 ++-
 .../distributed/internal/FlowControlParams.java    |    4 +-
 .../internal/FunctionExecutionPooledExecutor.java  |   10 +-
 .../geode/distributed/internal/HealthMonitor.java  |    2 +-
 .../distributed/internal/HealthMonitorImpl.java    |    2 +-
 .../internal/HighPriorityAckedMessage.java         |    6 +-
 .../internal/InternalDistributedSystem.java        |  113 +-
 .../distributed/internal/InternalLocator.java      |  109 +-
 .../distributed/internal/LocatorLoadSnapshot.java  |   14 +-
 .../geode/distributed/internal/LocatorStats.java   |   16 +-
 .../internal/LonerDistributionManager.java         |   73 +-
 .../distributed/internal/MembershipListener.java   |    4 +-
 .../internal/OverflowQueueWithDMStats.java         |    2 +-
 .../internal/PooledDistributionMessage.java        |    1 -
 .../internal/PooledExecutorWithDMStats.java        |    6 +-
 .../distributed/internal/ProcessorKeeper21.java    |   13 +-
 .../geode/distributed/internal/ProductUseLog.java  |    2 +-
 .../distributed/internal/ProfileListener.java      |    8 +-
 .../internal/ReliableReplyException.java           |    2 +-
 .../internal/ReliableReplyProcessor21.java         |    4 +-
 .../geode/distributed/internal/ReplyException.java |   16 +-
 .../geode/distributed/internal/ReplyMessage.java   |    2 +-
 .../distributed/internal/ReplyProcessor21.java     |   57 +-
 .../geode/distributed/internal/ReplySender.java    |    2 +-
 .../geode/distributed/internal/ResourceEvent.java  |    1 -
 .../internal/ResourceEventsListener.java           |    6 +-
 .../internal/RuntimeDistributionConfigImpl.java    |   12 +-
 .../distributed/internal/SerialAckedMessage.java   |    6 +-
 .../internal/SerialDistributionMessage.java        |    1 -
 .../geode/distributed/internal/ServerLocation.java |    2 +-
 .../geode/distributed/internal/ServerLocator.java  |    8 +-
 .../distributed/internal/ShutdownMessage.java      |    8 +-
 .../geode/distributed/internal/Sizeable.java       |    2 +-
 .../distributed/internal/SizeableRunnable.java     |    4 +-
 .../geode/distributed/internal/StartupMessage.java |   30 +-
 .../distributed/internal/StartupMessageData.java   |    4 +-
 .../internal/StartupMessageReplyProcessor.java     |    1 +
 .../distributed/internal/StartupOperation.java     |    2 +-
 .../internal/StartupResponseMessage.java           |    1 -
 .../internal/ThrottledMemQueueStatHelper.java      |    6 +-
 .../internal/ThrottledQueueStatHelper.java         |    2 +-
 .../ThrottlingMemLinkedQueueWithDMStats.java       |    3 +-
 .../internal/WaitForViewInstallation.java          |    6 +-
 .../internal/deadlock/DLockDependencyMonitor.java  |    2 +-
 .../internal/deadlock/DeadlockDetector.java        |   20 +-
 .../distributed/internal/deadlock/Dependency.java  |    7 +-
 .../internal/deadlock/DependencyGraph.java         |   16 +-
 .../internal/deadlock/DependencyMonitor.java       |    2 +-
 .../deadlock/DependencyMonitorManager.java         |    8 +-
 .../internal/deadlock/GemFireDeadlockDetector.java |    6 +-
 .../internal/deadlock/LocalLockInfo.java           |    2 +-
 .../distributed/internal/deadlock/LocalThread.java |    2 +-
 .../deadlock/MessageDependencyMonitor.java         |    4 +-
 .../internal/deadlock/UnsafeThreadLocal.java       |    8 +-
 .../distributed/internal/direct/DirectChannel.java |   45 +-
 .../internal/direct/DirectChannelListener.java     |    4 +-
 .../internal/direct/ShunnedMemberException.java    |    2 +-
 .../distributed/internal/locks/DLockBatch.java     |    4 +-
 .../distributed/internal/locks/DLockBatchId.java   |    1 -
 .../distributed/internal/locks/DLockGrantor.java   |  244 +--
 .../locks/DLockLessorDepartureHandler.java         |    1 -
 .../internal/locks/DLockQueryProcessor.java        |   18 +-
 .../locks/DLockRecoverGrantorProcessor.java        |    5 +-
 .../internal/locks/DLockReleaseProcessor.java      |    1 -
 .../internal/locks/DLockRemoteToken.java           |   30 +-
 .../distributed/internal/locks/DLockService.java   |  104 +-
 .../distributed/internal/locks/DLockStats.java     |  143 +-
 .../distributed/internal/locks/DLockToken.java     |   46 +-
 .../internal/locks/DeposeGrantorProcessor.java     |    3 +-
 .../internal/locks/DistributedLockStats.java       |    1 -
 .../internal/locks/DistributedMemberLock.java      |   21 +-
 .../internal/locks/DummyDLockStats.java            |    1 -
 .../internal/locks/ElderInitProcessor.java         |    1 -
 .../distributed/internal/locks/ElderState.java     |    8 +-
 .../internal/locks/GrantorRequestProcessor.java    |   23 +-
 .../locks/LockGrantorDestroyedException.java       |    1 -
 .../distributed/internal/locks/LockGrantorId.java  |   26 +-
 .../locks/NonGrantorDestroyedProcessor.java        |    6 +-
 .../distributed/internal/locks/RemoteThread.java   |    3 +-
 .../membership/DistributedMembershipListener.java  |   14 +-
 .../membership/InternalDistributedMember.java      |   40 +-
 .../internal/membership/InternalRole.java          |   16 +-
 .../internal/membership/MemberAttributes.java      |    1 -
 .../internal/membership/MemberFactory.java         |   16 +-
 .../internal/membership/MemberServices.java        |   20 +-
 .../internal/membership/MembershipManager.java     |   44 +-
 .../internal/membership/MembershipTestHook.java    |    4 +-
 .../distributed/internal/membership/NetMember.java |    8 +-
 .../distributed/internal/membership/NetView.java   |   25 +-
 .../internal/membership/QuorumChecker.java         |    4 +-
 .../internal/membership/gms/GMSMember.java         |   39 +-
 .../internal/membership/gms/GMSMemberFactory.java  |    8 +-
 .../internal/membership/gms/GMSUtil.java           |    4 +-
 .../internal/membership/gms/NetLocator.java        |    2 +-
 .../internal/membership/gms/ServiceConfig.java     |    6 +-
 .../internal/membership/gms/Services.java          |    7 +-
 .../membership/gms/fd/GMSHealthMonitor.java        |   67 +-
 .../membership/gms/interfaces/HealthMonitor.java   |    6 +-
 .../membership/gms/interfaces/Manager.java         |   12 +-
 .../membership/gms/interfaces/Messenger.java       |   16 +-
 .../membership/gms/locator/GMSLocator.java         |   13 +-
 .../membership/gms/membership/GMSJoinLeave.java    |   49 +-
 .../membership/gms/membership/HostAddress.java     |    2 +-
 .../membership/gms/messenger/AddressManager.java   |    4 +-
 .../membership/gms/messenger/GMSEncrypt.java       |    7 +-
 .../membership/gms/messenger/JGAddress.java        |   19 +-
 .../membership/gms/messenger/JGroupsMessenger.java |   87 +-
 .../membership/gms/messenger/StatRecorder.java     |    8 +-
 .../membership/gms/messenger/Transport.java        |    6 +-
 .../membership/gms/mgr/GMSMembershipManager.java   |   16 +-
 .../membership/gms/mgr/LocalViewMessage.java       |    2 +-
 .../internal/streaming/StreamingOperation.java     |    8 +-
 .../internal/tcpserver/InfoRequest.java            |    2 +-
 .../internal/tcpserver/InfoResponse.java           |    2 +-
 .../internal/tcpserver/ShutdownRequest.java        |    2 +-
 .../internal/tcpserver/ShutdownResponse.java       |    2 +-
 .../distributed/internal/tcpserver/TcpClient.java  |   10 +-
 .../distributed/internal/tcpserver/TcpHandler.java |    6 +-
 .../distributed/internal/tcpserver/TcpServer.java  |   29 +-
 .../internal/tcpserver/VersionRequest.java         |    4 +-
 .../internal/tcpserver/VersionResponse.java        |    8 +-
 .../unsafe/RegisterSignalHandlerSupport.java       |    2 +-
 .../examples/security/ExamplePostProcessor.java    |    4 +-
 .../examples/security/ExampleSecurityManager.java  |    2 +-
 .../java/org/apache/geode/i18n/LogWriterI18n.java  |   72 +-
 .../main/java/org/apache/geode/i18n/StringId.java  |   16 +-
 .../org/apache/geode/internal/AbstractConfig.java  |    6 +-
 .../java/org/apache/geode/internal/Assert.java     |    6 +-
 .../org/apache/geode/internal/AvailablePort.java   |    4 +-
 .../java/org/apache/geode/internal/Banner.java     |   12 +-
 .../apache/geode/internal/ByteArrayDataInput.java  |    4 +-
 .../geode/internal/ByteBufferOutputStream.java     |    4 +-
 .../org/apache/geode/internal/ClassPathLoader.java |   21 +-
 .../java/org/apache/geode/internal/Config.java     |   22 +-
 .../org/apache/geode/internal/ConfigSource.java    |    2 +-
 .../apache/geode/internal/ConnectionWatcher.java   |    2 +-
 .../apache/geode/internal/CopyOnWriteHashSet.java  |    6 +-
 .../java/org/apache/geode/internal/DSCODE.java     |   56 +-
 .../org/apache/geode/internal/DSFIDFactory.java    |   23 +-
 .../geode/internal/DSFIDNotFoundException.java     |    2 +-
 .../geode/internal/DataSerializableFixedID.java    |   20 +-
 .../org/apache/geode/internal/GemFireVersion.java  |  219 +-
 .../geode/internal/GfeConsoleReaderFactory.java    |   10 +-
 .../geode/internal/HeapDataOutputStream.java       |   47 +-
 .../org/apache/geode/internal/HistogramStats.java  |    4 +-
 .../geode/internal/InternalDataSerializer.java     |  157 +-
 .../org/apache/geode/internal/InternalEntity.java  |    4 +-
 .../geode/internal/InternalInstantiator.java       |   10 +-
 .../InternalStatisticsDisabledException.java       |    6 +-
 .../org/apache/geode/internal/JarDeployer.java     |   20 +-
 .../org/apache/geode/internal/ManagerInfo.java     |   13 +-
 .../org/apache/geode/internal/MigrationClient.java |   10 +-
 .../org/apache/geode/internal/MigrationServer.java |   28 +-
 .../java/org/apache/geode/internal/NanoTimer.java  |   21 +-
 .../geode/internal/NullDataOutputStream.java       |   17 +-
 .../java/org/apache/geode/internal/OSProcess.java  |   51 +-
 .../apache/geode/internal/ObjIdConcurrentMap.java  |   32 +-
 .../java/org/apache/geode/internal/ObjIdMap.java   |    4 +-
 .../geode/internal/ObjToByteArraySerializer.java   |    4 +-
 .../apache/geode/internal/OneTaskOnlyExecutor.java |   14 +-
 .../apache/geode/internal/PdxSerializerObject.java |    6 +-
 .../apache/geode/internal/ProcessOutputReader.java |    2 +-
 .../org/apache/geode/internal/PureJavaMode.java    |    6 +-
 .../ScheduledThreadPoolExecutorWithKeepAlive.java  |    8 +-
 .../java/org/apache/geode/internal/Sendable.java   |    4 +-
 .../geode/internal/SerializationVersions.java      |    2 +-
 .../java/org/apache/geode/internal/SetUtils.java   |    4 +-
 .../org/apache/geode/internal/SharedLibrary.java   |   14 +-
 .../java/org/apache/geode/internal/SmHelper.java   |    8 +-
 .../org/apache/geode/internal/SystemAdmin.java     |   27 +-
 .../geode/internal/SystemFailureTestHook.java      |    2 +-
 .../org/apache/geode/internal/SystemTimer.java     |   34 +-
 .../apache/geode/internal/UniqueIdGenerator.java   |   14 +-
 .../java/org/apache/geode/internal/Version.java    |   25 +-
 .../apache/geode/internal/VersionDescription.java  |  212 ++
 .../geode/internal/VersionedDataInputStream.java   |    4 +-
 .../geode/internal/VersionedDataOutputStream.java  |    4 +-
 .../geode/internal/VersionedDataSerializable.java  |    2 +-
 .../apache/geode/internal/VersionedDataStream.java |    4 +-
 .../geode/internal/VersionedObjectInput.java       |    4 +-
 .../geode/internal/VersionedObjectOutput.java      |    4 +-
 .../org/apache/geode/internal/admin/Alert.java     |   22 +-
 .../apache/geode/internal/admin/ApplicationVM.java |    2 -
 .../geode/internal/admin/CacheCollector.java       |    7 +-
 .../org/apache/geode/internal/admin/CacheInfo.java |    2 +-
 .../admin/ClientHealthMonitoringRegion.java        |    4 +-
 .../internal/admin/ClientMembershipMessage.java    |   10 +-
 .../geode/internal/admin/ClientStatsManager.java   |    6 +-
 .../internal/admin/CompoundEntrySnapshot.java      |    5 +-
 .../internal/admin/CompoundRegionSnapshot.java     |    1 +
 .../org/apache/geode/internal/admin/DLockInfo.java |    1 +
 .../org/apache/geode/internal/admin/GemFireVM.java |   30 +-
 .../geode/internal/admin/GfManagerAgent.java       |    3 +-
 .../apache/geode/internal/admin/ListenerIdMap.java |    4 +-
 .../org/apache/geode/internal/admin/SSLConfig.java |    3 +-
 .../java/org/apache/geode/internal/admin/Stat.java |    1 -
 .../org/apache/geode/internal/admin/StatAlert.java |   16 +-
 .../geode/internal/admin/StatAlertDefinition.java  |   10 +-
 .../geode/internal/admin/StatAlertsManager.java    |   30 +-
 .../apache/geode/internal/admin/StatResource.java  |    1 -
 .../geode/internal/admin/TransportConfig.java      |    1 -
 .../admin/remote/AddHealthListenerRequest.java     |   10 +-
 .../admin/remote/AddHealthListenerResponse.java    |   13 +-
 .../admin/remote/AddStatListenerRequest.java       |   11 +-
 .../admin/remote/AddStatListenerResponse.java      |   10 +-
 .../remote/AdminConsoleDisconnectMessage.java      |    4 +-
 .../admin/remote/AdminFailureResponse.java         |   39 +-
 .../admin/remote/AdminMultipleReplyProcessor.java  |   51 +-
 .../geode/internal/admin/remote/AdminRegion.java   |   22 +-
 .../geode/internal/admin/remote/AdminRequest.java  |    8 +-
 .../geode/internal/admin/remote/AdminResponse.java |    6 +-
 .../geode/internal/admin/remote/AdminWaiters.java  |    2 +-
 .../admin/remote/AlertLevelChangeMessage.java      |    2 +-
 .../admin/remote/AlertListenerMessage.java         |    9 +-
 .../admin/remote/AlertsNotificationMessage.java    |    4 +-
 .../admin/remote/AppCacheSnapshotMessage.java      |    8 +-
 .../internal/admin/remote/BridgeServerRequest.java |    8 +-
 .../admin/remote/BridgeServerResponse.java         |    4 +-
 .../internal/admin/remote/CacheConfigRequest.java  |   11 +-
 .../internal/admin/remote/CacheConfigResponse.java |    8 +-
 .../internal/admin/remote/CacheInfoRequest.java    |   12 +-
 .../internal/admin/remote/CacheInfoResponse.java   |    7 +-
 .../admin/remote/CancelStatListenerRequest.java    |    8 +-
 .../admin/remote/CancelStatListenerResponse.java   |   12 +-
 .../internal/admin/remote/CancellationMessage.java |    7 +-
 .../admin/remote/CancellationRegistry.java         |    5 +-
 .../admin/remote/ChangeRefreshIntervalMessage.java |    4 +-
 .../internal/admin/remote/CliLegacyMessage.java    |    3 +-
 .../internal/admin/remote/ClientHealthStats.java   |   29 +-
 .../internal/admin/remote/CompactRequest.java      |   13 +-
 .../internal/admin/remote/DestroyEntryMessage.java |    3 -
 .../admin/remote/DestroyRegionMessage.java         |    3 -
 .../admin/remote/DistributionLocatorId.java        |   24 +-
 .../admin/remote/DurableClientInfoRequest.java     |   15 +-
 .../admin/remote/DurableClientInfoResponse.java    |    8 +-
 .../internal/admin/remote/EntryValueNodeImpl.java  |   10 +-
 .../admin/remote/FetchDistLockInfoRequest.java     |   10 +-
 .../admin/remote/FetchDistLockInfoResponse.java    |   13 +-
 .../admin/remote/FetchHealthDiagnosisRequest.java  |   11 +-
 .../admin/remote/FetchHealthDiagnosisResponse.java |   12 +-
 .../internal/admin/remote/FetchHostRequest.java    |    6 +-
 .../internal/admin/remote/FetchHostResponse.java   |   28 +-
 .../remote/FetchResourceAttributesRequest.java     |    8 +-
 .../remote/FetchResourceAttributesResponse.java    |   30 +-
 .../internal/admin/remote/FetchStatsRequest.java   |    8 +-
 .../internal/admin/remote/FetchStatsResponse.java  |   31 +-
 .../internal/admin/remote/FetchSysCfgRequest.java  |    6 +-
 .../internal/admin/remote/FetchSysCfgResponse.java |   11 +-
 .../admin/remote/FlushAppCacheSnapshotMessage.java |    5 +-
 .../admin/remote/HealthListenerMessage.java        |   12 +-
 .../internal/admin/remote/LicenseInfoRequest.java  |   10 +-
 .../internal/admin/remote/LicenseInfoResponse.java |   21 +-
 .../admin/remote/MissingPersistentIDsRequest.java  |   13 +-
 .../admin/remote/ObjectDetailsRequest.java         |   11 +-
 .../admin/remote/ObjectDetailsResponse.java        |   12 +-
 .../internal/admin/remote/ObjectNamesRequest.java  |   10 +-
 .../internal/admin/remote/ObjectNamesResponse.java |   10 +-
 .../remote/PrepareRevokePersistentIDRequest.java   |    3 +-
 .../admin/remote/RefreshMemberSnapshotRequest.java |    7 +-
 .../remote/RefreshMemberSnapshotResponse.java      |    5 +-
 .../internal/admin/remote/RegionAdminMessage.java  |    8 +-
 .../internal/admin/remote/RegionAdminRequest.java  |    9 +-
 .../admin/remote/RegionAttributesRequest.java      |   10 +-
 .../admin/remote/RegionAttributesResponse.java     |   10 +-
 .../geode/internal/admin/remote/RegionRequest.java |   11 +-
 .../internal/admin/remote/RegionResponse.java      |   13 +-
 .../internal/admin/remote/RegionSizeRequest.java   |   10 +-
 .../internal/admin/remote/RegionSizeResponse.java  |   11 +-
 .../admin/remote/RegionStatisticsRequest.java      |    8 +-
 .../admin/remote/RegionStatisticsResponse.java     |   10 +-
 .../admin/remote/RegionSubRegionSizeRequest.java   |    6 +-
 .../admin/remote/RegionSubRegionsSizeResponse.java |    9 +-
 .../geode/internal/admin/remote/RemoteAlert.java   |   14 +-
 .../internal/admin/remote/RemoteApplicationVM.java |    4 +-
 .../internal/admin/remote/RemoteBridgeServer.java  |   12 +-
 .../admin/remote/RemoteCacheStatistics.java        |    3 +-
 .../internal/admin/remote/RemoteDLockInfo.java     |    9 +-
 .../internal/admin/remote/RemoteEntrySnapshot.java |    4 +-
 .../internal/admin/remote/RemoteGemFireVM.java     |   16 +-
 .../admin/remote/RemoteGfManagerAgent.java         |   32 +-
 .../internal/admin/remote/RemoteObjectName.java    |    8 +-
 .../admin/remote/RemoteRegionAttributes.java       |    4 +-
 .../admin/remote/RemoteRegionSnapshot.java         |    6 +-
 .../geode/internal/admin/remote/RemoteStat.java    |    4 +-
 .../internal/admin/remote/RemoteStatResource.java  |    3 +-
 .../admin/remote/RemoteTransportConfig.java        |   19 +-
 .../admin/remote/RemoveHealthListenerRequest.java  |   11 +-
 .../admin/remote/RemoveHealthListenerResponse.java |   13 +-
 .../admin/remote/ResetHealthStatusRequest.java     |   13 +-
 .../admin/remote/ResetHealthStatusResponse.java    |   13 +-
 .../admin/remote/RevokePersistentIDRequest.java    |    3 +-
 .../internal/admin/remote/RootRegionRequest.java   |    8 +-
 .../internal/admin/remote/RootRegionResponse.java  |    5 +-
 .../remote/ShutdownAllGatewayHubsRequest.java      |    6 +-
 .../internal/admin/remote/ShutdownAllRequest.java  |    4 +-
 .../internal/admin/remote/ShutdownAllResponse.java |    4 +-
 .../admin/remote/SnapshotResultMessage.java        |    9 +-
 .../remote/StatAlertsManagerAssignMessage.java     |   16 +-
 .../internal/admin/remote/StatListenerMessage.java |    9 +-
 .../internal/admin/remote/StoreSysCfgRequest.java  |    9 +-
 .../internal/admin/remote/StoreSysCfgResponse.java |    9 +-
 .../internal/admin/remote/SubRegionRequest.java    |   10 +-
 .../internal/admin/remote/SubRegionResponse.java   |   11 +-
 .../internal/admin/remote/TailLogRequest.java      |    8 +-
 .../internal/admin/remote/TailLogResponse.java     |   14 +-
 .../admin/remote/UpdateAlertDefinitionMessage.java |   13 +-
 .../internal/admin/remote/VersionInfoRequest.java  |   12 +-
 .../internal/admin/remote/VersionInfoResponse.java |   14 +-
 .../admin/remote/VersionMismatchAlert.java         |    7 +-
 .../admin/statalerts/BaseDecoratorImpl.java        |   10 +-
 .../admin/statalerts/DummyStatisticInfoImpl.java   |    8 +-
 .../admin/statalerts/FunctionDecoratorImpl.java    |    4 +-
 .../internal/admin/statalerts/FunctionHelper.java  |   26 +-
 .../statalerts/GaugeThresholdDecoratorImpl.java    |    4 +-
 .../admin/statalerts/MultiAttrDefinitionImpl.java  |    9 +-
 .../statalerts/NumberThresholdDecoratorImpl.java   |    4 +-
 .../admin/statalerts/SingleAttrDefinitionImpl.java |   14 +-
 .../internal/admin/statalerts/StatisticInfo.java   |   15 +-
 .../admin/statalerts/StatisticInfoImpl.java        |    8 +-
 .../internal/cache/AbstractBucketRegionQueue.java  |   19 +-
 .../geode/internal/cache/AbstractCacheServer.java  |    8 +-
 .../internal/cache/AbstractDiskLRURegionEntry.java |    1 +
 .../geode/internal/cache/AbstractDiskRegion.java   |   34 +-
 .../internal/cache/AbstractDiskRegionEntry.java    |   59 -
 .../internal/cache/AbstractLRURegionEntry.java     |   39 -
 .../geode/internal/cache/AbstractLRURegionMap.java |   25 +-
 .../cache/AbstractOplogDiskRegionEntry.java        |  166 --
 .../geode/internal/cache/AbstractRegion.java       |   45 +-
 .../geode/internal/cache/AbstractRegionEntry.java  | 2210 -------------------
 .../geode/internal/cache/AbstractRegionMap.java    |   88 +-
 .../internal/cache/AbstractUpdateOperation.java    |    4 +-
 .../apache/geode/internal/cache/AcceptHelper.java  |    6 +-
 .../cache/AddCacheServerProfileMessage.java        |    1 -
 .../apache/geode/internal/cache/BackupLock.java    |   99 -
 .../apache/geode/internal/cache/BackupManager.java |  603 ------
 .../apache/geode/internal/cache/BucketAdvisor.java |  104 +-
 .../apache/geode/internal/cache/BucketDump.java    |    4 +-
 .../internal/cache/BucketNotFoundException.java    |    4 +-
 .../internal/cache/BucketPersistenceAdvisor.java   |    6 +-
 .../internal/cache/BucketRedundancyTracker.java    |    2 +-
 .../apache/geode/internal/cache/BucketRegion.java  |  101 +-
 .../geode/internal/cache/BucketRegionEvictior.java |    7 +-
 .../geode/internal/cache/BucketRegionQueue.java    |   26 +-
 .../geode/internal/cache/BucketServerLocation.java |    4 +-
 .../internal/cache/BucketServerLocation66.java     |    4 +-
 .../internal/cache/BytesAndBitsForCompactor.java   |    4 +-
 .../geode/internal/cache/CacheClientStatus.java    |    3 +-
 .../apache/geode/internal/cache/CacheConfig.java   |    6 +-
 .../internal/cache/CacheDistributionAdvisee.java   |   14 +-
 .../internal/cache/CacheDistributionAdvisor.java   |   30 +-
 .../internal/cache/CacheLifecycleListener.java     |    2 +-
 .../apache/geode/internal/cache/CacheObserver.java |   32 +-
 .../geode/internal/cache/CacheObserverAdapter.java |   12 +-
 .../geode/internal/cache/CacheObserverHolder.java  |   16 +-
 .../geode/internal/cache/CachePerfStats.java       |   18 +-
 .../geode/internal/cache/CacheServerAdvisor.java   |    2 +-
 .../geode/internal/cache/CacheServerImpl.java      |   32 +-
 .../geode/internal/cache/CacheServerLauncher.java  |    6 +-
 .../apache/geode/internal/cache/CacheService.java  |    6 +-
 .../geode/internal/cache/CacheServiceProfile.java  |    4 +-
 .../geode/internal/cache/CacheStatisticsImpl.java  |    3 -
 .../geode/internal/cache/CachedDeserializable.java |   14 +-
 .../cache/CachedDeserializableFactory.java         |    8 +-
 .../internal/cache/ClientRegionEventImpl.java      |   12 +-
 .../geode/internal/cache/ClientServerObserver.java |   10 +-
 .../cache/ClientServerObserverAdapter.java         |    6 +-
 .../internal/cache/ClientServerObserverHolder.java |    2 +-
 .../cache/ClientSubscriptionConfigImpl.java        |   20 +-
 .../geode/internal/cache/CloseCacheMessage.java    |    1 -
 .../internal/cache/ClusterConfigurationLoader.java |    6 +-
 .../geode/internal/cache/ColocationHelper.java     |    8 +-
 .../geode/internal/cache/ColocationLogger.java     |    8 +-
 .../geode/internal/cache/CommitReplyException.java |    4 +-
 .../geode/internal/cache/CompactableOplog.java     |    4 +-
 .../apache/geode/internal/cache/Conflatable.java   |   16 +-
 .../geode/internal/cache/ControllerAdvisor.java    |    2 +-
 .../internal/cache/CountingDataInputStream.java    |    4 +-
 .../internal/cache/CreateRegionProcessor.java      |    4 +-
 .../internal/cache/CustomEntryExpiryTask.java      |    2 +-
 .../internal/cache/DataLocationException.java      |    2 +-
 .../cache/DestroyPartitionedRegionMessage.java     |   14 +-
 .../internal/cache/DestroyRegionOperation.java     |   18 +-
 .../geode/internal/cache/DestroyedEntry.java       |    2 +-
 .../geode/internal/cache/DirectReplyMessage.java   |    8 +-
 .../geode/internal/cache/DirectoryHolder.java      |    6 +-
 .../geode/internal/cache/DiskDirectoryStats.java   |    2 -
 .../org/apache/geode/internal/cache/DiskEntry.java | 1773 ----------------
 .../org/apache/geode/internal/cache/DiskId.java    |  173 +-
 .../apache/geode/internal/cache/DiskInitFile.java  |   54 +-
 .../apache/geode/internal/cache/DiskRegion.java    |   28 +-
 .../geode/internal/cache/DiskStoreAttributes.java  |   22 +-
 .../geode/internal/cache/DiskStoreBackup.java      |    6 +-
 .../geode/internal/cache/DiskStoreFactoryImpl.java |    5 +-
 .../apache/geode/internal/cache/DiskStoreImpl.java |  123 +-
 .../geode/internal/cache/DiskStoreMonitor.java     |    4 +-
 .../geode/internal/cache/DiskStoreStats.java       |    1 -
 .../internal/cache/DiskWriteAttributesImpl.java    |   48 +-
 .../geode/internal/cache/DistPeerTXStateStub.java  |   12 +-
 .../internal/cache/DistTXAdjunctCommitMessage.java |    2 +
 .../geode/internal/cache/DistTXCommitMessage.java  |   14 +-
 .../internal/cache/DistTXCoordinatorInterface.java |    4 +-
 .../internal/cache/DistTXRollbackMessage.java      |   12 +-
 .../apache/geode/internal/cache/DistTXState.java   |   34 +-
 .../internal/cache/DistTXStateOnCoordinator.java   |   18 +-
 .../geode/internal/cache/DistTXStateProxyImpl.java |    2 +-
 .../cache/DistTXStateProxyImplOnCoordinator.java   |    2 +-
 .../internal/cache/DistributedCacheOperation.java  |   47 +-
 .../internal/cache/DistributedClearOperation.java  |    8 +-
 .../internal/cache/DistributedPutAllOperation.java |   17 +-
 .../geode/internal/cache/DistributedRegion.java    |   55 +-
 .../DistributedRegionFunctionStreamingMessage.java |    6 +-
 .../cache/DistributedRemoveAllOperation.java       |   15 +-
 .../cache/DistributedTombstoneOperation.java       |   20 +-
 .../internal/cache/DynamicRegionFactoryImpl.java   |    2 +-
 .../apache/geode/internal/cache/EntriesMap.java    |   10 +-
 .../apache/geode/internal/cache/EntriesSet.java    |    2 +-
 .../geode/internal/cache/EntryEventImpl.java       |   94 +-
 .../geode/internal/cache/EntryExpiryTask.java      |   41 +-
 .../geode/internal/cache/EntryOperationImpl.java   |   12 +-
 .../apache/geode/internal/cache/EntrySnapshot.java |   12 +-
 .../geode/internal/cache/EnumListenerEvent.java    |    8 +-
 .../org/apache/geode/internal/cache/EventID.java   |   76 +-
 .../apache/geode/internal/cache/EventIDHolder.java |    2 +-
 .../geode/internal/cache/EventStateHelper.java     |   22 +-
 .../internal/cache/EvictionAttributesImpl.java     |   20 +-
 .../geode/internal/cache/ExpirationScheduler.java  |    7 +-
 .../apache/geode/internal/cache/ExpiryTask.java    |   47 +-
 .../geode/internal/cache/ExportDiskRegion.java     |    5 +-
 .../apache/geode/internal/cache/FilterProfile.java |   46 +-
 .../geode/internal/cache/FilterRoutingInfo.java    |   22 +-
 .../geode/internal/cache/FindRemoteTXMessage.java  |    2 +-
 .../cache/FixedPartitionAttributesImpl.java        |   12 +-
 .../internal/cache/ForceReattemptException.java    |   12 +-
 .../cache/ForceableLinkedBlockingQueue.java        |    8 +-
 .../FunctionStreamingOrderedReplyMessage.java      |    2 +-
 .../geode/internal/cache/GatewayEventFilter.java   |    2 +-
 .../geode/internal/cache/GemFireCacheImpl.java     |   58 +-
 .../apache/geode/internal/cache/GridAdvisor.java   |    4 +-
 .../org/apache/geode/internal/cache/HARegion.java  |   34 +-
 .../geode/internal/cache/HasCachePerfStats.java    |    3 +-
 .../apache/geode/internal/cache/HasDiskRegion.java |   20 +
 .../geode/internal/cache/IdentityArrayList.java    |   12 +-
 .../apache/geode/internal/cache/ImageState.java    |    2 +-
 .../cache/InMemoryPersistentMemberView.java        |    2 +-
 .../internal/cache/InitialImageFlowControl.java    |    6 +-
 .../internal/cache/InitialImageOperation.java      |   79 +-
 .../apache/geode/internal/cache/InterestEvent.java |    6 +-
 .../apache/geode/internal/cache/InternalCache.java |    1 +
 .../geode/internal/cache/InternalCacheEvent.java   |   12 +-
 .../geode/internal/cache/InternalDataView.java     |   22 +-
 .../internal/cache/InternalDistributedRegion.java  |   19 +
 .../geode/internal/cache/InternalRegion.java       |   86 +-
 .../internal/cache/InternalRegionArguments.java    |    2 +-
 .../geode/internal/cache/InvalidateOperation.java  |    6 +-
 .../cache/InvalidatePartitionedRegionMessage.java  |   22 +-
 .../internal/cache/InvalidateRegionOperation.java  |    3 +-
 .../org/apache/geode/internal/cache/KeyInfo.java   |    2 +-
 .../cache/LatestLastAccessTimeMessage.java         |   93 +
 .../cache/LatestLastAccessTimeOperation.java       |   60 +
 .../cache/LatestLastAccessTimeReplyProcessor.java  |   69 +
 .../geode/internal/cache/LeafRegionEntry.cpp       |  851 --------
 .../geode/internal/cache/LoaderHelperFactory.java  |    4 +-
 .../geode/internal/cache/LoaderHelperImpl.java     |    8 +-
 .../apache/geode/internal/cache/LocalDataSet.java  |   16 +-
 .../apache/geode/internal/cache/LocalRegion.java   |  220 +-
 .../geode/internal/cache/LocalRegionDataView.java  |   41 +-
 .../cache/MemberFunctionStreamingMessage.java      |    2 +-
 .../java/org/apache/geode/internal/cache/Node.java |    6 +-
 .../geode/internal/cache/NonLocalRegionEntry.java  |  226 +-
 .../cache/NonLocalRegionEntryWithStats.java        |    2 +-
 .../geode/internal/cache/OffHeapRegionEntry.java   |   41 -
 .../cache/OfflineCompactionDiskRegion.java         |    1 +
 .../org/apache/geode/internal/cache/OpType.java    |    8 +-
 .../org/apache/geode/internal/cache/Oplog.java     |  349 +--
 .../org/apache/geode/internal/cache/OplogSet.java  |    9 +-
 .../geode/internal/cache/OrderedTombstoneMap.java  |   10 +-
 .../apache/geode/internal/cache/OverflowOplog.java |   40 +-
 .../geode/internal/cache/OverflowOplogSet.java     |   63 +-
 .../internal/cache/PRHARedundancyProvider.java     |  111 +-
 .../geode/internal/cache/PRQueryProcessor.java     |   17 +-
 .../internal/cache/PartitionAttributesImpl.java    |   24 +-
 .../internal/cache/PartitionRegionConfig.java      |   16 +-
 .../cache/PartitionRegionConfigValidator.java      |    8 +-
 .../geode/internal/cache/PartitionedRegion.java    |  257 +--
 .../cache/PartitionedRegionBucketMgmtHelper.java   |    6 +-
 .../internal/cache/PartitionedRegionDataStore.java |  143 +-
 .../internal/cache/PartitionedRegionException.java |    2 +-
 .../internal/cache/PartitionedRegionHelper.java    |   32 +-
 .../cache/PartitionedRegionQueryEvaluator.java     |   29 +-
 .../cache/PartitionedRegionRedundancyTracker.java  |    5 +-
 .../internal/cache/PartitionedRegionStats.java     |  204 +-
 .../geode/internal/cache/PeerTXStateStub.java      |    2 +-
 .../geode/internal/cache/PersistentOplogSet.java   |   51 +-
 .../internal/cache/PlaceHolderDiskRegion.java      |    1 +
 .../geode/internal/cache/PoolFactoryImpl.java      |    4 +-
 .../geode/internal/cache/PoolManagerImpl.java      |   10 +-
 .../org/apache/geode/internal/cache/PoolStats.java |   32 +-
 .../internal/cache/ProfileExchangeProcessor.java   |    4 +-
 .../geode/internal/cache/ProxyBucketRegion.java    |   15 +-
 .../geode/internal/cache/ProxyRegionMap.java       |  222 +-
 .../cache/PutAllPartialResultException.java        |    5 +-
 .../geode/internal/cache/QueuedOperation.java      |   13 +-
 .../internal/cache/RegionClearedException.java     |    2 +-
 .../apache/geode/internal/cache/RegionEntry.java   |  246 +--
 .../geode/internal/cache/RegionEntryContext.java   |    4 +-
 .../geode/internal/cache/RegionEntryFactory.java   |    2 +-
 .../geode/internal/cache/RegionEventImpl.java      |   29 +-
 .../geode/internal/cache/RegionEvictorTask.java    |    2 +-
 .../geode/internal/cache/RegionFactoryImpl.java    |    2 +-
 .../geode/internal/cache/RegionListener.java       |    4 +-
 .../org/apache/geode/internal/cache/RegionMap.java |  145 +-
 .../geode/internal/cache/RegionMapFactory.java     |    4 +-
 .../apache/geode/internal/cache/RegionQueue.java   |   40 +-
 .../geode/internal/cache/RegionQueueException.java |    2 +-
 .../apache/geode/internal/cache/RegionStatus.java  |    5 +-
 .../cache/RemoteContainsKeyValueMessage.java       |    8 +-
 .../geode/internal/cache/RemoteDestroyMessage.java |   19 +-
 .../internal/cache/RemoteFetchEntryMessage.java    |   10 +-
 .../internal/cache/RemoteFetchVersionMessage.java  |   10 +-
 .../geode/internal/cache/RemoteGetMessage.java     |   18 +-
 .../internal/cache/RemoteInvalidateMessage.java    |   14 +-
 .../internal/cache/RemoteOperationException.java   |   12 +-
 .../internal/cache/RemoteOperationMessage.java     |   26 +-
 .../RemoteOperationMessageWithDirectReply.java     |    4 +-
 .../geode/internal/cache/RemotePutAllMessage.java  |   14 +-
 .../geode/internal/cache/RemotePutMessage.java     |   18 +-
 .../internal/cache/RemoteRegionOperation.java      |    6 +-
 .../internal/cache/RemoteRemoveAllMessage.java     |   14 +-
 .../apache/geode/internal/cache/RoleEventImpl.java |    2 +-
 .../cache/SearchLoadAndWriteProcessor.java         |   18 +-
 .../geode/internal/cache/ServerPingMessage.java    |    6 +-
 .../geode/internal/cache/StateFlushOperation.java  |    9 +-
 .../geode/internal/cache/TXCommitMessage.java      |   38 +-
 .../org/apache/geode/internal/cache/TXEntry.java   |    2 +-
 .../apache/geode/internal/cache/TXEntryState.java  |   79 +-
 .../geode/internal/cache/TXEntryStateFactory.java  |    4 +-
 .../geode/internal/cache/TXEntryUserAttrState.java |    4 +-
 .../org/apache/geode/internal/cache/TXEvent.java   |    5 +-
 .../geode/internal/cache/TXFarSideCMTracker.java   |    2 +-
 .../java/org/apache/geode/internal/cache/TXId.java |    9 +-
 .../apache/geode/internal/cache/TXLockRequest.java |   10 +-
 .../apache/geode/internal/cache/TXManagerImpl.java |   65 +-
 .../org/apache/geode/internal/cache/TXMessage.java |    2 +-
 .../apache/geode/internal/cache/TXRegionState.java |   18 +-
 .../internal/cache/TXRemoteCommitMessage.java      |    8 +-
 .../geode/internal/cache/TXReservationMgr.java     |    9 +-
 .../apache/geode/internal/cache/TXRmtEvent.java    |    6 +-
 .../org/apache/geode/internal/cache/TXState.java   |   93 +-
 .../geode/internal/cache/TXStateInterface.java     |   20 +-
 .../apache/geode/internal/cache/TXStateProxy.java  |    6 +-
 .../geode/internal/cache/TXStateProxyImpl.java     |    4 +-
 .../apache/geode/internal/cache/TXStateStub.java   |   84 +-
 .../internal/cache/TXSynchronizationRunnable.java  |    3 +-
 .../internal/cache/TestHeapThresholdObserver.java  |    4 +-
 .../internal/cache/TimestampedEntryEventImpl.java  |   10 +-
 .../org/apache/geode/internal/cache/Token.java     |    8 +-
 .../geode/internal/cache/TombstoneService.java     |   18 +-
 .../geode/internal/cache/TransactionMessage.java   |   12 +-
 .../geode/internal/cache/TxEntryFactory.java       |    4 +-
 .../internal/cache/UpdateAttributesProcessor.java  |   18 +-
 .../cache/UpdateEntryVersionOperation.java         |    6 +-
 .../geode/internal/cache/UpdateOperation.java      |    3 +-
 .../cache/UserSpecifiedDiskStoreAttributes.java    |    3 +-
 .../cache/UserSpecifiedRegionAttributes.java       |   10 +-
 .../internal/cache/VMCachedDeserializable.java     |    3 +-
 .../geode/internal/cache/VMLRURegionMap.java       |    1 -
 .../internal/cache/VMStatsDiskLRURegionEntry.java  |   32 -
 .../cache/VMStatsDiskLRURegionEntryHeap.java       |   73 -
 .../cache/VMStatsDiskLRURegionEntryHeapIntKey.java |  437 ----
 .../VMStatsDiskLRURegionEntryHeapLongKey.java      |  435 ----
 .../VMStatsDiskLRURegionEntryHeapObjectKey.java    |  429 ----
 .../VMStatsDiskLRURegionEntryHeapStringKey1.java   |  501 -----
 .../VMStatsDiskLRURegionEntryHeapStringKey2.java   |  541 -----
 .../VMStatsDiskLRURegionEntryHeapUUIDKey.java      |  441 ----
 .../cache/VMStatsDiskLRURegionEntryOffHeap.java    |   76 -
 .../VMStatsDiskLRURegionEntryOffHeapIntKey.java    |  506 -----
 .../VMStatsDiskLRURegionEntryOffHeapLongKey.java   |  504 -----
 .../VMStatsDiskLRURegionEntryOffHeapObjectKey.java |  496 -----
 ...VMStatsDiskLRURegionEntryOffHeapStringKey1.java |  568 -----
 ...VMStatsDiskLRURegionEntryOffHeapStringKey2.java |  608 ------
 .../VMStatsDiskLRURegionEntryOffHeapUUIDKey.java   |  510 -----
 .../internal/cache/VMStatsDiskRegionEntry.java     |   29 -
 .../internal/cache/VMStatsDiskRegionEntryHeap.java |   73 -
 .../cache/VMStatsDiskRegionEntryHeapIntKey.java    |  320 ---
 .../cache/VMStatsDiskRegionEntryHeapLongKey.java   |  318 ---
 .../cache/VMStatsDiskRegionEntryHeapObjectKey.java |  309 ---
 .../VMStatsDiskRegionEntryHeapStringKey1.java      |  381 ----
 .../VMStatsDiskRegionEntryHeapStringKey2.java      |  421 ----
 .../cache/VMStatsDiskRegionEntryHeapUUIDKey.java   |  324 ---
 .../cache/VMStatsDiskRegionEntryOffHeap.java       |   74 -
 .../cache/VMStatsDiskRegionEntryOffHeapIntKey.java |  386 ----
 .../VMStatsDiskRegionEntryOffHeapLongKey.java      |  384 ----
 .../VMStatsDiskRegionEntryOffHeapObjectKey.java    |  378 ----
 .../VMStatsDiskRegionEntryOffHeapStringKey1.java   |  450 ----
 .../VMStatsDiskRegionEntryOffHeapStringKey2.java   |  490 -----
 .../VMStatsDiskRegionEntryOffHeapUUIDKey.java      |  390 ----
 .../internal/cache/VMStatsLRURegionEntry.java      |   37 -
 .../internal/cache/VMStatsLRURegionEntryHeap.java  |   73 -
 .../cache/VMStatsLRURegionEntryHeapIntKey.java     |  335 ---
 .../cache/VMStatsLRURegionEntryHeapLongKey.java    |  333 ---
 .../cache/VMStatsLRURegionEntryHeapObjectKey.java  |  325 ---
 .../cache/VMStatsLRURegionEntryHeapStringKey1.java |  396 ----
 .../cache/VMStatsLRURegionEntryHeapStringKey2.java |  436 ----
 .../cache/VMStatsLRURegionEntryHeapUUIDKey.java    |  337 ---
 .../cache/VMStatsLRURegionEntryOffHeap.java        |   74 -
 .../cache/VMStatsLRURegionEntryOffHeapIntKey.java  |  401 ----
 .../cache/VMStatsLRURegionEntryOffHeapLongKey.java |  399 ----
 .../VMStatsLRURegionEntryOffHeapObjectKey.java     |  393 ----
 .../VMStatsLRURegionEntryOffHeapStringKey1.java    |  465 ----
 .../VMStatsLRURegionEntryOffHeapStringKey2.java    |  505 -----
 .../cache/VMStatsLRURegionEntryOffHeapUUIDKey.java |  403 ----
 .../geode/internal/cache/VMStatsRegionEntry.java   |   35 -
 .../internal/cache/VMStatsRegionEntryHeap.java     |   72 -
 .../cache/VMStatsRegionEntryHeapIntKey.java        |  233 --
 .../cache/VMStatsRegionEntryHeapLongKey.java       |  231 --
 .../cache/VMStatsRegionEntryHeapObjectKey.java     |  223 --
 .../cache/VMStatsRegionEntryHeapStringKey1.java    |  294 ---
 .../cache/VMStatsRegionEntryHeapStringKey2.java    |  334 ---
 .../cache/VMStatsRegionEntryHeapUUIDKey.java       |  235 --
 .../internal/cache/VMStatsRegionEntryOffHeap.java  |   74 -
 .../cache/VMStatsRegionEntryOffHeapIntKey.java     |  299 ---
 .../cache/VMStatsRegionEntryOffHeapLongKey.java    |  297 ---
 .../cache/VMStatsRegionEntryOffHeapObjectKey.java  |  289 ---
 .../cache/VMStatsRegionEntryOffHeapStringKey1.java |  360 ----
 .../cache/VMStatsRegionEntryOffHeapStringKey2.java |  400 ----
 .../cache/VMStatsRegionEntryOffHeapUUIDKey.java    |  301 ---
 .../internal/cache/VMThinDiskLRURegionEntry.java   |   31 -
 .../cache/VMThinDiskLRURegionEntryHeap.java        |   73 -
 .../cache/VMThinDiskLRURegionEntryHeapIntKey.java  |  355 ----
 .../cache/VMThinDiskLRURegionEntryHeapLongKey.java |  353 ---
 .../VMThinDiskLRURegionEntryHeapObjectKey.java     |  345 ---
 .../VMThinDiskLRURegionEntryHeapStringKey1.java    |  417 ----
 .../VMThinDiskLRURegionEntryHeapStringKey2.java    |  457 ----
 .../cache/VMThinDiskLRURegionEntryHeapUUIDKey.java |  359 ----
 .../cache/VMThinDiskLRURegionEntryOffHeap.java     |   76 -
 .../VMThinDiskLRURegionEntryOffHeapIntKey.java     |  422 ----
 .../VMThinDiskLRURegionEntryOffHeapLongKey.java    |  420 ----
 .../VMThinDiskLRURegionEntryOffHeapObjectKey.java  |  412 ----
 .../VMThinDiskLRURegionEntryOffHeapStringKey1.java |  484 -----
 .../VMThinDiskLRURegionEntryOffHeapStringKey2.java |  524 -----
 .../VMThinDiskLRURegionEntryOffHeapUUIDKey.java    |  426 ----
 .../internal/cache/VMThinDiskRegionEntry.java      |   34 -
 .../internal/cache/VMThinDiskRegionEntryHeap.java  |   73 -
 .../cache/VMThinDiskRegionEntryHeapIntKey.java     |  236 ---
 .../cache/VMThinDiskRegionEntryHeapLongKey.java    |  234 --
 .../cache/VMThinDiskRegionEntryHeapObjectKey.java  |  225 --
 .../cache/VMThinDiskRegionEntryHeapStringKey1.java |  297 ---
 .../cache/VMThinDiskRegionEntryHeapStringKey2.java |  337 ---
 .../cache/VMThinDiskRegionEntryHeapUUIDKey.java    |  240 ---
 .../cache/VMThinDiskRegionEntryOffHeap.java        |   74 -
 .../cache/VMThinDiskRegionEntryOffHeapIntKey.java  |  302 ---
 .../cache/VMThinDiskRegionEntryOffHeapLongKey.java |  300 ---
 .../VMThinDiskRegionEntryOffHeapObjectKey.java     |  292 ---
 .../VMThinDiskRegionEntryOffHeapStringKey1.java    |  364 ----
 .../VMThinDiskRegionEntryOffHeapStringKey2.java    |  404 ----
 .../cache/VMThinDiskRegionEntryOffHeapUUIDKey.java |  306 ---
 .../geode/internal/cache/VMThinLRURegionEntry.java |   31 -
 .../internal/cache/VMThinLRURegionEntryHeap.java   |   73 -
 .../cache/VMThinLRURegionEntryHeapIntKey.java      |  253 ---
 .../cache/VMThinLRURegionEntryHeapLongKey.java     |  251 ---
 .../cache/VMThinLRURegionEntryHeapObjectKey.java   |  243 ---
 .../cache/VMThinLRURegionEntryHeapStringKey1.java  |  314 ---
 .../cache/VMThinLRURegionEntryHeapStringKey2.java  |  354 ----
 .../cache/VMThinLRURegionEntryHeapUUIDKey.java     |  255 ---
 .../cache/VMThinLRURegionEntryOffHeap.java         |   74 -
 .../cache/VMThinLRURegionEntryOffHeapIntKey.java   |  319 ---
 .../cache/VMThinLRURegionEntryOffHeapLongKey.java  |  317 ---
 .../VMThinLRURegionEntryOffHeapObjectKey.java      |  309 ---
 .../VMThinLRURegionEntryOffHeapStringKey1.java     |  381 ----
 .../VMThinLRURegionEntryOffHeapStringKey2.java     |  421 ----
 .../cache/VMThinLRURegionEntryOffHeapUUIDKey.java  |  321 ---
 .../geode/internal/cache/VMThinRegionEntry.java    |   31 -
 .../internal/cache/VMThinRegionEntryHeap.java      |   72 -
 .../cache/VMThinRegionEntryHeapIntKey.java         |  149 --
 .../cache/VMThinRegionEntryHeapLongKey.java        |  147 --
 .../cache/VMThinRegionEntryHeapObjectKey.java      |  139 --
 .../cache/VMThinRegionEntryHeapStringKey1.java     |  210 --
 .../cache/VMThinRegionEntryHeapStringKey2.java     |  250 ---
 .../cache/VMThinRegionEntryHeapUUIDKey.java        |  151 --
 .../internal/cache/VMThinRegionEntryOffHeap.java   |   74 -
 .../cache/VMThinRegionEntryOffHeapIntKey.java      |  215 --
 .../cache/VMThinRegionEntryOffHeapLongKey.java     |  213 --
 .../cache/VMThinRegionEntryOffHeapObjectKey.java   |  205 --
 .../cache/VMThinRegionEntryOffHeapStringKey1.java  |  276 ---
 .../cache/VMThinRegionEntryOffHeapStringKey2.java  |  316 ---
 .../cache/VMThinRegionEntryOffHeapUUIDKey.java     |  217 --
 .../geode/internal/cache/ValidatingDiskRegion.java |  155 +-
 .../geode/internal/cache/ValueByteWrapper.java     |    6 +-
 .../geode/internal/cache/VersionTimestamp.java     |    2 +-
 .../cache/VersionedStatsDiskLRURegionEntry.java    |   30 -
 .../VersionedStatsDiskLRURegionEntryHeap.java      |   76 -
 ...VersionedStatsDiskLRURegionEntryHeapIntKey.java |  548 -----
 ...ersionedStatsDiskLRURegionEntryHeapLongKey.java |  546 -----
 ...sionedStatsDiskLRURegionEntryHeapObjectKey.java |  537 -----
 ...ionedStatsDiskLRURegionEntryHeapStringKey1.java |  609 ------
 ...ionedStatsDiskLRURegionEntryHeapStringKey2.java |  649 ------
 ...ersionedStatsDiskLRURegionEntryHeapUUIDKey.java |  552 -----
 .../VersionedStatsDiskLRURegionEntryOffHeap.java   |   77 -
 ...sionedStatsDiskLRURegionEntryOffHeapIntKey.java |  615 ------
 ...ionedStatsDiskLRURegionEntryOffHeapLongKey.java |  613 ------
 ...nedStatsDiskLRURegionEntryOffHeapObjectKey.java |  604 ------
 ...edStatsDiskLRURegionEntryOffHeapStringKey1.java |  676 ------
 ...edStatsDiskLRURegionEntryOffHeapStringKey2.java |  716 -------
 ...ionedStatsDiskLRURegionEntryOffHeapUUIDKey.java |  619 ------
 .../cache/VersionedStatsDiskRegionEntry.java       |   30 -
 .../cache/VersionedStatsDiskRegionEntryHeap.java   |   75 -
 .../VersionedStatsDiskRegionEntryHeapIntKey.java   |  430 ----
 .../VersionedStatsDiskRegionEntryHeapLongKey.java  |  428 ----
 ...VersionedStatsDiskRegionEntryHeapObjectKey.java |  419 ----
 ...ersionedStatsDiskRegionEntryHeapStringKey1.java |  491 -----
 ...ersionedStatsDiskRegionEntryHeapStringKey2.java |  531 -----
 .../VersionedStatsDiskRegionEntryHeapUUIDKey.java  |  434 ----
 .../VersionedStatsDiskRegionEntryOffHeap.java      |   76 -
 ...VersionedStatsDiskRegionEntryOffHeapIntKey.java |  498 -----
 ...ersionedStatsDiskRegionEntryOffHeapLongKey.java |  496 -----
 ...sionedStatsDiskRegionEntryOffHeapObjectKey.java |  487 -----
 ...ionedStatsDiskRegionEntryOffHeapStringKey1.java |  559 -----
 ...ionedStatsDiskRegionEntryOffHeapStringKey2.java |  599 ------
 ...ersionedStatsDiskRegionEntryOffHeapUUIDKey.java |  502 -----
 .../cache/VersionedStatsLRURegionEntry.java        |   31 -
 .../cache/VersionedStatsLRURegionEntryHeap.java    |   75 -
 .../VersionedStatsLRURegionEntryHeapIntKey.java    |  445 ----
 .../VersionedStatsLRURegionEntryHeapLongKey.java   |  443 ----
 .../VersionedStatsLRURegionEntryHeapObjectKey.java |  435 ----
 ...VersionedStatsLRURegionEntryHeapStringKey1.java |  506 -----
 ...VersionedStatsLRURegionEntryHeapStringKey2.java |  546 -----
 .../VersionedStatsLRURegionEntryHeapUUIDKey.java   |  447 ----
 .../cache/VersionedStatsLRURegionEntryOffHeap.java |   76 -
 .../VersionedStatsLRURegionEntryOffHeapIntKey.java |  512 -----
 ...VersionedStatsLRURegionEntryOffHeapLongKey.java |  511 -----
 ...rsionedStatsLRURegionEntryOffHeapObjectKey.java |  503 -----
 ...sionedStatsLRURegionEntryOffHeapStringKey1.java |  574 -----
 ...sionedStatsLRURegionEntryOffHeapStringKey2.java |  614 ------
 ...VersionedStatsLRURegionEntryOffHeapUUIDKey.java |  515 -----
 .../internal/cache/VersionedStatsRegionEntry.java  |   30 -
 .../cache/VersionedStatsRegionEntryHeap.java       |   73 -
 .../cache/VersionedStatsRegionEntryHeapIntKey.java |  340 ---
 .../VersionedStatsRegionEntryHeapLongKey.java      |  338 ---
 .../VersionedStatsRegionEntryHeapObjectKey.java    |  333 ---
 .../VersionedStatsRegionEntryHeapStringKey1.java   |  404 ----
 .../VersionedStatsRegionEntryHeapStringKey2.java   |  444 ----
 .../VersionedStatsRegionEntryHeapUUIDKey.java      |  342 ---
 .../cache/VersionedStatsRegionEntryOffHeap.java    |   76 -
 .../VersionedStatsRegionEntryOffHeapIntKey.java    |  409 ----
 .../VersionedStatsRegionEntryOffHeapLongKey.java   |  407 ----
 .../VersionedStatsRegionEntryOffHeapObjectKey.java |  400 ----
 ...VersionedStatsRegionEntryOffHeapStringKey1.java |  471 ----
 ...VersionedStatsRegionEntryOffHeapStringKey2.java |  511 -----
 .../VersionedStatsRegionEntryOffHeapUUIDKey.java   |  411 ----
 .../cache/VersionedThinDiskLRURegionEntry.java     |   30 -
 .../cache/VersionedThinDiskLRURegionEntryHeap.java |   75 -
 .../VersionedThinDiskLRURegionEntryHeapIntKey.java |  463 ----
 ...VersionedThinDiskLRURegionEntryHeapLongKey.java |  462 ----
 ...rsionedThinDiskLRURegionEntryHeapObjectKey.java |  453 ----
 ...sionedThinDiskLRURegionEntryHeapStringKey1.java |  525 -----
 ...sionedThinDiskLRURegionEntryHeapStringKey2.java |  565 -----
 ...VersionedThinDiskLRURegionEntryHeapUUIDKey.java |  468 ----
 .../VersionedThinDiskLRURegionEntryOffHeap.java    |   76 -
 ...rsionedThinDiskLRURegionEntryOffHeapIntKey.java |  531 -----
 ...sionedThinDiskLRURegionEntryOffHeapLongKey.java |  529 -----
 ...onedThinDiskLRURegionEntryOffHeapObjectKey.java |  520 -----
 ...nedThinDiskLRURegionEntryOffHeapStringKey1.java |  592 ------
 ...nedThinDiskLRURegionEntryOffHeapStringKey2.java |  632 ------
 ...sionedThinDiskLRURegionEntryOffHeapUUIDKey.java |  535 -----
 .../cache/VersionedThinDiskRegionEntry.java        |   30 -
 .../cache/VersionedThinDiskRegionEntryHeap.java    |   75 -
 .../VersionedThinDiskRegionEntryHeapIntKey.java    |  344 ---
 .../VersionedThinDiskRegionEntryHeapLongKey.java   |  342 ---
 .../VersionedThinDiskRegionEntryHeapObjectKey.java |  333 ---
 ...VersionedThinDiskRegionEntryHeapStringKey1.java |  405 ----
 ...VersionedThinDiskRegionEntryHeapStringKey2.java |  445 ----
 .../VersionedThinDiskRegionEntryHeapUUIDKey.java   |  348 ---
 .../cache/VersionedThinDiskRegionEntryOffHeap.java |   76 -
 .../VersionedThinDiskRegionEntryOffHeapIntKey.java |  411 ----
 ...VersionedThinDiskRegionEntryOffHeapLongKey.java |  410 ----
 ...rsionedThinDiskRegionEntryOffHeapObjectKey.java |  401 ----
 ...sionedThinDiskRegionEntryOffHeapStringKey1.java |  473 -----
 ...sionedThinDiskRegionEntryOffHeapStringKey2.java |  513 -----
 ...VersionedThinDiskRegionEntryOffHeapUUIDKey.java |  416 ----
 .../cache/VersionedThinLRURegionEntry.java         |   35 -
 .../cache/VersionedThinLRURegionEntryHeap.java     |   75 -
 .../VersionedThinLRURegionEntryHeapIntKey.java     |  361 ----
 .../VersionedThinLRURegionEntryHeapLongKey.java    |  359 ----
 .../VersionedThinLRURegionEntryHeapObjectKey.java  |  351 ---
 .../VersionedThinLRURegionEntryHeapStringKey1.java |  422 ----
 .../VersionedThinLRURegionEntryHeapStringKey2.java |  462 ----
 .../VersionedThinLRURegionEntryHeapUUIDKey.java    |  363 ----
 .../cache/VersionedThinLRURegionEntryOffHeap.java  |   76 -
 .../VersionedThinLRURegionEntryOffHeapIntKey.java  |  428 ----
 .../VersionedThinLRURegionEntryOffHeapLongKey.java |  426 ----
 ...ersionedThinLRURegionEntryOffHeapObjectKey.java |  419 ----
 ...rsionedThinLRURegionEntryOffHeapStringKey1.java |  490 -----
 ...rsionedThinLRURegionEntryOffHeapStringKey2.java |  530 -----
 .../VersionedThinLRURegionEntryOffHeapUUIDKey.java |  430 ----
 .../internal/cache/VersionedThinRegionEntry.java   |   29 -
 .../cache/VersionedThinRegionEntryHeap.java        |   73 -
 .../cache/VersionedThinRegionEntryHeapIntKey.java  |  256 ---
 .../cache/VersionedThinRegionEntryHeapLongKey.java |  254 ---
 .../VersionedThinRegionEntryHeapObjectKey.java     |  247 ---
 .../VersionedThinRegionEntryHeapStringKey1.java    |  318 ---
 .../VersionedThinRegionEntryHeapStringKey2.java    |  358 ----
 .../cache/VersionedThinRegionEntryHeapUUIDKey.java |  258 ---
 .../cache/VersionedThinRegionEntryOffHeap.java     |   76 -
 .../VersionedThinRegionEntryOffHeapIntKey.java     |  323 ---
 .../VersionedThinRegionEntryOffHeapLongKey.java    |  321 ---
 .../VersionedThinRegionEntryOffHeapObjectKey.java  |  314 ---
 .../VersionedThinRegionEntryOffHeapStringKey1.java |  385 ----
 .../VersionedThinRegionEntryOffHeapStringKey2.java |  425 ----
 .../VersionedThinRegionEntryOffHeapUUIDKey.java    |  325 ---
 .../internal/cache/WrappedCallbackArgument.java    |    2 +-
 .../cache/WrappedRegionMembershipListener.java     |   36 +-
 .../cache/backup/BackupDataStoreHelper.java        |   77 +
 .../cache/backup/BackupDataStoreResult.java        |   48 +
 .../internal/cache/backup/BackupInspector.java     |  174 ++
 .../geode/internal/cache/backup/BackupLock.java    |  114 +
 .../geode/internal/cache/backup/BackupManager.java |  629 ++++++
 .../internal/cache/backup/BackupOperation.java     |   85 +
 .../cache/backup/BackupReplyProcessor.java         |   59 +
 .../internal/cache/backup/BackupResponse.java      |   69 +
 .../cache/backup/BackupResultCollector.java        |   24 +
 .../geode/internal/cache/backup/BackupUtil.java    |   73 +
 .../geode/internal/cache/backup/FinishBackup.java  |   47 +
 .../internal/cache/backup/FinishBackupFactory.java |   49 +
 .../cache/backup/FinishBackupOperation.java        |   75 +
 .../internal/cache/backup/FinishBackupRequest.java |  100 +
 .../geode/internal/cache/backup/FlushToDisk.java   |   33 +
 .../internal/cache/backup/FlushToDiskFactory.java  |   44 +
 .../cache/backup/FlushToDiskOperation.java         |   87 +
 .../cache/backup/FlushToDiskProcessor.java         |   38 +
 .../internal/cache/backup/FlushToDiskRequest.java  |   57 +
 .../internal/cache/backup/FlushToDiskResponse.java |   43 +
 .../geode/internal/cache/backup/PrepareBackup.java |   44 +
 .../cache/backup/PrepareBackupFactory.java         |   45 +
 .../cache/backup/PrepareBackupOperation.java       |   64 +
 .../cache/backup/PrepareBackupRequest.java         |   73 +
 .../geode/internal/cache/backup/RestoreScript.java |  150 ++
 .../internal/cache/backup/ScriptGenerator.java     |   38 +
 .../internal/cache/backup/UnixBackupInspector.java |   73 +
 .../internal/cache/backup/UnixScriptGenerator.java |   72 +
 .../cache/backup/WindowsBackupInspector.java       |   81 +
 .../cache/backup/WindowsScriptGenerator.java       |   93 +
 .../client/protocol/ClientProtocolProcessor.java   |   45 +
 .../client/protocol/ClientProtocolService.java     |   43 +
 .../protocol/ClientProtocolServiceLoader.java      |   59 +
 .../exception/ServiceLoadingFailureException.java  |   35 +
 .../exception/ServiceVersionNotFoundException.java |   35 +
 .../CompressedCachedDeserializable.java            |    8 +-
 .../SnappyCompressedCachedDeserializable.java      |    6 +-
 .../internal/cache/control/HeapMemoryMonitor.java  |   38 +-
 .../cache/control/InternalResourceManager.java     |   24 +-
 .../geode/internal/cache/control/MemoryEvent.java  |    1 -
 .../internal/cache/control/MemoryMonitor.java      |    4 +-
 .../internal/cache/control/MemoryThresholds.java   |   14 +-
 .../cache/control/OffHeapMemoryMonitor.java        |   20 +-
 .../control/PartitionRebalanceDetailsImpl.java     |    6 +-
 .../cache/control/RebalanceOperationImpl.java      |    2 +-
 .../internal/cache/control/ResourceAdvisor.java    |   12 +-
 .../internal/cache/control/ResourceListener.java   |    4 +-
 .../internal/cache/control/ResourceMonitor.java    |    6 +-
 .../cache/entries/AbstractDiskRegionEntry.java     |   66 +
 .../cache/entries/AbstractLRURegionEntry.java      |   41 +
 .../entries/AbstractOplogDiskRegionEntry.java      |  179 ++
 .../cache/entries/AbstractRegionEntry.java         | 2232 +++++++++++++++++++
 .../geode/internal/cache/entries/DiskEntry.java    | 1796 ++++++++++++++++
 .../internal/cache/entries/LeafRegionEntry.cpp     |  946 +++++++++
 .../internal/cache/entries/OffHeapRegionEntry.java |   42 +
 .../cache/entries/VMStatsDiskLRURegionEntry.java   |   35 +
 .../entries/VMStatsDiskLRURegionEntryHeap.java     |   78 +
 .../VMStatsDiskLRURegionEntryHeapIntKey.java       |  348 +++
 .../VMStatsDiskLRURegionEntryHeapLongKey.java      |  348 +++
 .../VMStatsDiskLRURegionEntryHeapObjectKey.java    |  343 +++
 .../VMStatsDiskLRURegionEntryHeapStringKey1.java   |  415 ++++
 .../VMStatsDiskLRURegionEntryHeapStringKey2.java   |  460 ++++
 .../VMStatsDiskLRURegionEntryHeapUUIDKey.java      |  353 +++
 .../entries/VMStatsDiskLRURegionEntryOffHeap.java  |   81 +
 .../VMStatsDiskLRURegionEntryOffHeapIntKey.java    |  410 ++++
 .../VMStatsDiskLRURegionEntryOffHeapLongKey.java   |  410 ++++
 .../VMStatsDiskLRURegionEntryOffHeapObjectKey.java |  402 ++++
 ...VMStatsDiskLRURegionEntryOffHeapStringKey1.java |  474 +++++
 ...VMStatsDiskLRURegionEntryOffHeapStringKey2.java |  519 +++++
 .../VMStatsDiskLRURegionEntryOffHeapUUIDKey.java   |  415 ++++
 .../cache/entries/VMStatsDiskRegionEntry.java      |   31 +
 .../cache/entries/VMStatsDiskRegionEntryHeap.java  |   78 +
 .../entries/VMStatsDiskRegionEntryHeapIntKey.java  |  234 ++
 .../entries/VMStatsDiskRegionEntryHeapLongKey.java |  234 ++
 .../VMStatsDiskRegionEntryHeapObjectKey.java       |  226 ++
 .../VMStatsDiskRegionEntryHeapStringKey1.java      |  298 +++
 .../VMStatsDiskRegionEntryHeapStringKey2.java      |  343 +++
 .../entries/VMStatsDiskRegionEntryHeapUUIDKey.java |  239 +++
 .../entries/VMStatsDiskRegionEntryOffHeap.java     |   79 +
 .../VMStatsDiskRegionEntryOffHeapIntKey.java       |  293 +++
 .../VMStatsDiskRegionEntryOffHeapLongKey.java      |  293 +++
 .../VMStatsDiskRegionEntryOffHeapObjectKey.java    |  288 +++
 .../VMStatsDiskRegionEntryOffHeapStringKey1.java   |  360 ++++
 .../VMStatsDiskRegionEntryOffHeapStringKey2.java   |  405 ++++
 .../VMStatsDiskRegionEntryOffHeapUUIDKey.java      |  298 +++
 .../cache/entries/VMStatsLRURegionEntry.java       |   34 +
 .../cache/entries/VMStatsLRURegionEntryHeap.java   |   78 +
 .../entries/VMStatsLRURegionEntryHeapIntKey.java   |  290 +++
 .../entries/VMStatsLRURegionEntryHeapLongKey.java  |  290 +++
 .../VMStatsLRURegionEntryHeapObjectKey.java        |  282 +++
 .../VMStatsLRURegionEntryHeapStringKey1.java       |  354 ++++
 .../VMStatsLRURegionEntryHeapStringKey2.java       |  399 ++++
 .../entries/VMStatsLRURegionEntryHeapUUIDKey.java  |  295 +++
 .../entries/VMStatsLRURegionEntryOffHeap.java      |   79 +
 .../VMStatsLRURegionEntryOffHeapIntKey.java        |  348 +++
 .../VMStatsLRURegionEntryOffHeapLongKey.java       |  349 +++
 .../VMStatsLRURegionEntryOffHeapObjectKey.java     |  343 +++
 .../VMStatsLRURegionEntryOffHeapStringKey1.java    |  416 ++++
 .../VMStatsLRURegionEntryOffHeapStringKey2.java    |  461 ++++
 .../VMStatsLRURegionEntryOffHeapUUIDKey.java       |  354 ++++
 .../internal/cache/entries/VMStatsRegionEntry.java |   36 +
 .../cache/entries/VMStatsRegionEntryHeap.java      |   77 +
 .../entries/VMStatsRegionEntryHeapIntKey.java      |  191 ++
 .../entries/VMStatsRegionEntryHeapLongKey.java     |  191 ++
 .../entries/VMStatsRegionEntryHeapObjectKey.java   |  183 ++
 .../entries/VMStatsRegionEntryHeapStringKey1.java  |  255 +++
 .../entries/VMStatsRegionEntryHeapStringKey2.java  |  300 +++
 .../entries/VMStatsRegionEntryHeapUUIDKey.java     |  196 ++
 .../cache/entries/VMStatsRegionEntryOffHeap.java   |   79 +
 .../entries/VMStatsRegionEntryOffHeapIntKey.java   |  249 +++
 .../entries/VMStatsRegionEntryOffHeapLongKey.java  |  249 +++
 .../VMStatsRegionEntryOffHeapObjectKey.java        |  241 +++
 .../VMStatsRegionEntryOffHeapStringKey1.java       |  314 +++
 .../VMStatsRegionEntryOffHeapStringKey2.java       |  359 ++++
 .../entries/VMStatsRegionEntryOffHeapUUIDKey.java  |  254 +++
 .../cache/entries/VMThinDiskLRURegionEntry.java    |   34 +
 .../entries/VMThinDiskLRURegionEntryHeap.java      |   78 +
 .../VMThinDiskLRURegionEntryHeapIntKey.java        |  271 +++
 .../VMThinDiskLRURegionEntryHeapLongKey.java       |  271 +++
 .../VMThinDiskLRURegionEntryHeapObjectKey.java     |  264 +++
 .../VMThinDiskLRURegionEntryHeapStringKey1.java    |  336 +++
 .../VMThinDiskLRURegionEntryHeapStringKey2.java    |  381 ++++
 .../VMThinDiskLRURegionEntryHeapUUIDKey.java       |  276 +++
 .../entries/VMThinDiskLRURegionEntryOffHeap.java   |   81 +
 .../VMThinDiskLRURegionEntryOffHeapIntKey.java     |  331 +++
 .../VMThinDiskLRURegionEntryOffHeapLongKey.java    |  331 +++
 .../VMThinDiskLRURegionEntryOffHeapObjectKey.java  |  323 +++
 .../VMThinDiskLRURegionEntryOffHeapStringKey1.java |  395 ++++
 .../VMThinDiskLRURegionEntryOffHeapStringKey2.java |  440 ++++
 .../VMThinDiskLRURegionEntryOffHeapUUIDKey.java    |  336 +++
 .../cache/entries/VMThinDiskRegionEntry.java       |   34 +
 .../cache/entries/VMThinDiskRegionEntryHeap.java   |   78 +
 .../entries/VMThinDiskRegionEntryHeapIntKey.java   |  156 ++
 .../entries/VMThinDiskRegionEntryHeapLongKey.java  |  156 ++
 .../VMThinDiskRegionEntryHeapObjectKey.java        |  148 ++
 .../VMThinDiskRegionEntryHeapStringKey1.java       |  220 ++
 .../VMThinDiskRegionEntryHeapStringKey2.java       |  265 +++
 .../entries/VMThinDiskRegionEntryHeapUUIDKey.java  |  161 ++
 .../entries/VMThinDiskRegionEntryOffHeap.java      |   79 +
 .../VMThinDiskRegionEntryOffHeapIntKey.java        |  214 ++
 .../VMThinDiskRegionEntryOffHeapLongKey.java       |  215 ++
 .../VMThinDiskRegionEntryOffHeapObjectKey.java     |  208 ++
 .../VMThinDiskRegionEntryOffHeapStringKey1.java    |  280 +++
 .../VMThinDiskRegionEntryOffHeapStringKey2.java    |  325 +++
 .../VMThinDiskRegionEntryOffHeapUUIDKey.java       |  220 ++
 .../cache/entries/VMThinLRURegionEntry.java        |   32 +
 .../cache/entries/VMThinLRURegionEntryHeap.java    |   78 +
 .../entries/VMThinLRURegionEntryHeapIntKey.java    |  213 ++
 .../entries/VMThinLRURegionEntryHeapLongKey.java   |  213 ++
 .../entries/VMThinLRURegionEntryHeapObjectKey.java |  205 ++
 .../VMThinLRURegionEntryHeapStringKey1.java        |  277 +++
 .../VMThinLRURegionEntryHeapStringKey2.java        |  322 +++
 .../entries/VMThinLRURegionEntryHeapUUIDKey.java   |  218 ++
 .../cache/entries/VMThinLRURegionEntryOffHeap.java |   79 +
 .../entries/VMThinLRURegionEntryOffHeapIntKey.java |  271 +++
 .../VMThinLRURegionEntryOffHeapLongKey.java        |  271 +++
 .../VMThinLRURegionEntryOffHeapObjectKey.java      |  264 +++
 .../VMThinLRURegionEntryOffHeapStringKey1.java     |  337 +++
 .../VMThinLRURegionEntryOffHeapStringKey2.java     |  382 ++++
 .../VMThinLRURegionEntryOffHeapUUIDKey.java        |  276 +++
 .../internal/cache/entries/VMThinRegionEntry.java  |   32 +
 .../cache/entries/VMThinRegionEntryHeap.java       |   77 +
 .../cache/entries/VMThinRegionEntryHeapIntKey.java |  113 +
 .../entries/VMThinRegionEntryHeapLongKey.java      |  113 +
 .../entries/VMThinRegionEntryHeapObjectKey.java    |  105 +
 .../entries/VMThinRegionEntryHeapStringKey1.java   |  177 ++
 .../entries/VMThinRegionEntryHeapStringKey2.java   |  222 ++
 .../entries/VMThinRegionEntryHeapUUIDKey.java      |  118 ++
 .../cache/entries/VMThinRegionEntryOffHeap.java    |   79 +
 .../entries/VMThinRegionEntryOffHeapIntKey.java    |  171 ++
 .../entries/VMThinRegionEntryOffHeapLongKey.java   |  171 ++
 .../entries/VMThinRegionEntryOffHeapObjectKey.java |  163 ++
 .../VMThinRegionEntryOffHeapStringKey1.java        |  235 ++
 .../VMThinRegionEntryOffHeapStringKey2.java        |  280 +++
 .../entries/VMThinRegionEntryOffHeapUUIDKey.java   |  176 ++
 .../entries/VersionedStatsDiskLRURegionEntry.java  |   31 +
 .../VersionedStatsDiskLRURegionEntryHeap.java      |   81 +
 ...VersionedStatsDiskLRURegionEntryHeapIntKey.java |  466 ++++
 ...ersionedStatsDiskLRURegionEntryHeapLongKey.java |  466 ++++
 ...sionedStatsDiskLRURegionEntryHeapObjectKey.java |  458 ++++
 ...ionedStatsDiskLRURegionEntryHeapStringKey1.java |  530 +++++
 ...ionedStatsDiskLRURegionEntryHeapStringKey2.java |  575 +++++
 ...ersionedStatsDiskLRURegionEntryHeapUUIDKey.java |  471 ++++
 .../VersionedStatsDiskLRURegionEntryOffHeap.java   |   82 +
 ...sionedStatsDiskLRURegionEntryOffHeapIntKey.java |  525 +++++
 ...ionedStatsDiskLRURegionEntryOffHeapLongKey.java |  525 +++++
 ...nedStatsDiskLRURegionEntryOffHeapObjectKey.java |  517 +++++
 ...edStatsDiskLRURegionEntryOffHeapStringKey1.java |  589 ++++++
 ...edStatsDiskLRURegionEntryOffHeapStringKey2.java |  634 ++++++
 ...ionedStatsDiskLRURegionEntryOffHeapUUIDKey.java |  530 +++++
 .../entries/VersionedStatsDiskRegionEntry.java     |   31 +
 .../entries/VersionedStatsDiskRegionEntryHeap.java |   80 +
 .../VersionedStatsDiskRegionEntryHeapIntKey.java   |  352 +++
 .../VersionedStatsDiskRegionEntryHeapLongKey.java  |  352 +++
 ...VersionedStatsDiskRegionEntryHeapObjectKey.java |  344 +++
 ...ersionedStatsDiskRegionEntryHeapStringKey1.java |  416 ++++
 ...ersionedStatsDiskRegionEntryHeapStringKey2.java |  461 ++++
 .../VersionedStatsDiskRegionEntryHeapUUIDKey.java  |  357 ++++
 .../VersionedStatsDiskRegionEntryOffHeap.java      |   81 +
 ...VersionedStatsDiskRegionEntryOffHeapIntKey.java |  412 ++++
 ...ersionedStatsDiskRegionEntryOffHeapLongKey.java |  412 ++++
 ...sionedStatsDiskRegionEntryOffHeapObjectKey.java |  404 ++++
 ...ionedStatsDiskRegionEntryOffHeapStringKey1.java |  476 +++++
 ...ionedStatsDiskRegionEntryOffHeapStringKey2.java |  521 +++++
 ...ersionedStatsDiskRegionEntryOffHeapUUIDKey.java |  417 ++++
 .../entries/VersionedStatsLRURegionEntry.java      |   32 +
 .../entries/VersionedStatsLRURegionEntryHeap.java  |   80 +
 .../VersionedStatsLRURegionEntryHeapIntKey.java    |  407 ++++
 .../VersionedStatsLRURegionEntryHeapLongKey.java   |  407 ++++
 .../VersionedStatsLRURegionEntryHeapObjectKey.java |  399 ++++
 ...VersionedStatsLRURegionEntryHeapStringKey1.java |  471 ++++
 ...VersionedStatsLRURegionEntryHeapStringKey2.java |  516 +++++
 .../VersionedStatsLRURegionEntryHeapUUIDKey.java   |  412 ++++
 .../VersionedStatsLRURegionEntryOffHeap.java       |   81 +
 .../VersionedStatsLRURegionEntryOffHeapIntKey.java |  466 ++++
 ...VersionedStatsLRURegionEntryOffHeapLongKey.java |  467 ++++
 ...rsionedStatsLRURegionEntryOffHeapObjectKey.java |  459 ++++
 ...sionedStatsLRURegionEntryOffHeapStringKey1.java |  531 +++++
 ...sionedStatsLRURegionEntryOffHeapStringKey2.java |  576 +++++
 ...VersionedStatsLRURegionEntryOffHeapUUIDKey.java |  472 +++++
 .../cache/entries/VersionedStatsRegionEntry.java   |   28 +
 .../entries/VersionedStatsRegionEntryHeap.java     |   78 +
 .../VersionedStatsRegionEntryHeapIntKey.java       |  306 +++
 .../VersionedStatsRegionEntryHeapLongKey.java      |  306 +++
 .../VersionedStatsRegionEntryHeapObjectKey.java    |  301 +++
 .../VersionedStatsRegionEntryHeapStringKey1.java   |  373 ++++
 .../VersionedStatsRegionEntryHeapStringKey2.java   |  418 ++++
 .../VersionedStatsRegionEntryHeapUUIDKey.java      |  311 +++
 .../entries/VersionedStatsRegionEntryOffHeap.java  |   81 +
 .../VersionedStatsRegionEntryOffHeapIntKey.java    |  368 ++++
 .../VersionedStatsRegionEntryOffHeapLongKey.java   |  368 ++++
 .../VersionedStatsRegionEntryOffHeapObjectKey.java |  360 ++++
 ...VersionedStatsRegionEntryOffHeapStringKey1.java |  432 ++++
 ...VersionedStatsRegionEntryOffHeapStringKey2.java |  477 +++++
 .../VersionedStatsRegionEntryOffHeapUUIDKey.java   |  373 ++++
 .../entries/VersionedThinDiskLRURegionEntry.java   |   31 +
 .../VersionedThinDiskLRURegionEntryHeap.java       |   80 +
 .../VersionedThinDiskLRURegionEntryHeapIntKey.java |  386 ++++
 ...VersionedThinDiskLRURegionEntryHeapLongKey.java |  387 ++++
 ...rsionedThinDiskLRURegionEntryHeapObjectKey.java |  379 ++++
 ...sionedThinDiskLRURegionEntryHeapStringKey1.java |  451 ++++
 ...sionedThinDiskLRURegionEntryHeapStringKey2.java |  496 +++++
 ...VersionedThinDiskLRURegionEntryHeapUUIDKey.java |  392 ++++
 .../VersionedThinDiskLRURegionEntryOffHeap.java    |   81 +
 ...rsionedThinDiskLRURegionEntryOffHeapIntKey.java |  446 ++++
 ...sionedThinDiskLRURegionEntryOffHeapLongKey.java |  446 ++++
 ...onedThinDiskLRURegionEntryOffHeapObjectKey.java |  438 ++++
 ...nedThinDiskLRURegionEntryOffHeapStringKey1.java |  510 +++++
 ...nedThinDiskLRURegionEntryOffHeapStringKey2.java |  555 +++++
 ...sionedThinDiskLRURegionEntryOffHeapUUIDKey.java |  451 ++++
 .../entries/VersionedThinDiskRegionEntry.java      |   28 +
 .../entries/VersionedThinDiskRegionEntryHeap.java  |   80 +
 .../VersionedThinDiskRegionEntryHeapIntKey.java    |  272 +++
 .../VersionedThinDiskRegionEntryHeapLongKey.java   |  272 +++
 .../VersionedThinDiskRegionEntryHeapObjectKey.java |  264 +++
 ...VersionedThinDiskRegionEntryHeapStringKey1.java |  336 +++
 ...VersionedThinDiskRegionEntryHeapStringKey2.java |  381 ++++
 .../VersionedThinDiskRegionEntryHeapUUIDKey.java   |  277 +++
 .../VersionedThinDiskRegionEntryOffHeap.java       |   81 +
 .../VersionedThinDiskRegionEntryOffHeapIntKey.java |  331 +++
 ...VersionedThinDiskRegionEntryOffHeapLongKey.java |  332 +++
 ...rsionedThinDiskRegionEntryOffHeapObjectKey.java |  324 +++
 ...sionedThinDiskRegionEntryOffHeapStringKey1.java |  396 ++++
 ...sionedThinDiskRegionEntryOffHeapStringKey2.java |  441 ++++
 ...VersionedThinDiskRegionEntryOffHeapUUIDKey.java |  337 +++
 .../cache/entries/VersionedThinLRURegionEntry.java |   29 +
 .../entries/VersionedThinLRURegionEntryHeap.java   |   80 +
 .../VersionedThinLRURegionEntryHeapIntKey.java     |  328 +++
 .../VersionedThinLRURegionEntryHeapLongKey.java    |  328 +++
 .../VersionedThinLRURegionEntryHeapObjectKey.java  |  320 +++
 .../VersionedThinLRURegionEntryHeapStringKey1.java |  392 ++++
 .../VersionedThinLRURegionEntryHeapStringKey2.java |  437 ++++
 .../VersionedThinLRURegionEntryHeapUUIDKey.java    |  333 +++
 .../VersionedThinLRURegionEntryOffHeap.java        |   81 +
 .../VersionedThinLRURegionEntryOffHeapIntKey.java  |  387 ++++
 .../VersionedThinLRURegionEntryOffHeapLongKey.java |  387 ++++
 ...ersionedThinLRURegionEntryOffHeapObjectKey.java |  380 ++++
 ...rsionedThinLRURegionEntryOffHeapStringKey1.java |  452 ++++
 ...rsionedThinLRURegionEntryOffHeapStringKey2.java |  497 +++++
 .../VersionedThinLRURegionEntryOffHeapUUIDKey.java |  392 ++++
 .../cache/entries/VersionedThinRegionEntry.java    |   30 +
 .../entries/VersionedThinRegionEntryHeap.java      |   78 +
 .../VersionedThinRegionEntryHeapIntKey.java        |  228 ++
 .../VersionedThinRegionEntryHeapLongKey.java       |  228 ++
 .../VersionedThinRegionEntryHeapObjectKey.java     |  221 ++
 .../VersionedThinRegionEntryHeapStringKey1.java    |  293 +++
 .../VersionedThinRegionEntryHeapStringKey2.java    |  338 +++
 .../VersionedThinRegionEntryHeapUUIDKey.java       |  233 ++
 .../entries/VersionedThinRegionEntryOffHeap.java   |   81 +
 .../VersionedThinRegionEntryOffHeapIntKey.java     |  288 +++
 .../VersionedThinRegionEntryOffHeapLongKey.java    |  288 +++
 .../VersionedThinRegionEntryOffHeapObjectKey.java  |  280 +++
 .../VersionedThinRegionEntryOffHeapStringKey1.java |  352 +++
 .../VersionedThinRegionEntryOffHeapStringKey2.java |  397 ++++
 .../VersionedThinRegionEntryOffHeapUUIDKey.java    |  293 +++
 .../cache/event/DistributedEventTracker.java       |    6 +-
 .../internal/cache/execute/AbstractExecution.java  |    8 +-
 .../cache/execute/BucketMovedException.java        |    7 +-
 .../cache/execute/DefaultResultCollector.java      |   14 +-
 .../execute/DistributedRegionFunctionExecutor.java |   10 +-
 .../DistributedRegionFunctionResultSender.java     |    2 +-
 .../DistributedRegionFunctionResultWaiter.java     |    2 +-
 .../cache/execute/FunctionContextImpl.java         |   20 +-
 .../cache/execute/FunctionExecutionNodePruner.java |    6 +-
 .../cache/execute/FunctionRemoteContext.java       |    2 +-
 .../cache/execute/FunctionServiceStats.java        |   26 +-
 .../internal/cache/execute/FunctionStats.java      |   31 +-
 .../execute/FunctionStreamingResultCollector.java  |    4 +-
 .../internal/cache/execute/InternalExecution.java  |   16 +-
 .../cache/execute/InternalFunctionException.java   |   14 +-
 .../InternalFunctionInvocationTargetException.java |   10 +-
 .../cache/execute/InternalFunctionService.java     |   20 +-
 .../execute/InternalRegionFunctionContext.java     |   10 +-
 .../cache/execute/InternalResultSender.java        |    2 +-
 .../cache/execute/LocalResultCollector.java        |    2 +-
 .../cache/execute/MemberFunctionResultSender.java  |    6 +-
 .../cache/execute/MemberFunctionResultWaiter.java  |    2 +-
 .../cache/execute/MemberMappedArgument.java        |    8 +-
 .../cache/execute/MultiRegionFunctionContext.java  |   10 +-
 .../execute/MultiRegionFunctionContextImpl.java    |    6 +-
 .../execute/MultiRegionFunctionResultWaiter.java   |    2 +-
 .../geode/internal/cache/execute/NoResult.java     |   12 +-
 .../PartitionedRegionFunctionResultSender.java     |    6 +-
 .../PartitionedRegionFunctionResultWaiter.java     |    4 +-
 .../cache/execute/RegionFunctionContextImpl.java   |   14 +-
 .../cache/execute/ServerFunctionExecutor.java      |    4 +-
 .../execute/ServerRegionFunctionExecutor.java      |    2 +-
 .../ServerToClientFunctionResultSender65.java      |    2 +-
 .../cache/execute/StreamingFunctionOperation.java  |    1 +
 .../geode/internal/cache/extension/Extensible.java |    6 +-
 .../geode/internal/cache/extension/Extension.java  |    4 +-
 .../internal/cache/extension/ExtensionPoint.java   |   12 +-
 .../cache/extension/SimpleExtensionPoint.java      |    6 +-
 .../geode/internal/cache/ha/HAContainerMap.java    |    2 +-
 .../geode/internal/cache/ha/HARegionQueue.java     |  162 +-
 .../internal/cache/ha/HARegionQueueAttributes.java |   18 +-
 .../internal/cache/ha/HARegionQueueStats.java      |   30 +-
 .../geode/internal/cache/ha/ThreadIdentifier.java  |   30 +-
 .../cache/locks/TXLessorDepartureHandler.java      |    1 -
 .../geode/internal/cache/locks/TXLockBatch.java    |   20 +-
 .../geode/internal/cache/locks/TXLockId.java       |    1 -
 .../geode/internal/cache/locks/TXLockIdImpl.java   |    7 +-
 .../geode/internal/cache/locks/TXLockService.java  |    7 +-
 .../internal/cache/locks/TXLockServiceImpl.java    |   14 +-
 .../locks/TXLockUpdateParticipantsMessage.java     |   17 +-
 .../cache/locks/TXOriginatorRecoveryProcessor.java |    1 -
 .../locks/TXRecoverGrantorMessageProcessor.java    |    8 +-
 .../internal/cache/locks/TXRegionLockRequest.java  |    5 +-
 .../apache/geode/internal/cache/lru/EnableLRU.java |    3 +-
 .../geode/internal/cache/lru/HeapEvictor.java      |   19 +-
 .../cache/lru/HeapLRUCapacityController.java       |   10 +-
 .../internal/cache/lru/HeapLRUStatistics.java      |    4 +-
 .../geode/internal/cache/lru/LRUAlgorithm.java     |   12 +-
 .../internal/cache/lru/LRUCapacityController.java  |   14 +-
 .../geode/internal/cache/lru/LRUClockNode.java     |    2 +-
 .../apache/geode/internal/cache/lru/LRUEntry.java  |    6 +-
 .../geode/internal/cache/lru/LRUMapCallbacks.java  |    6 +-
 .../geode/internal/cache/lru/LRUStatistics.java    |    1 -
 .../cache/lru/MemLRUCapacityController.java        |   13 +-
 .../geode/internal/cache/lru/NewLIFOClockHand.java |    4 +-
 .../geode/internal/cache/lru/NewLRUClockHand.java  |   11 +-
 .../apache/geode/internal/cache/lru/Sizeable.java  |   16 +-
 .../operations/ContainsKeyOperationContext.java    |    6 +-
 .../AllBucketProfilesUpdateMessage.java            |    5 +-
 .../partitioned/BecomePrimaryBucketMessage.java    |    6 +-
 .../geode/internal/cache/partitioned/Bucket.java   |   12 +-
 .../cache/partitioned/BucketBackupMessage.java     |    4 +-
 .../cache/partitioned/BucketCountLoadProbe.java    |    2 +-
 .../partitioned/BucketProfileUpdateMessage.java    |    4 +-
 .../cache/partitioned/BucketSizeMessage.java       |    8 +-
 .../cache/partitioned/ColocatedRegionDetails.java  |    8 +-
 .../cache/partitioned/ContainsKeyValueMessage.java |    6 +-
 .../cache/partitioned/CreateBucketMessage.java     |   16 +-
 .../partitioned/CreateMissingBucketsTask.java      |    2 +-
 .../partitioned/DeposePrimaryBucketMessage.java    |    2 +-
 .../internal/cache/partitioned/DestroyMessage.java |   14 +-
 .../DestroyRegionOnDataStoreMessage.java           |   16 +-
 .../cache/partitioned/DumpAllPRConfigMessage.java  |    2 +-
 .../internal/cache/partitioned/DumpB2NRegion.java  |    6 +-
 .../cache/partitioned/DumpBucketsMessage.java      |    2 +-
 .../partitioned/EndBucketCreationMessage.java      |    6 +-
 .../cache/partitioned/FetchBulkEntriesMessage.java |    8 +-
 .../cache/partitioned/FetchEntriesMessage.java     |   37 +-
 .../cache/partitioned/FetchEntryMessage.java       |    8 +-
 .../cache/partitioned/FetchKeysMessage.java        |   10 +-
 .../partitioned/FetchPartitionDetailsMessage.java  |    6 +-
 .../internal/cache/partitioned/FlushMessage.java   |    8 +-
 .../internal/cache/partitioned/GetMessage.java     |   33 +-
 .../cache/partitioned/IdentityRequestMessage.java  |   16 +-
 .../cache/partitioned/IdentityUpdateMessage.java   |    2 +-
 .../cache/partitioned/IndexCreationMsg.java        |   38 +-
 .../internal/cache/partitioned/InternalPRInfo.java |    8 +-
 .../partitioned/InternalPartitionDetails.java      |    6 +-
 .../cache/partitioned/InvalidateMessage.java       |   12 +-
 .../partitioned/ManageBackupBucketMessage.java     |   20 +-
 .../cache/partitioned/ManageBucketMessage.java     |   20 +-
 .../cache/partitioned/MoveBucketMessage.java       |    4 +-
 .../cache/partitioned/PREntriesIterator.java       |    2 +-
 .../geode/internal/cache/partitioned/PRLoad.java   |   12 +-
 .../partitioned/PRLocallyDestroyedException.java   |    2 +-
 .../cache/partitioned/PRSanityCheckMessage.java    |   14 +-
 .../cache/partitioned/PRTombstoneMessage.java      |    2 +-
 .../partitioned/PRUpdateEntryVersionMessage.java   |   12 +-
 .../cache/partitioned/PartitionMemberInfoImpl.java |    4 +-
 .../cache/partitioned/PartitionMessage.java        |   28 +-
 .../PartitionMessageWithDirectReply.java           |    4 +-
 .../partitioned/PartitionedRegionObserver.java     |    4 +-
 .../PartitionedRegionObserverAdapter.java          |    2 +-
 .../PartitionedRegionObserverHolder.java           |    2 +-
 .../partitioned/PartitionedRegionRebalanceOp.java  |   28 +-
 .../cache/partitioned/PrimaryRequestMessage.java   |   10 +-
 .../cache/partitioned/PutAllPRMessage.java         |    8 +-
 .../internal/cache/partitioned/PutMessage.java     |   18 +-
 .../internal/cache/partitioned/QueryMessage.java   |    4 +-
 .../cache/partitioned/RedundancyLogger.java        |    9 +-
 .../internal/cache/partitioned/RegionAdvisor.java  |   97 +-
 .../cache/partitioned/RemoteFetchKeysMessage.java  |   14 +-
 .../cache/partitioned/RemoteSizeMessage.java       |   12 +-
 .../cache/partitioned/RemoveAllPRMessage.java      |    8 +-
 .../cache/partitioned/RemoveBucketMessage.java     |    4 +-
 .../cache/partitioned/RemoveIndexesMessage.java    |   42 +-
 .../internal/cache/partitioned/SizeMessage.java    |   10 +-
 .../cache/partitioned/SizedBasedLoadProbe.java     |   10 +-
 .../partitioned/StreamingPartitionOperation.java   |    8 +-
 .../partitioned/rebalance/BucketOperator.java      |   12 +-
 .../partitioned/rebalance/CompositeDirector.java   |    6 +-
 .../cache/partitioned/rebalance/FPRDirector.java   |    4 +-
 .../cache/partitioned/rebalance/MoveBuckets.java   |    2 +-
 .../cache/partitioned/rebalance/MovePrimaries.java |    2 +-
 .../rebalance/ParallelBucketOperator.java          |   14 +-
 .../rebalance/PartitionedRegionLoadModel.java      |   24 +-
 .../rebalance/PercentageMoveDirector.java          |    6 +-
 .../partitioned/rebalance/RebalanceDirector.java   |   12 +-
 .../rebalance/RebalanceDirectorAdapter.java        |    2 +-
 .../partitioned/rebalance/SatisfyRedundancy.java   |    2 +-
 .../cache/persistence/BackupInspector.java         |  174 --
 .../cache/persistence/CanonicalIdHolder.java       |   13 +-
 .../CreatePersistentRegionProcessor.java           |    4 +-
 .../cache/persistence/DiskInitFileParser.java      |    4 +-
 .../cache/persistence/DiskRecoveryStore.java       |    5 +-
 .../internal/cache/persistence/DiskStoreID.java    |    2 +-
 .../cache/persistence/MembershipFlushRequest.java  |    2 +-
 .../cache/persistence/MembershipViewRequest.java   |    2 +-
 .../cache/persistence/PersistenceAdvisor.java      |   16 +-
 .../cache/persistence/PersistenceAdvisorImpl.java  |   13 +-
 .../cache/persistence/PersistentMemberID.java      |    2 +-
 .../cache/persistence/PersistentMemberManager.java |   16 +-
 .../cache/persistence/PersistentMemberPattern.java |    4 +-
 .../cache/persistence/PersistentMemberView.java    |   12 +-
 .../persistence/PersistentMembershipView.java      |    2 +-
 .../persistence/PersistentStateQueryMessage.java   |    2 +-
 .../PrepareNewPersistentMemberMessage.java         |    2 +-
 .../persistence/RemovePersistentMemberMessage.java |    2 +-
 .../internal/cache/persistence/RestoreScript.java  |  150 --
 .../cache/persistence/ScriptGenerator.java         |   38 -
 .../cache/persistence/UnixBackupInspector.java     |   73 -
 .../cache/persistence/UnixScriptGenerator.java     |   69 -
 .../cache/persistence/WindowsBackupInspector.java  |   81 -
 .../cache/persistence/WindowsScriptGenerator.java  |   94 -
 .../internal/cache/persistence/query/IndexMap.java |   18 +-
 .../cache/persistence/query/ResultBag.java         |   12 +-
 .../cache/persistence/query/ResultList.java        |    4 +-
 .../cache/persistence/query/ResultMap.java         |   14 +-
 .../cache/persistence/query/ResultSet.java         |   12 +-
 .../query/TemporaryResultSetFactory.java           |   12 +-
 .../persistence/query/mock/ByteComparator.java     |    2 +-
 .../query/mock/CachedDeserializableComparator.java |    2 +-
 .../cache/persistence/query/mock/IndexMapImpl.java |    5 +-
 .../cache/persistence/query/mock/ItrAdapter.java   |    2 +-
 .../apache/geode/internal/cache/properties.html    |    2 +-
 .../region/entry/RegionEntryFactoryBuilder.java    |   32 +
 .../internal/cache/snapshot/ClientExporter.java    |    2 +-
 .../internal/cache/snapshot/ExportedRegistry.java  |    2 +-
 .../internal/cache/snapshot/FlowController.java    |   22 +-
 .../geode/internal/cache/snapshot/GFSnapshot.java  |   18 +-
 .../internal/cache/snapshot/LocalExporter.java     |    2 +-
 .../cache/snapshot/ParallelSnapshotFileMapper.java |    2 +-
 .../cache/snapshot/RegionSnapshotServiceImpl.java  |   40 +-
 .../cache/snapshot/SnapshotFileMapper.java         |   14 +-
 .../cache/snapshot/SnapshotOptionsImpl.java        |    2 +-
 .../internal/cache/snapshot/SnapshotPacket.java    |   26 +-
 .../internal/cache/snapshot/WindowedExporter.java  |   40 +-
 .../apache/geode/internal/cache/tier/Acceptor.java |    2 +-
 .../geode/internal/cache/tier/BatchException.java  |    6 +-
 .../internal/cache/tier/CachedRegionHelper.java    |    2 +-
 .../geode/internal/cache/tier/ClientHandShake.java |    2 +-
 .../geode/internal/cache/tier/ConnectionProxy.java |    2 +-
 .../geode/internal/cache/tier/InterestType.java    |    4 +-
 .../cache/tier/InternalClientMembership.java       |   27 +-
 .../geode/internal/cache/tier/MessageType.java     |   10 +-
 .../internal/cache/tier/sockets/AcceptorImpl.java  |    4 +-
 .../internal/cache/tier/sockets/BaseCommand.java   |   43 +-
 .../cache/tier/sockets/CacheClientNotifier.java    |   53 +-
 .../tier/sockets/CacheClientNotifierStats.java     |    2 +-
 .../cache/tier/sockets/CacheClientProxy.java       |   27 +-
 .../cache/tier/sockets/CacheClientProxyStats.java  |   32 +-
 .../cache/tier/sockets/CacheClientUpdater.java     |   32 +-
 .../cache/tier/sockets/CacheServerHelper.java      |   19 +-
 .../cache/tier/sockets/CacheServerStats.java       |    2 +-
 .../cache/tier/sockets/ChunkedMessage.java         |   44 +-
 .../tier/sockets/ClientBlacklistProcessor.java     |   17 +-
 .../tier/sockets/ClientDataSerializerMessage.java  |   10 +-
 .../cache/tier/sockets/ClientHealthMonitor.java    |   50 +-
 .../tier/sockets/ClientInstantiatorMessage.java    |   17 +-
 .../tier/sockets/ClientInterestMessageImpl.java    |   14 +-
 .../tier/sockets/ClientMarkerMessageImpl.java      |    4 +-
 .../internal/cache/tier/sockets/ClientMessage.java |    4 +-
 .../cache/tier/sockets/ClientPingMessageImpl.java  |    4 +-
 .../tier/sockets/ClientProtocolProcessor.java      |   45 -
 .../cache/tier/sockets/ClientProtocolService.java  |   41 -
 .../tier/sockets/ClientProtocolServiceLoader.java  |   51 -
 .../tier/sockets/ClientProxyMembershipID.java      |   53 +-
 .../cache/tier/sockets/ClientTombstoneMessage.java |    2 +-
 .../cache/tier/sockets/ClientUpdateMessage.java    |   20 +-
 .../tier/sockets/ClientUpdateMessageImpl.java      |   24 +-
 .../cache/tier/sockets/ClientUserAuths.java        |    2 +-
 .../cache/tier/sockets/CommBufferPool.java         |    4 +-
 .../cache/tier/sockets/CommandInitializer.java     |    2 +-
 .../cache/tier/sockets/ConnectionListener.java     |    6 +-
 .../tier/sockets/ConnectionListenerAdapter.java    |    2 +-
 .../sockets/GenericProtocolServerConnection.java   |    9 +-
 .../cache/tier/sockets/HAEventWrapper.java         |   34 +-
 .../internal/cache/tier/sockets/HandShake.java     |   98 +-
 .../tier/sockets/InterestResultPolicyImpl.java     |    4 +-
 .../cache/tier/sockets/LegacyServerConnection.java |    6 +-
 .../geode/internal/cache/tier/sockets/Message.java |   29 +-
 .../internal/cache/tier/sockets/MessageStats.java  |    2 +-
 .../cache/tier/sockets/ObjectPartList.java         |   20 +-
 .../cache/tier/sockets/ObjectPartList651.java      |   12 +-
 .../tier/sockets/OldClientSupportService.java      |    8 +-
 .../geode/internal/cache/tier/sockets/Part.java    |    6 +-
 .../sockets/RemoveClientFromBlacklistMessage.java  |    2 +-
 .../tier/sockets/SerializedObjectPartList.java     |    4 +-
 .../cache/tier/sockets/ServerConnection.java       |   16 +-
 .../tier/sockets/ServerConnectionFactory.java      |   25 +-
 .../tier/sockets/ServerHandShakeProcessor.java     |   10 +-
 .../cache/tier/sockets/ServerQueueStatus.java      |   16 +-
 .../cache/tier/sockets/ServerResponseMatrix.java   |   12 +-
 .../sockets/ServiceLoadingFailureException.java    |   35 -
 .../cache/tier/sockets/TcpServerFactory.java       |    1 +
 .../cache/tier/sockets/UserAuthAttributes.java     |    2 +-
 .../cache/tier/sockets/VersionedObjectList.java    |   28 +-
 .../cache/tier/sockets/command/AddPdxEnum.java     |    2 +-
 .../cache/tier/sockets/command/AddPdxType.java     |    2 +-
 .../cache/tier/sockets/command/ClearRegion.java    |    2 +-
 .../cache/tier/sockets/command/ClientReady.java    |   10 +-
 .../tier/sockets/command/CloseConnection.java      |    4 +-
 .../cache/tier/sockets/command/CommitCommand.java  |   10 +-
 .../cache/tier/sockets/command/ContainsKey.java    |    2 +-
 .../cache/tier/sockets/command/ContainsKey66.java  |    2 +-
 .../cache/tier/sockets/command/CreateRegion.java   |    2 +-
 .../cache/tier/sockets/command/Default.java        |    8 +-
 .../cache/tier/sockets/command/Destroy.java        |    2 +-
 .../cache/tier/sockets/command/Destroy65.java      |    2 +-
 .../cache/tier/sockets/command/Destroy70.java      |    8 +-
 .../cache/tier/sockets/command/DestroyRegion.java  |    2 +-
 .../tier/sockets/command/ExecuteFunction.java      |    4 +-
 .../tier/sockets/command/ExecuteFunction65.java    |    2 +-
 .../tier/sockets/command/ExecuteFunction66.java    |    2 +-
 .../tier/sockets/command/ExecuteFunction70.java    |    2 +-
 .../sockets/command/ExecuteRegionFunction.java     |    2 +-
 .../sockets/command/ExecuteRegionFunction61.java   |    7 +-
 .../sockets/command/ExecuteRegionFunction65.java   |    3 +-
 .../sockets/command/ExecuteRegionFunction66.java   |    3 +-
 .../command/ExecuteRegionFunctionSingleHop.java    |    3 +-
 .../sockets/command/GatewayReceiverCommand.java    |    2 +-
 .../internal/cache/tier/sockets/command/Get70.java |    2 +-
 .../cache/tier/sockets/command/GetAll.java         |    2 +-
 .../cache/tier/sockets/command/GetAll651.java      |    2 +-
 .../cache/tier/sockets/command/GetAll70.java       |    2 +-
 .../cache/tier/sockets/command/GetAllForRI.java    |    8 +-
 .../tier/sockets/command/GetAllWithCallback.java   |    2 +-
 .../command/GetClientPRMetadataCommand.java        |    6 +-
 .../command/GetClientPRMetadataCommand66.java      |    6 +-
 .../GetClientPartitionAttributesCommand.java       |    6 +-
 .../GetClientPartitionAttributesCommand66.java     |    6 +-
 .../cache/tier/sockets/command/GetEntry70.java     |    5 +-
 .../tier/sockets/command/GetEntryCommand.java      |    4 +-
 .../tier/sockets/command/GetFunctionAttribute.java |    6 +-
 .../cache/tier/sockets/command/GetPDXEnumById.java |    2 +-
 .../tier/sockets/command/GetPDXIdForEnum.java      |    2 +-
 .../tier/sockets/command/GetPDXIdForType.java      |    2 +-
 .../cache/tier/sockets/command/GetPDXTypeById.java |    2 +-
 .../cache/tier/sockets/command/GetPdxEnums70.java  |    2 +-
 .../cache/tier/sockets/command/GetPdxTypes70.java  |    2 +-
 .../cache/tier/sockets/command/Invalid.java        |    8 +-
 .../cache/tier/sockets/command/Invalidate.java     |    2 +-
 .../cache/tier/sockets/command/Invalidate70.java   |    6 +-
 .../cache/tier/sockets/command/KeySet.java         |    2 +-
 .../cache/tier/sockets/command/MakePrimary.java    |    8 +-
 .../cache/tier/sockets/command/PeriodicAck.java    |    8 +-
 .../internal/cache/tier/sockets/command/Ping.java  |   10 +-
 .../internal/cache/tier/sockets/command/Put.java   |    2 +-
 .../internal/cache/tier/sockets/command/Put61.java |    2 +-
 .../internal/cache/tier/sockets/command/Put65.java |    2 +-
 .../internal/cache/tier/sockets/command/Put70.java |    8 +-
 .../cache/tier/sockets/command/PutAll.java         |    2 +-
 .../cache/tier/sockets/command/PutAll70.java       |    2 +-
 .../cache/tier/sockets/command/PutAll80.java       |    2 +-
 .../tier/sockets/command/PutAllWithCallback.java   |    3 +-
 .../tier/sockets/command/PutUserCredentials.java   |    2 +-
 .../internal/cache/tier/sockets/command/Query.java |    2 +-
 .../cache/tier/sockets/command/Query651.java       |    2 +-
 .../cache/tier/sockets/command/QueryGeode10.java   |    4 +-
 .../command/QueryWithParametersGeode10.java        |    4 +-
 .../sockets/command/RegisterDataSerializers.java   |    2 +-
 .../sockets/command/RegisterInstantiators.java     |    4 +-
 .../tier/sockets/command/RegisterInterest.java     |    4 +-
 .../tier/sockets/command/RegisterInterest61.java   |    2 +-
 .../tier/sockets/command/RegisterInterestList.java |    4 +-
 .../sockets/command/RegisterInterestList61.java    |    4 +-
 .../sockets/command/RegisterInterestList66.java    |    2 +-
 .../cache/tier/sockets/command/RemoveAll.java      |    2 +-
 .../cache/tier/sockets/command/RemoveUserAuth.java |    2 +-
 .../cache/tier/sockets/command/Request.java        |    2 +-
 .../tier/sockets/command/RequestEventValue.java    |    4 +-
 .../tier/sockets/command/RollbackCommand.java      |    2 +-
 .../internal/cache/tier/sockets/command/Size.java  |    2 +-
 .../sockets/command/TXSynchronizationCommand.java  |   16 +-
 .../tier/sockets/command/UnregisterInterest.java   |    2 +-
 .../sockets/command/UnregisterInterestList.java    |    2 +-
 .../sockets/command/UpdateClientNotification.java  |    4 +-
 .../internal/cache/tx/ClientTXRegionStub.java      |    4 +-
 .../geode/internal/cache/tx/ClientTXStateStub.java |    5 +-
 .../internal/cache/tx/DistClientTXStateStub.java   |    4 +-
 .../geode/internal/cache/tx/DistTxEntryEvent.java  |    4 +-
 .../internal/cache/tx/DistributedTXRegionStub.java |   10 +-
 .../internal/cache/tx/PartitionedTXRegionStub.java |   14 +-
 .../geode/internal/cache/tx/TXRegionStub.java      |    4 +-
 .../internal/cache/tx/TransactionalOperation.java  |    2 +-
 .../cache/versions/CompactVersionHolder.java       |    4 +-
 .../ConcurrentCacheModificationException.java      |    4 +-
 .../cache/versions/DiskRegionVersionVector.java    |    6 +-
 .../internal/cache/versions/DiskVersionTag.java    |    2 +-
 .../internal/cache/versions/RVVException.java      |   14 +-
 .../internal/cache/versions/RVVExceptionB.java     |    2 +-
 .../internal/cache/versions/RVVExceptionT.java     |    4 +-
 .../cache/versions/RegionVersionHolder.java        |   26 +-
 .../cache/versions/RegionVersionVector.java        |   73 +-
 .../cache/versions/VMRegionVersionVector.java      |    2 +-
 .../internal/cache/versions/VMVersionTag.java      |    4 +-
 .../internal/cache/versions/VersionSource.java     |   10 +-
 .../internal/cache/versions/VersionStamp.java      |   46 +-
 .../geode/internal/cache/versions/VersionTag.java  |    4 +-
 .../internal/cache/wan/AbstractGatewaySender.java  |   16 +-
 .../wan/AbstractGatewaySenderEventProcessor.java   |   14 +-
 .../wan/AsyncEventQueueConfigurationException.java |    8 +-
 .../geode/internal/cache/wan/BatchException70.java |    8 +-
 .../cache/wan/DistributedSystemListener.java       |    2 +-
 .../cache/wan/GatewayReceiverException.java        |    8 +-
 .../internal/cache/wan/GatewayReceiverStats.java   |    2 +-
 .../internal/cache/wan/GatewaySenderAdvisor.java   |    4 +-
 .../wan/GatewaySenderConfigurationException.java   |    6 +-
 .../wan/GatewaySenderEventCallbackArgument.java    |   29 +-
 .../wan/GatewaySenderEventCallbackDispatcher.java  |   14 +-
 .../internal/cache/wan/GatewaySenderEventImpl.java |   50 +-
 .../internal/cache/wan/GatewaySenderException.java |    6 +-
 .../internal/cache/wan/GatewaySenderStats.java     |   61 +-
 .../WaitUntilGatewaySenderFlushedCoordinator.java  |    5 +-
 .../ConcurrentParallelGatewaySenderQueue.java      |   17 +-
 .../wan/parallel/ParallelGatewaySenderQueue.java   |    4 +-
 .../parallel/ParallelQueueBatchRemovalMessage.java |    6 +-
 .../wan/parallel/ParallelQueueRemovalMessage.java  |    2 +-
 .../cache/wan/parallel/RREventIDResolver.java      |    4 +-
 ...tilParallelGatewaySenderFlushedCoordinator.java |   16 +-
 .../cache/wan/serial/BatchDestroyOperation.java    |    6 +-
 ...oncurrentSerialGatewaySenderEventProcessor.java |    6 +-
 .../serial/SerialGatewaySenderEventProcessor.java  |   20 +-
 .../cache/wan/serial/SerialGatewaySenderQueue.java |   28 +-
 .../internal/cache/xmlcache/AbstractXmlParser.java |    2 +-
 .../internal/cache/xmlcache/BindingCreation.java   |    8 +-
 .../internal/cache/xmlcache/CacheCreation.java     |   67 +-
 .../cache/xmlcache/CacheServerCreation.java        |    4 +-
 .../geode/internal/cache/xmlcache/CacheXml.java    |   55 +-
 .../internal/cache/xmlcache/CacheXmlGenerator.java |   11 +-
 .../internal/cache/xmlcache/CacheXmlParser.java    |   34 +-
 .../cache/xmlcache/CacheXmlPropertyResolver.java   |    6 +-
 .../xmlcache/CacheXmlPropertyResolverHelper.java   |    6 +-
 .../internal/cache/xmlcache/CacheXmlVersion.java   |   12 +-
 .../cache/xmlcache/ClientHaQueueCreation.java      |    2 +-
 .../geode/internal/cache/xmlcache/Declarable2.java |    3 +-
 .../cache/xmlcache/DefaultEntityResolver2.java     |    2 +-
 .../xmlcache/DiskStoreAttributesCreation.java      |    8 +-
 .../cache/xmlcache/GatewayReceiverCreation.java    |    6 +-
 .../cache/xmlcache/GeodeEntityResolver.java        |    6 +-
 .../internal/cache/xmlcache/IndexCreationData.java |    4 +-
 .../xmlcache/ParallelGatewaySenderCreation.java    |    2 +-
 .../cache/xmlcache/PivotalEntityResolver.java      |    6 +-
 .../internal/cache/xmlcache/PropertyResolver.java  |    4 +-
 .../cache/xmlcache/RegionAttributesCreation.java   |   16 +-
 .../internal/cache/xmlcache/RegionCreation.java    |    6 +-
 .../cache/xmlcache/ResourceManagerCreation.java    |   28 +-
 .../xmlcache/SerialAsyncEventQueueCreation.java    |    2 +-
 .../xmlcache/SerialGatewaySenderCreation.java      |    2 +-
 .../cache/xmlcache/SerializerCreation.java         |   16 +-
 .../internal/cache/xmlcache/XmlGenerator.java      |    6 +-
 .../internal/cache/xmlcache/XmlGeneratorUtils.java |   45 +-
 .../geode/internal/cache/xmlcache/XmlParser.java   |    8 +-
 .../org/apache/geode/internal/concurrent/AL.java   |    4 +-
 .../apache/geode/internal/concurrent/Atomics.java  |    4 +-
 .../concurrent/CompactConcurrentHashSet2.java      |   12 +-
 .../internal/concurrent/ConcurrentHashSet.java     |    2 +-
 .../org/apache/geode/internal/concurrent/LI.java   |    4 +-
 .../geode/internal/concurrent/MapCallback.java     |   36 +-
 .../geode/internal/concurrent/MapResult.java       |    2 +-
 .../internal/datasource/AbstractDataSource.java    |   34 +-
 .../internal/datasource/AbstractPoolCache.java     |   28 +-
 .../datasource/ClientConnectionFactoryWrapper.java |    2 +-
 .../geode/internal/datasource/ConfigProperty.java  |    2 +-
 .../datasource/ConfiguredDataSourceProperties.java |   38 +-
 .../datasource/ConnectionEventListenerAdaptor.java |    6 +-
 .../internal/datasource/ConnectionPoolCache.java   |    6 +-
 .../datasource/ConnectionPoolCacheImpl.java        |    4 +-
 .../internal/datasource/ConnectionProvider.java    |    6 +-
 .../datasource/ConnectionProviderException.java    |    4 +-
 .../datasource/DataSourceCreateException.java      |    4 +-
 .../internal/datasource/DataSourceFactory.java     |   24 +-
 .../datasource/FacetsJCAConnectionManagerImpl.java |   16 +-
 .../datasource/GemFireBasicDataSource.java         |   10 +-
 .../datasource/GemFireConnPooledDataSource.java    |   20 +-
 .../datasource/GemFireConnectionPoolManager.java   |   15 +-
 .../datasource/GemFireTransactionDataSource.java   |   20 +-
 .../datasource/JCAConnectionManagerImpl.java       |   13 +-
 .../internal/datasource/ManagedPoolCacheImpl.java  |    6 +-
 .../geode/internal/datasource/PoolException.java   |    4 +-
 .../internal/datasource/TranxPoolCacheImpl.java    |    6 +-
 .../org/apache/geode/internal/hll/HyperLogLog.java |    4 +-
 .../apache/geode/internal/hll/HyperLogLogPlus.java |    4 +-
 .../org/apache/geode/internal/hll/RegisterSet.java |    4 +-
 .../i18n/AbstractStringIdResourceBundle.java       |   14 +-
 .../geode/internal/i18n/LocalizedStrings.java      |    2 +-
 .../org/apache/geode/internal/i18n/StringId.java   |    8 +-
 .../geode/internal/io/CompositeOutputStream.java   |    4 +-
 .../io/MainWithChildrenRollingFileHandler.java     |    6 +-
 .../geode/internal/io/RollingFileHandler.java      |    4 +-
 .../apache/geode/internal/io/TeeOutputStream.java  |    2 +-
 .../apache/geode/internal/jndi/ContextImpl.java    |  120 +-
 .../internal/jndi/InitialContextFactoryImpl.java   |   13 +-
 .../apache/geode/internal/jndi/JNDIInvoker.java    |   29 +-
 .../apache/geode/internal/jndi/NameParserImpl.java |   11 +-
 .../geode/internal/jta/GlobalTransaction.java      |   54 +-
 .../apache/geode/internal/jta/TransactionImpl.java |   34 +-
 .../geode/internal/jta/TransactionManagerImpl.java |   34 +-
 .../geode/internal/jta/TransactionUtils.java       |    6 +-
 .../geode/internal/jta/UserTransactionImpl.java    |   21 +-
 .../org/apache/geode/internal/jta/XidImpl.java     |   10 +-
 .../org/apache/geode/internal/lang/ClassUtils.java |   14 +-
 .../org/apache/geode/internal/lang/Filter.java     |    2 +-
 .../apache/geode/internal/lang/InOutParameter.java |   14 +-
 .../org/apache/geode/internal/lang/Initable.java   |    2 +-
 .../geode/internal/lang/MutableIdentifiable.java   |    4 +-
 .../apache/geode/internal/lang/ObjectUtils.java    |   20 +-
 .../org/apache/geode/internal/lang/Orderable.java  |    4 +-
 .../org/apache/geode/internal/lang/Ordered.java    |    6 +-
 .../geode/internal/lang/SystemPropertyHelper.java  |   21 +-
 .../apache/geode/internal/lang/SystemUtils.java    |   22 +-
 .../apache/geode/internal/lang/ThreadUtils.java    |  138 --
 .../apache/geode/internal/lang/ThrowableUtils.java |    2 +-
 .../geode/internal/logging/DateFormatter.java      |   12 +-
 .../geode/internal/logging/DebugLogWriter.java     |    8 +-
 .../geode/internal/logging/InternalLogWriter.java  |   26 +-
 .../geode/internal/logging/LocalLogWriter.java     |    6 +-
 .../apache/geode/internal/logging/LogConfig.java   |    2 +-
 .../apache/geode/internal/logging/LogService.java  |   19 +-
 .../geode/internal/logging/LogWriterFactory.java   |    4 +-
 .../geode/internal/logging/LogWriterImpl.java      |  106 +-
 .../geode/internal/logging/LoggingThreadGroup.java |    4 +-
 .../geode/internal/logging/ManagerLogWriter.java   |   20 +-
 .../geode/internal/logging/MergeLogFiles.java      |   14 +-
 .../geode/internal/logging/PureLogWriter.java      |   18 +-
 .../internal/logging/SecurityLocalLogWriter.java   |   10 +-
 .../geode/internal/logging/SecurityLogConfig.java  |    6 +-
 .../geode/internal/logging/SecurityLogWriter.java  |    4 +-
 .../internal/logging/SecurityManagerLogWriter.java |    8 +-
 .../internal/logging/StandardErrorPrinter.java     |    6 +-
 .../internal/logging/StandardOutputPrinter.java    |    6 +-
 .../internal/logging/log4j/AlertAppender.java      |   13 +-
 .../internal/logging/log4j/AppenderContext.java    |    7 +-
 .../internal/logging/log4j/ConfigLocator.java      |    4 +-
 .../geode/internal/logging/log4j/FastLogger.java   |    2 +-
 .../internal/logging/log4j/GemFireLogger.java      |  170 +-
 .../internal/logging/log4j/LocalizedMessage.java   |    2 +-
 .../geode/internal/logging/log4j/LogLevel.java     |   19 +-
 .../internal/logging/log4j/LogWriterAppender.java  |   23 +-
 .../internal/logging/log4j/LogWriterAppenders.java |   28 +-
 .../internal/logging/log4j/LogWriterLogger.java    |  249 +--
 .../log4j/message/GemFireParameterizedMessage.java |   16 +-
 .../GemFireParameterizedMessageFactory.java        |    2 +-
 .../apache/geode/internal/memcached/Command.java   |    4 +-
 .../geode/internal/memcached/CommandProcessor.java |    4 +-
 .../internal/memcached/ConnectionHandler.java      |    4 +-
 .../geode/internal/memcached/KeyWrapper.java       |    4 +-
 .../org/apache/geode/internal/memcached/Reply.java |    1 -
 .../geode/internal/memcached/RequestReader.java    |    4 +-
 .../geode/internal/memcached/ResponseStatus.java   |    2 +-
 .../geode/internal/memcached/ValueWrapper.java     |    6 +-
 .../memcached/commands/AbstractCommand.java        |    4 +-
 .../internal/memcached/commands/AddCommand.java    |    4 +-
 .../internal/memcached/commands/AddQCommand.java   |    2 +-
 .../internal/memcached/commands/AppendCommand.java |    2 +-
 .../memcached/commands/AppendQCommand.java         |    2 +-
 .../internal/memcached/commands/CASCommand.java    |    2 +-
 .../internal/memcached/commands/ClientError.java   |    2 +-
 .../memcached/commands/DecrementCommand.java       |    6 +-
 .../memcached/commands/DecrementQCommand.java      |    2 +-
 .../internal/memcached/commands/DeleteCommand.java |    2 +-
 .../memcached/commands/DeleteQCommand.java         |    2 +-
 .../memcached/commands/FlushAllQCommand.java       |    2 +-
 .../internal/memcached/commands/GATCommand.java    |    2 +-
 .../internal/memcached/commands/GATQCommand.java   |    2 +-
 .../internal/memcached/commands/GetCommand.java    |    4 +-
 .../internal/memcached/commands/GetKCommand.java   |    2 +-
 .../internal/memcached/commands/GetKQCommand.java  |    2 +-
 .../internal/memcached/commands/GetQCommand.java   |    2 +-
 .../memcached/commands/IncrementCommand.java       |    4 +-
 .../memcached/commands/IncrementQCommand.java      |    2 +-
 .../internal/memcached/commands/NoOpCommand.java   |    2 +-
 .../memcached/commands/NotSupportedCommand.java    |    2 +-
 .../memcached/commands/PrependCommand.java         |    2 +-
 .../memcached/commands/PrependQCommand.java        |    2 +-
 .../internal/memcached/commands/QuitCommand.java   |    6 +-
 .../internal/memcached/commands/QuitQCommand.java  |    2 +-
 .../memcached/commands/ReplaceCommand.java         |    4 +-
 .../memcached/commands/ReplaceQCommand.java        |    2 +-
 .../internal/memcached/commands/SetCommand.java    |    4 +-
 .../internal/memcached/commands/SetQCommand.java   |    2 +-
 .../internal/memcached/commands/StatsCommand.java  |    6 +-
 .../memcached/commands/StorageCommand.java         |    6 +-
 .../internal/memcached/commands/TouchCommand.java  |    2 +-
 .../memcached/commands/VerbosityCommand.java       |    6 +-
 .../memcached/commands/VersionCommand.java         |    2 +-
 .../internal/modules/util/RegionConfiguration.java |   27 +-
 .../internal/net/SSLConfigurationFactory.java      |   12 +-
 .../apache/geode/internal/net/SocketCloser.java    |   15 +-
 .../apache/geode/internal/net/SocketCreator.java   |    1 -
 .../geode/internal/net/SocketCreatorFactory.java   |    6 +-
 .../org/apache/geode/internal/net/SocketUtils.java |    6 +-
 .../internal/offheap/AddressableMemoryManager.java |    2 +-
 .../apache/geode/internal/offheap/DataType.java    |    2 +-
 .../apache/geode/internal/offheap/Fragment.java    |    2 +-
 .../geode/internal/offheap/FreeListManager.java    |   23 +-
 .../geode/internal/offheap/LifecycleListener.java  |   18 +-
 .../geode/internal/offheap/MemoryAllocator.java    |    6 +-
 .../internal/offheap/MemoryAllocatorImpl.java      |    4 +-
 .../apache/geode/internal/offheap/MemoryBlock.java |    2 +-
 .../geode/internal/offheap/MemoryInspector.java    |    2 +-
 .../internal/offheap/MemoryUsageListener.java      |    2 +-
 .../geode/internal/offheap/OffHeapHelper.java      |   10 +-
 .../geode/internal/offheap/OffHeapMemoryStats.java |    2 +-
 .../internal/offheap/OffHeapRegionEntryHelper.java |   12 +-
 .../geode/internal/offheap/OffHeapStorage.java     |   10 +-
 .../internal/offheap/OffHeapStoredObject.java      |   36 +-
 .../offheap/OutOfOffHeapMemoryListener.java        |    6 +-
 .../internal/offheap/ReferenceCountHelper.java     |    4 +-
 .../internal/offheap/ReferenceCountHelperImpl.java |    4 +-
 .../apache/geode/internal/offheap/Releasable.java  |    2 +-
 .../apache/geode/internal/offheap/SlabFactory.java |    2 +-
 .../apache/geode/internal/offheap/SlabImpl.java    |    2 +-
 .../geode/internal/offheap/StoredObject.java       |   14 +-
 .../offheap/annotations/OffHeapIdentifier.java     |    2 +-
 .../internal/offheap/annotations/Released.java     |    4 +-
 .../internal/offheap/annotations/Retained.java     |    4 +-
 .../internal/offheap/annotations/Unretained.java   |    4 +-
 .../geode/internal/process/AttachProcessUtils.java |    2 +-
 .../process/BlockingProcessStreamReader.java       |    4 +-
 .../process/ConnectionFailedException.java         |    2 +-
 .../internal/process/ControlFileWatchdog.java      |    2 +-
 .../process/ControlNotificationHandler.java        |    2 +-
 .../internal/process/ControllableProcess.java      |    6 +-
 .../process/FileAlreadyExistsException.java        |    2 +-
 .../internal/process/FileControllerParameters.java |    2 +-
 .../internal/process/FileProcessController.java    |   10 +-
 .../internal/process/LocalProcessLauncher.java     |   16 +-
 .../process/MBeanControllerParameters.java         |    2 +-
 .../process/MBeanInvocationFailedException.java    |    2 +-
 .../internal/process/MBeanProcessController.java   |   30 +-
 .../geode/internal/process/NativeProcessUtils.java |    2 +-
 .../process/NonBlockingProcessStreamReader.java    |    2 +-
 .../org/apache/geode/internal/process/PidFile.java |   14 +-
 .../internal/process/PidUnavailableException.java  |    2 +-
 .../geode/internal/process/ProcessController.java  |    4 +-
 .../internal/process/ProcessControllerFactory.java |    2 +-
 .../process/ProcessControllerParameters.java       |    4 +-
 .../internal/process/ProcessLauncherContext.java   |    6 +-
 .../internal/process/ProcessStreamReader.java      |    2 +-
 .../apache/geode/internal/process/ProcessType.java |    2 +-
 .../geode/internal/process/ProcessUtils.java       |   14 +-
 .../process/UnableToControlProcessException.java   |    2 +-
 .../geode/internal/security/AuthorizeRequest.java  |    4 +-
 .../internal/security/AuthorizeRequestPP.java      |    2 +-
 .../internal/security/CallbackInstantiator.java    |    7 +-
 .../internal/security/FilterPostAuthorization.java |    4 +-
 .../internal/security/FilterPreAuthorization.java  |    8 +-
 .../security/IntegratedSecurityService.java        |    2 +-
 .../security/SecurableCommunicationChannel.java    |    3 +-
 .../internal/security/SecurityServiceFactory.java  |    9 +-
 .../internal/security/shiro/CustomAuthRealm.java   |    9 +-
 .../security/shiro/JMXShiroAuthenticator.java      |    9 +-
 .../geode/internal/sequencelog/EntryLogger.java    |    2 +-
 .../geode/internal/sequencelog/RegionLogger.java   |    4 +-
 .../geode/internal/sequencelog/SequenceLogger.java |    8 +-
 .../internal/sequencelog/SequenceLoggerImpl.java   |    8 +-
 .../sequencelog/io/GemfireLogConverter.java        |    4 +-
 .../geode/internal/sequencelog/model/Graph.java    |    2 +-
 .../apache/geode/internal/shared/NativeCalls.java  |   38 +-
 .../geode/internal/shared/NativeCallsJNAImpl.java  |   47 +-
 .../internal/shared/NativeErrorException.java      |    2 +-
 .../geode/internal/shared/StringPrintWriter.java   |    8 +-
 .../geode/internal/shared/TCPSocketOptions.java    |    2 +-
 .../geode/internal/size/ObjectGraphSizer.java      |   20 +-
 .../geode/internal/size/ObjectTraverser.java       |    8 +-
 .../geode/internal/size/ReflectionObjectSizer.java |   12 +-
 .../internal/size/ReflectionSingleObjectSizer.java |    2 +-
 .../geode/internal/size/SingleObjectSizer.java     |    2 +-
 .../internal/size/SizeClassOnceObjectSizer.java    |   10 +-
 .../apache/geode/internal/size/SizeOfUtil0.java    |    4 +-
 .../geode/internal/size/WellKnownClassSizer.java   |    2 +-
 .../statistics/AbstractStatisticsFactory.java      |   14 +-
 .../geode/internal/statistics/ArchiveSplitter.java |    2 +-
 .../geode/internal/statistics/CallbackSampler.java |    4 +-
 .../statistics/DummyStatisticsFactory.java         |    6 +-
 .../internal/statistics/GemFireStatSampler.java    |   30 +-
 .../geode/internal/statistics/HostStatHelper.java  |   11 +-
 .../geode/internal/statistics/HostStatSampler.java |   25 +-
 .../statistics/IgnoreResourceException.java        |    2 +-
 .../internal/statistics/LocalStatListener.java     |    4 +-
 .../internal/statistics/LocalStatisticsImpl.java   |    8 +-
 .../internal/statistics/ResourceInstance.java      |    2 +-
 .../geode/internal/statistics/ResourceType.java    |    2 +-
 .../geode/internal/statistics/SampleCollector.java |   19 +-
 .../geode/internal/statistics/SampleHandler.java   |   10 +-
 .../internal/statistics/SimpleStatSampler.java     |    2 +-
 .../internal/statistics/SimpleStatisticId.java     |    2 +-
 .../internal/statistics/StatArchiveDescriptor.java |    2 +-
 .../internal/statistics/StatArchiveHandler.java    |   39 +-
 .../statistics/StatArchiveHandlerConfig.java       |    2 +-
 .../internal/statistics/StatArchiveReader.java     |   28 +-
 .../internal/statistics/StatArchiveWriter.java     |   27 +-
 .../internal/statistics/StatMonitorHandler.java    |    9 +-
 .../internal/statistics/StatSamplerStats.java      |   36 +-
 .../geode/internal/statistics/StatisticId.java     |    2 +-
 .../geode/internal/statistics/StatisticsImpl.java  |    9 +-
 .../internal/statistics/StatisticsMonitor.java     |    8 +-
 .../internal/statistics/StatisticsSampler.java     |    6 +-
 .../statistics/StatisticsTypeFactoryImpl.java      |   10 +-
 .../internal/statistics/StatisticsTypeImpl.java    |    6 +-
 .../internal/statistics/StatisticsTypeXml.java     |   21 +-
 .../apache/geode/internal/statistics/VMStats.java  |   14 +-
 .../geode/internal/statistics/VMStatsContract.java |    2 +-
 .../geode/internal/statistics/ValueMonitor.java    |    6 +-
 .../statistics/platform/LinuxProcFsStatistics.java |   13 +-
 .../statistics/platform/LinuxProcessStats.java     |    6 +-
 .../statistics/platform/LinuxSystemStats.java      |  104 +-
 .../statistics/platform/OSXProcessStats.java       |    6 +-
 .../statistics/platform/OSXSystemStats.java        |   68 +-
 .../statistics/platform/OsStatisticsFactory.java   |    2 +-
 .../statistics/platform/SolarisProcessStats.java   |   64 +-
 .../statistics/platform/SolarisSystemStats.java    |  144 +-
 .../statistics/platform/WindowsProcessStats.java   |   32 +-
 .../statistics/platform/WindowsSystemStats.java    |   90 +-
 .../internal/stats50/Atomic50StatisticsImpl.java   |   14 +-
 .../apache/geode/internal/stats50/VMStats50.java   |  124 +-
 .../apache/geode/internal/tcp/BaseMsgStreamer.java |    6 +-
 .../org/apache/geode/internal/tcp/Buffers.java     |    2 +-
 .../geode/internal/tcp/ByteBufferInputStream.java  |   34 +-
 .../geode/internal/tcp/ConnectExceptions.java      |    1 -
 .../org/apache/geode/internal/tcp/Connection.java  |  103 +-
 .../geode/internal/tcp/ConnectionException.java    |    2 +-
 .../apache/geode/internal/tcp/ConnectionTable.java |   34 +-
 .../tcp/ImmutableByteBufferInputStream.java        |   10 +-
 .../geode/internal/tcp/MemberShunnedException.java |    2 +-
 .../apache/geode/internal/tcp/MsgDestreamer.java   |   14 +-
 .../apache/geode/internal/tcp/MsgIdGenerator.java  |    4 +-
 .../apache/geode/internal/tcp/MsgOutputStream.java |   19 +-
 .../org/apache/geode/internal/tcp/MsgReader.java   |    8 +-
 .../org/apache/geode/internal/tcp/MsgStreamer.java |   49 +-
 .../apache/geode/internal/tcp/MsgStreamerList.java |    2 +-
 .../internal/tcp/ReenteredConnectException.java    |    2 +-
 .../apache/geode/internal/tcp/ServerDelegate.java  |    6 +-
 .../org/apache/geode/internal/tcp/TCPConduit.java  |   36 +-
 .../tcp/VersionedByteBufferInputStream.java        |    6 +-
 .../geode/internal/tcp/VersionedMsgStreamer.java   |    2 +-
 .../geode/internal/util/AbortableTaskService.java  |    4 +-
 .../geode/internal/util/ArgumentRedactor.java      |    8 +-
 .../org/apache/geode/internal/util/ArrayUtils.java |   21 +-
 .../apache/geode/internal/util/Breadcrumbs.java    |    8 +-
 .../geode/internal/util/CollectionUtils.java       |   32 +-
 .../apache/geode/internal/util/DelayedAction.java  |    4 +-
 .../java/org/apache/geode/internal/util/Hex.java   |    6 +-
 .../org/apache/geode/internal/util/IOUtils.java    |   33 +-
 .../geode/internal/util/JavaCommandBuilder.java    |    8 +-
 .../apache/geode/internal/util/LogFileUtils.java   |   16 +-
 .../geode/internal/util/ObjectIntProcedure.java    |    2 +-
 .../apache/geode/internal/util/PluckStacks.java    |    4 +-
 .../geode/internal/util/SingletonCallable.java     |    6 +-
 .../apache/geode/internal/util/SingletonValue.java |   16 +-
 .../geode/internal/util/StackTraceCollector.java   |   16 +-
 .../internal/util/SunAPINotFoundException.java     |    2 +-
 .../apache/geode/internal/util/TransformUtils.java |   12 +-
 .../apache/geode/internal/util/Transformer.java    |    2 +-
 .../apache/geode/internal/util/Versionable.java    |    4 +-
 .../geode/internal/util/VersionedArrayList.java    |   28 +-
 .../util/concurrent/CopyOnWriteHashMap.java        |    4 +-
 .../util/concurrent/CopyOnWriteWeakHashMap.java    |    2 +-
 .../concurrent/CustomEntryConcurrentHashMap.java   |  166 +-
 .../internal/util/concurrent/FutureResult.java     |    1 +
 .../util/concurrent/ReentrantSemaphore.java        |    6 +-
 .../util/concurrent/SemaphoreReadWriteLock.java    |    2 +-
 .../util/concurrent/StoppableCondition.java        |    2 +-
 .../util/concurrent/StoppableCountDownLatch.java   |    6 +-
 .../concurrent/StoppableCountDownOrUpLatch.java    |    3 +-
 .../util/concurrent/StoppableNonReentrantLock.java |    4 +-
 .../util/concurrent/StoppableReadWriteLock.java    |    3 +-
 .../util/concurrent/StoppableReentrantLock.java    |    6 +-
 .../StoppableReentrantReadWriteLock.java           |   14 +-
 .../geode/lang/AttachAPINotFoundException.java     |    8 +-
 .../java/org/apache/geode/lang/Identifiable.java   |    4 +-
 .../geode/management/AlreadyRunningException.java  |    4 +-
 .../geode/management/AsyncEventQueueMXBean.java    |   16 +-
 .../org/apache/geode/management/BackupStatus.java  |   42 +
 .../apache/geode/management/CacheServerMXBean.java |   36 +-
 .../geode/management/ClientHealthStatus.java       |    2 +-
 .../apache/geode/management/ClientQueueDetail.java |    2 +-
 .../management/DependenciesNotFoundException.java  |    6 +-
 .../apache/geode/management/DiskBackupResult.java  |    4 +-
 .../apache/geode/management/DiskBackupStatus.java  |   39 +-
 .../org/apache/geode/management/DiskMetrics.java   |    2 +-
 .../apache/geode/management/DiskStoreMXBean.java   |   22 +-
 .../management/DistributedLockServiceMXBean.java   |    4 +-
 .../geode/management/DistributedRegionMXBean.java  |   16 +-
 .../geode/management/DistributedSystemMXBean.java  |   40 +-
 .../geode/management/EvictionAttributesData.java   |    6 +-
 .../management/FixedPartitionAttributesData.java   |    6 +-
 .../geode/management/GatewayReceiverMXBean.java    |    6 +-
 .../geode/management/GatewaySenderMXBean.java      |   18 +-
 .../apache/geode/management/GemFireProperties.java |   16 +-
 .../geode/management/JMXNotificationType.java      |    4 +-
 .../geode/management/JMXNotificationUserData.java  |    2 +-
 .../org/apache/geode/management/JVMMetrics.java    |    2 +-
 .../org/apache/geode/management/LocatorMXBean.java |    6 +-
 .../apache/geode/management/LockServiceMXBean.java |    4 +-
 .../geode/management/ManagementException.java      |   12 +-
 .../apache/geode/management/ManagementService.java |   74 +-
 .../org/apache/geode/management/ManagerMXBean.java |   14 +-
 .../org/apache/geode/management/MemberMXBean.java  |   54 +-
 .../geode/management/MembershipAttributesData.java |    4 +-
 .../apache/geode/management/NetworkMetrics.java    |    2 +-
 .../org/apache/geode/management/OSMetrics.java     |    4 +-
 .../geode/management/PartitionAttributesData.java  |    2 +-
 .../geode/management/PersistentMemberDetails.java  |    2 +-
 .../geode/management/RegionAttributesData.java     |   23 +-
 .../org/apache/geode/management/RegionMXBean.java  |   18 +-
 .../apache/geode/management/ServerLoadData.java    |    2 +-
 .../apache/geode/management/cli/CliMetaData.java   |    2 +-
 .../management/cli/CommandProcessingException.java |    4 +-
 .../management/cli/CommandServiceException.java    |   10 +-
 .../geode/management/cli/CommandStatement.java     |    6 +-
 .../org/apache/geode/management/cli/Result.java    |   23 +-
 .../geode/management/internal/AgentUtil.java       |   11 +-
 .../geode/management/internal/AlertDetails.java    |    2 +-
 .../geode/management/internal/ArrayConverter.java  |    4 +-
 .../management/internal/BackupStatusImpl.java      |   59 +
 .../management/internal/BaseManagementService.java |    2 +-
 .../management/internal/CollectionConverter.java   |    4 +-
 .../management/internal/CompositeConverter.java    |    4 +-
 .../management/internal/DiskBackupStatusImpl.java  |   92 +
 .../geode/management/internal/EnumConverter.java   |    4 +-
 .../management/internal/FederatingManager.java     |   24 +-
 .../management/internal/FederationComponent.java   |   20 +-
 .../geode/management/internal/JettyHelper.java     |   11 +-
 .../management/internal/JmxManagerAdvisor.java     |    4 +-
 .../internal/JmxManagerLocatorRequest.java         |    4 +-
 .../internal/JmxManagerLocatorResponse.java        |    2 +-
 .../geode/management/internal/LocalManager.java    |    6 +-
 .../geode/management/internal/MBeanJMXAdapter.java |   34 +-
 .../management/internal/MBeanProxyFactory.java     |   14 +-
 .../internal/MBeanProxyInfoRepository.java         |   14 +-
 .../internal/MBeanProxyInvocationHandler.java      |   27 +-
 .../internal/MXBeanProxyInvocationHandler.java     |   12 +-
 .../internal/ManagementCacheListener.java          |    6 +-
 .../management/internal/ManagementConstants.java   |    7 +-
 .../management/internal/ManagementFunction.java    |   10 +-
 .../internal/ManagementMembershipListener.java     |    4 +-
 .../internal/ManagementResourceRepo.java           |   36 +-
 .../geode/management/internal/MemberMessenger.java |   12 +-
 .../internal/MonitoringRegionCacheListener.java    |    4 +-
 .../internal/NotificationBroadCasterProxy.java     |    6 +-
 .../geode/management/internal/NotificationHub.java |   14 +-
 .../management/internal/NotificationHubClient.java |    8 +-
 .../geode/management/internal/NotificationKey.java |    4 +-
 .../geode/management/internal/OpenMethod.java      |    6 +-
 .../management/internal/OpenTypeConverter.java     |   28 +-
 .../geode/management/internal/OpenTypeUtil.java    |    6 +-
 .../geode/management/internal/ProxyInfo.java       |    6 +-
 .../geode/management/internal/ProxyInterface.java  |    4 +-
 .../geode/management/internal/ProxyListener.java   |   40 +-
 .../geode/management/internal/RestAgent.java       |   11 +-
 .../apache/geode/management/internal/SSLUtil.java  |    7 +-
 .../management/internal/StringBasedFilter.java     |    6 +-
 .../internal/SystemManagementService.java          |    4 +-
 .../geode/management/internal/TableConverter.java  |    4 +-
 .../internal/beans/AggregateHandler.java           |   12 +-
 .../internal/beans/AsyncEventQueueMBean.java       |    4 +-
 .../internal/beans/AsyncEventQueueMBeanBridge.java |    4 +-
 .../management/internal/beans/BeanUtilFuncs.java   |    4 +-
 .../internal/beans/CacheServerBridge.java          |    8 +-
 .../internal/beans/CacheServerMBean.java           |    4 +-
 .../internal/beans/DiskRegionBridge.java           |    4 +-
 .../management/internal/beans/DiskStoreMBean.java  |    4 +-
 .../internal/beans/DiskStoreMBeanBridge.java       |    4 +-
 .../beans/DistributedLockServiceBridge.java        |   26 +-
 .../beans/DistributedLockServiceMBean.java         |    4 +-
 .../internal/beans/DistributedRegionBridge.java    |   82 +-
 .../internal/beans/DistributedRegionMBean.java     |    4 +-
 .../internal/beans/DistributedSystemBridge.java    |  105 +-
 .../internal/beans/GatewayReceiverMBean.java       |    4 +-
 .../internal/beans/GatewayReceiverMBeanBridge.java |    2 +-
 .../internal/beans/GatewaySenderMBean.java         |    3 +-
 .../internal/beans/GatewaySenderMBeanBridge.java   |    4 +-
 .../management/internal/beans/LocatorMBean.java    |    4 +-
 .../internal/beans/LocatorMBeanBridge.java         |    4 +-
 .../internal/beans/LockServiceMBean.java           |    4 +-
 .../internal/beans/LockServiceMBeanBridge.java     |    8 +-
 .../management/internal/beans/MBeanAggregator.java |   32 +-
 .../internal/beans/ManagementAdapter.java          |   34 +-
 .../internal/beans/ManagementListener.java         |    8 +-
 .../management/internal/beans/ManagerMBean.java    |    2 +-
 .../management/internal/beans/MemberMBean.java     |    4 +-
 .../internal/beans/MemberMBeanBridge.java          |   19 +-
 .../internal/beans/MetricsCalculator.java          |    4 +-
 .../internal/beans/PartitionedRegionBridge.java    |    4 +-
 .../internal/beans/QueryDataFunction.java          |   36 +-
 .../management/internal/beans/RegionMBean.java     |    6 +-
 .../internal/beans/RegionMBeanBridge.java          |   24 +-
 .../beans/RegionMBeanCompositeDataFactory.java     |    2 +-
 .../management/internal/beans/SequenceNumber.java  |    4 +-
 .../beans/stats/AggregateRegionStatsMonitor.java   |    6 +-
 .../internal/beans/stats/GCStatsMonitor.java       |    2 +-
 .../beans/stats/MemberLevelDiskMonitor.java        |    6 +-
 .../management/internal/beans/stats/StatType.java  |    2 +-
 .../internal/beans/stats/StatsAverageLatency.java  |    2 +-
 .../management/internal/beans/stats/StatsKey.java  |    2 +-
 .../internal/beans/stats/StatsLatency.java         |    2 +-
 .../management/internal/beans/stats/StatsRate.java |    2 +-
 .../internal/beans/stats/VMStatsMonitor.java       |    8 +-
 .../internal/cli/AbstractCliAroundInterceptor.java |    4 +-
 .../internal/cli/CliAroundInterceptor.java         |   10 +-
 .../geode/management/internal/cli/CliUtil.java     |  217 +-
 .../management/internal/cli/CommandManager.java    |  309 +--
 .../management/internal/cli/CommandRequest.java    |    7 +-
 .../management/internal/cli/CommandResponse.java   |   26 +-
 .../internal/cli/CommandResponseBuilder.java       |    2 +-
 .../internal/cli/CommandResponseWriter.java        |    4 +-
 .../management/internal/cli/GfshParseResult.java   |   52 +-
 .../geode/management/internal/cli/GfshParser.java  |   10 +-
 .../internal/cli/commands/AlterRegionCommand.java  |  192 +-
 .../cli/commands/AlterRuntimeConfigCommand.java    |    3 +-
 .../cli/commands/BackupDiskStoreCommand.java       |    9 +-
 .../cli/commands/ChangeLogLevelCommand.java        |    4 +-
 .../cli/commands/CommandAvailabilityIndicator.java |    5 +-
 .../internal/cli/commands/ConnectCommand.java      |    5 +-
 .../cli/commands/CreateDefinedIndexesCommand.java  |   27 +-
 .../internal/cli/commands/CreateRegionCommand.java |  746 ++++---
 .../internal/cli/commands/DataCommandUtil.java     |   44 -
 .../internal/cli/commands/DataCommandsUtils.java   |  229 --
 .../cli/commands/DescribeClientCommand.java        |  168 +-
 .../cli/commands/DescribeConfigCommand.java        |   80 +-
 .../cli/commands/DescribeDiskStoreCommand.java     |   44 +-
 .../cli/commands/DescribeMemberCommand.java        |  113 +-
 .../cli/commands/DestroyFunctionCommand.java       |   25 +-
 .../cli/commands/DestroyGatewaySenderCommand.java  |   57 +-
 .../internal/cli/commands/DestroyIndexCommand.java |   84 +-
 .../cli/commands/DestroyRegionCommand.java         |   55 +-
 .../cli/commands/ExecuteFunctionCommand.java       |   13 +-
 .../internal/cli/commands/ExportConfigCommand.java |    4 +-
 .../internal/cli/commands/ExportDataCommand.java   |   11 +-
 .../ExportImportClusterConfigurationCommands.java  |   12 +-
 .../internal/cli/commands/ExportLogsCommand.java   |   26 +-
 .../cli/commands/ExportLogsInterceptor.java        |   34 +-
 .../internal/cli/commands/GCCommand.java           |   62 +-
 .../cli/commands/GatewayCommandsUtils.java         |   17 -
 .../internal/cli/commands/GetCommand.java          |    3 +-
 .../internal/cli/commands/GfshCommand.java         |  139 +-
 .../internal/cli/commands/HistoryCommand.java      |   12 +-
 .../internal/cli/commands/ImportDataCommand.java   |   11 +-
 .../internal/cli/commands/ListClientCommand.java   |  115 +-
 .../cli/commands/ListDiskStoresCommand.java        |   23 +-
 .../internal/cli/commands/ListGatewayCommand.java  |  101 +-
 .../internal/cli/commands/ListIndexCommand.java    |   20 +-
 .../commands/LoadBalanceGatewaySenderCommand.java  |   71 +-
 .../internal/cli/commands/LocateEntryCommand.java  |    5 +-
 .../internal/cli/commands/NetstatCommand.java      |   27 +-
 .../cli/commands/PauseGatewaySenderCommand.java    |   74 +-
 .../internal/cli/commands/PutCommand.java          |    5 +-
 .../internal/cli/commands/QueryCommand.java        |    3 +-
 .../internal/cli/commands/RebalanceCommand.java    |  157 +-
 .../internal/cli/commands/RemoveCommand.java       |    3 +-
 .../cli/commands/ResumeGatewaySenderCommand.java   |   70 +-
 .../internal/cli/commands/ShowLogCommand.java      |   59 +-
 .../internal/cli/commands/ShowMetricsCommand.java  | 1461 +++++--------
 .../cli/commands/ShowMetricsInterceptor.java       |  107 +
 .../internal/cli/commands/ShutdownCommand.java     |    4 +-
 .../cli/commands/StartGatewayReceiverCommand.java  |   73 +-
 .../cli/commands/StartGatewaySenderCommand.java    |  145 +-
 .../internal/cli/commands/StartLocatorCommand.java |  344 ++-
 .../internal/cli/commands/StartMemberUtils.java    |    2 +-
 .../internal/cli/commands/StartServerCommand.java  |  388 ++--
 .../cli/commands/StatusGatewayReceiverCommand.java |   55 +-
 .../cli/commands/StatusGatewaySenderCommand.java   |   61 +-
 .../cli/commands/StopGatewayReceiverCommand.java   |   71 +-
 .../cli/commands/StopGatewaySenderCommand.java     |   65 +-
 .../commands/lifecycle/StartJConsoleCommand.java   |   21 +-
 .../commands/lifecycle/StartJVisualVMCommand.java  |   15 +-
 .../cli/commands/lifecycle/StartPulseCommand.java  |    2 +-
 .../cli/commands/lifecycle/StartVsdCommand.java    |   25 +-
 .../commands/lifecycle/StatusLocatorCommand.java   |   63 +-
 .../commands/lifecycle/StatusServerCommand.java    |   68 +-
 .../cli/commands/lifecycle/StopLocatorCommand.java |  116 +-
 .../cli/commands/lifecycle/StopServerCommand.java  |  110 +-
 .../converters/ClusterMemberIdNameConverter.java   |    6 +-
 .../converters/ConnectionEndpointConverter.java    |    2 +-
 .../cli/converters/DiskStoreNameConverter.java     |   17 +-
 .../internal/cli/converters/FilePathConverter.java |    9 +-
 .../cli/converters/FilePathStringConverter.java    |   13 +-
 .../converters/GatewayReceiverIdsConverter.java    |    8 +-
 .../cli/converters/GatewaySenderIdConverter.java   |   17 +-
 .../internal/cli/converters/HelpConverter.java     |    2 +-
 .../cli/converters/HintTopicConverter.java         |   15 +-
 .../LocatorDiscoveryConfigConverter.java           |    6 +-
 .../cli/converters/LocatorIdNameConverter.java     |    6 +-
 .../internal/cli/converters/LogLevelConverter.java |   11 +-
 .../cli/converters/MemberGroupConverter.java       |    2 +-
 .../cli/converters/MemberIdNameConverter.java      |    6 +-
 .../cli/converters/RegionPathConverter.java        |    2 +-
 .../cli/domain/AsyncEventQueueDetails.java         |    2 +-
 .../cli/domain/ConnectToLocatorResult.java         |    6 +-
 .../internal/cli/domain/DataCommandRequest.java    |   36 +-
 .../internal/cli/domain/DataCommandResult.java     |    4 -
 .../internal/cli/domain/DiskStoreDetails.java      |   13 +-
 .../cli/domain/EvictionAttributesInfo.java         |    2 +-
 .../cli/domain/FixedPartitionAttributesInfo.java   |    4 +-
 .../internal/cli/domain/IndexDetails.java          |    2 +-
 .../management/internal/cli/domain/IndexInfo.java  |   11 +-
 .../internal/cli/domain/MemberInformation.java     |    2 +-
 .../cli/domain/PartitionAttributesInfo.java        |    2 +-
 .../internal/cli/domain/RegionAttributesInfo.java  |    2 +-
 .../internal/cli/domain/RegionDescription.java     |   14 +-
 .../cli/domain/RegionDescriptionPerMember.java     |    2 +-
 .../internal/cli/domain/RegionInformation.java     |    6 +-
 .../internal/cli/exceptions/CliException.java      |   35 -
 .../cli/exceptions/CreateSubregionException.java   |   38 -
 .../cli/exceptions/EntityNotFoundException.java    |   46 +
 .../cli/exceptions/IndexNotFoundException.java     |   33 -
 .../cli/exceptions/UserErrorException.java         |   37 +
 .../cli/functions/AlterRuntimeConfigFunction.java  |   11 +-
 .../cli/functions/ChangeLogLevelFunction.java      |   19 +-
 .../internal/cli/functions/CliFunctionResult.java  |   26 +-
 .../cli/functions/ContinuousQueryFunction.java     |    1 +
 .../functions/CreateDefinedIndexesFunction.java    |   83 +-
 .../cli/functions/CreateDiskStoreFunction.java     |    2 +-
 .../cli/functions/DataCommandFunction.java         |    6 +-
 .../cli/functions/DescribeDiskStoreFunction.java   |   17 +-
 .../cli/functions/DestroyDiskStoreFunction.java    |    2 +-
 .../cli/functions/DestroyIndexFunction.java        |   50 +-
 .../internal/cli/functions/ExportDataFunction.java |    4 +-
 .../functions/FetchRegionAttributesFunction.java   |   68 +-
 .../FetchSharedConfigurationStatusFunction.java    |    1 +
 .../cli/functions/GarbageCollectionFunction.java   |   11 +-
 .../functions/GatewayReceiverCreateFunction.java   |    2 +-
 .../cli/functions/GatewaySenderCreateFunction.java |    2 +-
 .../functions/GatewaySenderDestroyFunction.java    |   57 +-
 .../GatewaySenderDestroyFunctionArgs.java          |    9 +-
 .../GetMemberConfigInformationFunction.java        |   22 +-
 .../functions/GetMemberInformationFunction.java    |   18 +-
 .../functions/GetRegionDescriptionFunction.java    |    2 -
 .../functions/ListAsyncEventQueuesFunction.java    |    2 +-
 .../cli/functions/ListDeployedFunction.java        |    4 +-
 .../cli/functions/ListDiskStoresFunction.java      |    2 +-
 .../cli/functions/ListDurableCqNamesFunction.java  |    2 +-
 .../internal/cli/functions/ListIndexFunction.java  |    2 +-
 .../cli/functions/MembersForRegionFunction.java    |    2 +-
 .../internal/cli/functions/NetstatFunction.java    |    2 +-
 .../cli/functions/RegionAlterFunction.java         |    6 +-
 .../cli/functions/RegionCreateFunction.java        |  133 +-
 .../cli/functions/RegionDestroyFunction.java       |   49 +-
 .../internal/cli/functions/RegionFunctionArgs.java |  659 +++---
 .../functions/ShowMissingDiskStoresFunction.java   |   29 +-
 .../internal/cli/functions/ShutDownFunction.java   |   21 +-
 .../cli/functions/SizeExportLogsFunction.java      |    6 +-
 .../internal/cli/functions/UndeployFunction.java   |    4 +-
 .../internal/cli/functions/UnregisterFunction.java |    8 +-
 .../cli/functions/UserFunctionExecution.java       |    1 -
 .../management/internal/cli/help/HelpBlock.java    |    7 +-
 .../geode/management/internal/cli/help/Helper.java |   84 +-
 .../geode/management/internal/cli/help/Topic.java  |    2 -
 .../management/internal/cli/i18n/CliStrings.java   |   37 +-
 .../management/internal/cli/json/GfJsonArray.java  |   21 +-
 .../internal/cli/json/GfJsonException.java         |    6 +-
 .../management/internal/cli/json/GfJsonObject.java |   22 +-
 .../management/internal/cli/json/TypedJson.java    |   10 +-
 .../internal/cli/modes/CommandModes.java           |    7 +-
 .../cli/remote/CommandExecutionContext.java        |    2 +-
 .../internal/cli/remote/CommandExecutor.java       |   43 +-
 .../internal/cli/remote/CommandStatementImpl.java  |    4 +-
 .../internal/cli/remote/MemberCommandService.java  |    3 +-
 .../cli/remote/OnlineCommandProcessor.java         |   16 +-
 .../internal/cli/remote/WrapperThreadLocal.java    |    6 +-
 .../internal/cli/result/AbstractResultData.java    |    6 +-
 .../internal/cli/result/CliJsonSerializable.java   |    4 +-
 .../cli/result/CliJsonSerializableIds.java         |    6 +-
 .../internal/cli/result/CommandResult.java         |    2 +-
 .../cli/result/CommandResultException.java         |    2 +-
 .../internal/cli/result/CompositeResultData.java   |   10 +-
 .../internal/cli/result/ErrorResultData.java       |   12 +-
 .../management/internal/cli/result/FileResult.java |    8 +-
 .../internal/cli/result/ObjectResultData.java      |    4 +-
 .../internal/cli/result/ResultBuilder.java         |   26 +-
 .../management/internal/cli/result/ResultData.java |    4 +-
 .../internal/cli/result/ResultDataException.java   |    2 +-
 .../internal/cli/result/TableBuilder.java          |   28 +-
 .../internal/cli/result/TabularResultData.java     |    6 +-
 .../management/internal/cli/shell/GfshConfig.java  |    7 +-
 .../internal/cli/shell/GfshExecutionStrategy.java  |    6 +-
 .../internal/cli/shell/JMXConnectionException.java |    2 +-
 .../internal/cli/shell/JMXInvocationException.java |    2 +-
 .../internal/cli/shell/JmxOperationInvoker.java    |    8 +-
 .../internal/cli/shell/MXBeanProvider.java         |    9 +-
 .../internal/cli/shell/MultiCommandHelper.java     |    4 +-
 .../internal/cli/shell/OperationInvoker.java       |   19 +-
 .../internal/cli/shell/jline/ANSIBuffer.java       |    8 +-
 .../internal/cli/shell/jline/ANSIHandler.java      |    2 +-
 .../cli/shell/jline/CygwinMinttyTerminal.java      |    4 +-
 .../internal/cli/shell/jline/GfshHistory.java      |    6 +-
 .../cli/shell/jline/GfshUnsupportedTerminal.java   |    2 +-
 .../cli/shell/unsafe/GfshSignalHandler.java        |    2 +-
 .../internal/cli/util/CLIConsoleBufferUtil.java    |    1 +
 .../management/internal/cli/util/CauseFinder.java  |   21 +-
 .../internal/cli/util/ClasspathScanLoadHelper.java |   29 +-
 .../internal/cli/util/CommandStringBuilder.java    |    2 +-
 .../internal/cli/util/CommentSkipHelper.java       |    2 +-
 .../internal/cli/util/ConnectionEndpoint.java      |    4 +-
 .../internal/cli/util/DiskStoreCompacter.java      |    4 +-
 .../cli/util/DiskStoreNotFoundException.java       |   47 -
 .../internal/cli/util/DiskStoreValidater.java      |    1 +
 .../internal/cli/util/EvictionAttributesInfo.java  |    2 +-
 .../internal/cli/util/ExportLogsCacheWriter.java   |   11 +-
 .../cli/util/FixedPartitionAttributesInfo.java     |    2 -
 .../internal/cli/util/GfshConsoleReader.java       |    6 +-
 .../management/internal/cli/util/HostUtils.java    |    4 +-
 .../cli/util/JConsoleNotFoundException.java        |    2 +-
 .../management/internal/cli/util/JdkTool.java      |    8 +-
 .../management/internal/cli/util/JsonUtil.java     |   27 +-
 .../management/internal/cli/util/LogExporter.java  |   11 +-
 .../management/internal/cli/util/LogFilter.java    |    9 +-
 .../internal/cli/util/LogLevelExtractor.java       |    8 +-
 .../internal/cli/util/MemberInformation.java       |    2 +-
 .../internal/cli/util/MemberNotFoundException.java |   47 -
 .../management/internal/cli/util/MergeLogs.java    |    4 +-
 .../internal/cli/util/ReadWriteFile.java           |    4 +-
 .../management/internal/cli/util/RegionPath.java   |    2 +-
 .../cli/util/VisualVmNotFoundException.java        |    2 +-
 .../callbacks/ConfigurationChangeListener.java     |   12 +-
 .../configuration/domain/CacheElement.java         |   12 +-
 .../configuration/domain/Configuration.java        |   11 +-
 .../internal/configuration/domain/XmlEntity.java   |   62 +-
 .../functions/GetRegionNamesFunction.java          |    4 +-
 .../configuration/functions/UploadJarFunction.java |    3 +-
 .../handlers/ConfigurationRequestHandler.java      |    2 +-
 .../messages/ConfigurationResponse.java            |   22 +-
 .../messages/SharedConfigurationStatusRequest.java |    2 +-
 .../SharedConfigurationStatusResponse.java         |    2 +-
 .../internal/configuration/utils/XmlConstants.java |    6 +-
 .../internal/configuration/utils/XmlUtils.java     |   34 +-
 .../internal/configuration/utils/ZipUtils.java     |    2 -
 .../internal/messages/CompactRequest.java          |   12 +-
 .../internal/messages/CompactResponse.java         |    4 +-
 .../internal/security/AccessControlMBean.java      |    2 +-
 .../internal/security/AccessControlMXBean.java     |    2 +-
 .../internal/security/MBeanServerWrapper.java      |    2 +-
 .../internal/security/ResourceOperation.java       |    9 +-
 .../unsafe/ReadOpFileAccessController.java         |    2 +-
 .../controllers/AbstractCommandsController.java    |   12 +-
 .../support/LoginHandlerInterceptor.java           |    2 +-
 .../internal/web/domain/QueryParameterSource.java  |    3 +-
 .../SerializableObjectHttpMessageConverter.java    |    8 +-
 .../internal/web/http/support/HttpRequester.java   |    6 +-
 .../internal/web/io/MultipartFileAdapter.java      |    2 +-
 .../web/io/MultipartFileResourceAdapter.java       |    2 +-
 .../internal/web/shell/HttpOperationInvoker.java   |    2 +-
 .../internal/web/shell/MBeanAccessException.java   |    2 +-
 .../web/shell/support/HttpInvocationHandler.java   |    3 +-
 .../web/shell/support/HttpMBeanProxyFactory.java   |    3 +-
 .../management/internal/web/util/ConvertUtils.java |    8 +-
 .../management/internal/web/util/UriUtils.java     |   26 +-
 .../management/membership/ClientMembership.java    |    6 +-
 .../management/membership/MembershipEvent.java     |    2 +-
 .../UniversalMembershipListenerAdapter.java        |   19 +-
 .../geode/memcached/GemFireMemcachedServer.java    |   12 +-
 .../main/java/org/apache/geode/pdx/FieldType.java  |    2 +-
 .../java/org/apache/geode/pdx/JSONFormatter.java   |   17 +-
 .../apache/geode/pdx/JSONFormatterException.java   |    4 +-
 .../geode/pdx/NonPortableClassException.java       |    2 +-
 .../geode/pdx/PdxConfigurationException.java       |    6 +-
 .../geode/pdx/PdxFieldAlreadyExistsException.java  |    6 +-
 .../geode/pdx/PdxFieldDoesNotExistException.java   |    6 +-
 .../geode/pdx/PdxFieldTypeMismatchException.java   |    6 +-
 .../geode/pdx/PdxInitializationException.java      |    8 +-
 .../java/org/apache/geode/pdx/PdxInstance.java     |   22 +-
 .../org/apache/geode/pdx/PdxInstanceFactory.java   |   64 +-
 .../main/java/org/apache/geode/pdx/PdxReader.java  |   52 +-
 .../geode/pdx/PdxRegistryMismatchException.java    |    2 +-
 .../java/org/apache/geode/pdx/PdxSerializable.java |   16 +-
 .../geode/pdx/PdxSerializationException.java       |    8 +-
 .../java/org/apache/geode/pdx/PdxSerializer.java   |   22 +-
 .../java/org/apache/geode/pdx/PdxUnreadFields.java |    4 +-
 .../main/java/org/apache/geode/pdx/PdxWriter.java  |   64 +-
 .../geode/pdx/ReflectionBasedAutoSerializer.java   |  128 +-
 .../org/apache/geode/pdx/WritablePdxInstance.java  |    4 +-
 .../pdx/internal/AutoSerializableManager.java      |   65 +-
 .../org/apache/geode/pdx/internal/DataSize.java    |    2 +-
 .../org/apache/geode/pdx/internal/EnumInfo.java    |    2 +-
 .../geode/pdx/internal/InternalPdxReader.java      |    2 +-
 .../geode/pdx/internal/LonerTypeRegistration.java  |    2 +-
 .../org/apache/geode/pdx/internal/PdxField.java    |    2 +-
 .../apache/geode/pdx/internal/PdxInputStream.java  |   14 +-
 .../apache/geode/pdx/internal/PdxInstanceEnum.java |    4 +-
 .../apache/geode/pdx/internal/PdxOutputStream.java |    8 +-
 .../apache/geode/pdx/internal/PdxReaderImpl.java   |    4 +-
 .../org/apache/geode/pdx/internal/PdxString.java   |    3 +-
 .../org/apache/geode/pdx/internal/PdxType.java     |   10 +-
 .../apache/geode/pdx/internal/PdxUnreadData.java   |    2 +-
 .../apache/geode/pdx/internal/PdxWriterImpl.java   |    6 +-
 .../geode/pdx/internal/PeerTypeRegistration.java   |    9 +-
 .../geode/pdx/internal/TrackingPdxReaderImpl.java  |    4 +-
 .../geode/pdx/internal/TypeRegistration.java       |    6 +-
 .../apache/geode/pdx/internal/TypeRegistry.java    |   12 +-
 .../apache/geode/pdx/internal/UnreadPdxType.java   |    2 +-
 .../internal/WeakConcurrentIdentityHashMap.java    |    5 +-
 .../apache/geode/pdx/internal/json/PdxToJSON.java  |    1 +
 .../geode/pdx/internal/unsafe/UnsafeWrapper.java   |    2 +-
 .../org/apache/geode/redis/GeodeRedisServer.java   |   28 +-
 .../geode/redis/internal/ByteArrayWrapper.java     |    8 +-
 .../geode/redis/internal/ByteToCommandDecoder.java |   16 +-
 .../org/apache/geode/redis/internal/Coder.java     |   12 +-
 .../org/apache/geode/redis/internal/Command.java   |   18 +-
 .../apache/geode/redis/internal/DoubleWrapper.java |    2 +-
 .../redis/internal/ExecutionHandlerContext.java    |   40 +-
 .../org/apache/geode/redis/internal/Executor.java  |    4 +-
 .../apache/geode/redis/internal/Extendable.java    |    4 +-
 .../internal/RedisCommandParserException.java      |    2 +-
 .../geode/redis/internal/RedisCommandType.java     |    4 +-
 .../internal/RedisDataTypeMismatchException.java   |    2 +-
 .../redis/internal/RegionCreationException.java    |    2 +-
 .../geode/redis/internal/RegionProvider.java       |   25 +-
 .../redis/internal/executor/AbstractExecutor.java  |   10 +-
 .../redis/internal/executor/KeysExecutor.java      |    2 +-
 .../redis/internal/executor/ScanExecutor.java      |    2 +-
 .../redis/internal/executor/hash/HDelExecutor.java |    4 +-
 .../internal/executor/hash/HExistsExecutor.java    |    4 +-
 .../redis/internal/executor/hash/HGetExecutor.java |    4 +-
 .../internal/executor/hash/HIncrByExecutor.java    |    2 +-
 .../executor/hash/HIncrByFloatExecutor.java        |    4 +-
 .../redis/internal/executor/hash/HLenExecutor.java |    4 +-
 .../internal/executor/hash/HMGetExecutor.java      |    2 +-
 .../internal/executor/hash/HMSetExecutor.java      |    4 +-
 .../redis/internal/executor/hll/PFAddExecutor.java |    2 +-
 .../internal/executor/hll/PFMergeExecutor.java     |    2 +-
 .../internal/executor/list/LInsertExecutor.java    |    2 +-
 .../redis/internal/executor/list/LLenExecutor.java |    4 +-
 .../redis/internal/executor/list/LRemExecutor.java |    2 +-
 .../redis/internal/executor/list/LSetExecutor.java |    2 +-
 .../internal/executor/list/LTrimExecutor.java      |    2 +-
 .../redis/internal/executor/list/ListExecutor.java |   22 +-
 .../redis/internal/executor/list/PopExecutor.java  |   23 +-
 .../redis/internal/executor/list/PushExecutor.java |    2 +-
 .../redis/internal/executor/set/SCardExecutor.java |    2 +-
 .../internal/executor/set/SIsMemberExecutor.java   |    2 +-
 .../redis/internal/executor/set/SPopExecutor.java  |    2 +-
 .../internal/executor/set/SRandMemberExecutor.java |    4 +-
 .../redis/internal/executor/set/SRemExecutor.java  |    4 +-
 .../internal/executor/sortedset/ZAddExecutor.java  |    2 +-
 .../executor/sortedset/ZCountExecutor.java         |    2 +-
 .../executor/sortedset/ZIncrByExecutor.java        |    2 +-
 .../executor/sortedset/ZLexCountExecutor.java      |    2 +-
 .../executor/sortedset/ZRangeByLexExecutor.java    |    4 +-
 .../internal/executor/sortedset/ZRemExecutor.java  |    2 +-
 .../internal/executor/string/AppendExecutor.java   |    2 +-
 .../internal/executor/string/BitCountExecutor.java |    2 +-
 .../internal/executor/string/BitPosExecutor.java   |    2 +-
 .../internal/executor/string/DecrByExecutor.java   |    2 +-
 .../internal/executor/string/GetExecutor.java      |    4 +-
 .../internal/executor/string/GetRangeExecutor.java |    4 +-
 .../internal/executor/string/GetSetExecutor.java   |    2 +-
 .../internal/executor/string/IncrByExecutor.java   |    2 +-
 .../internal/executor/string/IncrExecutor.java     |    2 +-
 .../internal/executor/string/MSetExecutor.java     |    2 +-
 .../internal/executor/string/MSetNXExecutor.java   |    2 +-
 .../internal/executor/string/SetBitExecutor.java   |    2 +-
 .../internal/executor/string/SetExecutor.java      |    2 +-
 .../internal/executor/string/SetNXExecutor.java    |    2 +-
 .../internal/executor/string/SetRangeExecutor.java |    2 +-
 .../internal/executor/string/StrlenExecutor.java   |    4 +-
 .../executor/transactions/DiscardExecutor.java     |    2 +-
 .../executor/transactions/ExecExecutor.java        |    4 +-
 .../executor/transactions/MultiExecutor.java       |    2 +-
 .../executor/transactions/UnwatchExecutor.java     |    2 +-
 .../executor/transactions/WatchExecutor.java       |    2 +-
 .../internal/org/apache/hadoop/fs/GlobPattern.java |    8 +-
 .../org/apache/geode/security/AccessControl.java   |   18 +-
 .../org/apache/geode/security/AuthInitialize.java  |   14 +-
 .../security/AuthenticationFailedException.java    |    6 +-
 .../security/AuthenticationRequiredException.java  |    6 +-
 .../org/apache/geode/security/Authenticator.java   |   14 +-
 .../geode/security/GemFireSecurityException.java   |    3 +-
 .../geode/security/NotAuthorizedException.java     |    3 +-
 .../org/apache/geode/security/PostProcessor.java   |    2 +-
 .../apache/geode/security/ResourcePermission.java  |    3 +-
 .../org/apache/geode/security/SecurityManager.java |    4 +-
 .../java/batterytest/greplogs/ExpectedStrings.java |    4 +-
 .../src/test/java/com/examples/TestObject.java     |    1 -
 .../java/com/examples/ds/CompanySerializer.java    |    3 +-
 .../src/test/java/com/examples/ds/Employee.java    |    5 +-
 .../java/com/examples/ds/PutDataSerializables.java |    5 +-
 geode-core/src/test/java/com/examples/ds/User.java |    3 +-
 .../test/java/com/examples/snapshot/MyObject.java  |    2 +-
 .../java/com/main/MyDistributedSystemListener.java |    6 +-
 .../java/com/main/WANBootStrapping_Site1_Add.java  |   14 +-
 .../com/main/WANBootStrapping_Site1_Remove.java    |    6 +-
 .../java/com/main/WANBootStrapping_Site2_Add.java  |   16 +-
 .../com/main/WANBootStrapping_Site2_Remove.java    |    6 +-
 geode-core/src/test/java/hydra/MethExecutor.java   |    3 +-
 .../test/java/org/apache/geode/CopyJUnitTest.java  |   21 +-
 .../java/org/apache/geode/DataSerializerTest.java  |    5 +-
 .../test/java/org/apache/geode/DeltaTestImpl.java  |   10 +-
 .../apache/geode/DiskInstantiatorsJUnitTest.java   |   22 +-
 .../java/org/apache/geode/InstantiatorTest.java    |    5 +-
 .../apache/geode/JtaNoninvolvementJUnitTest.java   |   26 +-
 .../java/org/apache/geode/LonerDMJUnitTest.java    |   21 +-
 .../org/apache/geode/SetOperationTXJUnitTest.java  |   22 +-
 .../org/apache/geode/SystemFailureJUnitTest.java   |    2 +-
 .../java/org/apache/geode/TXExpiryJUnitTest.java   |   22 +-
 .../test/java/org/apache/geode/TXJUnitTest.java    |   24 +-
 .../org/apache/geode/TXWriterOOMEJUnitTest.java    |    2 +-
 .../java/org/apache/geode/TestDataSerializer.java  |   11 +-
 .../test/java/org/apache/geode/UnitTestDoclet.java |    1 -
 .../org/apache/geode/admin/AdminTestHelper.java    |    1 +
 .../geode/admin/RegionSubRegionSnapshotTest.java   |    5 +-
 .../internal/BindDistributedSystemJUnitTest.java   |   22 +-
 .../internal/CacheHealthEvaluatorJUnitTest.java    |   10 +-
 .../admin/internal/DistributedSystemTestCase.java  |    9 +-
 .../admin/internal/HealthEvaluatorTestCase.java    |   11 +-
 .../internal/MemberHealthEvaluatorJUnitTest.java   |    2 +-
 .../DeprecatedAgentLauncherIntegrationTest.java    |    2 +-
 .../geode/cache/AttributesFactoryJUnitTest.java    |    4 +-
 .../apache/geode/cache/CacheListenerJUnitTest.java |   27 +-
 .../geode/cache/ClientServerTimeSyncDUnitTest.java |   21 +-
 .../cache/ConnectionPoolAndLoaderDUnitTest.java    |    8 +-
 .../geode/cache/ConnectionPoolAutoDUnitTest.java   |    9 +-
 .../geode/cache/ConnectionPoolDUnitTest.java       |   66 +-
 .../cache/ConnectionPoolFactoryJUnitTest.java      |   21 +-
 .../geode/cache/DiskAccessExceptionTest.java       |    3 +-
 .../geode/cache/ExpirationAttributesTest.java      |   49 +
 ...FinalStaticArrayShouldNotCauseSegFaultTest.java |   10 +-
 .../MembershipAttributesAreSerializableTest.java   |    3 +-
 .../apache/geode/cache/PoolManagerJUnitTest.java   |   25 +-
 .../org/apache/geode/cache/ProxyJUnitTest.java     |   23 +-
 .../apache/geode/cache/RegionFactoryJUnitTest.java |   39 +-
 .../geode/cache/RegionNameValidationJUnitTest.java |   11 +-
 .../RemoveAllCacheListenerPeerRegressionTest.java  |    7 +-
 .../apache/geode/cache/RoleExceptionJUnitTest.java |    1 -
 ...ncEventQueueEvictionAndExpirationJUnitTest.java |   34 +-
 .../SerialAsyncEventQueueImplJUnitTest.java        |   15 +-
 .../cache/client/ClientCacheFactoryJUnitTest.java  |   35 +-
 .../cache/client/ClientRegionFactoryJUnitTest.java |   31 +-
 .../ClientServerRegisterInterestsDUnitTest.java    |   17 +-
 ...AllCacheListenerClientServerRegressionTest.java |    5 +-
 .../cache/client/internal/AbstractOpTest.java      |    5 +-
 .../internal/AutoConnectionSourceDUnitTest.java    |    2 +-
 .../AutoConnectionSourceImplJUnitTest.java         |   73 +-
 .../CacheServerSSLConnectionDUnitTest.java         |   13 +-
 .../internal/ConnectionPoolImplJUnitTest.java      |   25 +-
 .../internal/LocatorLoadBalancingDUnitTest.java    |   41 +-
 .../cache/client/internal/LocatorTestBase.java     |   23 +-
 .../client/internal/OpExecutorImplJUnitTest.java   |    4 +-
 .../client/internal/QueueManagerJUnitTest.java     |   37 +-
 .../client/internal/SSLNoClientAuthDUnitTest.java  |    2 +-
 .../client/internal/ServerBlackListJUnitTest.java  |    2 +-
 ...pClientExecutorSubmitTaskWithExceptionTest.java |    4 +-
 .../locator/LocatorStatusResponseJUnitTest.java    |    2 +-
 .../pooling/ConnectionManagerJUnitTest.java        |   47 +-
 .../cache/execute/FunctionAdapterJUnitTest.java    |    4 +-
 .../geode/cache/execute/FunctionExceptionTest.java |    9 +-
 .../management/MXMemoryPoolListenerExample.java    |   27 +-
 .../management/MemoryThresholdsDUnitTest.java      |   28 +-
 .../MemoryThresholdsOffHeapDUnitTest.java          |   11 +-
 .../cache/management/ResourceManagerDUnitTest.java |    2 +-
 .../mapInterface/ExceptionHandlingJUnitTest.java   |   17 +-
 .../cache/mapInterface/MapFunctionalJUnitTest.java |   17 +-
 .../mapInterface/PutAllGlobalLockJUnitTest.java    |    2 +-
 .../operations/PutOperationContextJUnitTest.java   |   21 +-
 .../internal/GetOperationContextImplJUnitTest.java |   21 +-
 .../partition/PartitionRegionHelperDUnitTest.java  |   15 +-
 .../BaseLineAndCompareQueryPerfJUnitTest.java      |   28 +-
 .../query/Bug32947ValueConstraintJUnitTest.java    |   21 +-
 .../org/apache/geode/cache/query/BugJUnitTest.java |    2 +-
 .../org/apache/geode/cache/query/CacheUtils.java   |    9 +-
 .../cache/query/LocalQueryServiceJUnitTest.java    |   13 +-
 .../geode/cache/query/PdxStringQueryJUnitTest.java |   23 +-
 .../org/apache/geode/cache/query/PerfQuery.java    |    4 +-
 .../apache/geode/cache/query/QueryJUnitTest.java   |    4 +-
 .../geode/cache/query/QueryServiceJUnitTest.java   |   48 +
 .../apache/geode/cache/query/QueryTestUtils.java   |   25 +-
 .../geode/cache/query/QueryTestUtilsJUnitTest.java |    4 +-
 .../QueryWithBucketParameterIntegrationTest.java   |   10 +-
 .../apache/geode/cache/query/RegionJUnitTest.java  |    7 +-
 .../cache/query/TypedJsonQueryIntegrationTest.java |    2 +-
 .../java/org/apache/geode/cache/query/Utils.java   |    4 +-
 .../cache/query/cq/dunit/CqQueryTestListener.java  |   19 +-
 .../org/apache/geode/cache/query/data/Country.java |    2 +-
 .../apache/geode/cache/query/data/District.java    |    2 +-
 .../apache/geode/cache/query/data/Employee.java    |    2 -
 .../apache/geode/cache/query/data/Inventory.java   |    2 +-
 .../apache/geode/cache/query/data/Portfolio.java   |    4 +-
 .../geode/cache/query/data/PortfolioData.java      |    2 +-
 .../geode/cache/query/data/PortfolioNoDS.java      |    2 +-
 .../geode/cache/query/data/PortfolioPdx.java       |    8 +-
 .../apache/geode/cache/query/data/Position.java    |    1 +
 .../cache/query/data/ProhibitedSecurityQuote.java  |    2 +-
 .../org/apache/geode/cache/query/data/Quote.java   |    2 +-
 .../geode/cache/query/data/SecurityMaster.java     |    2 +-
 .../org/apache/geode/cache/query/data/State.java   |    4 +-
 .../org/apache/geode/cache/query/data/Student.java |    4 +-
 .../query/dunit/CorruptedIndexIntegrationTest.java |   55 +
 .../cache/query/dunit/CqTimeTestListener.java      |   12 +-
 .../geode/cache/query/dunit/GroupByDUnitImpl.java  |    2 +-
 .../dunit/GroupByPartitionedQueryDUnitTest.java    |   12 +-
 .../cache/query/dunit/GroupByQueryDUnitTest.java   |   12 +-
 .../geode/cache/query/dunit/HelperTestCase.java    |    1 -
 .../query/dunit/NonDistinctOrderByDUnitImpl.java   |   11 +-
 .../NonDistinctOrderByPartitionedDUnitTest.java    |   12 +-
 .../PdxLocalQueryVersionedClassDUnitTest.java      |    7 +-
 .../geode/cache/query/dunit/PdxQueryDUnitTest.java |   12 +-
 .../cache/query/dunit/PdxStringQueryDUnitTest.java |    6 +-
 .../cache/query/dunit/PositionPdxVersion.java      |    1 +
 .../cache/query/dunit/QueryAuthorization.java      |    2 +-
 .../dunit/QueryDataInconsistencyDUnitTest.java     |   15 +-
 .../dunit/QueryParamsAuthorizationDUnitTest.java   |    4 +-
 .../dunit/QueryUsingFunctionContextDUnitTest.java  |   18 +-
 .../cache/query/dunit/QueryUsingPoolDUnitTest.java |    6 +-
 .../cache/query/dunit/RemoteQueryDUnitTest.java    |   66 +-
 .../ResourceManagerWithQueryMonitorDUnitTest.java  |    4 +-
 .../geode/cache/query/facets/lang/Address.java     |    2 -
 .../geode/cache/query/facets/lang/Course.java      |    2 -
 .../geode/cache/query/facets/lang/Department.java  |    2 -
 .../geode/cache/query/facets/lang/G_Student.java   |    2 -
 .../geode/cache/query/facets/lang/Person.java      |    1 -
 .../geode/cache/query/facets/lang/Student.java     |    2 -
 .../geode/cache/query/facets/lang/UG_Student.java  |    2 -
 .../geode/cache/query/facets/lang/Utils.java       |   11 +-
 .../functional/ComparisonOperatorsJUnitTest.java   |    1 -
 .../cache/query/functional/CountStarJUnitTest.java |    2 +-
 ...tinctResultsWithDupValuesInRegionJUnitTest.java |   17 +-
 .../cache/query/functional/FunctionJUnitTest.java  |    2 +-
 .../functional/GroupByPartitionedJUnitTest.java    |    2 +-
 .../functional/GroupByReplicatedJUnitTest.java     |    2 +-
 .../cache/query/functional/GroupByTestImpl.java    |    2 +-
 .../query/functional/INOperatorJUnitTest.java      |    4 +-
 .../geode/cache/query/functional/IUMJUnitTest.java |    2 +-
 .../IUMRMultiIndexesMultiRegionJUnitTest.java      |    4 +-
 .../functional/IUMRSingleRegionJUnitTest.java      |   21 +-
 .../query/functional/IndexCreationJUnitTest.java   |   29 +-
 .../IndexMaintenanceAsynchJUnitTest.java           |    4 +-
 .../query/functional/IndexOnEntrySetJUnitTest.java |   19 +-
 .../IndexWithSngleFrmAndMultCondQryJUnitTest.java  |    2 +-
 .../functional/IteratorTypeDefEmpJUnitTest.java    |    3 +-
 .../query/functional/IteratorTypeDefJUnitTest.java |    3 +-
 .../query/functional/LikePredicateJUnitTest.java   |   28 +-
 .../query/functional/LimitClauseJUnitTest.java     |   68 +-
 .../cache/query/functional/MiscJUnitTest.java      |    1 -
 .../functional/MultiRegionIndexUsageJUnitTest.java |   23 +-
 .../query/functional/MultipleRegionsJUnitTest.java |    1 -
 .../functional/NegativeNumberQueriesJUnitTest.java |   17 +-
 .../query/functional/NestedQueryJUnitTest.java     |    1 -
 .../NonDistinctOrderByPartitionedJUnitTest.java    |    2 +-
 .../NonDistinctOrderByReplicatedJUnitTest.java     |    2 +-
 .../NonDistinctOrderByTestImplementation.java      |    9 +-
 .../query/functional/NumericQueryJUnitTest.java    |    4 +-
 .../functional/OrderByPartitionedJUnitTest.java    |    2 +-
 .../functional/OrderByTestImplementation.java      |    4 +-
 .../QueryREUpdateInProgressJUnitTest.java          |    2 +-
 .../query/functional/QueryUndefinedJUnitTest.java  |   23 +-
 .../functional/ReservedKeywordsJUnitTest.java      |    1 -
 .../query/functional/SelectToDateJUnitTest.java    |   25 +-
 .../CompiledAggregateFunctionJUnitTest.java        |    2 +-
 .../internal/CompiledGroupBySelectJUnitTest.java   |    2 +-
 .../CompiledJunctionInternalsJUnitTest.java        |   26 +-
 .../query/internal/CopyOnReadQueryJUnitTest.java   |    8 +-
 .../query/internal/ExecutionContextJUnitTest.java  |    6 +-
 .../cache/query/internal/QCompilerJUnitTest.java   |   10 +-
 .../QueryFromClauseCanonicalizationJUnitTest.java  |    4 +-
 .../internal/QueryObserverCallbackJUnitTest.java   |    4 +-
 .../cache/query/internal/QueryTraceJUnitTest.java  |   10 +-
 .../cache/query/internal/QueryUtilsJUnitTest.java  |   10 +-
 .../ResultsCollectionWrapperLimitJUnitTest.java    |    2 +-
 .../internal/SelectResultsComparatorJUnitTest.java |    2 +-
 .../internal/StructBagLimitBehaviourJUnitTest.java |    2 +-
 .../internal/cq/CqAttributesImplJUnitTest.java     |    6 +-
 .../AbstractIndexMaintenanceIntegrationTest.java   |    2 +-
 .../AsyncIndexUpdaterThreadShutdownJUnitTest.java  |   17 +-
 .../index/AsynchIndexMaintenanceJUnitTest.java     |    2 +-
 .../index/CompactRangeIndexIndexMapJUnitTest.java  |   21 +-
 ...ncurrentIndexInitOnOverflowRegionDUnitTest.java |   17 +-
 ...ntIndexOperationsOnOverflowRegionDUnitTest.java |   16 +-
 ...exUpdateWithInplaceObjectModFalseDUnitTest.java |    6 +-
 .../ConcurrentIndexUpdateWithoutWLDUnitTest.java   |    2 +-
 .../internal/index/CopyOnReadIndexDUnitTest.java   |    1 -
 .../internal/index/CopyOnReadIndexJUnitTest.java   |   28 +-
 .../index/HashIndexQueryIntegrationTest.java       |  124 +-
 .../internal/index/HashIndexSetJUnitTest.java      |    2 +-
 .../query/internal/index/IndexHintJUnitTest.java   |   19 +-
 .../internal/index/IndexMaintainceJUnitTest.java   |    2 +-
 .../internal/index/IndexMaintenanceJUnitTest.java  |    3 +-
 .../internal/index/IndexStatisticsJUnitTest.java   |   17 +-
 .../index/IndexTrackingQueryObserverDUnitTest.java |   16 +-
 .../index/IndexTrackingQueryObserverJUnitTest.java |   21 +-
 .../query/internal/index/IndexUseJUnitTest.java    |    2 +-
 .../InitializeIndexEntryDestroyQueryDUnitTest.java |  519 ++---
 .../internal/index/MapIndexStoreJUnitTest.java     |    2 +-
 .../index/MapRangeIndexMaintenanceJUnitTest.java   |   14 +-
 .../internal/index/MemoryIndexStoreJUnitTest.java  |    6 +
 .../index/MultiIndexCreationDUnitTest.java         |   13 +-
 .../NewDeclarativeIndexCreationJUnitTest.java      |   19 +-
 ...ProgRegionCreationIndexUpdateTypeJUnitTest.java |   19 +-
 .../internal/index/RangeIndexAPIJUnitTest.java     |    2 +-
 .../cache/query/internal/parse/OQLParserTest.java  |   52 +
 .../cache/query/internal/types/TypeUtilTest.java   |    2 +-
 .../partitioned/PRBasicIndexCreationDUnitTest.java |   24 +-
 .../PRBasicIndexCreationDeadlockDUnitTest.java     |   22 +-
 .../PRBasicMultiIndexCreationDUnitTest.java        |   22 +-
 .../query/partitioned/PRBasicQueryDUnitTest.java   |   26 +-
 .../partitioned/PRColocatedEquiJoinDUnitTest.java  |   41 +-
 .../partitioned/PRIndexStatisticsJUnitTest.java    |   18 +-
 .../query/partitioned/PRInvalidQueryDUnitTest.java |   23 +-
 .../query/partitioned/PRInvalidQueryJUnitTest.java |    6 +-
 .../partitioned/PRQueryCacheCloseDUnitTest.java    |   26 +-
 .../partitioned/PRQueryCacheClosedJUnitTest.java   |   10 +-
 .../query/partitioned/PRQueryDUnitHelper.java      |   27 +-
 .../cache/query/partitioned/PRQueryDUnitTest.java  |   28 +-
 .../cache/query/partitioned/PRQueryJUnitTest.java  |    8 +-
 .../partitioned/PRQueryNumThreadsJUnitTest.java    |    8 +-
 .../partitioned/PRQueryRegionCloseDUnitTest.java   |   29 +-
 .../partitioned/PRQueryRegionClosedJUnitTest.java  |   10 +-
 .../PRQueryRegionDestroyedDUnitTest.java           |   27 +-
 .../PRQueryRegionDestroyedJUnitTest.java           |   10 +-
 .../PRQueryRemoteNodeExceptionDUnitTest.java       |    2 +-
 .../query/transaction/QueryAndJtaJUnitTest.java    |    2 +-
 .../cache/snapshot/CacheSnapshotJUnitTest.java     |    2 +-
 .../cache/snapshot/ParallelSnapshotDUnitTest.java  |   16 +-
 .../geode/cache/snapshot/RegionGenerator.java      |    1 +
 .../cache/snapshot/RegionSnapshotJUnitTest.java    |   25 +-
 .../geode/cache/snapshot/SnapshotDUnitTest.java    |   26 +-
 .../snapshot/SnapshotPerformanceDUnitTest.java     |   13 +-
 .../geode/cache/snapshot/SnapshotTestCase.java     |   19 +-
 .../geode/cache/snapshot/WanSnapshotJUnitTest.java |    2 +-
 .../apache/geode/cache/util/TxEventTestUtil.java   |   12 +-
 .../apache/geode/cache30/Bug38741DUnitTest.java    |    6 +-
 .../apache/geode/cache30/Bug40255JUnitTest.java    |   25 +-
 .../apache/geode/cache30/Bug40662JUnitTest.java    |   17 +-
 .../apache/geode/cache30/Bug44418JUnitTest.java    |   34 +-
 .../apache/geode/cache30/CacheCloseDUnitTest.java  |   13 +-
 .../geode/cache30/CacheListenerTestCase.java       |   11 +-
 .../apache/geode/cache30/CacheLoaderTestCase.java  |   11 +-
 .../geode/cache30/CacheStatisticsDUnitTest.java    |   11 +-
 .../apache/geode/cache30/CacheWriterTestCase.java  |   13 +-
 .../geode/cache30/CacheXMLPartitionResolver.java   |    4 +-
 .../apache/geode/cache30/CacheXml66DUnitTest.java  |   16 +-
 .../apache/geode/cache30/CacheXml70DUnitTest.java  |    6 +-
 .../apache/geode/cache30/CacheXml81DUnitTest.java  |    6 +-
 .../org/apache/geode/cache30/CacheXmlTestCase.java |    2 +-
 .../geode/cache30/CachedAllEventsDUnitTest.java    |    7 +-
 .../apache/geode/cache30/CallbackArgDUnitTest.java |   13 +-
 .../cache30/CertifiableTestCacheListener.java      |   12 +-
 .../geode/cache30/ClientMembershipDUnitTest.java   |    6 +-
 .../cache30/ClientMembershipSelectorDUnitTest.java |    2 +-
 .../cache30/ClientRegisterInterestDUnitTest.java   |    3 +-
 .../ClientRegisterInterestSelectorDUnitTest.java   |    2 +-
 .../geode/cache30/ClientServerCCEDUnitTest.java    |   56 +-
 .../apache/geode/cache30/ClientServerTestCase.java |    3 +-
 .../cache30/ConcurrentLeaveDuringGIIDUnitTest.java |   19 +-
 ...stributedNoAckAsyncOverflowRegionDUnitTest.java |   15 +-
 .../DiskDistributedNoAckAsyncRegionDUnitTest.java  |   14 +-
 .../apache/geode/cache30/DiskRegionDUnitTest.java  |   13 +-
 .../DistributedAckOverflowRegionCCEDUnitTest.java  |   11 +-
 ...ibutedAckOverflowRegionCCEOffHeapDUnitTest.java |    2 +-
 ...DistributedAckPersistentRegionCCEDUnitTest.java |    2 +-
 ...utedAckPersistentRegionCCEOffHeapDUnitTest.java |    2 +-
 .../cache30/DistributedAckRegionCCEDUnitTest.java  |    2 +-
 .../DistributedAckRegionCCEOffHeapDUnitTest.java   |    2 +-
 .../DistributedAckRegionCompressionDUnitTest.java  |    2 +-
 .../DistributedAckRegionOffHeapDUnitTest.java      |    2 +-
 .../DistributedMulticastRegionDUnitTest.java       |    2 +-
 .../DistributedNoAckRegionCCEOffHeapDUnitTest.java |    2 +-
 .../DistributedNoAckRegionOffHeapDUnitTest.java    |    2 +-
 .../geode/cache30/DynamicRegionDUnitTest.java      |   13 +-
 .../geode/cache30/GlobalLockingDUnitTest.java      |   15 +-
 .../geode/cache30/GlobalRegionCCEDUnitTest.java    |    2 +-
 .../cache30/GlobalRegionCCEOffHeapDUnitTest.java   |   11 +-
 .../cache30/GlobalRegionOffHeapDUnitTest.java      |    2 +-
 .../cache30/LRUEvictionControllerDUnitTest.java    |   15 +-
 .../cache30/MemLRUEvictionControllerDUnitTest.java |   23 +-
 .../geode/cache30/MultiVMRegionTestCase.java       |   16 +-
 .../geode/cache30/MyGatewayEventFilter2.java       |    2 +-
 .../geode/cache30/MyGatewayTransportFilter1.java   |    1 -
 .../OffHeapLRUEvictionControllerDUnitTest.java     |    2 +-
 .../cache30/PRBucketSynchronizationDUnitTest.java  |   17 +-
 .../PartitionedRegionCompressionDUnitTest.java     |   13 +-
 .../geode/cache30/PartitionedRegionDUnitTest.java  |    3 +-
 ...rtitionedRegionMembershipListenerDUnitTest.java |   13 +-
 .../cache30/PartitionedRegionOffHeapDUnitTest.java |    2 +-
 .../org/apache/geode/cache30/ProxyDUnitTest.java   |   13 +-
 .../geode/cache30/RRSynchronizationDUnitTest.java  |   15 +-
 .../apache/geode/cache30/ReconnectDUnitTest.java   |   34 +-
 .../cache30/ReconnectWithCacheXMLDUnitTest.java    |   13 +-
 .../cache30/ReconnectWithUDPSecurityDUnitTest.java |    7 +-
 .../geode/cache30/RegionAttributesTestCase.java    |   21 +-
 .../geode/cache30/RegionExpirationDUnitTest.java   |   11 +-
 .../cache30/RegionMembershipListenerDUnitTest.java |   15 +-
 .../cache30/RegionReliabilityDistAckDUnitTest.java |   10 +-
 .../RegionReliabilityDistNoAckDUnitTest.java       |   10 +-
 .../cache30/RegionReliabilityGlobalDUnitTest.java  |   10 +-
 .../RegionReliabilityListenerDUnitTest.java        |    1 -
 .../geode/cache30/RegionReliabilityTestCase.java   |    7 +-
 .../org/apache/geode/cache30/RegionTestCase.java   |   84 +-
 .../geode/cache30/RequiredRolesDUnitTest.java      |    3 +-
 .../geode/cache30/SearchAndLoadDUnitTest.java      |    8 +-
 .../org/apache/geode/cache30/SlowRecDUnitTest.java |   23 +-
 .../geode/cache30/TXDistributedDUnitTest.java      |    5 +-
 .../org/apache/geode/cache30/TXOrderDUnitTest.java |    1 +
 .../geode/cache30/TXRestrictionsDUnitTest.java     |    2 +-
 .../apache/geode/cache30/TestCacheCallback.java    |    2 +-
 .../apache/geode/cache30/TestCacheListener.java    |    9 +-
 .../org/apache/geode/cache30/TestCacheWriter.java  |    1 -
 .../java/org/apache/geode/cache30/TestHeapLRU.java |    2 +-
 .../AnalyzeSerializablesJUnitTest.java             |   35 +-
 .../apache/geode/codeAnalysis/ClassAndMethods.java |    6 +-
 .../codeAnalysis/ClassAndVariableDetails.java      |    2 +-
 .../geode/codeAnalysis/CompiledClassUtils.java     |    6 +-
 .../AbstractLauncherServiceStateTest.java          |    2 +-
 .../distributed/DistributedLockBlackboardImpl.java |    6 +-
 .../DistributedLockServiceDUnitTest.java           |   13 +-
 .../distributed/DistributedMemberDUnitTest.java    |   29 +-
 .../distributed/DistributedSystemDUnitTest.java    |   12 +-
 .../DistributedSystemIntegrationJUnitTest.java     |    2 +-
 .../distributed/DistributedSystemJUnitTest.java    |    2 +-
 .../geode/distributed/HostedLocatorsDUnitTest.java |   31 +-
 .../LauncherMemberMXBeanIntegrationTest.java       |    2 +-
 .../apache/geode/distributed/LocatorDUnitTest.java |   31 +-
 .../apache/geode/distributed/LocatorJUnitTest.java |   44 +-
 .../LocatorLauncherRemoteIntegrationTest.java      |    2 +
 .../distributed/LocatorUDPSecurityDUnitTest.java   |   13 +-
 .../apache/geode/distributed/RoleDUnitTest.java    |    3 +-
 .../ServerLauncherRemoteFileIntegrationTest.java   |    2 +-
 .../distributed/internal/Bug40751DUnitTest.java    |    2 +-
 .../ConsoleDistributionManagerDUnitTest.java       |    6 +-
 .../geode/distributed/internal/DateMessage.java    |    8 +-
 .../DefaultPropertiesGeneratorIntegrationTest.java |   14 +-
 .../internal/DistributionAdvisorDUnitTest.java     |    2 +-
 .../internal/DistributionAdvisorTest.java          |    3 +-
 .../internal/DistributionConfigJUnitTest.java      |    4 +-
 .../internal/DistributionManagerDUnitTest.java     |    7 +-
 .../internal/DistributionManagerTest.java          |    7 +-
 .../internal/DistributionMessageTest.java          |    3 +-
 .../InternalDistributedSystemJUnitTest.java        |   12 +-
 .../internal/InternalLocatorIntegrationTest.java   |   13 +-
 .../LocatorLoadSnapshotIntegrationTest.java        |    2 +-
 .../distributed/internal/ProduceDateMessages.java  |    6 +-
 .../internal/ProductUseLogDUnitTest.java           |    4 +-
 .../internal/ProductUseLogJUnitTest.java           |    2 +-
 .../distributed/internal/ReplyProcessor21Test.java |    3 +-
 .../internal/ServerLocatorJUnitTest.java           |    4 +-
 .../internal/StartupMessageDataJUnitTest.java      |    6 +-
 .../deadlock/GemFireDeadlockDetectorDUnitTest.java |   25 +-
 .../internal/locks/DLockGrantorHelper.java         |    1 -
 .../locks/DLockReentrantLockJUnitTest.java         |   17 +-
 .../locks/DLockServiceCharacterizationTests.java   |   13 +-
 .../internal/locks/DLockServiceLeakTest.java       |   27 +-
 .../internal/membership/InternalRoleJUnitTest.java |    4 +-
 .../internal/membership/MembershipJUnitTest.java   |   15 +-
 .../internal/membership/NetViewJUnitTest.java      |    2 +-
 .../membership/gms/GMSMemberJUnitTest.java         |    8 +-
 .../membership/gms/MembershipManagerHelper.java    |    4 +-
 .../gms/auth/AbstractGMSAuthenticatorTestCase.java |   17 +-
 .../GMSAuthenticatorWithSecurityManagerTest.java   |    1 -
 .../gms/fd/GMSHealthMonitorJUnitTest.java          |   60 +-
 .../gms/locator/GMSLocatorRecoveryJUnitTest.java   |   22 +-
 .../gms/membership/GMSJoinLeaveJUnitTest.java      |   48 +-
 .../gms/membership/StatRecorderJUnitTest.java      |   39 +-
 .../gms/messenger/GMSEncryptJUnitTest.java         |   32 +-
 .../gms/messenger/GMSQuorumCheckerJUnitTest.java   |    4 +-
 .../gms/messenger/JGroupsMessengerJUnitTest.java   |   59 +-
 .../internal/tcpserver/TCPServerSSLJUnitTest.java  |   29 +-
 .../TcpServerBackwardCompatDUnitTest.java          |    4 +-
 .../internal/tcpserver/TcpServerJUnitTest.java     |   31 +-
 .../geode/disttx/CacheMapDistTXDUnitTest.java      |   10 +-
 .../apache/geode/disttx/DistTXDebugDUnitTest.java  |    8 +-
 .../apache/geode/disttx/DistTXExpiryJUnitTest.java |   13 +-
 .../geode/disttx/DistTXManagerImplJUnitTest.java   |    2 +-
 .../DistTXReleasesOffHeapOnCloseJUnitTest.java     |   13 +-
 .../geode/internal/AbstractConfigJUnitTest.java    |   13 +-
 .../apache/geode/internal/AbstractConfigTest.java  |    3 +-
 .../org/apache/geode/internal/AssertJUnitTest.java |    3 +-
 .../apache/geode/internal/AvailablePortHelper.java |    3 +-
 .../geode/internal/AvailablePortJUnitTest.java     |   17 +-
 ...ackwardCompatibilitySerializationDUnitTest.java |   27 +-
 .../apache/geode/internal/Bug51616JUnitTest.java   |   13 +-
 .../org/apache/geode/internal/ByteArrayData.java   |    2 +-
 .../internal/ClassNotFoundExceptionDUnitTest.java  |   13 +-
 .../internal/ClassPathLoaderIntegrationTest.java   |    4 +-
 .../apache/geode/internal/ClassPathLoaderTest.java |    4 +-
 .../geode/internal/DataSerializableJUnitTest.java  |    2 +-
 .../geode/internal/DeployedJarJUnitTest.java       |    8 +-
 .../geode/internal/GemFireVersionJUnitTest.java    |   23 +-
 .../internal/HeapDataOutputStreamJUnitTest.java    |    2 +-
 .../geode/internal/HeapDataOutputStreamTest.java   |    3 +-
 .../apache/geode/internal/InlineKeyJUnitTest.java  |   27 +-
 ...InternalDataSerializerQuickcheckStringTest.java |   15 +-
 .../geode/internal/ObjIdConcurrentMapTest.java     |    5 +-
 .../geode/internal/PdxDeleteFieldDUnitTest.java    |   21 +-
 .../geode/internal/PdxDeleteFieldJUnitTest.java    |   13 +-
 .../apache/geode/internal/PdxRenameDUnitTest.java  |   21 +-
 .../apache/geode/internal/PdxRenameJUnitTest.java  |   15 +-
 ...qualityShouldUseArrayEqualsIntegrationTest.java |   17 +-
 .../internal/SSLConfigIntegrationJUnitTest.java    |   13 +-
 .../apache/geode/internal/SSLConfigJUnitTest.java  |    5 +-
 ...edThreadPoolExecutorWithKeepAliveJUnitTest.java |    2 +-
 .../geode/internal/UniqueIdGeneratorJUnitTest.java |    2 +-
 .../remote/DistributionLocatorIdJUnitTest.java     |    4 +-
 .../internal/cache/AbstractDiskRegionTest.java     |    3 +-
 .../internal/cache/AbstractLRURegionMapTest.java   |    3 +-
 .../cache/AbstractOplogDiskRegionEntryTest.java    |    4 +-
 .../internal/cache/AbstractRegionEntryTest.java    |  166 --
 .../internal/cache/AbstractRegionJUnitTest.java    |  141 +-
 .../internal/cache/AbstractRegionMapTest.java      |    5 +-
 .../geode/internal/cache/AbstractRegionTest.java   |    3 +-
 .../geode/internal/cache/BackupDUnitTest.java      |  778 -------
 .../geode/internal/cache/BackupJUnitTest.java      |  430 ----
 .../geode/internal/cache/BucketAdvisorTest.java    |    5 +-
 .../cache/BucketPersistenceAdvisorTest.java        |    8 +-
 .../cache/BucketRedundancyTrackerTest.java         |    3 +-
 .../internal/cache/BucketRegionJUnitTest.java      |    3 +-
 .../internal/cache/BucketRegionQueueHelper.java    |    6 +-
 .../geode/internal/cache/Bug33726JUnitTest.java    |   17 +-
 .../cache/Bug34179TooManyFilesOpenJUnitTest.java   |    8 +-
 .../geode/internal/cache/Bug34583JUnitTest.java    |   21 +-
 .../geode/internal/cache/Bug37241DUnitTest.java    |    2 -
 .../geode/internal/cache/Bug37244JUnitTest.java    |   39 +-
 .../geode/internal/cache/Bug37377DUnitTest.java    |   25 +-
 .../geode/internal/cache/Bug37500JUnitTest.java    |   15 +-
 .../geode/internal/cache/Bug39079DUnitTest.java    |    3 +-
 .../geode/internal/cache/Bug40299DUnitTest.java    |   14 +-
 .../geode/internal/cache/Bug41957DUnitTest.java    |    3 +-
 .../geode/internal/cache/Bug42055DUnitTest.java    |   11 +-
 .../geode/internal/cache/Bug45164DUnitTest.java    |   13 +-
 .../geode/internal/cache/Bug47667DUnitTest.java    |   11 +-
 .../geode/internal/cache/Bug48182JUnitTest.java    |  214 --
 .../internal/cache/CacheAdvisorDUnitTest.java      |   19 +-
 .../internal/cache/CacheOperationMessageTest.java  |    5 +-
 .../cache/CacheServerLauncherJUnitTest.java        |    4 +-
 .../internal/cache/CacheServiceJUnitTest.java      |    9 +-
 .../geode/internal/cache/ClearGlobalDUnitTest.java |    2 +-
 .../internal/cache/ClearRvvLockingDUnitTest.java   |   17 +-
 .../internal/cache/ClearTXLockingDUnitTest.java    |   18 +-
 ...tMessagesRegionCreationAndDestroyJUnitTest.java |   35 +-
 .../cache/ClientServerGetAllDUnitTest.java         |    3 +-
 ...entServerInvalidAndDestroyedEntryDUnitTest.java |    2 +-
 .../cache/ClientServerTransactionCCEDUnitTest.java |   15 +-
 .../cache/ClientServerTransactionDUnitTest.java    |  118 +-
 .../geode/internal/cache/ColocatedPRJUnitTest.java |    2 +-
 .../geode/internal/cache/ColocationHelperTest.java |    4 +-
 .../geode/internal/cache/CommitFunction.java       |   14 +-
 .../internal/cache/ComplexDiskRegionJUnitTest.java |    4 +-
 .../cache/ConcurrentDestroySubRegionDUnitTest.java |   11 +-
 ...urrentFlushingAndRegionOperationsJUnitTest.java |   19 +-
 .../internal/cache/ConcurrentMapOpsDUnitTest.java  |    2 +-
 .../cache/ConcurrentRegionOperationsJUnitTest.java |    6 +-
 ...currentRollingAndRegionOperationsJUnitTest.java |    3 +-
 .../geode/internal/cache/ConflationJUnitTest.java  |   11 +-
 .../internal/cache/ConnectDisconnectDUnitTest.java |   21 +-
 .../cache/CustomerIDPartitionResolver.java         |    8 +-
 .../internal/cache/DeltaFaultInDUnitTest.java      |   11 +-
 .../cache/DeltaPropagationStatsDUnitTest.java      |   20 +-
 .../geode/internal/cache/DeltaSizingDUnitTest.java |   13 +-
 ...precatedCacheServerLauncherIntegrationTest.java |    2 +
 ...stroyEntryWithConcurrentOperationJUnitTest.java |  229 ++
 .../geode/internal/cache/DestroyMessageTest.java   |    5 +-
 .../geode/internal/cache/DiskIFJUnitTest.java      |    4 +-
 .../cache/DiskLruRegRecoveryJUnitTest.java         |    2 +-
 .../geode/internal/cache/DiskOldAPIsJUnitTest.java |    7 +-
 .../DiskRandomOperationsAndRecoveryJUnitTest.java  |   18 +-
 .../internal/cache/DiskRegByteArrayDUnitTest.java  |   21 +-
 .../internal/cache/DiskRegCacheXmlJUnitTest.java   |    4 +-
 .../DiskRegOplogSwtchingAndRollerJUnitTest.java    |    2 +-
 .../internal/cache/DiskRegRecoveryJUnitTest.java   |    6 +-
 .../cache/DiskRegionAsyncRecoveryJUnitTest.java    |   19 +-
 ...iskRegionChangingRegionAttributesJUnitTest.java |    2 +-
 .../internal/cache/DiskRegionClearJUnitTest.java   |    2 +-
 .../internal/cache/DiskRegionHelperFactory.java    |  115 +-
 .../geode/internal/cache/DiskRegionJUnitTest.java  |   95 +-
 .../geode/internal/cache/DiskRegionProperties.java |    6 +-
 .../internal/cache/DiskRegionTestingBase.java      |  143 +-
 .../internal/cache/DistPeerTXStateStubTest.java    |    7 +-
 .../cache/DistributedCacheOperationTest.java       |   11 +-
 .../cache/DistributedPutAllOperationTest.java      |    3 +-
 ...tributedRegionFunctionStreamingMessageTest.java |    5 +-
 .../internal/cache/DistributedRegionJUnitTest.java |    2 +-
 .../DistributedRegionSearchLoadJUnitTest.java      |    2 +-
 .../internal/cache/DistributedRegionTest.java      |    3 +-
 .../cache/DistributedRemoveAllOperationTest.java   |    3 +-
 .../geode/internal/cache/EvictionDUnitTest.java    |    2 +-
 .../cache/EvictionObjectSizerDUnitTest.java        |   16 +-
 .../internal/cache/EvictionStatsDUnitTest.java     |   17 +-
 .../geode/internal/cache/EvictionTestBase.java     |    2 +-
 .../geode/internal/cache/ExpiryTaskTest.java       |    3 +-
 ...FireAndForgetFunctionOnAllServersDUnitTest.java |   11 +-
 .../internal/cache/FixedPRSinglehopDUnitTest.java  |    4 +-
 .../geode/internal/cache/GIIDeltaDUnitTest.java    |   32 +-
 .../internal/cache/GIIFlowControlDUnitTest.java    |   17 +-
 .../geode/internal/cache/GemFireCacheImplTest.java |    2 +-
 .../geode/internal/cache/GridProfileTest.java      |   11 +-
 .../cache/HAOverflowMemObjectSizerDUnitTest.java   |    4 +-
 .../internal/cache/IncrementalBackupDUnitTest.java | 1147 ----------
 .../cache/InterruptClientServerDUnitTest.java      |   17 +-
 .../internal/cache/InterruptDiskJUnitTest.java     |   29 +-
 .../geode/internal/cache/InterruptsDUnitTest.java  |   14 +-
 .../geode/internal/cache/IteratorDUnitTest.java    |   19 +-
 .../LIFOEvictionAlgoEnabledRegionJUnitTest.java    |   26 +-
 ...FOEvictionAlgoMemoryEnabledRegionJUnitTest.java |   32 +-
 .../geode/internal/cache/MapClearGIIDUnitTest.java |    5 +-
 .../internal/cache/MapInterface2JUnitTest.java     |    6 +-
 .../cache/MemberFunctionStreamingMessageTest.java  |    5 +-
 .../MultipleOplogsRollingFeatureJUnitTest.java     |    3 +-
 .../internal/cache/NestedTransactionFunction.java  |    8 +-
 .../cache/NetSearchMessagingDUnitTest.java         |    5 +-
 .../internal/cache/NonLocalRegionEntryTest.java    |    3 +-
 .../internal/cache/OffHeapEvictionDUnitTest.java   |    2 +-
 .../geode/internal/cache/OffHeapTestUtil.java      |    3 +-
 .../cache/OffHeapValueWrapperJUnitTest.java        |    4 +-
 .../geode/internal/cache/OplogJUnitTest.java       | 2238 ++------------------
 .../geode/internal/cache/OplogRVVJUnitTest.java    |   31 +-
 .../cache/P2PDeltaPropagationDUnitTest.java        |    1 -
 .../geode/internal/cache/PRBadToDataDUnitTest.java |   17 +-
 .../cache/PRConcurrentMapOpsJUnitTest.java         |   15 +-
 .../internal/cache/PRDataStoreMemoryJUnitTest.java |    6 +-
 .../cache/PRDataStoreMemoryOffHeapJUnitTest.java   |   11 +-
 .../internal/cache/PREntryIdleExpirationTest.java  |   50 +
 .../internal/cache/PartitionListenerDUnitTest.java |   13 +-
 .../cache/PartitionedRegionAPIDUnitTest.java       |   24 +-
 .../PartitionedRegionAsSubRegionDUnitTest.java     |   27 +-
 ...dRegionBucketCreationDistributionDUnitTest.java |   16 +-
 .../PartitionedRegionCacheCloseDUnitTest.java      |   23 +-
 .../PartitionedRegionCacheLoaderForRootRegion.java |    2 +-
 .../PartitionedRegionCacheLoaderForSubRegion.java  |    4 +-
 .../cache/PartitionedRegionCreationDUnitTest.java  |   29 +-
 .../cache/PartitionedRegionCreationJUnitTest.java  |   18 +-
 .../cache/PartitionedRegionDUnitTestCase.java      |   10 +-
 .../cache/PartitionedRegionDataStoreJUnitTest.java |   23 +-
 .../PartitionedRegionDelayedRecoveryDUnitTest.java |   11 +-
 .../cache/PartitionedRegionDestroyDUnitTest.java   |   21 +-
 .../PartitionedRegionEntryCountDUnitTest.java      |   15 +-
 .../cache/PartitionedRegionEvictionDUnitTest.java  |    4 +-
 .../cache/PartitionedRegionHADUnitTest.java        |   27 +-
 .../PartitionedRegionInvalidateDUnitTest.java      |   13 +-
 .../PartitionedRegionLocalMaxMemoryDUnitTest.java  |    2 +-
 ...tionedRegionLocalMaxMemoryOffHeapDUnitTest.java |    2 +-
 .../cache/PartitionedRegionMultipleDUnitTest.java  |   15 +-
 .../cache/PartitionedRegionPRIDDUnitTest.java      |   24 +-
 .../cache/PartitionedRegionQueryDUnitTest.java     |   33 +-
 ...itionedRegionQueryEvaluatorIntegrationTest.java |   10 +-
 .../PartitionedRegionRedundancyTrackerTest.java    |    3 +-
 ...rtitionedRegionSerializableObjectJUnitTest.java |    2 +-
 .../cache/PartitionedRegionSingleHopDUnitTest.java |    2 +-
 ...nedRegionSingleHopWithServerGroupDUnitTest.java |    4 +-
 ...itionedRegionSingleNodeOperationsJUnitTest.java |   52 +-
 .../cache/PartitionedRegionSizeDUnitTest.java      |   33 +-
 .../cache/PartitionedRegionStatsDUnitTest.java     |   27 +-
 .../cache/PartitionedRegionStatsJUnitTest.java     |   31 +-
 .../cache/PartitionedRegionTestHelper.java         |   31 +-
 .../cache/PartitionedRegionTestUtilsDUnitTest.java |    4 +-
 .../PartitionedRegionWithSameNameDUnitTest.java    |   23 +-
 .../PersistentPartitionedRegionJUnitTest.java      |   17 +-
 .../internal/cache/PlaceHolderDiskRegionTest.java  |    3 +-
 .../internal/cache/ProxyBucketRegionTest.java      |    3 +-
 .../internal/cache/RegionEntryFlagsJUnitTest.java  |    2 +-
 .../internal/cache/RegionListenerJUnitTest.java    |   15 +-
 .../cache/RemoteFetchEntryMessageTest.java         |    5 +-
 .../internal/cache/RemotePutAllMessageTest.java    |    5 +-
 .../internal/cache/RemoteRemoveAllMessageTest.java |    5 +-
 .../cache/RemoteTransactionCCEDUnitTest.java       |    6 +-
 .../internal/cache/RemoteTransactionDUnitTest.java |    7 +-
 .../geode/internal/cache/RemoveDAckDUnitTest.java  |    2 -
 .../cache/ReplaceWithOverflowJUnitTest.java        |    3 +-
 .../ReplicateCacheListenerInvocationTest.java      |    2 +-
 .../cache/ReplicateEntryIdleExpirationTest.java    |  128 ++
 .../cache/RequestFilterInfoMessageTest.java        |    5 +-
 .../internal/cache/RequestImageMessageTest.java    |    5 +-
 .../internal/cache/RequestRVVMessageTest.java      |    5 +-
 .../geode/internal/cache/RollbackFunction.java     |   14 +-
 .../cache/SearchLoadAndWriteProcessorTest.java     |    3 +-
 .../internal/cache/SimpleDiskRegionJUnitTest.java  |    6 +-
 .../internal/cache/SingleHopStatsDUnitTest.java    |   15 +-
 .../geode/internal/cache/SizingFlagDUnitTest.java  |   19 +-
 .../geode/internal/cache/SnapshotTestUtil.java     |    4 +-
 .../internal/cache/StateMarkerMessageTest.java     |    5 +-
 .../internal/cache/SystemFailureDUnitTest.java     |   54 +-
 .../apache/geode/internal/cache/TXEventTest.java   |    5 +-
 .../internal/cache/TXManagerImplJUnitTest.java     |   26 +-
 .../geode/internal/cache/TXManagerImplTest.java    |    2 +-
 .../apache/geode/internal/cache/TXMessageTest.java |    5 +-
 .../internal/cache/TXReservationMgrJUnitTest.java  |   23 +-
 .../internal/cache/TXStateProxyImplJUnitTest.java  |    1 +
 .../geode/internal/cache/TXStateStubTest.java      |    5 +-
 .../geode/internal/cache/TestNonSizerObject.java   |    4 +-
 .../geode/internal/cache/TestObjectSizerImpl.java  |    4 +-
 .../internal/cache/TombstoneCreationJUnitTest.java |   25 +-
 .../cache/TransactionsWithDeltaDUnitTest.java      |   26 +-
 .../internal/cache/UpdateVersionJUnitTest.java     |   17 +-
 .../apache/geode/internal/cache/VLJUnitTest.java   |    2 +-
 .../cache/backup/BackupDistributedTest.java        |  750 +++++++
 .../backup/BackupInspectorIntegrationTest.java     |  170 ++
 .../cache/backup/BackupIntegrationTest.java        |  435 ++++
 .../internal/cache/backup/BackupLockTest.java      |  105 +
 .../backup/BackupPrepareAndFinishMsgDUnitTest.java |  240 +++
 .../cache/backup/BackupReplyProcessorTest.java     |   90 +
 .../cache/backup/FinishBackupFactoryTest.java      |   87 +
 .../cache/backup/FinishBackupOperationTest.java    |  236 +++
 .../cache/backup/FinishBackupRequestTest.java      |  117 +
 .../cache/backup/FlushToDiskFactoryTest.java       |   83 +
 .../cache/backup/FlushToDiskOperationTest.java     |  121 ++
 .../cache/backup/FlushToDiskRequestTest.java       |   82 +
 .../backup/IncrementalBackupDistributedTest.java   | 1119 ++++++++++
 ...titionedBackupPrepareAndFinishMsgDUnitTest.java |   27 +
 .../cache/backup/PrepareBackupFactoryTest.java     |   85 +
 .../cache/backup/PrepareBackupOperationTest.java   |  232 ++
 .../cache/backup/PrepareBackupRequestTest.java     |   98 +
 ...eplicateBackupPrepareAndFinishMsgDUnitTest.java |   27 +
 .../cache/backup/UnixScriptGeneratorTest.java      |  118 ++
 .../cache/backup/WindowsScriptGeneratorTest.java   |  120 ++
 .../cache/control/MemoryMonitorJUnitTest.java      |    9 +-
 .../control/MemoryMonitorOffHeapJUnitTest.java     |   30 +-
 .../cache/control/RebalanceOperationDUnitTest.java |   24 +-
 .../cache/control/ResourceAdvisorTest.java         |    5 +-
 .../cache/control/TestMemoryThresholdListener.java |    4 +-
 ...skRegionOverflowAsyncRollingOpLogJUnitTest.java |    6 +-
 ...iskRegionOverflowSyncRollingOpLogJUnitTest.java |   14 +-
 .../DiskRegionPerfJUnitPerformanceTest.java        |    2 +-
 .../DiskRegionPersistOnlySyncJUnitTest.java        |    3 +-
 .../DiskRegionRollOpLogJUnitPerformanceTest.java   |    2 +-
 .../MultiThreadedOplogPerJUnitPerformanceTest.java |   25 +-
 .../cache/entries/AbstractRegionEntryTest.java     |  174 ++
 .../cache/event/DistributedEventTrackerTest.java   |    1 +
 .../ClientServerFunctionExecutionDUnitTest.java    |   17 +-
 .../cache/execute/CustomResultCollector.java       |    2 +-
 .../cache/execute/CustomerIDPartitionResolver.java |    6 +-
 ...istributedRegionFunctionExecutionDUnitTest.java |    6 +-
 .../FunctionExecution_ExceptionDUnitTest.java      |   15 +-
 .../FunctionServiceClientAccessorPRBase.java       |    8 +-
 .../FunctionServiceClientAccessorPRDUnitTest.java  |    3 +-
 ...ceClientAccessorPRMultipleMembersDUnitTest.java |    3 +-
 ...AccessorPRMultipleMembersMultihopDUnitTest.java |    5 +-
 ...tionServiceClientMultipleOnServerDUnitTest.java |    3 +-
 .../execute/FunctionServiceClientOnServerBase.java |    4 +-
 .../FunctionServiceClientOnServerDUnitTest.java    |    4 +-
 .../execute/FunctionServiceLocalPRDUnitTest.java   |    6 +-
 .../execute/FunctionServiceLocalRRDUnitTest.java   |    6 +-
 .../FunctionServiceMultipleOnMemberDUnitTest.java  |    6 +-
 .../execute/FunctionServicePeerAccessorPRBase.java |    6 +-
 .../FunctionServicePeerAccessorPRDUnitTest.java    |    8 +-
 ...vicePeerAccessorPRMultipleMembersDUnitTest.java |    8 +-
 .../FunctionServicePeerAccessorRRDUnitTest.java    |    6 +-
 .../execute/FunctionServiceStatsDUnitTest.java     |   10 +-
 .../execute/LocalDataSetIndexingDUnitTest.java     |   25 +-
 .../execute/MemberFunctionExecutionDUnitTest.java  |   16 +-
 .../MultiRegionFunctionExecutionDUnitTest.java     |   13 +-
 .../execute/MyFunctionExecutionException.java      |    8 +-
 ...lientServerFunctionExecutionNoAckDUnitTest.java |   17 +-
 ...ientServerRegionFunctionExecutionDUnitTest.java |    2 +-
 ...erRegionFunctionExecutionFailoverDUnitTest.java |    2 +-
 ...egionFunctionExecutionNoSingleHopDUnitTest.java |   13 +-
 ...ctionExecutionSelectorNoSingleHopDUnitTest.java |   35 +-
 ...rRegionFunctionExecutionSingleHopDUnitTest.java |   16 +-
 .../cache/execute/PRColocationDUnitTest.java       |   18 +-
 .../execute/PRCustomPartitioningDUnitTest.java     |   35 +-
 .../execute/PRFunctionExecutionDUnitTest.java      |    1 -
 ...FunctionExecutionWithResultSenderDUnitTest.java |   27 +-
 .../cache/execute/PRPerformanceTestDUnitTest.java  |   22 +-
 .../cache/execute/PRSetOperationJTADUnitTest.java  |   18 +-
 .../cache/execute/PRSetOperationTXDUnitTest.java   |   18 +-
 .../cache/execute/PRTransaction2DUnitTest.java     |    7 +-
 .../cache/execute/PRTransactionDUnitTest.java      |   28 +-
 .../PRTransactionWithVersionsDUnitTest.java        |    6 +-
 .../cache/execute/PerformanceTestFunction.java     |    4 +-
 .../execute/SingleHopGetAllPutAllDUnitTest.java    |   12 +-
 .../geode/internal/cache/execute/TestFunction.java |    4 +-
 .../geode/internal/cache/execute/data/CustId.java  |    8 +-
 .../internal/cache/execute/data/Customer.java      |   10 +-
 .../geode/internal/cache/execute/data/Order.java   |   10 +-
 .../geode/internal/cache/execute/data/OrderId.java |    8 +-
 .../internal/cache/execute/data/Shipment.java      |   10 +-
 .../internal/cache/execute/data/ShipmentId.java    |    8 +-
 .../ExtensionClusterConfigurationDUnitTest.java    |  214 ++
 .../extension/SimpleExtensionPointJUnitTest.java   |    4 +-
 .../extension/mock/AbstractMockExtension.java      |    2 +-
 .../mock/AbstractMockExtensionXmlGenerator.java    |    2 +-
 .../mock/AlterMockCacheExtensionFunction.java      |    2 +-
 .../mock/AlterMockRegionExtensionFunction.java     |    4 +-
 .../mock/CreateMockCacheExtensionFunction.java     |    2 +-
 .../mock/CreateMockRegionExtensionFunction.java    |    4 +-
 .../mock/DestroyMockCacheExtensionFunction.java    |    2 +-
 .../mock/DestroyMockRegionExtensionFunction.java   |    4 +-
 .../cache/extension/mock/MockCacheExtension.java   |    4 +-
 .../mock/MockCacheExtensionXmlGenerator.java       |    2 +-
 .../extension/mock/MockExtensionCommands.java      |   14 +-
 .../extension/mock/MockExtensionXmlParser.java     |    2 +-
 .../cache/extension/mock/MockRegionExtension.java  |    2 +-
 .../mock/MockRegionExtensionXmlGenerator.java      |    2 +-
 .../internal/cache/functions/TestFunction.java     |   28 +-
 .../ha/BlockingHARQAddOperationJUnitTest.java      |   24 +-
 .../cache/ha/BlockingHARQStatsJUnitTest.java       |   10 +-
 .../cache/ha/BlockingHARegionJUnitTest.java        |    4 +-
 .../cache/ha/Bug36853EventsExpiryDUnitTest.java    |   14 +-
 .../geode/internal/cache/ha/Bug48571DUnitTest.java |  114 +-
 .../geode/internal/cache/ha/Bug48879DUnitTest.java |    3 +-
 .../geode/internal/cache/ha/ConflatableObject.java |   18 +-
 .../cache/ha/EventIdOptimizationDUnitTest.java     |   35 +-
 .../cache/ha/EventIdOptimizationJUnitTest.java     |    5 +-
 .../geode/internal/cache/ha/FailoverDUnitTest.java |    2 +-
 .../internal/cache/ha/HABugInPutDUnitTest.java     |    6 +-
 .../geode/internal/cache/ha/HAClearDUnitTest.java  |    2 +-
 .../internal/cache/ha/HAConflationDUnitTest.java   |   10 +-
 .../internal/cache/ha/HADuplicateDUnitTest.java    |    2 +-
 .../cache/ha/HAEventIdPropagationDUnitTest.java    |   12 +-
 .../geode/internal/cache/ha/HAExpiryDUnitTest.java |    8 +-
 .../geode/internal/cache/ha/HAGIIBugDUnitTest.java |    8 +-
 .../geode/internal/cache/ha/HAGIIDUnitTest.java    |    2 +-
 .../cache/ha/HARQAddOperationJUnitTest.java        |   16 +-
 .../cache/ha/HARQueueNewImplDUnitTest.java         |    4 +-
 .../geode/internal/cache/ha/HARegionDUnitTest.java |   40 +-
 .../geode/internal/cache/ha/HARegionJUnitTest.java |    2 +-
 .../internal/cache/ha/HARegionQueueDUnitTest.java  |    4 +-
 .../internal/cache/ha/HARegionQueueJUnitTest.java  |   32 +-
 .../cache/ha/HARegionQueueStatsJUnitTest.java      |   53 +-
 .../internal/cache/ha/HASlowReceiverDUnitTest.java |    4 +-
 .../cache/ha/OperationsPropagationDUnitTest.java   |    2 +-
 .../ha/PreferSerializedHARegionQueueTest.java      |   15 +-
 .../geode/internal/cache/ha/PutAllDUnitTest.java   |   34 +-
 .../geode/internal/cache/ha/StatsBugDUnitTest.java |   20 +-
 .../cache/ha/TestBlockingHARegionQueue.java        |   12 +-
 .../cache/ha/ThreadIdentifierJUnitTest.java        |    8 +-
 .../cache/locks/TXLockServiceDUnitTest.java        |   28 +-
 .../geode/internal/cache/lru/LRUAlgorithmTest.java |    3 +-
 .../internal/cache/lru/LRUClockJUnitTest.java      |    3 +-
 .../cache/lru/TransactionsWithOverflowTest.java    |   15 +-
 .../cache/partitioned/BucketBackupMessageTest.java |    3 +-
 .../BucketRebalanceStatRegressionTest.java         |   32 +-
 .../cache/partitioned/Bug43684DUnitTest.java       |    2 +-
 .../cache/partitioned/Bug47388DUnitTest.java       |    2 +-
 .../cache/partitioned/Bug51400DUnitTest.java       |    2 +-
 .../ColocatedRegionDetailsJUnitTest.java           |    9 +-
 .../DeposePrimaryBucketMessageTest.java            |    5 +-
 .../cache/partitioned/ElidedPutAllDUnitTest.java   |   13 +-
 .../cache/partitioned/FetchEntryMessageTest.java   |    5 +-
 .../FetchPartitionDetailsMessageTest.java          |    5 +-
 .../cache/partitioned/MoveBucketMessageTest.java   |    5 +-
 .../partitioned/PartitionResolverDUnitTest.java    |   31 +-
 .../PartitionedRegionLoadModelJUnitTest.java       |   14 +-
 .../PartitionedRegionLoaderWriterDUnitTest.java    |   13 +-
 .../PartitionedRegionMetaDataCleanupDUnitTest.java |   15 +-
 .../cache/partitioned/PersistPRKRFDUnitTest.java   |   49 +-
 ...sistentColocatedPartitionedRegionDUnitTest.java |  289 +--
 .../PersistentPartitionedRegionDUnitTest.java      |  143 +-
 ...sistentPartitionedRegionOldConfigDUnitTest.java |   11 +-
 .../PersistentPartitionedRegionTestBase.java       |  997 ++++-----
 ...tPartitionedRegionWithTransactionDUnitTest.java |   35 +-
 .../cache/partitioned/RemoveAllPRMessageTest.java  |    3 +-
 .../cache/partitioned/RemoveBucketMessageTest.java |    5 +-
 .../cache/partitioned/ShutdownAllDUnitTest.java    |   10 +-
 .../cache/partitioned/SizeMessageTest.java         |    3 +-
 .../StreamingPartitionOperationManyDUnitTest.java  |   13 +-
 .../StreamingPartitionOperationOneDUnitTest.java   |   13 +-
 .../fixed/FixedPartitioningDUnitTest.java          |   45 +-
 .../fixed/FixedPartitioningTestBase.java           |   29 +-
 .../fixed/FixedPartitioningTestBaseJUnitTest.java  |    4 +-
 ...oningWithColocationAndPersistenceDUnitTest.java |   25 +-
 .../fixed/QuarterPartitionResolver.java            |    4 +-
 .../fixed/SingleHopQuarterPartitionResolver.java   |    4 +-
 .../rebalance/BucketOperatorWrapperTest.java       |    6 +-
 .../BackupInspectorIntegrationTest.java            |  169 --
 .../BackupPrepareAndFinishMsgDUnitTest.java        |  239 ---
 ...titionedBackupPrepareAndFinishMsgDUnitTest.java |   28 -
 .../PersistentRVVRecoveryDUnitTest.java            |   19 +-
 .../PersistentRecoveryOrderDUnitTest.java          |   16 +-
 .../PersistentRecoveryOrderOldConfigDUnitTest.java |   13 +-
 .../persistence/PersistentReplicatedTestBase.java  |   11 +-
 ...eplicateBackupPrepareAndFinishMsgDUnitTest.java |   28 -
 .../cache/persistence/UnixScriptGeneratorTest.java |  118 --
 .../persistence/WindowsScriptGeneratorTest.java    |  120 --
 .../rollingupgrade/RollingUpgrade2DUnitTest.java   |  100 +-
 .../rollingupgrade/RollingUpgradeDUnitTest.java    |   67 +-
 .../cache/snapshot/GFSnapshotDUnitTest.java        |    9 +-
 .../internal/cache/tier/Bug40396DUnitTest.java     |    4 +-
 .../cache/tier/sockets/AcceptorImplDUnitTest.java  |   20 +-
 .../cache/tier/sockets/AcceptorImplJUnitTest.java  |   31 +-
 ...dCompatibilityHigherVersionClientDUnitTest.java |    2 +-
 .../cache/tier/sockets/Bug36269DUnitTest.java      |    2 +-
 .../cache/tier/sockets/Bug36457DUnitTest.java      |    4 +-
 .../cache/tier/sockets/Bug36805DUnitTest.java      |    7 +-
 .../cache/tier/sockets/Bug36829DUnitTest.java      |    2 +-
 .../cache/tier/sockets/Bug36995DUnitTest.java      |    2 +-
 .../cache/tier/sockets/Bug37210DUnitTest.java      |   22 +-
 .../cache/tier/sockets/Bug37805DUnitTest.java      |    2 +-
 .../internal/cache/tier/sockets/CCUStatsTest.java  |    5 +-
 .../CacheServerMaxConnectionsJUnitTest.java        |    2 +-
 ...CacheServerSelectorMaxConnectionsJUnitTest.java |    6 +-
 .../cache/tier/sockets/CacheServerTestUtil.java    |   10 +-
 .../sockets/CacheServerTransactionsDUnitTest.java  |    2 +-
 .../CacheServerTransactionsSelectorDUnitTest.java  |    8 +-
 .../cache/tier/sockets/CacheServerUtils.java       |    6 +-
 .../tier/sockets/ClearPropagationDUnitTest.java    |    2 +-
 .../tier/sockets/ClientConflationDUnitTest.java    |   13 +-
 .../tier/sockets/ClientHealthMonitorJUnitTest.java |    5 +-
 .../ClientHealthMonitorSelectorJUnitTest.java      |    9 +-
 .../sockets/ClientInterestNotifyDUnitTest.java     |    8 +-
 .../ClientServerForceInvalidateDUnitTest.java      |    2 +-
 .../tier/sockets/ClientServerMiscDUnitTest.java    |   14 +-
 .../sockets/ClientServerMiscSelectorDUnitTest.java |    3 +-
 .../cache/tier/sockets/ConflationDUnitTest.java    |   23 +-
 .../tier/sockets/ConnectionProxyJUnitTest.java     |   25 +-
 .../DataSerializerPropogationDUnitTest.java        |   10 +-
 .../cache/tier/sockets/DeltaEOFException.java      |    2 +-
 .../sockets/DestroyEntryPropagationDUnitTest.java  |    2 +-
 .../sockets/DurableClientBug39997DUnitTest.java    |    2 +-
 .../sockets/DurableClientQueueSizeDUnitTest.java   |   11 +-
 .../DurableClientReconnectAutoDUnitTest.java       |    2 +-
 .../sockets/DurableClientReconnectDUnitTest.java   |    5 +-
 .../tier/sockets/DurableClientStatsDUnitTest.java  |    4 +-
 .../tier/sockets/DurableRegistrationDUnitTest.java |    9 +-
 .../sockets/DurableResponseMatrixDUnitTest.java    |    4 +-
 .../tier/sockets/EventIDVerificationDUnitTest.java |    5 +-
 .../sockets/EventIDVerificationInP2PDUnitTest.java |    2 +-
 .../internal/cache/tier/sockets/FaultyDelta.java   |    2 +-
 .../sockets/FilterProfileIntegrationJUnitTest.java |   11 +-
 .../cache/tier/sockets/FilterProfileJUnitTest.java |   17 +-
 .../sockets/ForceInvalidateEvictionDUnitTest.java  |   15 +-
 .../ForceInvalidateOffHeapEvictionDUnitTest.java   |    4 +-
 .../cache/tier/sockets/HABug36738DUnitTest.java    |    2 +-
 .../tier/sockets/HAInterestPart1DUnitTest.java     |   13 +-
 .../cache/tier/sockets/HAInterestTestCase.java     |   10 +-
 .../sockets/HAStartupAndFailoverDUnitTest.java     |   18 +-
 .../internal/cache/tier/sockets/HandShakeTest.java |    5 +-
 .../sockets/InstantiatorPropagationDUnitTest.java  |    2 +-
 .../cache/tier/sockets/InterestListDUnitTest.java  |   14 +-
 .../sockets/InterestListEndpointDUnitTest.java     |    2 +-
 .../sockets/InterestListEndpointPRDUnitTest.java   |   11 +-
 .../InterestListEndpointSelectorDUnitTest.java     |    8 +-
 .../sockets/InterestListFailoverDUnitTest.java     |    4 +-
 .../sockets/InterestListRecoveryDUnitTest.java     |    2 +-
 .../sockets/InterestRegrListenerDUnitTest.java     |    3 +-
 .../sockets/InterestResultPolicyDUnitTest.java     |    4 +-
 .../cache/tier/sockets/MessageIdExtractorTest.java |    9 +-
 .../cache/tier/sockets/MessageJUnitTest.java       |    2 +-
 .../tier/sockets/NewRegionAttributesDUnitTest.java |   22 +-
 .../tier/sockets/ObjectPartListJUnitTest.java      |    2 +-
 .../internal/cache/tier/sockets/PartTest.java      |    7 +-
 .../tier/sockets/RedundancyLevelJUnitTest.java     |   25 +-
 .../sockets/RedundancyLevelPart1DUnitTest.java     |    2 +-
 .../sockets/RedundancyLevelPart2DUnitTest.java     |    2 +-
 .../sockets/RedundancyLevelPart3DUnitTest.java     |    2 +-
 .../cache/tier/sockets/RegionCloseDUnitTest.java   |    4 +-
 ...isterInterestBeforeRegionCreationDUnitTest.java |    4 +-
 .../sockets/RegisterInterestKeysDUnitTest.java     |    2 +-
 .../sockets/RegisterInterestKeysPRDUnitTest.java   |   11 +-
 .../tier/sockets/ReliableMessagingDUnitTest.java   |    6 +-
 .../tier/sockets/ServerConnectionFactoryTest.java  |   29 +-
 .../cache/tier/sockets/ServerConnectionTest.java   |   25 +-
 .../tier/sockets/UnregisterInterestDUnitTest.java  |   24 +-
 .../tier/sockets/UpdatePropagationDUnitTest.java   |    6 +-
 .../VerifyEventIDGenerationInP2PDUnitTest.java     |    2 +-
 ...ifyUpdatesFromNonInterestEndPointDUnitTest.java |    2 +-
 .../versions/RegionVersionHolderJUnitTest.java     |    8 +-
 .../RegionVersionHolderRandomJUnitTest.java        |    2 +-
 .../versions/RegionVersionVectorJUnitTest.java     |    1 +
 .../cache/versions/TombstoneDUnitTest.java         |    7 +-
 .../cache/wan/AsyncEventQueueTestBase.java         |    8 +-
 .../internal/cache/wan/MyGatewayEventFilter.java   |    6 +-
 .../wan/PossibleDuplicateAsyncEventListener.java   |    6 +-
 ...ilGatewaySenderFlushedCoordinatorJUnitTest.java |   13 +-
 .../AbstractMovingAsyncEventListener.java          |    8 +-
 .../asyncqueue/AsyncEventListenerDUnitTest.java    |   73 +-
 .../AsyncEventListenerOffHeapDUnitTest.java        |    6 +-
 .../asyncqueue/AsyncEventQueueStatsDUnitTest.java  |   13 +-
 .../AsyncEventQueueValidationsJUnitTest.java       |    4 +-
 .../ConcurrentAsyncEventQueueDUnitTest.java        |   19 +-
 .../ConcurrentAsyncEventQueueOffHeapDUnitTest.java |    6 +-
 .../CommonParallelAsyncEventQueueDUnitTest.java    |   11 +-
 ...monParallelAsyncEventQueueOffHeapDUnitTest.java |    6 +-
 ...elGatewaySenderFlushedCoordinatorJUnitTest.java |   35 +-
 .../cache/wan/serial/DestroyMessageTest.java       |    5 +-
 .../cache/xmlcache/AbstractEntityResolverTest.java |   12 +-
 .../cache/xmlcache/CacheCreationJUnitTest.java     |    6 +-
 .../CacheTransactionManagerCreationTest.java       |    5 +-
 .../cache/xmlcache/CacheXmlParserJUnitTest.java    |   43 +-
 .../cache/xmlcache/CacheXmlVersionJUnitTest.java   |    4 +-
 .../cache/xmlcache/DefaultEntityResolver2Test.java |    3 +-
 .../cache/xmlcache/RegionCreationJUnitTest.java    |    4 +-
 .../cache/xmlcache/XmlGeneratorUtilsJUnitTest.java |    3 +-
 .../CompressionCacheConfigDUnitTest.java           |   11 +-
 .../CompressionCacheListenerDUnitTest.java         |   29 +-
 .../CompressionRegionConfigDUnitTest.java          |   59 +-
 .../CompressionRegionFactoryDUnitTest.java         |   23 +-
 .../CompressionRegionOperationsDUnitTest.java      |   28 +-
 .../compression/CompressionStatsDUnitTest.java     |   63 +-
 .../datasource/AbstractPoolCacheJUnitTest.java     |    1 +
 .../internal/datasource/CleanUpJUnitTest.java      |   27 +-
 .../ConnectionPoolCacheImplJUnitTest.java          |   30 +-
 .../datasource/ConnectionPoolingJUnitTest.java     |   46 +-
 .../datasource/DataSourceFactoryJUnitTest.java     |    1 +
 .../internal/datasource/RestartJUnitTest.java      |   24 +-
 .../geode/internal/i18n/BasicI18nJUnitTest.java    |    4 +-
 .../io/CompositeOutputStreamJUnitTest.java         |    2 +-
 ...ainWithChildrenRollingFileHandlerDUnitTest.java |   14 +-
 ...hChildrenRollingFileHandlerIntegrationTest.java |    4 +-
 .../geode/internal/jndi/ContextJUnitTest.java      |    3 +-
 .../internal/jta/BlockingTimeOutJUnitTest.java     |   36 +-
 .../org/apache/geode/internal/jta/CacheUtils.java  |   26 +-
 .../internal/jta/ClientServerJTADUnitTest.java     |    7 +-
 .../geode/internal/jta/DataSourceJTAJUnitTest.java |  146 +-
 .../geode/internal/jta/ExceptionJUnitTest.java     |    1 +
 .../internal/jta/GlobalTransactionJUnitTest.java   |    1 +
 .../org/apache/geode/internal/jta/JTAUtils.java    |   25 +-
 .../internal/jta/JtaIntegrationJUnitTest.java      |   21 +-
 .../internal/jta/SetOperationJTAJUnitTest.java     |   24 +-
 .../internal/jta/TransactionImplJUnitTest.java     |   18 +-
 .../jta/TransactionManagerImplJUnitTest.java       |   18 +-
 .../internal/jta/TransactionTimeOutJUnitTest.java  |    1 +
 .../internal/jta/UserTransactionImplJUnitTest.java |   20 +-
 .../geode/internal/jta/dunit/CommitThread.java     |    2 +-
 .../internal/jta/dunit/ExceptionsDUnitTest.java    |    1 +
 .../internal/jta/dunit/IdleTimeOutDUnitTest.java   |    1 +
 .../internal/jta/dunit/LoginTimeOutDUnitTest.java  |    1 +
 .../internal/jta/dunit/MaxPoolSizeDUnitTest.java   |    1 +
 .../geode/internal/jta/dunit/RollbackThread.java   |    2 +-
 .../jta/dunit/TransactionTimeOutDUnitTest.java     |    1 +
 .../jta/dunit/TxnManagerMultiThreadDUnitTest.java  |   19 +-
 .../internal/jta/dunit/TxnTimeOutDUnitTest.java    |    2 +-
 .../internal/jta/functional/CacheJUnitTest.java    |    4 +-
 .../internal/jta/functional/TestXACacheLoader.java |    2 +-
 .../geode/internal/lang/ClassUtilsJUnitTest.java   |    9 +-
 .../internal/lang/InOutParameterJUnitTest.java     |    2 +-
 .../geode/internal/lang/ObjectUtilsJUnitTest.java  |    2 +-
 .../geode/internal/lang/StringUtilsJUnitTest.java  |   15 +-
 .../lang/SystemPropertyHelperJUnitTest.java        |    3 +-
 .../geode/internal/lang/SystemUtilsJUnitTest.java  |    2 +-
 .../geode/internal/lang/ThreadUtilsJUnitTest.java  |  220 --
 .../geode/internal/lang/ThrowableUtilsTest.java    |    2 +-
 .../logging/DistributedSystemLogFileJUnitTest.java |   39 +-
 .../logging/LogServiceIntegrationJUnitTest.java    |    2 +-
 .../logging/log4j/ConfigLocatorJUnitTest.java      |    2 +-
 .../log4j/FastLoggerIntegrationJUnitTest.java      |   14 +-
 .../FastLoggerWithDefaultConfigJUnitTest.java      |    2 +-
 .../logging/log4j/Log4J2PerformanceTest.java       |   21 +-
 .../geode/internal/logging/log4j/LogLevelTest.java |    5 +-
 .../log4j/LogWriterLoggerPerformanceTest.java      |   21 +-
 .../CustomConfigWithCacheIntegrationTest.java      |   25 +-
 .../net/ClientSocketFactoryIntegrationTest.java    |    2 +-
 .../geode/internal/net/DummySocketCreator.java     |    5 +-
 .../net/SSLConfigurationFactoryJUnitTest.java      |    3 +-
 .../internal/net/SSLSocketIntegrationTest.java     |   37 +-
 .../geode/internal/net/SocketCloserJUnitTest.java  |   15 +-
 .../net/SocketCreatorFactoryJUnitTest.java         |    4 +-
 .../geode/internal/net/SocketCreatorJUnitTest.java |    5 +-
 .../geode/internal/net/SocketUtilsJUnitTest.java   |    2 +-
 .../internal/offheap/FreeListManagerTest.java      |   23 +-
 .../offheap/FreeListOffHeapRegionJUnitTest.java    |    3 +-
 .../geode/internal/offheap/InlineKeyJUnitTest.java |   27 +-
 .../MemoryAllocatorFillPatternIntegrationTest.java |   21 +-
 .../MemoryAllocatorFillPatternJUnitTest.java       |   19 +-
 .../internal/offheap/MemoryBlockNodeJUnitTest.java |   25 +-
 .../internal/offheap/NullOffHeapMemoryStats.java   |    2 +-
 .../offheap/NullOutOfOffHeapMemoryListener.java    |    2 +-
 .../internal/offheap/OffHeapHelperJUnitTest.java   |    2 +-
 .../internal/offheap/OffHeapIndexJUnitTest.java    |   25 +-
 .../geode/internal/offheap/OffHeapRegionBase.java  |   34 +-
 .../offheap/OffHeapRegionEntryHelperJUnitTest.java |    6 +-
 .../internal/offheap/OffHeapStorageJUnitTest.java  |   21 +-
 .../offheap/OffHeapValidationJUnitTest.java        |   35 +-
 .../offheap/OldFreeListOffHeapRegionJUnitTest.java |    3 +-
 .../offheap/ReferenceCountHelperImplTest.java      |    4 +-
 .../offheap/ReferenceCountHelperJUnitTest.java     |   12 +-
 .../offheap/TxReleasesOffHeapOnCloseJUnitTest.java |   17 +-
 .../FileProcessControllerIntegrationTest.java      |    2 +
 .../LocalProcessLauncherDistributedTest.java       |    2 +-
 .../internal/process/NativeProcessUtilsTest.java   |    4 +-
 .../internal/process/PidFileIntegrationTest.java   |    2 +-
 .../security/CallbackInstantiatorTest.java         |    5 +-
 .../security/LegacySecurityServiceTest.java        |    3 +-
 .../security/SecurityServiceFactoryTest.java       |   15 +-
 .../internal/security/SecurityServiceTest.java     |    9 +-
 .../internal/size/ObjectTraverserJUnitTest.java    |   13 +-
 .../statistics/FileSizeLimitIntegrationTest.java   |   17 +-
 .../GemFireStatSamplerIntegrationTest.java         |    2 +-
 .../internal/statistics/SampleCollectorTest.java   |    4 +-
 .../SimpleStatSamplerIntegrationTest.java          |   21 +-
 ...chiveWithMissingResourceTypeRegressionTest.java |    7 +-
 .../StatArchiveWriterReaderIntegrationTest.java    |    2 +-
 .../internal/statistics/StatArchiveWriterTest.java |    3 +-
 .../statistics/StatMonitorHandlerTest.java         |   15 +-
 ...MonitorHandlerWithEnabledMonitorThreadTest.java |   13 +-
 .../statistics/StatSamplerIntegrationTest.java     |    2 +-
 .../internal/statistics/StatSamplerTestCase.java   |    2 +-
 .../StatTypesAreRolledOverRegressionTest.java      |    2 +-
 .../statistics/StatisticsDistributedTest.java      |    4 +-
 .../internal/statistics/StatisticsMonitorTest.java |    4 +-
 .../statistics/ValueMonitorIntegrationTest.java    |   31 +-
 .../internal/stats50/AtomicStatsJUnitTest.java     |   23 +-
 .../geode/internal/tcp/ConnectionJUnitTest.java    |    2 +-
 .../geode/internal/tcp/ConnectionTableTest.java    |   19 +-
 .../apache/geode/internal/tcp/ConnectionTest.java  |    9 +-
 .../apache/geode/internal/util/ArrayUtilsTest.java |    4 +-
 ...BlobHelperWithThreadContextClassLoaderTest.java |    1 -
 .../internal/util/CollectionUtilsJUnitTest.java    |   13 +-
 .../apache/geode/internal/util/HostNameTest.java   |    7 +-
 .../geode/internal/util/IOUtilsJUnitTest.java      |    4 +-
 .../util/concurrent/FutureResultJUnitTest.java     |   13 +-
 .../concurrent/cm/CountedMapLoopsJUnitTest.java    |    3 +-
 .../util/concurrent/cm/IntMapCheckJUnitTest.java   |    1 -
 .../internal/util/concurrent/cm/LoopHelpers.java   |    6 +-
 .../util/concurrent/cm/MapCheckJUnitTest.java      |    1 -
 .../util/concurrent/cm/MapLoopsJUnitTest.java      |    3 +-
 .../concurrent/cm/StringMapLoopsJUnitTest.java     |    3 +-
 .../geode/management/DLockManagementDUnitTest.java |    1 -
 .../geode/management/DiskBackupStatusTest.java     |  105 +
 .../geode/management/DiskManagementDUnitTest.java  |    2 +-
 .../apache/geode/management/JMXMBeanDUnitTest.java |    2 +-
 .../org/apache/geode/management/MBeanUtil.java     |   20 +-
 .../management/OffHeapManagementDUnitTest.java     |    2 +-
 .../geode/management/QueryDataDUnitTest.java       |    2 +-
 .../management/RegionManagementDUnitTest.java      |   11 +-
 .../bean/stats/AsyncEventQueueStatsJUnitTest.java  |    2 +-
 .../stats/DistributedSystemStatsJUnitTest.java     |   23 +-
 .../bean/stats/GatewayMBeanBridgeJUnitTest.java    |    3 +-
 .../management/bean/stats/MBeanStatsTestCase.java  |   16 +-
 .../bean/stats/RegionStatsJUnitTest.java           |    2 +-
 .../internal/CompositeBuilderViaFromTest.java      |    7 +-
 .../internal/CompositeBuilderViaProxyTest.java     |    7 +-
 .../management/internal/IdentityConverterTest.java |    3 +-
 .../management/internal/JettyHelperJUnitTest.java  |    2 +-
 .../beans/DistributedSystemBridgeJUnitTest.java    |    8 +-
 .../cli/AbstractCliAroundInterceptorJUnitTest.java |    4 +-
 .../cli/ClasspathScanLoadHelperJUnitTest.java      |   29 +-
 .../management/internal/cli/CliUtilDUnitTest.java  |  481 ++---
 .../geode/management/internal/cli/CliUtilTest.java |   39 +
 .../internal/cli/CommandManagerJUnitTest.java      |  156 +-
 .../internal/cli/CommandRequestTest.java           |  162 --
 .../internal/cli/GfshParserAutoCompletionTest.java |    2 +-
 .../internal/cli/GfshParserConverterTest.java      |   10 +-
 .../internal/cli/GfshParserJUnitTest.java          |    9 +-
 .../internal/cli/GfshParserParsingTest.java        |  119 +-
 .../internal/cli/HeadlessGfshIntegrationTest.java  |   19 +-
 .../management/internal/cli/NetstatDUnitTest.java  |   38 +-
 .../internal/cli/OptionAliasesParsingTest.java     |   12 +-
 .../internal/cli/TableBuilderJUnitTest.java        |   25 +-
 .../cli/commands/AlterRegionCommandDUnitTest.java  |   16 +-
 .../AlterRegionCommandIntegrationTest.java         |   71 +
 .../commands/ChangeLogLevelCommandDUnitTest.java   |   85 +-
 .../internal/cli/commands/CliCommandTestBase.java  |   27 +-
 .../cli/commands/ConcurrentDeployDUnitTest.java    |   31 +-
 .../internal/cli/commands/ConnectCommandTest.java  |    2 +-
 .../CreateDefinedIndexesCommandDUnitTest.java      |  218 ++
 .../commands/CreateDefinedIndexesCommandTest.java  |  166 ++
 .../cli/commands/CreateRegionCommandDUnitTest.java |   86 +-
 .../CreateRegionCommandIntegrationTest.java        |  588 +++++
 .../cli/commands/CreateRegionCommandTest.java      |  207 +-
 ...DeployCommandFunctionRegistrationDUnitTest.java |   10 +-
 .../commands/DeployCommandRedeployDUnitTest.java   |   24 +-
 .../cli/commands/DeployWithGroupsDUnitTest.java    |   70 +-
 .../DescribeConfigCommandIntegrationTest.java      |   70 +
 .../commands/DescribeConfigCommandJUnitTest.java   |   90 -
 .../cli/commands/DescribeConfigCommandTest.java    |   38 +
 .../commands/DescribeMembersCommandDUnitTest.java  |   30 +-
 .../commands/DestroyGatewaySenderCommandTest.java  |  108 +
 .../commands/DestroyIndexCommandsDUnitTest.java    |  198 ++
 .../commands/DestroyRegionCommandDUnitTest.java    |   87 +-
 .../cli/commands/DestroyRegionCommandTest.java     |   86 +-
 .../cli/commands/DiskStoreCommandsJUnitTest.java   |   75 +-
 .../ExecuteFunctionCommandSecurityTest.java        |   76 +-
 .../cli/commands/ExportDataCommandTest.java        |   40 +
 .../cli/commands/ExportDataIntegrationTest.java    |   27 +-
 .../cli/commands/ExportLogsCommandTest.java        |   30 +-
 .../internal/cli/commands/ExportLogsDUnitTest.java |   20 +-
 .../cli/commands/ExportLogsIntegrationTest.java    |    6 +-
 .../commands/ExportLogsInterceptorJUnitTest.java   |   36 +-
 .../commands/ExportLogsOnServerManagerDUnit.java   |   18 +-
 .../cli/commands/ExportLogsStatsDUnitTest.java     |   14 +-
 .../internal/cli/commands/ExportLogsTestSuite.java |    9 +-
 .../ExportLogsWithMemberGroupDUnitTest.java        |   10 +-
 .../cli/commands/FunctionCommandsDUnitTest.java    |  150 +-
 .../internal/cli/commands/GcCommandDUnitTest.java  |   44 +-
 .../cli/commands/GemfireDataCommandsDUnitTest.java |  827 +-------
 .../cli/commands/GetCommandIntegrationTest.java    |  158 ++
 ...ionWithCacheLoaderDuringCacheMissDUnitTest.java |  390 ----
 .../cli/commands/GfshCommandIntegrationTest.java   |   14 +-
 .../cli/commands/GfshCommandJUnitTest.java         |  635 +-----
 .../cli/commands/ImportDataCommandTest.java        |   39 +
 .../cli/commands/ImportDataIntegrationTest.java    |   42 +-
 .../cli/commands/IndexCommandsIntegrationTest.java |   80 +-
 .../IndexCommandsShareConfigurationDUnitTest.java  |   17 +-
 .../ListAndDescribeDiskStoreCommandsDUnitTest.java |    6 +-
 .../commands/ListAndDescribeRegionDUnitTest.java   |   77 +-
 .../cli/commands/ListIndexCommandDUnitTest.java    |   36 +-
 .../cli/commands/ListIndexCommandJUnitTest.java    |    4 +-
 .../cli/commands/ListMembersCommandDUnitTest.java  |   18 +-
 .../cli/commands/LocateEntryDUnitTest.java         |   96 +
 .../cli/commands/LogLevelInterceptorTest.java      |   21 +-
 .../cli/commands/PutCommandIntegrationTest.java    |  128 ++
 .../internal/cli/commands/QueryCommandTest.java    |  116 +-
 .../cli/commands/QueryCommandUnitTest.java         |   30 -
 .../cli/commands/QueueCommandsDUnitTest.java       |    2 +-
 .../cli/commands/RemoveCommandDUnitTest.java       |   32 +-
 .../cli/commands/RemoveCommandJsonDUnitTest.java   |   14 +-
 .../cli/commands/ShowDeadlockDUnitTest.java        |   13 +-
 .../cli/commands/ShowLogCommandDUnitTest.java      |   59 +-
 .../ShowMetricsCommandIntegrationTest.java         |  171 ++
 .../cli/commands/ShowMetricsCommandJUnitTest.java  |   61 -
 .../cli/commands/ShowMetricsDUnitTest.java         |   55 +-
 .../cli/commands/ShowMetricsJUnitTest.java         |   62 +
 .../commands/ShowMissingDiskStoresDUnitTest.java   |   14 +-
 .../cli/commands/ShutdownCommandDUnitTest.java     |   30 +-
 .../internal/cli/commands/TestCacheLoader.java     |   30 +
 .../internal/cli/commands/TestCacheWriter.java     |   41 +
 .../internal/cli/commands/TestCompressor.java      |   30 +
 .../internal/cli/commands/TestObjectSizer.java     |   26 +
 .../cli/commands/TestObjectSizerNotDeclarable.java |   25 +
 .../cli/commands/TestPartitionResolver.java        |   36 +
 .../cli/commands/ToUpperResultCollector.java       |    8 +-
 .../cli/commands/VersionCommandJUnitTest.java      |   84 +
 .../GfshStatusCommandsIntegrationTest.java         |    8 +-
 .../lifecycle/StartJConsoleCommandTest.java        |    5 +-
 .../cli/converters/LogLevelConverterTest.java      |    7 +-
 .../geode/management/internal/cli/dto/Key.java     |   41 +
 .../geode/management/internal/cli/dto/Value.java   |   30 +
 .../cli/functions/CliFunctionResultTest.java       |   42 +
 .../CreateDefinedIndexesFunctionTest.java          |  226 ++
 .../functions/DataCommandFunctionJUnitTest.java    |   19 +-
 .../DataCommandFunctionWithPDXJUnitTest.java       |   13 +-
 .../DescribeDiskStoreFunctionJUnitTest.java        |   14 +-
 .../cli/functions/ExpirationAttrsTest.java         |   51 +
 .../ExportLogsFunctionIntegrationTest.java         |    2 +-
 .../GatewaySenderDestroyFunctionTest.java          |   87 +
 .../internal/cli/functions/Geode3544JUnitTest.java |   12 +-
 .../functions/ListDiskStoresFunctionJUnitTest.java |    2 +-
 .../cli/functions/ListIndexFunctionJUnitTest.java  |    2 +-
 .../cli/functions/RegionDestroyFunctionTest.java   |   97 +
 .../cli/functions/RegionFunctionArgsTest.java      |   96 +
 .../ShowMissingDiskStoresFunctionJUnitTest.java    |   29 +-
 .../functions/SizeExportLogsFunctionFileTest.java  |   19 +-
 .../cli/functions/SizeExportLogsFunctionTest.java  |    2 +-
 .../internal/cli/help/HelpBlockUnitTest.java       |    5 +-
 .../internal/cli/help/HelperUnitTest.java          |    9 +-
 .../internal/cli/remote/CommandExecutorTest.java   |   79 +-
 .../cli/remote/OnlineCommandProcessorTest.java     |    6 +-
 .../internal/cli/result/CommandResultTest.java     |    4 +-
 .../cli/shell/GfshConfigInitFileJUnitTest.java     |    4 +-
 .../internal/cli/shell/GfshHistoryJUnitTest.java   |   11 +-
 .../cli/shell/GfshMultilineCommandTest.java        |   19 +-
 .../internal/cli/util/BytesToStringTest.java       |    3 +-
 .../cli/util/ExportLogsCacheWriterUnitTest.java    |    5 +-
 .../internal/cli/util/HostUtilsTest.java           |    5 +-
 .../management/internal/cli/util/JdkToolTest.java  |    9 +-
 .../cli/util/LogExporterIntegrationTest.java       |    2 +-
 .../internal/cli/util/LogExporterTest.java         |   19 +-
 .../internal/cli/util/LogFilterTest.java           |   11 +-
 .../internal/cli/util/LogLevelExtractorTest.java   |    3 +-
 .../management/internal/cli/util/LogSizerTest.java |   13 +-
 .../internal/configuration/ClusterConfig.java      |   31 +-
 .../ClusterConfigDeployJarDUnitTest.java           |   36 +-
 .../ClusterConfigDistributionDUnitTest.java        |   47 +-
 .../ClusterConfigImportDUnitTest.java              |   24 +-
 .../configuration/ClusterConfigTestBase.java       |    2 +-
 .../ClusterConfigWithSecurityDUnitTest.java        |   16 +-
 .../ClusterConfigurationServiceDUnitTest.java      |   27 +-
 ...usterConfigurationServiceUsingDirDUnitTest.java |   23 +-
 .../configuration/EventTestCacheWriter.java        |    4 +-
 .../ImportClusterConfigDistributedTest.java        |   25 +-
 .../ImportOldClusterConfigDUnitTest.java           |   12 +-
 .../domain/CacheElementJUnitTest.java              |    7 +-
 .../utils/XmlUtilsAddNewNodeJUnitTest.java         |   56 +-
 .../configuration/utils/XmlUtilsJUnitTest.java     |    2 +-
 .../internal/pulse/TestFunctionsDUnitTest.java     |   17 +-
 .../internal/pulse/TestHeapDUnitTest.java          |   13 +-
 .../internal/pulse/TestLocatorsDUnitTest.java      |   13 +-
 .../security/AccessControlMBeanJUnitTest.java      |   13 +-
 .../CacheServerMBeanAuthenticationJUnitTest.java   |    2 +-
 .../CacheServerMBeanAuthorizationJUnitTest.java    |    4 +-
 ...acheServerMBeanWithShiroIniIntegrationTest.java |    4 +-
 .../internal/security/CliCommandsSecurityTest.java |    4 +-
 .../security/DataCommandsSecurityTest.java         |    4 +-
 .../security/DeployCommandsSecurityTest.java       |    4 +-
 .../security/DiskStoreMXBeanSecurityJUnitTest.java |    4 +-
 .../DistributedSystemMXBeanSecurityTest.java       |    4 +-
 .../security/GatewayReceiverMBeanSecurityTest.java |    4 +-
 .../security/GatewaySenderMBeanSecurityTest.java   |    4 +-
 .../security/GfshCommandsPostProcessorTest.java    |   23 +-
 .../security/GfshCommandsSecurityTest.java         |   10 +-
 .../internal/security/JavaRmiServerNameTest.java   |    5 +-
 .../LockServiceMBeanAuthorizationJUnitTest.java    |    4 +-
 .../internal/security/MBeanSecurityJUnitTest.java  |    4 +-
 .../ManagerMBeanAuthorizationJUnitTest.java        |    4 +-
 .../security/MemberMBeanSecurityJUnitTest.java     |    4 +-
 .../internal/security/MultiUserDUnitTest.java      |   12 +-
 ...urityServiceWithCustomRealmIntegrationTest.java |    5 +-
 ...SecurityServiceWithShiroIniIntegrationTest.java |   13 +-
 .../ReadOpFileAccessControllerJUnitTest.java       |   38 +-
 .../org/apache/geode/management/model/Item.java    |    2 +-
 .../org/apache/geode/management/model/Order.java   |    2 +-
 .../memcached/GemcachedBinaryClientJUnitTest.java  |    9 +-
 .../memcached/GemcachedDevelopmentJUnitTest.java   |   29 +-
 .../geode/pdx/AutoSerializableJUnitTest.java       |   35 +-
 .../org/apache/geode/pdx/ByteSourceJUnitTest.java  |    4 +-
 .../pdx/ClientsWithVersioningRetryDUnitTest.java   |    6 +-
 .../apache/geode/pdx/JSONFormatterJUnitTest.java   |    6 +-
 .../geode/pdx/JSONPdxClientServerDUnitTest.java    |   10 +-
 .../test/java/org/apache/geode/pdx/NestedPdx.java  |    1 -
 .../pdx/OffHeapByteBufferByteSourceJUnitTest.java  |    2 +-
 .../geode/pdx/OffHeapByteSourceJUnitTest.java      |    6 +-
 .../geode/pdx/PDXAsyncEventQueueDUnitTest.java     |   14 +-
 .../apache/geode/pdx/PdxAttributesJUnitTest.java   |   25 +-
 .../apache/geode/pdx/PdxClientServerDUnitTest.java |   15 +-
 .../geode/pdx/PdxDeserializationDUnitTest.java     |   27 +-
 .../geode/pdx/PdxInstanceFactoryJUnitTest.java     |   21 +-
 .../org/apache/geode/pdx/PdxInstanceJUnitTest.java |   33 +-
 .../apache/geode/pdx/PdxSerializableDUnitTest.java |  139 +-
 .../apache/geode/pdx/PdxSerializableJUnitTest.java |   55 +-
 .../org/apache/geode/pdx/PdxStringJUnitTest.java   |    4 +-
 .../apache/geode/pdx/PdxTypeExportDUnitTest.java   |   15 +-
 .../geode/pdx/TestObjectForJSONFormatter.java      |    2 -
 .../java/org/apache/geode/redis/AuthJUnitTest.java |   24 +-
 .../apache/geode/redis/ConcurrentStartTest.java    |   20 +-
 .../org/apache/geode/redis/HashesJUnitTest.java    |   22 +-
 .../org/apache/geode/redis/ListsJUnitTest.java     |   24 +-
 .../org/apache/geode/redis/RedisServerTest.java    |   13 +-
 .../java/org/apache/geode/redis/SetsJUnitTest.java |   21 +-
 .../apache/geode/redis/SortedSetsJUnitTest.java    |   22 +-
 .../org/apache/geode/redis/StringsJunitTest.java   |   20 +-
 .../executor/AbstractScanExecutorTest.java         |    5 +-
 .../CacheFactoryWithSecurityObjectTest.java        |   13 +-
 .../apache/geode/security/ClientAuthDUnitTest.java |   11 +-
 .../security/ClientAuthenticationDUnitTest.java    |   18 +-
 .../security/ClientAuthenticationTestCase.java     |    3 +-
 .../security/ClientAuthorizationDUnitTest.java     |    5 +-
 .../security/ClientAuthorizationTestCase.java      |    2 +-
 .../security/ClientContainsKeyAuthDUnitTest.java   |   11 +-
 .../ClientDestroyInvalidateAuthDUnitTest.java      |   13 +-
 .../security/ClientDestroyRegionAuthDUnitTest.java |    9 +-
 .../ClientExecuteFunctionAuthDUnitTest.java        |    4 +-
 .../ClientExecuteRegionFunctionAuthDUnitTest.java  |    4 +-
 .../geode/security/ClientGetAllAuthDUnitTest.java  |   17 +-
 .../security/ClientGetEntryAuthDUnitTest.java      |   11 +-
 .../geode/security/ClientGetPutAuthDUnitTest.java  |   23 +-
 .../security/ClientRegionClearAuthDUnitTest.java   |    9 +-
 .../ClientRegisterInterestAuthDUnitTest.java       |   15 +-
 .../security/ClientRemoveAllAuthDUnitTest.java     |   13 +-
 .../ClientUnregisterInterestAuthDUnitTest.java     |    9 +-
 .../ClusterConfigWithoutSecurityDUnitTest.java     |    2 +-
 .../security/GemFireSecurityExceptionTest.java     |    1 +
 .../NoShowValue1PostProcessorDUnitTest.java        |   19 +-
 .../geode/security/NotAuthorizedExceptionTest.java |    1 +
 .../geode/security/P2PAuthenticationDUnitTest.java |    6 +-
 .../PDXGfshPostProcessorOnRemoteServerTest.java    |   39 +-
 .../apache/geode/security/PDXPostProcessor.java    |    6 +-
 .../geode/security/PDXPostProcessorDUnitTest.java  |   19 +-
 .../geode/security/PeerAuthenticatorDUnitTest.java |    4 +-
 .../PeerSecurityWithEmbeddedLocatorDUnitTest.java  |   17 +-
 .../geode/security/PostProcessorDUnitTest.java     |   19 +-
 .../security/SecurityClusterConfigDUnitTest.java   |   15 +-
 .../SecurityManagerLifecycleDistributedTest.java   |   15 +-
 .../SecurityManagerLifecycleIntegrationTest.java   |   13 +-
 .../SecurityWithoutClusterConfigDUnitTest.java     |   18 +-
 .../geode/security/SimpleSecurityManagerTest.java  |   11 +-
 .../security/StartServerAuthorizationTest.java     |   16 +-
 .../apache/geode/security/TestSecurityManager.java |   19 +-
 .../generator/AuthzCredentialGenerator.java        |   44 +-
 .../security/generator/CredentialGenerator.java    |   14 +-
 .../generator/LdapUserCredentialGenerator.java     |   15 +-
 .../security/generator/SSLCredentialGenerator.java |    9 +-
 .../UserPasswordWithExtraPropsAuthInit.java        |    8 +-
 .../geode/security/query/QuerySecurityBase.java    |    9 +-
 .../security/templates/DummyAuthorization.java     |    2 +-
 .../templates/FunctionSecurityPrmsHolder.java      |    2 +-
 .../security/templates/LdapUserAuthenticator.java  |    1 +
 .../geode/security/templates/PKCSAuthInit.java     |    4 +-
 .../security/templates/UserPasswordAuthInit.java   |    4 +-
 .../security/templates/UsernamePrincipal.java      |    2 +-
 .../geode/security/templates/XmlAuthorization.java |   27 +-
 .../geode/security/templates/XmlErrorHandler.java  |    4 +-
 .../java/org/apache/geode/sequence/LineMapper.java |    2 +-
 .../apache/geode/sequence/SelectGraphDialog.java   |   14 +-
 .../org/apache/geode/sequence/SequenceDiagram.java |    5 +-
 .../org/apache/geode/sequence/SequencePanel.java   |    3 +-
 .../org/apache/geode/sequence/StateColorMap.java   |    4 +-
 .../java/org/apache/geode/sequence/TimeAxis.java   |    3 +-
 .../org/apache/geode/sequence/ZoomingPanel.java    |    3 +-
 .../java/org/apache/geode/test/dunit/Assert.java   |    2 +-
 .../apache/geode/test/dunit/DUnitBlackboard.java   |    1 +
 .../org/apache/geode/test/dunit/DebuggerUtils.java |    2 +-
 .../geode/test/dunit/DistributedTestUtils.java     |   12 +-
 .../apache/geode/test/dunit/IgnoredException.java  |   14 +-
 .../java/org/apache/geode/test/dunit/Invoke.java   |    4 +-
 .../java/org/apache/geode/test/dunit/Jitter.java   |   10 +-
 .../apache/geode/test/dunit/LogWriterUtils.java    |   17 +-
 .../org/apache/geode/test/dunit/NetworkUtils.java  |   10 +-
 .../geode/test/dunit/SerializableCallable.java     |    2 +-
 .../geode/test/dunit/StoppableWaitCriterion.java   |    2 +-
 .../org/apache/geode/test/dunit/ThreadUtils.java   |   12 +-
 .../test/java/org/apache/geode/test/dunit/VM.java  |    8 +-
 .../java/org/apache/geode/test/dunit/Wait.java     |   18 +-
 .../dunit/cache/internal/JUnit4CacheTestCase.java  |    2 +-
 .../examples/DistributedTestCaseExampleTest.java   |    1 -
 .../dunit/internal/DUnitBlackboardDUnitTest.java   |   11 +-
 .../dunit/internal/InternalBlackboardImpl.java     |    4 +-
 .../test/dunit/rules/CleanupDUnitVMsRule.java      |    5 +-
 .../test/dunit/rules/LocatorServerStartupRule.java |   75 +-
 .../apache/geode/test/dunit/rules/MemberVM.java    |   25 +-
 .../dunit/rules/tests/MemberStarterRuleTest.java   |    2 +-
 .../geode/test/dunit/standalone/ChildVM.java       |    2 +-
 .../geode/test/dunit/standalone/DUnitLauncher.java |   13 +-
 .../test/dunit/standalone/ProcessManager.java      |   16 +-
 .../test/dunit/standalone/VersionManager.java      |    6 +-
 .../dunit/standalone/VersionManagerJUnitTest.java  |    3 +-
 .../geode/test/dunit/tests/BasicDUnitTest.java     |    2 +-
 .../test/dunit/tests/JUnit4BasicDUnitTest.java     |    4 +-
 ...ridingGetPropertiesDisconnectsAllDUnitTest.java |   15 +-
 .../java/org/apache/geode/test/fake/Fakes.java     |   13 +-
 .../golden/FailWithErrorInOutputJUnitTest.java     |    2 +-
 .../golden/FailWithExtraLineInOutputJUnitTest.java |    4 +-
 ...ailWithLineMissingFromEndOfOutputJUnitTest.java |    2 +-
 ...WithLineMissingFromMiddleOfOutputJUnitTest.java |    2 +-
 .../FailWithLoggerErrorInOutputJUnitTest.java      |    2 +-
 .../FailWithLoggerFatalInOutputJUnitTest.java      |    2 +-
 .../FailWithLoggerWarnInOutputJUnitTest.java       |    2 +-
 .../golden/FailWithProblemInOutputTestCase.java    |    2 +-
 .../golden/FailWithSevereInOutputJUnitTest.java    |    2 +-
 .../golden/FailWithWarningInOutputJUnitTest.java   |    2 +-
 .../apache/geode/test/golden/GoldenComparator.java |    2 +-
 .../geode/test/golden/GoldenStringComparator.java  |    2 +-
 .../apache/geode/test/golden/GoldenTestCase.java   |   20 +-
 .../apache/geode/test/golden/PassJUnitTest.java    |    4 +-
 .../golden/PassWithExpectedErrorJUnitTest.java     |    2 +-
 .../golden/PassWithExpectedProblemTestCase.java    |    2 +-
 .../golden/PassWithExpectedSevereJUnitTest.java    |    2 +-
 .../golden/PassWithExpectedWarningJUnitTest.java   |    2 +-
 .../geode/test/golden/RegexGoldenComparator.java   |    2 +-
 .../geode/test/golden/StringGoldenComparator.java  |    2 +-
 .../test/junit/assertions/CommandResultAssert.java |  266 +++
 .../junit/assertions/CommandResultExecution.java   |   35 +
 .../geode/test/junit/rules/GfshCommandRule.java    |  268 +++
 .../geode/test/junit/rules/GfshParserRule.java     |    6 +
 .../test/junit/rules/GfshShellConnectionRule.java  |  292 ---
 .../org/apache/geode/test/junit/rules/Locator.java |    2 +
 .../geode/test/junit/rules/LocatorStarterRule.java |    7 +-
 .../org/apache/geode/test/junit/rules/Member.java  |    1 -
 .../geode/test/junit/rules/MemberStarterRule.java  |   26 +
 .../org/apache/geode/test/junit/rules/Server.java  |    5 +-
 .../geode/test/junit/rules/ServerStarterRule.java  |    1 -
 .../apache/geode/test/process/MainLauncher.java    |    2 +-
 .../geode/test/process/ProcessOutputReader.java    |    2 +-
 .../apache/geode/test/process/ProcessWrapper.java  |    8 +-
 .../test/process/ProcessWrapperJUnitTest.java      |    2 +-
 .../java/org/apache/geode/util/JSR166TestCase.java |    2 +-
 .../java/org/apache/geode/util/test/TestUtil.java  |   10 +-
 .../java/org/apache/persistence/admin/Logger.java  |   36 +-
 .../org/apache/persistence/logging/Logger.java     |    2 +-
 .../persistence/logging/SimpleFormatter.java       |    1 -
 .../java/parReg/query/unittest/NewPortfolio.java   |    6 +-
 .../test/java/parReg/query/unittest/Position.java  |    5 +-
 .../org.springframework.shell.core.CommandMarker   |    8 -
 .../apache/geode/codeAnalysis/excludedClasses.txt  |  386 +++-
 .../org/apache/geode/codeAnalysis/openBugs.txt     |    3 -
 .../codeAnalysis/sanctionedDataSerializables.txt   |   12 +-
 .../geode/codeAnalysis/sanctionedSerializables.txt |  239 +--
 .../BackupIntegrationTest.cache.xml}               |    0
 .../cli/commands/golden-help-offline.properties    |   10 +-
 .../geode/cache/client/internal/CloseCQOp.java     |    6 +-
 .../geode/cache/client/internal/CreateCQOp.java    |   20 +-
 .../cache/client/internal/CreateCQWithIROp.java    |    4 +-
 .../cache/client/internal/GetDurableCQsOp.java     |    6 +-
 .../cache/client/internal/ServerCQProxyImpl.java   |   16 +-
 .../geode/cache/client/internal/StopCQOp.java      |    6 +-
 .../cache/query/internal/cq/ClientCQImpl.java      |    4 +-
 .../query/internal/cq/CqAttributesMutatorImpl.java |    6 +-
 .../cache/query/internal/cq/CqConflatable.java     |   18 +-
 .../geode/cache/query/internal/cq/CqEventImpl.java |    3 +-
 .../cache/query/internal/cq/CqListenerImpl.java    |    2 +-
 .../geode/cache/query/internal/cq/CqQueryImpl.java |   20 +-
 .../cache/query/internal/cq/CqServiceImpl.java     |   14 +-
 .../query/internal/cq/CqServiceStatisticsImpl.java |    6 +-
 .../cache/query/internal/cq/CqServiceVsdStats.java |   24 +-
 .../cache/query/internal/cq/CqStatisticsImpl.java  |   12 +-
 .../cache/query/internal/cq/ServerCQImpl.java      |   10 +-
 .../cache/tier/sockets/command/ExecuteCQ.java      |    9 +-
 .../cache/query/cq/dunit/CqDataDUnitTest.java      |   41 +-
 .../cq/dunit/CqDataOptimizedExecuteDUnitTest.java  |   11 +-
 .../CqDataUsingPoolOptimizedExecuteDUnitTest.java  |   11 +-
 .../cache/query/cq/dunit/CqPerfDUnitTest.java      |   31 +-
 .../query/cq/dunit/CqPerfUsingPoolDUnitTest.java   |   27 +-
 .../cache/query/cq/dunit/CqQueryDUnitTest.java     |   60 +-
 .../cq/dunit/CqQueryOptimizedExecuteDUnitTest.java |   11 +-
 .../query/cq/dunit/CqQueryUsingPoolDUnitTest.java  |   24 +-
 .../CqQueryUsingPoolOptimizedExecuteDUnitTest.java |   11 +-
 .../cq/dunit/CqResultSetUsingPoolDUnitTest.java    |   37 +-
 ...esultSetUsingPoolOptimizedExecuteDUnitTest.java |   17 +-
 .../dunit/CqSecurityAuthorizedUserDUnitTest.java   |    3 -
 .../cache/query/cq/dunit/CqStateDUnitTest.java     |    1 -
 .../cache/query/cq/dunit/CqStatsDUnitTest.java     |    4 +-
 .../cq/dunit/CqStatsOptimizedExecuteDUnitTest.java |   11 +-
 .../query/cq/dunit/CqStatsUsingPoolDUnitTest.java  |    6 +-
 .../cache/query/cq/dunit/CqTimeTestListener.java   |   12 +-
 .../dunit/PartitionedRegionCqQueryDUnitTest.java   |   12 +-
 ...onedRegionCqQueryOptimizedExecuteDUnitTest.java |   11 +-
 .../query/cq/dunit/PrCqUsingPoolDUnitTest.java     |   37 +-
 .../PrCqUsingPoolOptimizedExecuteDUnitTest.java    |   11 +-
 .../cache/query/dunit/PdxQueryCQDUnitTest.java     |   21 +-
 .../query/dunit/QueryIndexUpdateRIDUnitTest.java   |   35 +-
 .../cache/query/dunit/QueryMonitorDUnitTest.java   |   19 +-
 .../cache/query/internal/cq/CqServiceUnitTest.java |    5 +-
 .../cache/snapshot/ClientSnapshotDUnitTest.java    |    2 +-
 .../AnalyzeCQSerializablesJUnitTest.java           |    3 +-
 .../cache/PRDeltaPropagationDUnitTest.java         |    6 +-
 .../geode/internal/cache/PutAllCSDUnitTest.java    |    8 +-
 .../cache/RemoteCQTransactionDUnitTest.java        |   23 +-
 .../internal/cache/ha/CQListGIIDUnitTest.java      |   18 +-
 .../internal/cache/ha/HADispatcherDUnitTest.java   |   33 +-
 .../tier/sockets/ClientServerMiscBCDUnitTest.java  |   18 +-
 .../tier/sockets/ClientToServerDeltaDUnitTest.java |   17 +-
 .../sockets/DeltaPropagationWithCQDUnitTest.java   |   12 +-
 ...ltaToRegionRelationCQRegistrationDUnitTest.java |   11 +-
 .../tier/sockets/DurableClientCrashDUnitTest.java  |    3 +-
 .../sockets/DurableClientNetDownDUnitTest.java     |    5 +-
 .../tier/sockets/DurableClientSimpleDUnitTest.java |   12 +-
 .../cache/tier/sockets/DurableClientTestCase.java  |   18 +-
 .../commands/DurableClientCommandsDUnitTest.java   |    2 +-
 .../management/internal/pulse/TestCQDUnitTest.java |   13 +-
 .../internal/pulse/TestClientsDUnitTest.java       |   15 +-
 .../internal/pulse/TestServerDUnitTest.java        |   13 +-
 .../security/CQPDXPostProcessorDUnitTest.java      |   23 +-
 .../geode/security/CQPostProcessorDunitTest.java   |    2 +-
 .../security/ClientAuthorizationCQDUnitTest.java   |    4 +-
 .../security/ClientAuthzObjectModDUnitTest.java    |   21 +-
 .../geode/security/ClientCQAuthDUnitTest.java      |    2 +-
 .../ClientCQPostAuthorizationDUnitTest.java        |    2 +-
 .../security/ClientPostAuthorizationDUnitTest.java |    2 +-
 .../geode/security/ClientQueryAuthDUnitTest.java   |    2 +-
 .../geode/security/MultiUserAPIDUnitTest.java      |   24 +-
 .../security/MultiUserDurableCQAuthzDUnitTest.java |    2 +-
 .../data_regions/managing_data_regions.html.md.erb |    3 +-
 .../gfsh_config_troubleshooting.html.md.erb        |    4 +-
 .../gfsh_load_from_shared_dir.html.md.erb          |    4 -
 .../persisting_configurations.html.md.erb          |    6 +-
 .../running/change_file_spec.html.md.erb           |   19 +-
 .../running/deploying_config_jar_files.html.md.erb |    6 +-
 .../system_requirements/host_machine.html.md.erb   |   11 +-
 .../file_names_and_extensions.html.md.erb          |   15 +-
 .../disk_storage/how_disk_stores_work.html.md.erb  |   17 +-
 .../monitor_tune/chapter_overview.html.md.erb      |    4 +
 .../disabling_tcp_syn_cookies.html.md.erb          |   42 +
 .../reference/topics/gfe_cache_xml.html.md.erb     |    2 +-
 .../gfsh/command-pages/create.html.md.erb          |    6 +-
 .../gfsh/command-pages/start.html.md.erb           |    6 +-
 geode-json/src/main/java/org/json/JSONArray.java   |    6 +-
 .../src/main/java/org/json/JSONException.java      |    2 +-
 geode-json/src/main/java/org/json/JSONObject.java  |   96 +-
 geode-json/src/main/java/org/json/JSONString.java  |    2 +-
 .../src/main/java/org/json/JSONStringer.java       |    2 +-
 geode-json/src/main/java/org/json/JSONTokener.java |    2 +-
 .../apache/geode/test/compiler/ClassBuilder.java   |   22 +-
 .../test/junit/rules/ConditionalIgnoreRule.java    |    1 +
 .../geode/test/junit/rules/IgnoreUntilRule.java    |    3 +-
 .../apache/geode/test/junit/rules/RepeatRule.java  |    1 +
 .../geode/test/junit/rules/RestoreLocaleRule.java  |   10 +-
 .../apache/geode/test/junit/rules/RetryRule.java   |    8 +-
 .../apache/geode/test/junit/rules/RuleList.java    |    8 +-
 .../geode/test/junit/rules/TemporaryFileRule.java  |    2 +-
 .../junit/rules/UseJacksonForJsonPathRule.java     |    2 +-
 .../geode/test/junit/rules/gfsh/GfshExecution.java |   81 +-
 .../geode/test/junit/rules/gfsh/GfshRule.java      |   21 +-
 .../geode/test/junit/rules/gfsh/GfshScript.java    |   47 +-
 .../geode/test/junit/rules/gfsh/ProcessLogger.java |   89 -
 .../geode/test/junit/rules/gfsh/StreamGobbler.java |   44 -
 .../test/junit/rules/gfsh/internal/OutputLine.java |   45 +
 .../junit/rules/gfsh/internal/ProcessLogger.java   |  105 +
 .../junit/rules/gfsh/internal/StreamGobbler.java   |   44 +
 .../serializable/SerializableErrorCollector.java   |    4 +-
 .../rules/serializable/SerializableRuleList.java   |    7 +-
 .../serializable/SerializableTemporaryFolder.java  |    4 +-
 .../rules/serializable/SerializableTestName.java   |    6 +-
 .../rules/serializable/SerializableTimeout.java    |    4 +-
 .../geode/test/junit/runners/SuiteBlockRunner.java |    2 +-
 .../test/junit/support/DefaultIgnoreCondition.java |    1 +
 .../test/junit/rules/ExpectedTimeoutRuleTest.java  |    2 +-
 .../test/junit/rules/IgnoreUntilRuleTest.java      |    2 +-
 .../geode/test/junit/rules/RepeatRuleTest.java     |    2 +-
 .../test/junit/rules/RestoreLocaleRuleTest.java    |    2 +-
 .../junit/rules/RetryRuleGlobalWithErrorTest.java  |    4 +-
 .../rules/RetryRuleGlobalWithExceptionTest.java    |    4 +-
 .../junit/rules/RetryRuleLocalWithErrorTest.java   |    2 +-
 .../rules/RetryRuleLocalWithExceptionTest.java     |    2 +-
 .../geode/test/junit/rules/RuleListTest.java       |    7 +-
 .../test/junit/rules/TemporaryFileRuleTest.java    |    2 +-
 .../junit/rules/examples/RetryRuleExampleTest.java |    5 +-
 .../junit/rules/examples/RuleAndClassRuleTest.java |    5 +-
 .../SerializableExternalResourceTest.java          |    9 +-
 .../serializable/SerializableRuleListTest.java     |    5 +-
 .../SerializableTemporaryFolderTest.java           |   11 +-
 .../serializable/SerializableTestNameTest.java     |    9 +-
 .../serializable/SerializableTestWatcherTest.java  |    9 +-
 .../serializable/SerializableTimeoutTest.java      |   11 +-
 ...CategoryWithParameterizedRunnerFactoryTest.java |   19 +-
 .../geode/cache/lucene/FlatFormatSerializer.java   |   62 +-
 .../geode/cache/lucene/LuceneIndexFactory.java     |   12 +-
 .../geode/cache/lucene/LuceneQueryFactory.java     |    5 +-
 .../geode/cache/lucene/LuceneQueryProvider.java    |    7 +-
 .../geode/cache/lucene/LuceneResultStruct.java     |    3 +-
 .../geode/cache/lucene/LuceneSerializer.java       |   17 +-
 .../apache/geode/cache/lucene/LuceneService.java   |   29 +-
 .../geode/cache/lucene/LuceneServiceProvider.java  |    4 +-
 .../cache/lucene/PageableLuceneQueryResults.java   |    6 +-
 .../AbstractPartitionedRepositoryManager.java      |    8 +-
 .../geode/cache/lucene/internal/IndexListener.java |    5 +-
 .../lucene/internal/IndexListenerAdapter.java      |    5 +-
 .../lucene/internal/IndexRepositoryFactory.java    |   10 +-
 .../cache/lucene/internal/InternalLuceneIndex.java |    4 +-
 .../lucene/internal/InternalLuceneService.java     |    4 +-
 .../lucene/internal/LuceneBucketListener.java      |    5 +-
 .../cache/lucene/internal/LuceneEventListener.java |   15 +-
 .../internal/LuceneIndexCreationProfile.java       |   24 +-
 .../lucene/internal/LuceneIndexFactoryImpl.java    |   27 +-
 .../internal/LuceneIndexForPartitionedRegion.java  |    4 +-
 .../cache/lucene/internal/LuceneIndexImpl.java     |    6 +-
 .../lucene/internal/LuceneIndexImplFactory.java    |    4 +-
 .../lucene/internal/LuceneQueryFactoryImpl.java    |    4 +-
 .../cache/lucene/internal/LuceneQueryImpl.java     |    9 +-
 .../cache/lucene/internal/LuceneRawIndex.java      |    4 +-
 .../lucene/internal/LuceneRawIndexFactory.java     |    4 +-
 .../lucene/internal/LuceneRegionListener.java      |   23 +-
 .../lucene/internal/LuceneResultStructImpl.java    |    4 +-
 .../cache/lucene/internal/LuceneServiceImpl.java   |   81 +-
 .../internal/PageableLuceneQueryResultsImpl.java   |    6 +-
 .../internal/PartitionedRepositoryManager.java     |    8 +-
 .../lucene/internal/RawIndexRepositoryFactory.java |    2 +-
 .../internal/RawLuceneRepositoryManager.java       |    2 +-
 .../cache/lucene/internal/StringQueryProvider.java |    6 +-
 .../lucene/internal/cli/LuceneIndexCommands.java   |  101 +-
 .../lucene/internal/cli/LuceneIndexDetails.java    |    4 +-
 .../cli/functions/LuceneCreateIndexFunction.java   |    2 +-
 .../cli/functions/LuceneDescribeIndexFunction.java |    2 +-
 .../cli/functions/LuceneListIndexFunction.java     |    2 +-
 .../cli/functions/LuceneSearchIndexFunction.java   |    3 +-
 .../internal/directory/DumpDirectoryFiles.java     |   10 +-
 .../lucene/internal/directory/FileIndexInput.java  |    4 +-
 .../lucene/internal/directory/RegionDirectory.java |   25 +-
 .../internal/distributed/CollectorManager.java     |    8 +-
 .../lucene/internal/distributed/EntryScore.java    |    4 +-
 .../distributed/LuceneFunctionContext.java         |    6 +-
 .../internal/distributed/LuceneQueryFunction.java  |   21 +-
 .../lucene/internal/distributed/TopEntries.java    |    6 +-
 .../internal/distributed/TopEntriesCollector.java  |    4 +-
 .../distributed/TopEntriesCollectorManager.java    |    4 +-
 .../distributed/TopEntriesFunctionCollector.java   |    6 +-
 .../distributed/WaitUntilFlushedFunction.java      |    4 +-
 .../WaitUntilFlushedFunctionContext.java           |    4 +-
 .../cache/lucene/internal/filesystem/ChunkKey.java |    4 +-
 .../cache/lucene/internal/filesystem/File.java     |    6 +-
 .../internal/filesystem/FileInputStream.java       |    4 +-
 .../internal/filesystem/FileOutputStream.java      |    4 +-
 .../lucene/internal/filesystem/FileSystem.java     |    7 +-
 .../internal/filesystem/SeekableInputStream.java   |    6 +-
 .../internal/management/LuceneServiceBridge.java   |   12 +-
 .../internal/management/LuceneServiceMBean.java    |    4 +-
 .../partition/BucketTargetingFixedResolver.java    |    6 +-
 .../internal/partition/BucketTargetingMap.java     |    6 +-
 .../internal/repository/IndexRepository.java       |   22 +-
 .../internal/repository/IndexRepositoryImpl.java   |   31 +-
 .../internal/repository/IndexResultCollector.java  |    6 +-
 .../internal/repository/RepositoryManager.java     |    6 +-
 .../serializer/HeterogeneousLuceneSerializer.java  |    7 +-
 .../repository/serializer/PdxLuceneSerializer.java |   10 +-
 .../repository/serializer/PrimitiveSerializer.java |    4 +-
 .../serializer/ReflectionLuceneSerializer.java     |    5 +-
 .../repository/serializer/SerializerUtil.java      |    6 +-
 .../internal/results/LuceneGetPageFunction.java    |   20 +-
 .../internal/results/MapResultCollector.java       |    8 +-
 .../cache/lucene/internal/results/PageEntry.java   |    8 +-
 .../cache/lucene/internal/results/PageResults.java |    6 +-
 .../lucene/internal/xml/LuceneIndexCreation.java   |   21 +-
 .../internal/xml/LuceneIndexXmlGenerator.java      |   18 +-
 .../internal/xml/LuceneServiceXmlGenerator.java    |    4 +-
 .../lucene/internal/xml/LuceneXmlConstants.java    |    4 +-
 .../cache/lucene/internal/xml/LuceneXmlParser.java |   11 +-
 .../lucene/management/LuceneIndexMetrics.java      |    4 +-
 .../org.springframework.shell.core.CommandMarker   |    2 -
 .../geode/cache/lucene/EvictionDUnitTest.java      |   29 +-
 .../geode/cache/lucene/ExpirationDUnitTest.java    |   21 +-
 .../lucene/FlatFormatPdxSerializerJunitTest.java   |  170 ++
 .../lucene/FlatFormatSerializerJUnitTest.java      |  127 +-
 .../apache/geode/cache/lucene/LocalCacheRule.java  |   41 +
 .../lucene/LuceneCommandsSecurityDUnitTest.java    |   32 +-
 .../apache/geode/cache/lucene/LuceneDUnitTest.java |    5 +-
 .../cache/lucene/LuceneIndexCreationDUnitTest.java |  136 +-
 .../lucene/LuceneIndexCreationIntegrationTest.java |   62 +-
 .../LuceneIndexCreationOffHeapIntegrationTest.java |   17 +-
 .../LuceneIndexCreationOnFixedPRDUnitTest.java     |    9 +-
 .../cache/lucene/LuceneIndexDestroyDUnitTest.java  |   35 +-
 .../LuceneIndexMaintenanceIntegrationTest.java     |   14 +-
 .../geode/cache/lucene/LuceneIntegrationTest.java  |   10 +-
 .../cache/lucene/LuceneQueriesAccessorBase.java    |   14 +-
 .../cache/lucene/LuceneQueriesClientDUnitTest.java |    5 +-
 .../geode/cache/lucene/LuceneQueriesDUnitTest.java |   17 +-
 .../LuceneSearchWithRollingUpgradeDUnit.java       |  119 +-
 .../NestedObjectSeralizerIntegrationTest.java      |  356 +++-
 .../geode/cache/lucene/PaginationDUnitTest.java    |   27 +-
 .../geode/cache/lucene/RebalanceDUnitTest.java     |   15 +-
 .../lucene/RebalanceWithRedundancyDUnitTest.java   |   18 +-
 .../internal/LuceneEventListenerJUnitTest.java     |   11 +-
 .../LuceneIndexCreationProfileJUnitTest.java       |   43 +-
 .../internal/LuceneIndexFactoryImplJUnitTest.java  |    4 +-
 .../LuceneIndexForPartitionedRegionTest.java       |    1 +
 .../LuceneIndexRecoveryHAIntegrationTest.java      |   31 +-
 .../lucene/internal/LuceneIndexStatsJUnitTest.java |   10 +-
 .../internal/LuceneQueryFactoryImplJUnitTest.java  |    4 +-
 .../lucene/internal/LuceneQueryImplJUnitTest.java  |   23 +-
 .../internal/LuceneRegionListenerJUnitTest.java    |    7 +-
 .../internal/LuceneResultStructImpJUnitTest.java   |    4 +-
 .../internal/LuceneServiceImplIntegrationTest.java |   27 +-
 .../internal/LuceneServiceImplJUnitTest.java       |   16 +-
 .../PageableLuceneQueryResultsImplJUnitTest.java   |    8 +-
 .../PartitionedRepositoryManagerJUnitTest.java     |   14 +-
 .../RawLuceneRepositoryManagerJUnitTest.java       |    4 +-
 .../internal/StringQueryProviderJUnitTest.java     |    5 +-
 .../internal/cli/LuceneIndexCommandsDUnitTest.java |  167 +-
 .../internal/cli/LuceneIndexCommandsJUnitTest.java |   26 +-
 .../LuceneCreateIndexFunctionJUnitTest.java        |    3 +-
 .../LuceneDescribeIndexFunctionJUnitTest.java      |   14 +-
 .../LuceneSearchIndexFunctionJUnitTest.java        |    8 +-
 .../LuceneClusterConfigurationDUnitTest.java       |   67 +-
 .../directory/DumpDirectoryFilesJUnitTest.java     |   14 +-
 .../directory/RegionDirectoryJUnitTest.java        |    7 +-
 .../distributed/DistributedScoringJUnitTest.java   |    4 +-
 .../internal/distributed/EntryScoreJUnitTest.java  |    4 +-
 .../LuceneQueryFunctionContextJUnitTest.java       |    4 +-
 .../distributed/LuceneQueryFunctionJUnitTest.java  |   27 +-
 .../distributed/TopEntriesCollectorJUnitTest.java  |    4 +-
 .../TopEntriesFunctionCollectorJUnitTest.java      |    4 +-
 .../internal/distributed/TopEntriesJUnitTest.java  |    4 +-
 .../WaitUntilFlushedFunctionJUnitTest.java         |   14 +-
 .../internal/filesystem/ChunkKeyJUnitTest.java     |    4 +-
 .../lucene/internal/filesystem/FileJUnitTest.java  |    4 +-
 .../internal/filesystem/FileSystemJUnitTest.java   |    6 +-
 .../filesystem/FileSystemStatsJUnitTest.java       |   10 +-
 .../management/LuceneManagementDUnitTest.java      |   25 +-
 .../BucketTargetingFixedResolverTest.java          |   13 +-
 .../internal/partition/BucketTargetingMapTest.java |    5 +-
 .../repository/IndexRepositoryImplJUnitTest.java   |   10 +-
 .../IndexRepositoryImplPerformanceTest.java        |    6 +-
 .../HeterogeneousLuceneSerializerJUnitTest.java    |    4 +-
 .../serializer/PdxFieldMapperJUnitTest.java        |    4 +-
 .../serializer/ReflectionFieldMapperJUnitTest.java |    4 +-
 .../serializer/SerializerTestHelper.java           |    1 +
 .../internal/repository/serializer/Type1.java      |    4 +-
 .../internal/repository/serializer/Type2.java      |    4 +-
 .../results/LuceneGetPageFunctionJUnitTest.java    |   11 +-
 .../internal/results/PageEntryJUnitTest.java       |   11 +-
 .../internal/results/PageResultsJUnitTest.java     |    9 +-
 ...uceneIndexXmlGeneratorIntegrationJUnitTest.java |   31 +-
 .../xml/LuceneIndexXmlGeneratorJUnitTest.java      |   12 +-
 .../LuceneIndexXmlParserIntegrationJUnitTest.java  |   49 +-
 .../xml/LuceneIndexXmlParserJUnitTest.java         |    4 +-
 .../cache/lucene/test/IndexRepositorySpy.java      |    8 +-
 .../test/LuceneDeclarable2TestSerializer.java      |    4 +-
 .../cache/lucene/test/LuceneTestSerializer.java    |   11 +-
 .../cache/lucene/test/LuceneTestUtilities.java     |    9 +-
 .../com/gemstone/gemfire/GemFireException.java     |    2 +-
 .../execute/EmtpyRegionFunctionException.java      |   10 +-
 .../gemfire/cache/execute/FunctionException.java   |   19 +-
 .../execute/FunctionInvocationTargetException.java |   16 +-
 .../cache/execute/FunctionExceptionTest.java       |    9 +-
 .../apache/geode/OldClientSupportDUnitTest.java    |   14 +-
 geode-protobuf/build.gradle                        |    1 +
 .../tier/sockets/ClientProtocolMessageHandler.java |   37 -
 .../tier/sockets/MessageExecutionContext.java      |  104 -
 .../internal/protocol/ProtobufCachePipeline.java   |   78 -
 .../internal/protocol/ProtobufLocatorPipeline.java |   55 -
 .../internal/protocol/ProtobufProtocolService.java |  103 -
 .../protocol/operations/OperationHandler.java      |   39 -
 .../protocol/protobuf/EncodingTypeTranslator.java  |   66 -
 .../geode/internal/protocol/protobuf/Failure.java  |   48 -
 .../protocol/protobuf/OperationContext.java        |   67 -
 .../protocol/protobuf/ProtobufOpsProcessor.java    |   80 -
 .../protobuf/ProtobufSerializationService.java     |   55 -
 .../protocol/protobuf/ProtobufStreamProcessor.java |   79 -
 .../protocol/protobuf/ProtocolErrorCode.java       |   41 -
 .../geode/internal/protocol/protobuf/Result.java   |   29 -
 .../geode/internal/protocol/protobuf/Success.java  |   48 -
 .../operations/GetAllRequestOperationHandler.java  |  106 -
 .../GetAvailableServersOperationHandler.java       |   62 -
 .../GetRegionNamesRequestOperationHandler.java     |   41 -
 .../GetRegionRequestOperationHandler.java          |   58 -
 .../operations/GetRequestOperationHandler.java     |   77 -
 .../operations/PutAllRequestOperationHandler.java  |   95 -
 .../operations/PutRequestOperationHandler.java     |   74 -
 .../operations/RemoveRequestOperationHandler.java  |   71 -
 .../registry/OperationContextRegistry.java         |  104 -
 .../protocol/protobuf/security/Authenticator.java  |   43 -
 .../protocol/protobuf/security/Authorizer.java     |   21 -
 .../security/InvalidConfigAuthenticator.java       |   51 -
 .../protobuf/security/NoOpAuthenticator.java       |   34 -
 .../protocol/protobuf/security/NoOpAuthorizer.java |   27 -
 .../security/ProtobufShiroAuthenticator.java       |   87 -
 .../protobuf/security/ProtobufShiroAuthorizer.java |   45 -
 .../serializer/ProtobufProtocolSerializer.java     |   43 -
 .../protobuf/statistics/NoOpStatistics.java        |   47 -
 .../statistics/ProtobufClientStatistics.java       |   31 -
 .../statistics/ProtobufClientStatisticsImpl.java   |   15 +-
 .../protobuf/utilities/ProtobufPrimitiveTypes.java |   49 -
 .../utilities/ProtobufRequestUtilities.java        |  118 --
 .../utilities/ProtobufResponseUtilities.java       |   61 -
 .../protobuf/utilities/ProtobufUtilities.java      |  288 ---
 .../exception/UnknownProtobufPrimitiveType.java    |   24 -
 .../protobuf/v1/EncodingTypeTranslator.java        |   68 +
 .../protobuf/v1/ProtobufCachePipeline.java         |   60 +
 .../protobuf/v1/ProtobufLocatorPipeline.java       |   58 +
 .../protobuf/v1/ProtobufOperationContext.java      |   38 +
 .../protocol/protobuf/v1/ProtobufOpsProcessor.java |   82 +
 .../protobuf/v1/ProtobufProtocolService.java       |   67 +
 .../protobuf/v1/ProtobufSerializationService.java  |   55 +
 .../protobuf/v1/ProtobufStreamProcessor.java       |   79 +
 .../operations/GetAllRequestOperationHandler.java  |  111 +
 .../GetAvailableServersOperationHandler.java       |   63 +
 .../GetRegionNamesRequestOperationHandler.java     |   42 +
 .../GetRegionRequestOperationHandler.java          |   59 +
 .../v1/operations/GetRequestOperationHandler.java  |   78 +
 .../HandshakeRequestOperationHandler.java          |   64 +
 .../operations/PutAllRequestOperationHandler.java  |   98 +
 .../v1/operations/PutRequestOperationHandler.java  |   77 +
 .../operations/RemoveRequestOperationHandler.java  |   73 +
 .../AuthenticationRequestOperationHandler.java     |   83 +
 .../registry/ProtobufOperationContextRegistry.java |  121 ++
 .../v1/serializer/ProtobufProtocolSerializer.java  |   42 +
 ...onnectionShiroAuthenticatingStateProcessor.java |   56 +
 .../ProtobufConnectionHandshakeStateProcessor.java |   57 +
 .../v1/utilities/ProtobufPrimitiveTypes.java       |   49 +
 .../v1/utilities/ProtobufRequestUtilities.java     |  118 ++
 .../v1/utilities/ProtobufResponseUtilities.java    |   64 +
 .../protobuf/v1/utilities/ProtobufUtilities.java   |  282 +++
 .../exception/UnknownProtobufPrimitiveType.java    |   24 +
 .../protocol/serializer/ProtocolSerializer.java    |   34 -
 .../serialization/SerializationService.java        |   34 -
 .../internal/serialization/SerializationType.java  |   32 -
 .../geode/internal/serialization/TypeCodec.java    |   36 -
 .../internal/serialization/codec/JSONCodec.java    |   39 -
 .../UnsupportedEncodingTypeException.java          |   31 -
 .../registry/SerializationCodecRegistry.java       |   67 -
 .../CodecAlreadyRegisteredForTypeException.java    |   28 -
 .../CodecNotRegisteredForTypeException.java        |   27 -
 .../src/main/proto/authentication_API.proto        |   25 -
 geode-protobuf/src/main/proto/basicTypes.proto     |   88 -
 geode-protobuf/src/main/proto/clientProtocol.proto |   76 -
 geode-protobuf/src/main/proto/region_API.proto     |   95 -
 geode-protobuf/src/main/proto/server_API.proto     |   32 -
 geode-protobuf/src/main/proto/v1/basicTypes.proto  |   88 +
 .../src/main/proto/v1/clientProtocol.proto         |   78 +
 .../src/main/proto/v1/connection_API.proto         |   45 +
 geode-protobuf/src/main/proto/v1/region_API.proto  |   95 +
 geode-protobuf/src/main/proto/v1/server_API.proto  |   32 +
 ...nal.cache.client.protocol.ClientProtocolService |    1 +
 ...ternal.cache.tier.sockets.ClientProtocolService |    1 -
 ...g.apache.geode.internal.serialization.TypeCodec |    1 -
 .../GenericProtocolServerConnectionTest.java       |    3 +-
 .../protocol/AuthenticationIntegrationTest.java    |  339 ---
 .../protocol/AuthorizationIntegrationTest.java     |  212 --
 .../geode/internal/protocol/MessageUtil.java       |   74 -
 .../apache/geode/internal/protocol/OpsHandler.java |   21 -
 .../protocol/ProtobufProtocolServiceJUnitTest.java |   37 -
 .../internal/protocol/TestExecutionContext.java    |   32 +
 .../acceptance/CacheConnectionJUnitTest.java       |  270 ---
 .../CacheConnectionTimeoutJUnitTest.java           |  163 --
 .../acceptance/CacheMaxConnectionJUnitTest.java    |  238 ---
 .../acceptance/CacheOperationsJUnitTest.java       |  410 ----
 .../acceptance/LocatorConnectionDUnitTest.java     |  262 ---
 ...TypeToSerializationTypeTranslatorJUnitTest.java |    6 +-
 .../ProtobufShiroAuthenticatorJUnitTest.java       |  117 -
 .../protobuf/ProtobufStreamProcessorTest.java      |   20 +-
 .../protobuf/ProtobufTestExecutionContext.java     |   32 -
 .../GetAllRequestOperationHandlerJUnitTest.java    |  182 --
 ...tAvailableServersOperationHandlerJUnitTest.java |  112 -
 ...egionNamesRequestOperationHandlerJUnitTest.java |   98 -
 .../GetRegionRequestOperationHandlerJUnitTest.java |  102 -
 .../GetRequestOperationHandlerJUnitTest.java       |  138 --
 .../operations/OperationHandlerJUnitTest.java      |   38 -
 .../PutAllRequestOperationHandlerJUnitTest.java    |  135 --
 .../PutRequestOperationHandlerJUnitTest.java       |  136 --
 .../RemoveRequestOperationHandlerJUnitTest.java    |  127 --
 .../utilities/ProtobufUtilitiesJUnitTest.java      |  159 --
 .../protobuf/v1/AuthenticationIntegrationTest.java |  347 +++
 .../protobuf/v1/AuthorizationIntegrationTest.java  |  223 ++
 .../protobuf/v1/HandshakeIntegrationTest.java      |  125 ++
 .../internal/protocol/protobuf/v1/MessageUtil.java |   71 +
 .../v1/ProtobufProtocolServiceJUnitTest.java       |   37 +
 .../v1/acceptance/CacheConnectionJUnitTest.java    |  286 +++
 .../CacheConnectionTimeoutJUnitTest.java           |  164 ++
 .../v1/acceptance/CacheMaxConnectionJUnitTest.java |  249 +++
 .../v1/acceptance/CacheOperationsJUnitTest.java    |  407 ++++
 .../v1/acceptance/LocatorConnectionDUnitTest.java  |  264 +++
 .../GetAllRequestOperationHandlerJUnitTest.java    |  183 ++
 ...tAvailableServersOperationHandlerJUnitTest.java |  114 +
 ...egionNamesRequestOperationHandlerJUnitTest.java |  104 +
 .../GetRegionRequestOperationHandlerJUnitTest.java |  105 +
 .../GetRequestOperationHandlerJUnitTest.java       |  144 ++
 .../HandshakeRequestOperationHandlerJUnitTest.java |  175 ++
 .../v1/operations/OperationHandlerJUnitTest.java   |   38 +
 .../PutAllRequestOperationHandlerJUnitTest.java    |  135 ++
 .../PutRequestOperationHandlerJUnitTest.java       |  143 ++
 .../RemoveRequestOperationHandlerJUnitTest.java    |  131 ++
 .../v1/serialization/codec/JSONCodecJUnitTest.java |  231 ++
 .../registry/CodecRegistryJUnitTest.java           |   49 +
 .../ProtobufProtocolSerializerJUnitTest.java       |   75 +
 .../v1/utilities/ProtobufUtilitiesJUnitTest.java   |  160 ++
 .../ProtobufProtocolSerializerJUnitTest.java       |   75 -
 .../serialization/codec/JSONCodecJUnitTest.java    |  229 --
 .../registry/CodecRegistryJUnitTest.java           |   49 -
 .../{ => protobuf/v1}/acceptance/default.keystore  |  Bin
 .../tools/pulse/internal/PulseAppListener.java     |   14 +-
 .../controllers/ExceptionHandlingAdvice.java       |    4 +-
 .../internal/controllers/PulseController.java      |   36 +-
 .../geode/tools/pulse/internal/data/Cluster.java   |   19 +-
 .../tools/pulse/internal/data/DataBrowser.java     |   28 +-
 .../tools/pulse/internal/data/IClusterUpdater.java |    8 +-
 .../tools/pulse/internal/data/JMXDataUpdater.java  |   50 +-
 .../pulse/internal/data/JmxManagerFinder.java      |   16 +-
 .../tools/pulse/internal/data/PulseConfig.java     |    6 +-
 .../tools/pulse/internal/data/PulseVersion.java    |    4 +-
 .../tools/pulse/internal/data/Repository.java      |   12 +-
 .../internal/security/GemFireAuthentication.java   |    7 +-
 .../security/GemFireAuthenticationProvider.java    |   10 +-
 .../pulse/internal/security/LogoutHandler.java     |   23 +-
 .../internal/service/ClusterDetailsService.java    |   16 +-
 .../service/ClusterDiskThroughputService.java      |    9 +-
 .../internal/service/ClusterGCPausesService.java   |   11 +-
 .../service/ClusterKeyStatisticsService.java       |   11 +-
 .../internal/service/ClusterMemberService.java     |   24 +-
 .../service/ClusterMembersRGraphService.java       |   28 +-
 .../service/ClusterMemoryUsageService.java         |   11 +-
 .../internal/service/ClusterRegionService.java     |   22 +-
 .../internal/service/ClusterRegionsService.java    |   28 +-
 .../service/ClusterSelectedRegionService.java      |   22 +-
 .../ClusterSelectedRegionsMemberService.java       |   19 +-
 .../internal/service/ClusterWANInfoService.java    |   14 +-
 .../service/MemberAsynchEventQueuesService.java    |   11 +-
 .../internal/service/MemberClientsService.java     |   13 +-
 .../internal/service/MemberDetailsService.java     |   16 +-
 .../service/MemberDiskThroughputService.java       |   11 +-
 .../internal/service/MemberGCPausesService.java    |   11 +-
 .../internal/service/MemberGatewayHubService.java  |   18 +-
 .../internal/service/MemberHeapUsageService.java   |   11 +-
 .../service/MemberKeyStatisticsService.java        |   11 +-
 .../internal/service/MemberRegionsService.java     |   16 +-
 .../pulse/internal/service/MembersListService.java |   11 +-
 .../tools/pulse/internal/service/PulseService.java |    4 +-
 .../internal/service/PulseServiceFactory.java      |    2 +-
 .../internal/service/PulseVersionService.java      |    9 +-
 .../internal/service/QueryStatisticsService.java   |    4 +-
 .../internal/service/SystemAlertsService.java      |   13 +-
 .../tools/pulse/internal/util/ConnectionUtil.java  |    2 +-
 .../tools/pulse/internal/util/IPAddressUtil.java   |    4 +-
 .../geode/tools/pulse/internal/util/TimeUtils.java |   10 +-
 .../src/main/webapp/WEB-INF/spring-security.xml    |    1 +
 .../controllers/PulseControllerJUnitTest.java      |   12 +-
 .../tools/pulse/internal/PulseAppListenerTest.java |    3 +-
 .../data/JMXDataUpdaterGetDoubleAttributeTest.java |    5 +-
 .../internal/security/LogoutHandlerUnitTest.java   |  103 +
 .../pulse/testbed/GemFireDistributedSystem.java    |    8 +-
 .../tools/pulse/testbed/PropMockDataUpdater.java   |   37 +-
 .../org/apache/geode/tools/pulse/tests/Server.java |   19 +-
 .../tools/pulse/tests/junit/BaseServiceTest.java   |   19 +-
 .../junit/ClusterSelectedRegionServiceTest.java    |    3 +-
 .../ClusterSelectedRegionsMemberServiceTest.java   |    3 +-
 .../tests/junit/MemberGatewayHubServiceTest.java   |    3 +-
 .../pulse/tests/rules/ScreenshotOnFailureRule.java |    9 +-
 .../geode/tools/pulse/tests/rules/ServerRule.java  |   13 +-
 .../tools/pulse/tests/rules/WebDriverRule.java     |    4 +-
 .../pulse/tests/ui/PulseAnonymousUserTest.java     |    9 +-
 .../geode/tools/pulse/tests/ui/PulseAuthTest.java  |    9 +-
 .../tools/pulse/tests/ui/PulseAutomatedTest.java   |   10 +-
 .../geode/tools/pulse/tests/ui/PulseBase.java      |   17 +-
 .../tools/pulse/tests/ui/PulseNoAuthTest.java      |    9 +-
 .../org/apache/geode/cache/util/AutoBalancer.java  |   10 +-
 .../util/AutoBalancerIntegrationJUnitTest.java     |   35 +-
 .../client/internal/GatewaySenderBatchOp.java      |   16 +-
 .../geode/cache/client/internal/SenderProxy.java   |    2 +-
 .../internal/locator/wan/LocatorDiscovery.java     |   11 +-
 .../client/internal/locator/wan/LocatorHelper.java |   14 +-
 .../locator/wan/LocatorMembershipListenerImpl.java |   25 +-
 .../locator/wan/RemoteLocatorJoinRequest.java      |    6 +-
 .../locator/wan/RemoteLocatorJoinResponse.java     |    6 +-
 .../locator/wan/RemoteLocatorPingRequest.java      |    2 +-
 .../locator/wan/RemoteLocatorPingResponse.java     |    2 +-
 .../internal/locator/wan/RemoteLocatorRequest.java |    2 +-
 .../locator/wan/RemoteLocatorResponse.java         |    2 +-
 .../locator/wan/WanLocatorDiscovererImpl.java      |   13 +-
 .../internal/cache/wan/GatewayReceiverImpl.java    |    4 +-
 .../wan/GatewaySenderEventRemoteDispatcher.java    |    1 -
 ...currentParallelGatewaySenderEventProcessor.java |    2 +-
 .../RemoteParallelGatewaySenderEventProcessor.java |    2 +-
 .../RemoteSerialGatewaySenderEventProcessor.java   |    4 +-
 ...tewayReceiverAutoConnectionSourceDUnitTest.java |   13 +-
 .../cache/wan/WANRollingUpgradeDUnitTest.java      |   66 +-
 .../AnalyzeWANSerializablesJUnitTest.java          |    3 +-
 .../internal/cache/UpdateVersionDUnitTest.java     |   24 +-
 .../cache/wan/AckReaderThreadJUnitTest.java        |   17 +-
 .../cache/wan/Simple2CacheServerDUnitTest.java     |   17 +-
 .../geode/internal/cache/wan/WANTestBase.java      |  166 +-
 .../ConcurrentParallelGatewaySenderDUnitTest.java  |   14 +-
 ...rrentParallelGatewaySenderOffHeapDUnitTest.java |    6 +-
 ...ParallelGatewaySenderOperation_1_DUnitTest.java |   25 +-
 ...ParallelGatewaySenderOperation_2_DUnitTest.java |   15 +-
 ...rentSerialGatewaySenderOperationsDUnitTest.java |   13 +-
 ...ialGatewaySenderOperationsOffHeapDUnitTest.java |    6 +-
 .../ConcurrentWANPropagation_1_DUnitTest.java      |   22 +-
 .../ConcurrentWANPropagation_2_DUnitTest.java      |   13 +-
 .../misc/CommonParallelGatewaySenderDUnitTest.java |   19 +-
 ...ommonParallelGatewaySenderOffHeapDUnitTest.java |    6 +-
 .../NewWANConcurrencyCheckForDestroyDUnitTest.java |   13 +-
 .../wan/misc/NewWanAuthenticationDUnitTest.java    |    4 +-
 .../cache/wan/misc/PDXNewWanDUnitTest.java         |   26 +-
 ...atedRegion_ParallelWANPersistenceDUnitTest.java |    9 +-
 ...atedRegion_ParallelWANPropagationDUnitTest.java |   11 +-
 .../cache/wan/misc/WANConfigurationJUnitTest.java  |   29 +-
 .../internal/cache/wan/misc/WANSSLDUnitTest.java   |   11 +-
 .../cache/wan/misc/WanAutoDiscoveryDUnitTest.java  |   78 +-
 .../cache/wan/misc/WanValidationsDUnitTest.java    |   36 +-
 ...lGatewaySenderOperation_2_OffHeapDUnitTest.java |    9 +-
 ...lGatewaySenderOperation_2_OffHeapDUnitTest.java |    9 +-
 ...lelGatewaySenderOperationsOffHeapDUnitTest.java |    9 +-
 ...GatewaySenderQueueOverflowOffHeapDUnitTest.java |    9 +-
 .../ParallelWANConflationOffHeapDUnitTest.java     |    9 +-
 ...stenceEnabledGatewaySenderOffHeapDUnitTest.java |    9 +-
 ...ANPropagationConcurrentOpsOffHeapDUnitTest.java |    9 +-
 .../ParallelWANPropagationOffHeapDUnitTest.java    |    9 +-
 .../SerialGatewaySenderQueueOffHeapDUnitTest.java  |    9 +-
 ...stenceEnabledGatewaySenderOffHeapDUnitTest.java |    9 +-
 .../SerialWANPropagationOffHeapDUnitTest.java      |    3 +-
 ...pagation_PartitionedRegionOffHeapDUnitTest.java |    3 +-
 ...ParallelGatewaySenderOperation_2_DUnitTest.java |   11 +-
 .../ParallelGatewaySenderOperationsDUnitTest.java  |    2 +-
 ...arallelGatewaySenderQueueOverflowDUnitTest.java |    2 +-
 .../parallel/ParallelWANConflationDUnitTest.java   |   17 +-
 ...ANPersistenceEnabledGatewaySenderDUnitTest.java |   19 +-
 ...rallelWANPropagationConcurrentOpsDUnitTest.java |   17 +-
 .../parallel/ParallelWANPropagationDUnitTest.java  |   27 +-
 .../ParallelWANPropagationLoopBackDUnitTest.java   |   11 +-
 .../wan/parallel/ParallelWANStatsDUnitTest.java    |  124 +-
 ...lGatewaySenderDistributedDeadlockDUnitTest.java |   11 +-
 .../SerialGatewaySenderEventListenerDUnitTest.java |   12 +-
 .../SerialGatewaySenderOperationsDUnitTest.java    |   21 +-
 .../serial/SerialGatewaySenderQueueDUnitTest.java  |    2 +-
 ...ANPersistenceEnabledGatewaySenderDUnitTest.java |   19 +-
 .../wan/serial/SerialWANPropagationDUnitTest.java  |   12 +-
 .../SerialWANPropagationLoopBackDUnitTest.java     |   11 +-
 ...lWANPropagation_PartitionedRegionDUnitTest.java |   11 +-
 .../SerialWANPropagationsFeatureDUnitTest.java     |    9 +-
 .../cache/wan/serial/SerialWANStatsDUnitTest.java  |   24 +-
 ...teAndDestroyGatewaySenderCommandsDUnitTest.java |  348 +--
 .../CreateGatewayReceiverCommandDUnitTest.java     |  634 +++---
 .../CreateGatewaySenderCommandDUnitTest.java       |   73 +-
 .../DestroyGatewaySenderCommandDUnitTest.java      |   73 +-
 .../PauseGatewaySenderCommandDUnitTest.java        |  261 ++-
 .../ResumeGatewaySenderCommandDUnitTest.java       |  336 +--
 .../StartGatewayReceiverCommandDUnitTest.java      |  256 ++-
 .../StartGatewaySenderCommandDUnitTest.java        |  264 ++-
 .../StatusGatewayReceiverCommandDUnitTest.java     |  185 +-
 .../StatusGatewaySenderCommandDUnitTest.java       |  263 ++-
 .../StopGatewayReceiverCommandDUnitTest.java       |  264 ++-
 .../StopGatewaySenderCommandDUnitTest.java         |  264 ++-
 .../cache/wan/wancommand/WANCommandTestBase.java   |  559 -----
 .../cache/wan/wancommand/WANCommandUtils.java      |  339 +++
 .../wan/wancommand/WanCommandListDUnitTest.java    |  248 ++-
 .../geode/management/WANManagementDUnitTest.java   |   20 +-
 .../ClusterConfigurationDUnitTest.java             |  511 -----
 ...rConfigurationIndexWithFromClauseDUnitTest.java |   16 +-
 .../WANClusterConfigurationDUnitTest.java          |  156 ++
 .../internal/pulse/TestRemoteClusterDUnitTest.java |   14 +-
 .../web/controllers/AbstractBaseController.java    |   62 +-
 .../web/controllers/BaseControllerAdvice.java      |   16 +-
 .../web/controllers/FunctionAccessController.java  |    6 +-
 .../web/controllers/PdxBasedCrudController.java    |    8 +-
 .../web/controllers/QueryAccessController.java     |   12 +-
 .../web/controllers/support/QueryResultTypes.java  |    2 +-
 .../web/controllers/support/RegionData.java        |   22 +-
 .../web/controllers/support/RegionEntryData.java   |    9 +-
 .../internal/web/controllers/support/UpdateOp.java |    1 -
 .../exception/DataTypeNotSupportedException.java   |    7 +-
 .../web/exception/GemfireRestException.java        |    6 +-
 .../web/exception/MalformedJsonException.java      |    2 +-
 .../web/exception/RegionNotFoundException.java     |    2 +-
 .../web/exception/ResourceNotFoundException.java   |    2 +-
 .../CustomMappingJackson2HttpMessageConverter.java |    2 +-
 .../web/security/GeodeAuthenticationProvider.java  |   15 +-
 .../internal/web/security/RestSecurityService.java |    4 +-
 .../internal/web/swagger/config/SwaggerConfig.java |    3 +-
 .../geode/rest/internal/web/util/ArrayUtils.java   |    2 +-
 .../rest/internal/web/util/DateTimeUtils.java      |    3 +-
 .../rest/internal/web/util/IdentifiableUtils.java  |    2 +-
 .../geode/rest/internal/web/util/JsonWriter.java   |   27 +-
 .../geode/rest/internal/web/util/NumberUtils.java  |    4 +-
 .../rest/internal/web/util/ValidationUtils.java    |    3 +-
 .../AbstractBaseControllerJUnitTest.java           |    5 +-
 .../web/controllers/support/RegionDataTest.java    |    3 +-
 .../cli/commands/AlterRuntimeCommandDUnitTest.java |  206 +-
 .../commands/ClusterConfigurationDUnitTest.java    |   27 +-
 .../cli/commands/CommandOverHttpDUnitTest.java     |   12 +-
 .../internal/cli/commands/CommandOverHttpTest.java |   23 +-
 .../commands/ConnectCommandIntegrationTest.java    |   10 +-
 .../cli/commands/ConnectCommandWithSSLTest.java    |   70 +-
 .../commands/ConnectCommandWithSecurityTest.java   |   22 +-
 .../commands/DescribeConfigCommandDUnitTest.java   |   19 +-
 ...xecuteFunctionCommandWithSecurityDUnitTest.java |   14 +-
 .../cli/commands/ExportConfigCommandDUnitTest.java |   18 +-
 .../ExportLogsOverHttpIntegrationTest.java         |    9 +-
 .../commands/ExportLogsStatsOverHttpDUnitTest.java |   17 +-
 .../FunctionCommandsOverHttpDUnitTest.java         |    7 +-
 .../cli/commands/IndexCommandOverHttpTest.java     |    4 +-
 .../ListIndexCommandOverHttpDUnitTest.java         |    7 +-
 .../security/GfshCommandsOverHttpSecurityTest.java |    5 +-
 .../internal/security/LogNoPasswordTest.java       |    8 +-
 .../support/LoginHandlerInterceptorJUnitTest.java  |    2 +-
 ...inHandlerInterceptorRequestHeaderJUnitTest.java |    9 +-
 .../web/domain/QueryParameterSourceJUnitTest.java  |    8 +-
 ...lizableObjectHttpMessageConverterJUnitTest.java |    2 +-
 .../HttpOperationInvokerMBeanOperationTest.java    |    8 +-
 .../shell/HttpOperationInvokerSecurityTest.java    |   14 +-
 .../internal/web/util/ConvertUtilsJUnitTest.java   |   10 +-
 settings.gradle                                    |    2 +
 5207 files changed, 133689 insertions(+), 141752 deletions(-)
 create mode 100644 ci/docker/Dockerfile
 create mode 100644 ci/docker/cache_dependencies.sh
 create mode 100644 ci/pipelines/develop.yml
 create mode 100644 ci/pipelines/docker-images.yml
 create mode 100644 ci/pipelines/meta.yml
 create mode 100755 ci/scripts/build.sh
 create mode 100644 geode-assembly/src/test/java/org/apache/geode/management/internal/cli/commands/PutCommandWithJsonTest.java
 create mode 100644 geode-assembly/src/test/java/org/apache/geode/tools/pulse/PulseSecurityIntegrationTest.java
 create mode 100644 geode-client-protocol/build.gradle
 create mode 100644 geode-client-protocol/src/main/java/org/apache/geode/internal/protocol/ClientProtocolMessageHandler.java
 create mode 100644 geode-client-protocol/src/main/java/org/apache/geode/internal/protocol/Failure.java
 create mode 100644 geode-client-protocol/src/main/java/org/apache/geode/internal/protocol/MessageExecutionContext.java
 create mode 100644 geode-client-protocol/src/main/java/org/apache/geode/internal/protocol/OperationContext.java
 create mode 100644 geode-client-protocol/src/main/java/org/apache/geode/internal/protocol/ProtocolErrorCode.java
 create mode 100644 geode-client-protocol/src/main/java/org/apache/geode/internal/protocol/Result.java
 create mode 100644 geode-client-protocol/src/main/java/org/apache/geode/internal/protocol/Success.java
 rename {geode-protobuf => geode-client-protocol}/src/main/java/org/apache/geode/internal/protocol/exception/InvalidProtocolMessageException.java (100%)
 create mode 100644 geode-client-protocol/src/main/java/org/apache/geode/internal/protocol/operations/OperationHandler.java
 create mode 100644 geode-client-protocol/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/serializer/ProtocolSerializer.java
 create mode 100644 geode-client-protocol/src/main/java/org/apache/geode/internal/protocol/security/exception/IncompatibleAuthenticationMechanismsException.java
 create mode 100644 geode-client-protocol/src/main/java/org/apache/geode/internal/protocol/serialization/SerializationService.java
 create mode 100644 geode-client-protocol/src/main/java/org/apache/geode/internal/protocol/serialization/SerializationType.java
 create mode 100644 geode-client-protocol/src/main/java/org/apache/geode/internal/protocol/serialization/TypeCodec.java
 create mode 100644 geode-client-protocol/src/main/java/org/apache/geode/internal/protocol/serialization/codec/JSONCodec.java
 create mode 100644 geode-client-protocol/src/main/java/org/apache/geode/internal/protocol/serialization/exception/UnsupportedEncodingTypeException.java
 create mode 100644 geode-client-protocol/src/main/java/org/apache/geode/internal/protocol/serialization/registry/SerializationCodecRegistry.java
 create mode 100644 geode-client-protocol/src/main/java/org/apache/geode/internal/protocol/serialization/registry/exception/CodecAlreadyRegisteredForTypeException.java
 create mode 100644 geode-client-protocol/src/main/java/org/apache/geode/internal/protocol/serialization/registry/exception/CodecNotRegisteredForTypeException.java
 create mode 100644 geode-client-protocol/src/main/java/org/apache/geode/internal/protocol/state/ConnectionAuthenticatingStateProcessor.java
 create mode 100644 geode-client-protocol/src/main/java/org/apache/geode/internal/protocol/state/ConnectionHandshakingStateProcessor.java
 create mode 100644 geode-client-protocol/src/main/java/org/apache/geode/internal/protocol/state/ConnectionShiroAuthorizingStateProcessor.java
 create mode 100644 geode-client-protocol/src/main/java/org/apache/geode/internal/protocol/state/ConnectionStateProcessor.java
 create mode 100644 geode-client-protocol/src/main/java/org/apache/geode/internal/protocol/state/LegacySecurityConnectionStateProcessor.java
 create mode 100644 geode-client-protocol/src/main/java/org/apache/geode/internal/protocol/state/NoSecurityConnectionStateProcessor.java
 create mode 100644 geode-client-protocol/src/main/java/org/apache/geode/internal/protocol/state/exception/ConnectionStateException.java
 create mode 100644 geode-client-protocol/src/main/java/org/apache/geode/internal/protocol/statistics/NoOpStatistics.java
 create mode 100644 geode-client-protocol/src/main/java/org/apache/geode/internal/protocol/statistics/ProtocolClientStatistics.java
 create mode 100644 geode-client-protocol/src/main/resources/META-INF/services/org.apache.geode.internal.protocol.serialization.TypeCodec
 delete mode 100644 geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/JdbcSynchronousWriter.java
 create mode 100644 geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/JdbcWriter.java
 delete mode 100644 geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcSynchronousWriterIntegrationTest.java
 delete mode 100644 geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcSynchronousWriterTest.java
 create mode 100644 geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcWriterIntegrationTest.java
 create mode 100644 geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcWriterTest.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/admin/internal/BackupDataStoreHelper.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/admin/internal/BackupDataStoreResult.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/admin/internal/FinishBackupRequest.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/admin/internal/FinishBackupResponse.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/admin/internal/FlushToDiskRequest.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/admin/internal/FlushToDiskResponse.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/admin/internal/PrepareBackupRequest.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/admin/internal/PrepareBackupResponse.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/VersionDescription.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/AbstractDiskRegionEntry.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/AbstractLRURegionEntry.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/AbstractOplogDiskRegionEntry.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/AbstractRegionEntry.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/BackupLock.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/BackupManager.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/DiskEntry.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/HasDiskRegion.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/InternalDistributedRegion.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/LatestLastAccessTimeMessage.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/LatestLastAccessTimeOperation.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/LatestLastAccessTimeReplyProcessor.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/LeafRegionEntry.cpp
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/OffHeapRegionEntry.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsDiskLRURegionEntry.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsDiskLRURegionEntryHeap.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsDiskLRURegionEntryHeapIntKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsDiskLRURegionEntryHeapLongKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsDiskLRURegionEntryHeapObjectKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsDiskLRURegionEntryHeapStringKey1.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsDiskLRURegionEntryHeapStringKey2.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsDiskLRURegionEntryHeapUUIDKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsDiskLRURegionEntryOffHeap.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsDiskLRURegionEntryOffHeapIntKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsDiskLRURegionEntryOffHeapLongKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsDiskLRURegionEntryOffHeapObjectKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsDiskLRURegionEntryOffHeapStringKey1.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsDiskLRURegionEntryOffHeapStringKey2.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsDiskLRURegionEntryOffHeapUUIDKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsDiskRegionEntry.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsDiskRegionEntryHeap.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsDiskRegionEntryHeapIntKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsDiskRegionEntryHeapLongKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsDiskRegionEntryHeapObjectKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsDiskRegionEntryHeapStringKey1.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsDiskRegionEntryHeapStringKey2.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsDiskRegionEntryHeapUUIDKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsDiskRegionEntryOffHeap.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsDiskRegionEntryOffHeapIntKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsDiskRegionEntryOffHeapLongKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsDiskRegionEntryOffHeapObjectKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsDiskRegionEntryOffHeapStringKey1.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsDiskRegionEntryOffHeapStringKey2.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsDiskRegionEntryOffHeapUUIDKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsLRURegionEntry.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsLRURegionEntryHeap.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsLRURegionEntryHeapIntKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsLRURegionEntryHeapLongKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsLRURegionEntryHeapObjectKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsLRURegionEntryHeapStringKey1.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsLRURegionEntryHeapStringKey2.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsLRURegionEntryHeapUUIDKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsLRURegionEntryOffHeap.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsLRURegionEntryOffHeapIntKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsLRURegionEntryOffHeapLongKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsLRURegionEntryOffHeapObjectKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsLRURegionEntryOffHeapStringKey1.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsLRURegionEntryOffHeapStringKey2.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsLRURegionEntryOffHeapUUIDKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsRegionEntry.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsRegionEntryHeap.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsRegionEntryHeapIntKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsRegionEntryHeapLongKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsRegionEntryHeapObjectKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsRegionEntryHeapStringKey1.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsRegionEntryHeapStringKey2.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsRegionEntryHeapUUIDKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsRegionEntryOffHeap.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsRegionEntryOffHeapIntKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsRegionEntryOffHeapLongKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsRegionEntryOffHeapObjectKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsRegionEntryOffHeapStringKey1.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsRegionEntryOffHeapStringKey2.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMStatsRegionEntryOffHeapUUIDKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinDiskLRURegionEntry.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinDiskLRURegionEntryHeap.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinDiskLRURegionEntryHeapIntKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinDiskLRURegionEntryHeapLongKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinDiskLRURegionEntryHeapObjectKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinDiskLRURegionEntryHeapStringKey1.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinDiskLRURegionEntryHeapStringKey2.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinDiskLRURegionEntryHeapUUIDKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinDiskLRURegionEntryOffHeap.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinDiskLRURegionEntryOffHeapIntKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinDiskLRURegionEntryOffHeapLongKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinDiskLRURegionEntryOffHeapObjectKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinDiskLRURegionEntryOffHeapStringKey1.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinDiskLRURegionEntryOffHeapStringKey2.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinDiskLRURegionEntryOffHeapUUIDKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinDiskRegionEntry.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinDiskRegionEntryHeap.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinDiskRegionEntryHeapIntKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinDiskRegionEntryHeapLongKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinDiskRegionEntryHeapObjectKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinDiskRegionEntryHeapStringKey1.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinDiskRegionEntryHeapStringKey2.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinDiskRegionEntryHeapUUIDKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinDiskRegionEntryOffHeap.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinDiskRegionEntryOffHeapIntKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinDiskRegionEntryOffHeapLongKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinDiskRegionEntryOffHeapObjectKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinDiskRegionEntryOffHeapStringKey1.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinDiskRegionEntryOffHeapStringKey2.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinDiskRegionEntryOffHeapUUIDKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinLRURegionEntry.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinLRURegionEntryHeap.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinLRURegionEntryHeapIntKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinLRURegionEntryHeapLongKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinLRURegionEntryHeapObjectKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinLRURegionEntryHeapStringKey1.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinLRURegionEntryHeapStringKey2.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinLRURegionEntryHeapUUIDKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinLRURegionEntryOffHeap.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinLRURegionEntryOffHeapIntKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinLRURegionEntryOffHeapLongKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinLRURegionEntryOffHeapObjectKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinLRURegionEntryOffHeapStringKey1.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinLRURegionEntryOffHeapStringKey2.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinLRURegionEntryOffHeapUUIDKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntry.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryHeap.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryHeapIntKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryHeapLongKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryHeapObjectKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryHeapStringKey1.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryHeapStringKey2.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryHeapUUIDKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryOffHeap.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryOffHeapIntKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryOffHeapLongKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryOffHeapObjectKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryOffHeapStringKey1.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryOffHeapStringKey2.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryOffHeapUUIDKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskLRURegionEntry.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskLRURegionEntryHeap.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskLRURegionEntryHeapIntKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskLRURegionEntryHeapLongKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskLRURegionEntryHeapObjectKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskLRURegionEntryHeapStringKey1.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskLRURegionEntryHeapStringKey2.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskLRURegionEntryHeapUUIDKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskLRURegionEntryOffHeap.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskLRURegionEntryOffHeapIntKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskLRURegionEntryOffHeapLongKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskLRURegionEntryOffHeapObjectKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskLRURegionEntryOffHeapStringKey1.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskLRURegionEntryOffHeapStringKey2.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskLRURegionEntryOffHeapUUIDKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskRegionEntry.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskRegionEntryHeap.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskRegionEntryHeapIntKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskRegionEntryHeapLongKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskRegionEntryHeapObjectKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskRegionEntryHeapStringKey1.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskRegionEntryHeapStringKey2.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskRegionEntryHeapUUIDKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskRegionEntryOffHeap.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskRegionEntryOffHeapIntKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskRegionEntryOffHeapLongKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskRegionEntryOffHeapObjectKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskRegionEntryOffHeapStringKey1.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskRegionEntryOffHeapStringKey2.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskRegionEntryOffHeapUUIDKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsLRURegionEntry.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsLRURegionEntryHeap.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsLRURegionEntryHeapIntKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsLRURegionEntryHeapLongKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsLRURegionEntryHeapObjectKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsLRURegionEntryHeapStringKey1.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsLRURegionEntryHeapStringKey2.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsLRURegionEntryHeapUUIDKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsLRURegionEntryOffHeap.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsLRURegionEntryOffHeapIntKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsLRURegionEntryOffHeapLongKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsLRURegionEntryOffHeapObjectKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsLRURegionEntryOffHeapStringKey1.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsLRURegionEntryOffHeapStringKey2.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsLRURegionEntryOffHeapUUIDKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsRegionEntry.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsRegionEntryHeap.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsRegionEntryHeapIntKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsRegionEntryHeapLongKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsRegionEntryHeapObjectKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsRegionEntryHeapStringKey1.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsRegionEntryHeapStringKey2.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsRegionEntryHeapUUIDKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsRegionEntryOffHeap.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsRegionEntryOffHeapIntKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsRegionEntryOffHeapLongKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsRegionEntryOffHeapObjectKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsRegionEntryOffHeapStringKey1.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsRegionEntryOffHeapStringKey2.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsRegionEntryOffHeapUUIDKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskLRURegionEntry.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskLRURegionEntryHeap.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskLRURegionEntryHeapIntKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskLRURegionEntryHeapLongKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskLRURegionEntryHeapObjectKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskLRURegionEntryHeapStringKey1.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskLRURegionEntryHeapStringKey2.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskLRURegionEntryHeapUUIDKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskLRURegionEntryOffHeap.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskLRURegionEntryOffHeapIntKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskLRURegionEntryOffHeapLongKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskLRURegionEntryOffHeapObjectKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskLRURegionEntryOffHeapStringKey1.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskLRURegionEntryOffHeapStringKey2.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskLRURegionEntryOffHeapUUIDKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskRegionEntry.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskRegionEntryHeap.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskRegionEntryHeapIntKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskRegionEntryHeapLongKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskRegionEntryHeapObjectKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskRegionEntryHeapStringKey1.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskRegionEntryHeapStringKey2.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskRegionEntryHeapUUIDKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskRegionEntryOffHeap.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskRegionEntryOffHeapIntKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskRegionEntryOffHeapLongKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskRegionEntryOffHeapObjectKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskRegionEntryOffHeapStringKey1.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskRegionEntryOffHeapStringKey2.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskRegionEntryOffHeapUUIDKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinLRURegionEntry.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinLRURegionEntryHeap.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinLRURegionEntryHeapIntKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinLRURegionEntryHeapLongKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinLRURegionEntryHeapObjectKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinLRURegionEntryHeapStringKey1.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinLRURegionEntryHeapStringKey2.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinLRURegionEntryHeapUUIDKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinLRURegionEntryOffHeap.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinLRURegionEntryOffHeapIntKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinLRURegionEntryOffHeapLongKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinLRURegionEntryOffHeapObjectKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinLRURegionEntryOffHeapStringKey1.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinLRURegionEntryOffHeapStringKey2.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinLRURegionEntryOffHeapUUIDKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinRegionEntry.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinRegionEntryHeap.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinRegionEntryHeapIntKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinRegionEntryHeapLongKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinRegionEntryHeapObjectKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinRegionEntryHeapStringKey1.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinRegionEntryHeapStringKey2.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinRegionEntryHeapUUIDKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinRegionEntryOffHeap.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinRegionEntryOffHeapIntKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinRegionEntryOffHeapLongKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinRegionEntryOffHeapObjectKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinRegionEntryOffHeapStringKey1.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinRegionEntryOffHeapStringKey2.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinRegionEntryOffHeapUUIDKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/backup/BackupDataStoreHelper.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/backup/BackupDataStoreResult.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/backup/BackupInspector.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/backup/BackupLock.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/backup/BackupManager.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/backup/BackupOperation.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/backup/BackupReplyProcessor.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/backup/BackupResponse.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/backup/BackupResultCollector.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/backup/BackupUtil.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/backup/FinishBackup.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/backup/FinishBackupFactory.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/backup/FinishBackupOperation.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/backup/FinishBackupRequest.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/backup/FlushToDisk.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/backup/FlushToDiskFactory.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/backup/FlushToDiskOperation.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/backup/FlushToDiskProcessor.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/backup/FlushToDiskRequest.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/backup/FlushToDiskResponse.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/backup/PrepareBackup.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/backup/PrepareBackupFactory.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/backup/PrepareBackupOperation.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/backup/PrepareBackupRequest.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/backup/RestoreScript.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/backup/ScriptGenerator.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/backup/UnixBackupInspector.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/backup/UnixScriptGenerator.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/backup/WindowsBackupInspector.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/backup/WindowsScriptGenerator.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/client/protocol/ClientProtocolProcessor.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/client/protocol/ClientProtocolService.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/client/protocol/ClientProtocolServiceLoader.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/client/protocol/exception/ServiceLoadingFailureException.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/client/protocol/exception/ServiceVersionNotFoundException.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/AbstractDiskRegionEntry.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/AbstractLRURegionEntry.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/AbstractOplogDiskRegionEntry.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/AbstractRegionEntry.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/DiskEntry.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/LeafRegionEntry.cpp
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/OffHeapRegionEntry.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsDiskLRURegionEntry.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsDiskLRURegionEntryHeap.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsDiskLRURegionEntryHeapIntKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsDiskLRURegionEntryHeapLongKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsDiskLRURegionEntryHeapObjectKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsDiskLRURegionEntryHeapStringKey1.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsDiskLRURegionEntryHeapStringKey2.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsDiskLRURegionEntryHeapUUIDKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsDiskLRURegionEntryOffHeap.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsDiskLRURegionEntryOffHeapIntKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsDiskLRURegionEntryOffHeapLongKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsDiskLRURegionEntryOffHeapObjectKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsDiskLRURegionEntryOffHeapStringKey1.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsDiskLRURegionEntryOffHeapStringKey2.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsDiskLRURegionEntryOffHeapUUIDKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsDiskRegionEntry.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsDiskRegionEntryHeap.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsDiskRegionEntryHeapIntKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsDiskRegionEntryHeapLongKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsDiskRegionEntryHeapObjectKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsDiskRegionEntryHeapStringKey1.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsDiskRegionEntryHeapStringKey2.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsDiskRegionEntryHeapUUIDKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsDiskRegionEntryOffHeap.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsDiskRegionEntryOffHeapIntKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsDiskRegionEntryOffHeapLongKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsDiskRegionEntryOffHeapObjectKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsDiskRegionEntryOffHeapStringKey1.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsDiskRegionEntryOffHeapStringKey2.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsDiskRegionEntryOffHeapUUIDKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsLRURegionEntry.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsLRURegionEntryHeap.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsLRURegionEntryHeapIntKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsLRURegionEntryHeapLongKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsLRURegionEntryHeapObjectKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsLRURegionEntryHeapStringKey1.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsLRURegionEntryHeapStringKey2.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsLRURegionEntryHeapUUIDKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsLRURegionEntryOffHeap.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsLRURegionEntryOffHeapIntKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsLRURegionEntryOffHeapLongKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsLRURegionEntryOffHeapObjectKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsLRURegionEntryOffHeapStringKey1.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsLRURegionEntryOffHeapStringKey2.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsLRURegionEntryOffHeapUUIDKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsRegionEntry.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsRegionEntryHeap.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsRegionEntryHeapIntKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsRegionEntryHeapLongKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsRegionEntryHeapObjectKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsRegionEntryHeapStringKey1.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsRegionEntryHeapStringKey2.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsRegionEntryHeapUUIDKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsRegionEntryOffHeap.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsRegionEntryOffHeapIntKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsRegionEntryOffHeapLongKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsRegionEntryOffHeapObjectKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsRegionEntryOffHeapStringKey1.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsRegionEntryOffHeapStringKey2.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMStatsRegionEntryOffHeapUUIDKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinDiskLRURegionEntry.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinDiskLRURegionEntryHeap.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinDiskLRURegionEntryHeapIntKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinDiskLRURegionEntryHeapLongKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinDiskLRURegionEntryHeapObjectKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinDiskLRURegionEntryHeapStringKey1.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinDiskLRURegionEntryHeapStringKey2.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinDiskLRURegionEntryHeapUUIDKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinDiskLRURegionEntryOffHeap.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinDiskLRURegionEntryOffHeapIntKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinDiskLRURegionEntryOffHeapLongKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinDiskLRURegionEntryOffHeapObjectKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinDiskLRURegionEntryOffHeapStringKey1.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinDiskLRURegionEntryOffHeapStringKey2.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinDiskLRURegionEntryOffHeapUUIDKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinDiskRegionEntry.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinDiskRegionEntryHeap.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinDiskRegionEntryHeapIntKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinDiskRegionEntryHeapLongKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinDiskRegionEntryHeapObjectKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinDiskRegionEntryHeapStringKey1.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinDiskRegionEntryHeapStringKey2.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinDiskRegionEntryHeapUUIDKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinDiskRegionEntryOffHeap.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinDiskRegionEntryOffHeapIntKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinDiskRegionEntryOffHeapLongKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinDiskRegionEntryOffHeapObjectKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinDiskRegionEntryOffHeapStringKey1.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinDiskRegionEntryOffHeapStringKey2.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinDiskRegionEntryOffHeapUUIDKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinLRURegionEntry.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinLRURegionEntryHeap.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinLRURegionEntryHeapIntKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinLRURegionEntryHeapLongKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinLRURegionEntryHeapObjectKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinLRURegionEntryHeapStringKey1.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinLRURegionEntryHeapStringKey2.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinLRURegionEntryHeapUUIDKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinLRURegionEntryOffHeap.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinLRURegionEntryOffHeapIntKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinLRURegionEntryOffHeapLongKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinLRURegionEntryOffHeapObjectKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinLRURegionEntryOffHeapStringKey1.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinLRURegionEntryOffHeapStringKey2.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinLRURegionEntryOffHeapUUIDKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinRegionEntry.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinRegionEntryHeap.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinRegionEntryHeapIntKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinRegionEntryHeapLongKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinRegionEntryHeapObjectKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinRegionEntryHeapStringKey1.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinRegionEntryHeapStringKey2.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinRegionEntryHeapUUIDKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinRegionEntryOffHeap.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinRegionEntryOffHeapIntKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinRegionEntryOffHeapLongKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinRegionEntryOffHeapObjectKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinRegionEntryOffHeapStringKey1.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinRegionEntryOffHeapStringKey2.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VMThinRegionEntryOffHeapUUIDKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsDiskLRURegionEntry.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsDiskLRURegionEntryHeap.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsDiskLRURegionEntryHeapIntKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsDiskLRURegionEntryHeapLongKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsDiskLRURegionEntryHeapObjectKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsDiskLRURegionEntryHeapStringKey1.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsDiskLRURegionEntryHeapStringKey2.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsDiskLRURegionEntryHeapUUIDKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsDiskLRURegionEntryOffHeap.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsDiskLRURegionEntryOffHeapIntKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsDiskLRURegionEntryOffHeapLongKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsDiskLRURegionEntryOffHeapObjectKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsDiskLRURegionEntryOffHeapStringKey1.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsDiskLRURegionEntryOffHeapStringKey2.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsDiskLRURegionEntryOffHeapUUIDKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsDiskRegionEntry.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsDiskRegionEntryHeap.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsDiskRegionEntryHeapIntKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsDiskRegionEntryHeapLongKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsDiskRegionEntryHeapObjectKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsDiskRegionEntryHeapStringKey1.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsDiskRegionEntryHeapStringKey2.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsDiskRegionEntryHeapUUIDKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsDiskRegionEntryOffHeap.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsDiskRegionEntryOffHeapIntKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsDiskRegionEntryOffHeapLongKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsDiskRegionEntryOffHeapObjectKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsDiskRegionEntryOffHeapStringKey1.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsDiskRegionEntryOffHeapStringKey2.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsDiskRegionEntryOffHeapUUIDKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsLRURegionEntry.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsLRURegionEntryHeap.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsLRURegionEntryHeapIntKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsLRURegionEntryHeapLongKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsLRURegionEntryHeapObjectKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsLRURegionEntryHeapStringKey1.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsLRURegionEntryHeapStringKey2.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsLRURegionEntryHeapUUIDKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsLRURegionEntryOffHeap.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsLRURegionEntryOffHeapIntKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsLRURegionEntryOffHeapLongKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsLRURegionEntryOffHeapObjectKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsLRURegionEntryOffHeapStringKey1.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsLRURegionEntryOffHeapStringKey2.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsLRURegionEntryOffHeapUUIDKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsRegionEntry.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsRegionEntryHeap.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsRegionEntryHeapIntKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsRegionEntryHeapLongKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsRegionEntryHeapObjectKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsRegionEntryHeapStringKey1.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsRegionEntryHeapStringKey2.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsRegionEntryHeapUUIDKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsRegionEntryOffHeap.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsRegionEntryOffHeapIntKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsRegionEntryOffHeapLongKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsRegionEntryOffHeapObjectKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsRegionEntryOffHeapStringKey1.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsRegionEntryOffHeapStringKey2.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedStatsRegionEntryOffHeapUUIDKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinDiskLRURegionEntry.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinDiskLRURegionEntryHeap.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinDiskLRURegionEntryHeapIntKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinDiskLRURegionEntryHeapLongKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinDiskLRURegionEntryHeapObjectKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinDiskLRURegionEntryHeapStringKey1.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinDiskLRURegionEntryHeapStringKey2.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinDiskLRURegionEntryHeapUUIDKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinDiskLRURegionEntryOffHeap.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinDiskLRURegionEntryOffHeapIntKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinDiskLRURegionEntryOffHeapLongKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinDiskLRURegionEntryOffHeapObjectKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinDiskLRURegionEntryOffHeapStringKey1.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinDiskLRURegionEntryOffHeapStringKey2.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinDiskLRURegionEntryOffHeapUUIDKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinDiskRegionEntry.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinDiskRegionEntryHeap.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinDiskRegionEntryHeapIntKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinDiskRegionEntryHeapLongKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinDiskRegionEntryHeapObjectKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinDiskRegionEntryHeapStringKey1.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinDiskRegionEntryHeapStringKey2.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinDiskRegionEntryHeapUUIDKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinDiskRegionEntryOffHeap.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinDiskRegionEntryOffHeapIntKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinDiskRegionEntryOffHeapLongKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinDiskRegionEntryOffHeapObjectKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinDiskRegionEntryOffHeapStringKey1.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinDiskRegionEntryOffHeapStringKey2.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinDiskRegionEntryOffHeapUUIDKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinLRURegionEntry.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinLRURegionEntryHeap.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinLRURegionEntryHeapIntKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinLRURegionEntryHeapLongKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinLRURegionEntryHeapObjectKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinLRURegionEntryHeapStringKey1.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinLRURegionEntryHeapStringKey2.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinLRURegionEntryHeapUUIDKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinLRURegionEntryOffHeap.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinLRURegionEntryOffHeapIntKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinLRURegionEntryOffHeapLongKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinLRURegionEntryOffHeapObjectKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinLRURegionEntryOffHeapStringKey1.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinLRURegionEntryOffHeapStringKey2.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinLRURegionEntryOffHeapUUIDKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinRegionEntry.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinRegionEntryHeap.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinRegionEntryHeapIntKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinRegionEntryHeapLongKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinRegionEntryHeapObjectKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinRegionEntryHeapStringKey1.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinRegionEntryHeapStringKey2.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinRegionEntryHeapUUIDKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinRegionEntryOffHeap.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinRegionEntryOffHeapIntKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinRegionEntryOffHeapLongKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinRegionEntryOffHeapObjectKey.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinRegionEntryOffHeapStringKey1.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinRegionEntryOffHeapStringKey2.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/entries/VersionedThinRegionEntryOffHeapUUIDKey.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/persistence/BackupInspector.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/persistence/RestoreScript.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/persistence/ScriptGenerator.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/persistence/UnixBackupInspector.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/persistence/UnixScriptGenerator.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/persistence/WindowsBackupInspector.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/persistence/WindowsScriptGenerator.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ClientProtocolProcessor.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ClientProtocolService.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ClientProtocolServiceLoader.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ServiceLoadingFailureException.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/internal/lang/ThreadUtils.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/management/BackupStatus.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/management/internal/BackupStatusImpl.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/management/internal/DiskBackupStatusImpl.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DataCommandUtil.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ShowMetricsInterceptor.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/management/internal/cli/exceptions/CliException.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/management/internal/cli/exceptions/CreateSubregionException.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/management/internal/cli/exceptions/EntityNotFoundException.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/management/internal/cli/exceptions/IndexNotFoundException.java
 create mode 100644 geode-core/src/main/java/org/apache/geode/management/internal/cli/exceptions/UserErrorException.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/management/internal/cli/util/DiskStoreNotFoundException.java
 delete mode 100644 geode-core/src/main/java/org/apache/geode/management/internal/cli/util/MemberNotFoundException.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/cache/ExpirationAttributesTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/cache/query/internal/parse/OQLParserTest.java
 delete mode 100644 geode-core/src/test/java/org/apache/geode/internal/cache/AbstractRegionEntryTest.java
 delete mode 100755 geode-core/src/test/java/org/apache/geode/internal/cache/BackupDUnitTest.java
 delete mode 100644 geode-core/src/test/java/org/apache/geode/internal/cache/BackupJUnitTest.java
 delete mode 100644 geode-core/src/test/java/org/apache/geode/internal/cache/Bug48182JUnitTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/internal/cache/DestroyEntryWithConcurrentOperationJUnitTest.java
 delete mode 100644 geode-core/src/test/java/org/apache/geode/internal/cache/IncrementalBackupDUnitTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/internal/cache/PREntryIdleExpirationTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/internal/cache/ReplicateEntryIdleExpirationTest.java
 create mode 100755 geode-core/src/test/java/org/apache/geode/internal/cache/backup/BackupDistributedTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/internal/cache/backup/BackupInspectorIntegrationTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/internal/cache/backup/BackupIntegrationTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/internal/cache/backup/BackupLockTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/internal/cache/backup/BackupPrepareAndFinishMsgDUnitTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/internal/cache/backup/BackupReplyProcessorTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/internal/cache/backup/FinishBackupFactoryTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/internal/cache/backup/FinishBackupOperationTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/internal/cache/backup/FinishBackupRequestTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/internal/cache/backup/FlushToDiskFactoryTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/internal/cache/backup/FlushToDiskOperationTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/internal/cache/backup/FlushToDiskRequestTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/internal/cache/backup/IncrementalBackupDistributedTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/internal/cache/backup/PartitionedBackupPrepareAndFinishMsgDUnitTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/internal/cache/backup/PrepareBackupFactoryTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/internal/cache/backup/PrepareBackupOperationTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/internal/cache/backup/PrepareBackupRequestTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/internal/cache/backup/ReplicateBackupPrepareAndFinishMsgDUnitTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/internal/cache/backup/UnixScriptGeneratorTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/internal/cache/backup/WindowsScriptGeneratorTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/internal/cache/entries/AbstractRegionEntryTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/internal/cache/extension/ExtensionClusterConfigurationDUnitTest.java
 delete mode 100644 geode-core/src/test/java/org/apache/geode/internal/cache/persistence/BackupInspectorIntegrationTest.java
 delete mode 100644 geode-core/src/test/java/org/apache/geode/internal/cache/persistence/BackupPrepareAndFinishMsgDUnitTest.java
 delete mode 100644 geode-core/src/test/java/org/apache/geode/internal/cache/persistence/PartitionedBackupPrepareAndFinishMsgDUnitTest.java
 delete mode 100644 geode-core/src/test/java/org/apache/geode/internal/cache/persistence/ReplicateBackupPrepareAndFinishMsgDUnitTest.java
 delete mode 100644 geode-core/src/test/java/org/apache/geode/internal/cache/persistence/UnixScriptGeneratorTest.java
 delete mode 100644 geode-core/src/test/java/org/apache/geode/internal/cache/persistence/WindowsScriptGeneratorTest.java
 delete mode 100644 geode-core/src/test/java/org/apache/geode/internal/lang/ThreadUtilsJUnitTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/management/DiskBackupStatusTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/cli/CliUtilTest.java
 delete mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/cli/CommandRequestTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/AlterRegionCommandIntegrationTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CreateDefinedIndexesCommandDUnitTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CreateDefinedIndexesCommandTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CreateRegionCommandIntegrationTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/DescribeConfigCommandIntegrationTest.java
 delete mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/DescribeConfigCommandJUnitTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/DescribeConfigCommandTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/DestroyGatewaySenderCommandTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/DestroyIndexCommandsDUnitTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/ExportDataCommandTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/GetCommandIntegrationTest.java
 delete mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/GetCommandOnRegionWithCacheLoaderDuringCacheMissDUnitTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/ImportDataCommandTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/LocateEntryDUnitTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/PutCommandIntegrationTest.java
 delete mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/QueryCommandUnitTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/ShowMetricsCommandIntegrationTest.java
 delete mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/ShowMetricsCommandJUnitTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/ShowMetricsJUnitTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/TestCacheLoader.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/TestCacheWriter.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/TestCompressor.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/TestObjectSizer.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/TestObjectSizerNotDeclarable.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/TestPartitionResolver.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/VersionCommandJUnitTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/cli/dto/Key.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/cli/dto/Value.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/CliFunctionResultTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/CreateDefinedIndexesFunctionTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/ExpirationAttrsTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/GatewaySenderDestroyFunctionTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/RegionDestroyFunctionTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/RegionFunctionArgsTest.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/test/junit/assertions/CommandResultAssert.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/test/junit/assertions/CommandResultExecution.java
 create mode 100644 geode-core/src/test/java/org/apache/geode/test/junit/rules/GfshCommandRule.java
 delete mode 100644 geode-core/src/test/java/org/apache/geode/test/junit/rules/GfshShellConnectionRule.java
 delete mode 100644 geode-core/src/test/resources/META-INF/services/org.springframework.shell.core.CommandMarker
 rename geode-core/src/test/resources/org/apache/geode/internal/cache/{BackupJUnitTest.cache.xml => backup/BackupIntegrationTest.cache.xml} (100%)
 create mode 100644 geode-docs/managing/monitor_tune/disabling_tcp_syn_cookies.html.md.erb
 delete mode 100644 geode-junit/src/main/java/org/apache/geode/test/junit/rules/gfsh/ProcessLogger.java
 delete mode 100644 geode-junit/src/main/java/org/apache/geode/test/junit/rules/gfsh/StreamGobbler.java
 create mode 100644 geode-junit/src/main/java/org/apache/geode/test/junit/rules/gfsh/internal/OutputLine.java
 create mode 100644 geode-junit/src/main/java/org/apache/geode/test/junit/rules/gfsh/internal/ProcessLogger.java
 create mode 100644 geode-junit/src/main/java/org/apache/geode/test/junit/rules/gfsh/internal/StreamGobbler.java
 delete mode 100644 geode-lucene/src/main/resources/META-INF/services/org.springframework.shell.core.CommandMarker
 create mode 100644 geode-lucene/src/test/java/org/apache/geode/cache/lucene/FlatFormatPdxSerializerJunitTest.java
 create mode 100644 geode-lucene/src/test/java/org/apache/geode/cache/lucene/LocalCacheRule.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/cache/tier/sockets/ClientProtocolMessageHandler.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/cache/tier/sockets/MessageExecutionContext.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/ProtobufCachePipeline.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/ProtobufLocatorPipeline.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/ProtobufProtocolService.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/operations/OperationHandler.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/EncodingTypeTranslator.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/Failure.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/OperationContext.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/ProtobufOpsProcessor.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/ProtobufSerializationService.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/ProtobufStreamProcessor.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/ProtocolErrorCode.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/Result.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/Success.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/GetAllRequestOperationHandler.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/GetAvailableServersOperationHandler.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/GetRegionNamesRequestOperationHandler.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/GetRegionRequestOperationHandler.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/GetRequestOperationHandler.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/PutAllRequestOperationHandler.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/PutRequestOperationHandler.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/operations/RemoveRequestOperationHandler.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/registry/OperationContextRegistry.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/Authenticator.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/Authorizer.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/InvalidConfigAuthenticator.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/NoOpAuthenticator.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/NoOpAuthorizer.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/ProtobufShiroAuthenticator.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/security/ProtobufShiroAuthorizer.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/serializer/ProtobufProtocolSerializer.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/statistics/NoOpStatistics.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/statistics/ProtobufClientStatistics.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/utilities/ProtobufPrimitiveTypes.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/utilities/ProtobufRequestUtilities.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/utilities/ProtobufResponseUtilities.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/utilities/ProtobufUtilities.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/utilities/exception/UnknownProtobufPrimitiveType.java
 create mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/EncodingTypeTranslator.java
 create mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/ProtobufCachePipeline.java
 create mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/ProtobufLocatorPipeline.java
 create mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/ProtobufOperationContext.java
 create mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/ProtobufOpsProcessor.java
 create mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/ProtobufProtocolService.java
 create mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/ProtobufSerializationService.java
 create mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/ProtobufStreamProcessor.java
 create mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/GetAllRequestOperationHandler.java
 create mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/GetAvailableServersOperationHandler.java
 create mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/GetRegionNamesRequestOperationHandler.java
 create mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/GetRegionRequestOperationHandler.java
 create mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/GetRequestOperationHandler.java
 create mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/HandshakeRequestOperationHandler.java
 create mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/PutAllRequestOperationHandler.java
 create mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/PutRequestOperationHandler.java
 create mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/RemoveRequestOperationHandler.java
 create mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/security/AuthenticationRequestOperationHandler.java
 create mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/registry/ProtobufOperationContextRegistry.java
 create mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/serializer/ProtobufProtocolSerializer.java
 create mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/state/ConnectionShiroAuthenticatingStateProcessor.java
 create mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/state/ProtobufConnectionHandshakeStateProcessor.java
 create mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/utilities/ProtobufPrimitiveTypes.java
 create mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/utilities/ProtobufRequestUtilities.java
 create mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/utilities/ProtobufResponseUtilities.java
 create mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/utilities/ProtobufUtilities.java
 create mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/utilities/exception/UnknownProtobufPrimitiveType.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/protocol/serializer/ProtocolSerializer.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/serialization/SerializationService.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/serialization/SerializationType.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/serialization/TypeCodec.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/serialization/codec/JSONCodec.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/serialization/exception/UnsupportedEncodingTypeException.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/serialization/registry/SerializationCodecRegistry.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/serialization/registry/exception/CodecAlreadyRegisteredForTypeException.java
 delete mode 100644 geode-protobuf/src/main/java/org/apache/geode/internal/serialization/registry/exception/CodecNotRegisteredForTypeException.java
 delete mode 100644 geode-protobuf/src/main/proto/authentication_API.proto
 delete mode 100644 geode-protobuf/src/main/proto/basicTypes.proto
 delete mode 100644 geode-protobuf/src/main/proto/clientProtocol.proto
 delete mode 100644 geode-protobuf/src/main/proto/region_API.proto
 delete mode 100644 geode-protobuf/src/main/proto/server_API.proto
 create mode 100644 geode-protobuf/src/main/proto/v1/basicTypes.proto
 create mode 100644 geode-protobuf/src/main/proto/v1/clientProtocol.proto
 create mode 100644 geode-protobuf/src/main/proto/v1/connection_API.proto
 create mode 100644 geode-protobuf/src/main/proto/v1/region_API.proto
 create mode 100644 geode-protobuf/src/main/proto/v1/server_API.proto
 create mode 100644 geode-protobuf/src/main/resources/META-INF/services/org.apache.geode.internal.cache.client.protocol.ClientProtocolService
 delete mode 100644 geode-protobuf/src/main/resources/META-INF/services/org.apache.geode.internal.cache.tier.sockets.ClientProtocolService
 delete mode 100644 geode-protobuf/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.TypeCodec
 delete mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/AuthenticationIntegrationTest.java
 delete mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/AuthorizationIntegrationTest.java
 delete mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/MessageUtil.java
 delete mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/OpsHandler.java
 delete mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/ProtobufProtocolServiceJUnitTest.java
 create mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/TestExecutionContext.java
 delete mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/acceptance/CacheConnectionJUnitTest.java
 delete mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/acceptance/CacheConnectionTimeoutJUnitTest.java
 delete mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/acceptance/CacheMaxConnectionJUnitTest.java
 delete mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/acceptance/CacheOperationsJUnitTest.java
 delete mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/acceptance/LocatorConnectionDUnitTest.java
 delete mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/ProtobufShiroAuthenticatorJUnitTest.java
 delete mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/ProtobufTestExecutionContext.java
 delete mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/GetAllRequestOperationHandlerJUnitTest.java
 delete mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/GetAvailableServersOperationHandlerJUnitTest.java
 delete mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/GetRegionNamesRequestOperationHandlerJUnitTest.java
 delete mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/GetRegionRequestOperationHandlerJUnitTest.java
 delete mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/GetRequestOperationHandlerJUnitTest.java
 delete mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/OperationHandlerJUnitTest.java
 delete mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/PutAllRequestOperationHandlerJUnitTest.java
 delete mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/PutRequestOperationHandlerJUnitTest.java
 delete mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/operations/RemoveRequestOperationHandlerJUnitTest.java
 delete mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/utilities/ProtobufUtilitiesJUnitTest.java
 create mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/AuthenticationIntegrationTest.java
 create mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/AuthorizationIntegrationTest.java
 create mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/HandshakeIntegrationTest.java
 create mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/MessageUtil.java
 create mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/ProtobufProtocolServiceJUnitTest.java
 create mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/acceptance/CacheConnectionJUnitTest.java
 create mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/acceptance/CacheConnectionTimeoutJUnitTest.java
 create mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/acceptance/CacheMaxConnectionJUnitTest.java
 create mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/acceptance/CacheOperationsJUnitTest.java
 create mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/acceptance/LocatorConnectionDUnitTest.java
 create mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/operations/GetAllRequestOperationHandlerJUnitTest.java
 create mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/operations/GetAvailableServersOperationHandlerJUnitTest.java
 create mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/operations/GetRegionNamesRequestOperationHandlerJUnitTest.java
 create mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/operations/GetRegionRequestOperationHandlerJUnitTest.java
 create mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/operations/GetRequestOperationHandlerJUnitTest.java
 create mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/operations/HandshakeRequestOperationHandlerJUnitTest.java
 create mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/operations/OperationHandlerJUnitTest.java
 create mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/operations/PutAllRequestOperationHandlerJUnitTest.java
 create mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/operations/PutRequestOperationHandlerJUnitTest.java
 create mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/operations/RemoveRequestOperationHandlerJUnitTest.java
 create mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/serialization/codec/JSONCodecJUnitTest.java
 create mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/serialization/registry/CodecRegistryJUnitTest.java
 create mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/serializer/ProtobufProtocolSerializerJUnitTest.java
 create mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/utilities/ProtobufUtilitiesJUnitTest.java
 delete mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/protocol/serializer/ProtobufProtocolSerializerJUnitTest.java
 delete mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/serialization/codec/JSONCodecJUnitTest.java
 delete mode 100644 geode-protobuf/src/test/java/org/apache/geode/internal/serialization/registry/CodecRegistryJUnitTest.java
 rename geode-protobuf/src/test/resources/org/apache/geode/internal/protocol/{ => protobuf/v1}/acceptance/default.keystore (100%)
 create mode 100644 geode-pulse/src/test/java/org/apache/geode/tools/pulse/internal/security/LogoutHandlerUnitTest.java
 delete mode 100644 geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WANCommandTestBase.java
 create mode 100644 geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WANCommandUtils.java
 delete mode 100644 geode-wan/src/test/java/org/apache/geode/management/internal/configuration/ClusterConfigurationDUnitTest.java
 create mode 100644 geode-wan/src/test/java/org/apache/geode/management/internal/configuration/WANClusterConfigurationDUnitTest.java

-- 
To stop receiving notification emails like this one, please contact
['"commits@geode.apache.org" <co...@geode.apache.org>'].

[geode] 01/01: GEODE-3781: add geode-connectors module

Posted by kl...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

klund pushed a commit to branch feature/GEODE-3781
in repository https://gitbox.apache.org/repos/asf/geode.git

commit 69337aaa6bca5274cced16a4a776b6f04709b761
Author: Anil <ag...@pivotal.io>
AuthorDate: Mon Oct 23 12:01:58 2017 -0700

    GEODE-3781: add geode-connectors module
    
    Introduce new PDX JDBC Connector Service
    * GEODE-3782: implement JdbcWriter
    * GEODE-3783: implement JdbcAsyncWriter
    * GEODE-3823: implement JdbcLoader
---
 geode-assembly/build.gradle                        |   6 +-
 geode-connectors/build.gradle                      |  32 ++
 .../geode/connectors/jdbc/JdbcAsyncWriter.java     | 107 ++++++
 .../apache/geode/connectors/jdbc/JdbcLoader.java   |  54 +++
 .../apache/geode/connectors/jdbc/JdbcWriter.java   | 102 ++++++
 .../jdbc/internal/AbstractJdbcCallback.java        |  63 ++++
 .../connectors/jdbc/internal/ColumnValue.java      |  44 +++
 .../jdbc/internal/ConnectionConfiguration.java     |  84 +++++
 .../jdbc/internal/ConnectionManager.java           | 193 +++++++++++
 .../internal/InternalJdbcConnectorService.java     |  30 ++
 .../jdbc/internal/JdbcConnectorService.java        |  92 ++++++
 .../jdbc/internal/PreparedStatementCache.java      | 104 ++++++
 .../connectors/jdbc/internal/RegionMapping.java    | 118 +++++++
 .../geode/connectors/jdbc/internal/SqlHandler.java | 187 +++++++++++
 .../jdbc/internal/SqlStatementFactory.java         |  78 +++++
 .../jdbc/internal/xml/ConnectionConfigBuilder.java |  48 +++
 .../connectors/jdbc/internal/xml/ElementType.java  | 131 ++++++++
 .../xml/JdbcConnectorServiceXmlGenerator.java      | 130 ++++++++
 .../xml/JdbcConnectorServiceXmlParser.java         |  57 ++++
 .../internal/xml/JdbcServiceConfiguration.java     |  60 ++++
 .../jdbc/internal/xml/RegionMappingBuilder.java    |  65 ++++
 .../org.apache.geode.internal.cache.CacheService   |   1 +
 ....apache.geode.internal.cache.xmlcache.XmlParser |   1 +
 .../org/apache/geode/connectors/jdbc/Employee.java |  54 +++
 .../jdbc/JdbcAsyncWriterIntegrationTest.java       | 254 ++++++++++++++
 .../geode/connectors/jdbc/JdbcAsyncWriterTest.java |  93 ++++++
 .../connectors/jdbc/JdbcLoaderIntegrationTest.java | 105 ++++++
 .../geode/connectors/jdbc/JdbcLoaderTest.java      |  44 +++
 .../connectors/jdbc/JdbcWriterIntegrationTest.java | 234 +++++++++++++
 .../geode/connectors/jdbc/JdbcWriterTest.java      | 119 +++++++
 .../jdbc/internal/AbstractJdbcCallbackTest.java    |  73 +++++
 .../connectors/jdbc/internal/ColumnValueTest.java  |  57 ++++
 .../jdbc/internal/ConnectionConfigurationTest.java |  63 ++++
 .../jdbc/internal/ConnectionManagerUnitTest.java   | 252 ++++++++++++++
 .../jdbc/internal/JdbcConnectorServiceTest.java    |  88 +++++
 .../jdbc/internal/PreparedStatementCacheTest.java  |  82 +++++
 .../jdbc/internal/RegionMappingTest.java           | 108 ++++++
 .../connectors/jdbc/internal/SqlHandlerTest.java   | 365 +++++++++++++++++++++
 .../jdbc/internal/SqlStatementFactoryTest.java     |  81 +++++
 .../jdbc/internal/TestConfigService.java           |  54 +++
 .../jdbc/internal/TestableConnectionManager.java   |  22 ++
 .../internal/xml/ConnectionConfigBuilderTest.java  |  46 +++
 .../jdbc/internal/xml/ElementTypeTest.java         | 216 ++++++++++++
 ...onnectorServiceXmlGeneratorIntegrationTest.java | 195 +++++++++++
 .../xml/JdbcConnectorServiceXmlGeneratorTest.java  |  33 ++
 .../JdbcConnectorServiceXmlIntegrationTest.java    | 116 +++++++
 .../xml/JdbcConnectorServiceXmlParserTest.java     | 106 ++++++
 .../internal/xml/JdbcServiceConfigurationTest.java | 136 ++++++++
 .../internal/xml/RegionMappingBuilderTest.java     |  54 +++
 .../java/org/apache/geode/test/fake/Fakes.java     |   5 +-
 settings.gradle                                    |   1 +
 51 files changed, 4841 insertions(+), 2 deletions(-)

diff --git a/geode-assembly/build.gradle b/geode-assembly/build.gradle
index 4615a6b..542ab45 100755
--- a/geode-assembly/build.gradle
+++ b/geode-assembly/build.gradle
@@ -59,6 +59,7 @@ dependencies {
   archives project(':geode-client-protocol')
   archives project(':geode-json')
   archives project(':geode-core')
+  archives project(':geode-connectors')
   archives project(':geode-lucene')
   archives project(':geode-old-client-support')
   archives project(':geode-protobuf')
@@ -362,7 +363,10 @@ distributions {
 
         from project(":geode-lucene").configurations.runtime
         from project(":geode-lucene").configurations.archives.allArtifacts.files
-        
+       
+        from project(":geode-connectors").configurations.runtime
+        from project(":geode-connectors").configurations.archives.allArtifacts.files
+ 
         from project(":geode-old-client-support").configurations.runtime
         from project(":geode-old-client-support").configurations.archives.allArtifacts.files
 
diff --git a/geode-connectors/build.gradle b/geode-connectors/build.gradle
new file mode 100644
index 0000000..b11f352
--- /dev/null
+++ b/geode-connectors/build.gradle
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+
+dependencies {
+    compile project(':geode-core')
+    compile project(':geode-common')
+
+    testCompile project(':geode-junit')
+
+    //Connectors test framework.
+    testRuntime 'org.apache.derby:derby:' + project.'derby.version'
+    testCompile 'com.pholser:junit-quickcheck-core:' + project.'junit-quickcheck.version'
+    testCompile 'com.pholser:junit-quickcheck-generators:' + project.'junit-quickcheck.version'
+    testCompile files(project(':geode-core').sourceSets.test.output)
+    testCompile project(':geode-old-versions')
+}
+
+integrationTest.forkEvery 0
diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/JdbcAsyncWriter.java b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/JdbcAsyncWriter.java
new file mode 100644
index 0000000..465e1c6
--- /dev/null
+++ b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/JdbcAsyncWriter.java
@@ -0,0 +1,107 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc;
+
+import java.util.List;
+import java.util.concurrent.atomic.AtomicLong;
+
+import org.apache.logging.log4j.Logger;
+
+import org.apache.geode.CopyHelper;
+import org.apache.geode.annotations.Experimental;
+import org.apache.geode.cache.asyncqueue.AsyncEvent;
+import org.apache.geode.cache.asyncqueue.AsyncEventListener;
+import org.apache.geode.cache.query.internal.DefaultQuery;
+import org.apache.geode.connectors.jdbc.internal.AbstractJdbcCallback;
+import org.apache.geode.connectors.jdbc.internal.SqlHandler;
+import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.internal.logging.LogService;
+import org.apache.geode.pdx.PdxInstance;
+
+/**
+ * This class provides write behind cache semantics for a JDBC data source using AsyncEventListener.
+ *
+ * @since Geode 1.4
+ */
+@Experimental
+public class JdbcAsyncWriter extends AbstractJdbcCallback implements AsyncEventListener {
+  private static final Logger logger = LogService.getLogger();
+
+  private AtomicLong totalEvents = new AtomicLong();
+  private AtomicLong successfulEvents = new AtomicLong();
+
+  @SuppressWarnings("unused")
+  public JdbcAsyncWriter() {
+    super();
+  }
+
+  // Constructor for test purposes only
+  JdbcAsyncWriter(SqlHandler sqlHandler) {
+    super(sqlHandler);
+  }
+
+  @Override
+  public boolean processEvents(List<AsyncEvent> events) {
+    changeTotalEvents(events.size());
+
+    if (!events.isEmpty()) {
+      checkInitialized((InternalCache) events.get(0).getRegion().getRegionService());
+    }
+
+    DefaultQuery.setPdxReadSerialized(true);
+    try {
+      for (AsyncEvent event : events) {
+        try {
+          getSqlHandler().write(event.getRegion(), event.getOperation(), event.getKey(),
+              getPdxInstance(event));
+          changeSuccessfulEvents(1);
+        } catch (RuntimeException ex) {
+          logger.error("Exception processing event {}", event, ex);
+        }
+      }
+    } finally {
+      DefaultQuery.setPdxReadSerialized(false);
+    }
+
+    return true;
+  }
+
+  long getTotalEvents() {
+    return totalEvents.get();
+  }
+
+  long getSuccessfulEvents() {
+    return successfulEvents.get();
+  }
+
+  private void changeSuccessfulEvents(long delta) {
+    successfulEvents.addAndGet(delta);
+  }
+
+  private void changeTotalEvents(long delta) {
+    totalEvents.addAndGet(delta);
+  }
+
+  /**
+   * precondition: DefaultQuery.setPdxReadSerialized(true)
+   */
+  private PdxInstance getPdxInstance(AsyncEvent event) {
+    Object value = event.getDeserializedValue();
+    if (!(value instanceof PdxInstance)) {
+      value = CopyHelper.copy(value);
+    }
+    return (PdxInstance) value;
+  }
+}
diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/JdbcLoader.java b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/JdbcLoader.java
new file mode 100644
index 0000000..f3ba9a5
--- /dev/null
+++ b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/JdbcLoader.java
@@ -0,0 +1,54 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc;
+
+import org.apache.geode.annotations.Experimental;
+import org.apache.geode.cache.CacheLoader;
+import org.apache.geode.cache.CacheLoaderException;
+import org.apache.geode.cache.LoaderHelper;
+import org.apache.geode.connectors.jdbc.internal.AbstractJdbcCallback;
+import org.apache.geode.connectors.jdbc.internal.SqlHandler;
+import org.apache.geode.internal.cache.InternalCache;
+
+/**
+ * This class provides loading from a data source using JDBC.
+ *
+ * @since Geode 1.4
+ */
+@Experimental
+public class JdbcLoader<K, V> extends AbstractJdbcCallback implements CacheLoader<K, V> {
+
+  @SuppressWarnings("unused")
+  public JdbcLoader() {
+    super();
+  }
+
+  // Constructor for test purposes only
+  JdbcLoader(SqlHandler sqlHandler) {
+    super(sqlHandler);
+  }
+
+  /**
+   * @return this method always returns a PdxInstance. It does not matter what the V generic
+   *         parameter is set to.
+   */
+  @Override
+  public V load(LoaderHelper<K, V> helper) throws CacheLoaderException {
+    // The following cast to V is to keep the compiler happy
+    // but is erased at runtime and no actual cast happens.
+    checkInitialized((InternalCache) helper.getRegion().getRegionService());
+    return (V) getSqlHandler().read(helper.getRegion(), helper.getKey());
+  }
+}
diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/JdbcWriter.java b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/JdbcWriter.java
new file mode 100644
index 0000000..c901d3d
--- /dev/null
+++ b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/JdbcWriter.java
@@ -0,0 +1,102 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc;
+
+import org.apache.geode.CopyHelper;
+import org.apache.geode.annotations.Experimental;
+import org.apache.geode.cache.CacheWriter;
+import org.apache.geode.cache.CacheWriterException;
+import org.apache.geode.cache.EntryEvent;
+import org.apache.geode.cache.RegionEvent;
+import org.apache.geode.cache.SerializedCacheValue;
+import org.apache.geode.cache.query.internal.DefaultQuery;
+import org.apache.geode.connectors.jdbc.internal.AbstractJdbcCallback;
+import org.apache.geode.connectors.jdbc.internal.SqlHandler;
+import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.pdx.PdxInstance;
+
+/**
+ * This class provides synchronous write through to a data source using JDBC.
+ *
+ * @since Geode 1.4
+ */
+@Experimental
+public class JdbcWriter<K, V> extends AbstractJdbcCallback implements CacheWriter<K, V> {
+
+  @SuppressWarnings("unused")
+  public JdbcWriter() {
+    super();
+  }
+
+  // Constructor for test purposes only
+  JdbcWriter(SqlHandler sqlHandler) {
+    super(sqlHandler);
+  }
+
+
+  @Override
+  public void beforeUpdate(EntryEvent<K, V> event) throws CacheWriterException {
+    checkInitialized((InternalCache) event.getRegion().getRegionService());
+    getSqlHandler().write(event.getRegion(), event.getOperation(), event.getKey(),
+        getPdxNewValue(event));
+  }
+
+  @Override
+  public void beforeCreate(EntryEvent<K, V> event) throws CacheWriterException {
+    checkInitialized((InternalCache) event.getRegion().getRegionService());
+    getSqlHandler().write(event.getRegion(), event.getOperation(), event.getKey(),
+        getPdxNewValue(event));
+  }
+
+  @Override
+  public void beforeDestroy(EntryEvent<K, V> event) throws CacheWriterException {
+    checkInitialized((InternalCache) event.getRegion().getRegionService());
+    getSqlHandler().write(event.getRegion(), event.getOperation(), event.getKey(),
+        getPdxNewValue(event));
+  }
+
+  @Override
+  public void beforeRegionDestroy(RegionEvent<K, V> event) throws CacheWriterException {
+    // this event is not sent to JDBC
+  }
+
+  @Override
+  public void beforeRegionClear(RegionEvent<K, V> event) throws CacheWriterException {
+    // this event is not sent to JDBC
+  }
+
+  private PdxInstance getPdxNewValue(EntryEvent<K, V> event) {
+    DefaultQuery.setPdxReadSerialized(true);
+    try {
+      Object newValue = event.getNewValue();
+      if (!(newValue instanceof PdxInstance)) {
+        SerializedCacheValue<V> serializedNewValue = event.getSerializedNewValue();
+        if (serializedNewValue != null) {
+          newValue = serializedNewValue.getDeserializedValue();
+        } else {
+          newValue = CopyHelper.copy(newValue);
+        }
+        if (newValue != null && !(newValue instanceof PdxInstance)) {
+          String valueClassName = newValue == null ? "null" : newValue.getClass().getName();
+          throw new IllegalArgumentException(getClass().getSimpleName()
+              + " only supports PDX values; newValue is " + valueClassName);
+        }
+      }
+      return (PdxInstance) newValue;
+    } finally {
+      DefaultQuery.setPdxReadSerialized(false);
+    }
+  }
+}
diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/AbstractJdbcCallback.java b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/AbstractJdbcCallback.java
new file mode 100644
index 0000000..478edd0
--- /dev/null
+++ b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/AbstractJdbcCallback.java
@@ -0,0 +1,63 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc.internal;
+
+import java.util.Properties;
+
+import org.apache.geode.cache.CacheCallback;
+import org.apache.geode.internal.cache.InternalCache;
+
+public abstract class AbstractJdbcCallback implements CacheCallback {
+
+  private volatile SqlHandler sqlHandler;
+
+  protected AbstractJdbcCallback() {
+    // nothing
+  }
+
+  protected AbstractJdbcCallback(SqlHandler sqlHandler) {
+    this.sqlHandler = sqlHandler;
+  }
+
+  @Override
+  public void close() {
+    if (sqlHandler != null) {
+      sqlHandler.close();
+    }
+  }
+
+  @Override
+  public void init(Properties props) {
+    // nothing
+  }
+
+  protected SqlHandler getSqlHandler() {
+    return sqlHandler;
+  }
+
+  protected void checkInitialized(InternalCache cache) {
+    if (sqlHandler == null) {
+      initialize(cache);
+    }
+  }
+
+  private synchronized void initialize(InternalCache cache) {
+    if (sqlHandler == null) {
+      InternalJdbcConnectorService service = cache.getService(InternalJdbcConnectorService.class);
+      ConnectionManager manager = new ConnectionManager(service);
+      sqlHandler = new SqlHandler(manager);
+    }
+  }
+}
diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/ColumnValue.java b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/ColumnValue.java
new file mode 100644
index 0000000..c3f44d0
--- /dev/null
+++ b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/ColumnValue.java
@@ -0,0 +1,44 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc.internal;
+
+class ColumnValue {
+  private final boolean isKey;
+  private final String columnName;
+  private final Object value;
+
+  ColumnValue(boolean isKey, String columnName, Object value) {
+    this.isKey = isKey;
+    this.columnName = columnName;
+    this.value = value;
+  }
+
+  boolean isKey() {
+    return isKey;
+  }
+
+  String getColumnName() {
+    return columnName;
+  }
+
+  Object getValue() {
+    return value;
+  }
+
+  @Override
+  public String toString() {
+    return "ColumnValue [isKey=" + isKey + ", columnName=" + columnName + ", value=" + value + "]";
+  }
+}
diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/ConnectionConfiguration.java b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/ConnectionConfiguration.java
new file mode 100644
index 0000000..fa3807d
--- /dev/null
+++ b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/ConnectionConfiguration.java
@@ -0,0 +1,84 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc.internal;
+
+public class ConnectionConfiguration {
+
+  private final String name;
+  private final String url;
+  private final String user;
+  private final String password;
+
+  public ConnectionConfiguration(String name, String url, String user, String password) {
+    this.name = name;
+    this.url = url;
+    this.user = user;
+    this.password = password;
+  }
+
+  public String getName() {
+    return name;
+  }
+
+  public String getUrl() {
+    return url;
+  }
+
+  public String getUser() {
+    return user;
+  }
+
+  public String getPassword() {
+    return password;
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (o == null || getClass() != o.getClass()) {
+      return false;
+    }
+
+    ConnectionConfiguration that = (ConnectionConfiguration) o;
+
+    if (name != null ? !name.equals(that.name) : that.name != null) {
+      return false;
+    }
+    if (url != null ? !url.equals(that.url) : that.url != null) {
+      return false;
+    }
+    if (user != null ? !user.equals(that.user) : that.user != null) {
+      return false;
+    }
+    return password != null ? password.equals(that.password) : that.password == null;
+  }
+
+  @Override
+  public int hashCode() {
+    int result = name != null ? name.hashCode() : 0;
+    result = 31 * result + (url != null ? url.hashCode() : 0);
+    result = 31 * result + (user != null ? user.hashCode() : 0);
+    result = 31 * result + (password != null ? password.hashCode() : 0);
+    return result;
+  }
+
+  @Override
+  public String toString() {
+    return "ConnectionConfiguration{" + "name='" + name + '\'' + ", url='" + url + '\'' + ", user='"
+        + user + '\'' + ", password='" + password + '\'' + '}';
+  }
+}
diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/ConnectionManager.java b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/ConnectionManager.java
new file mode 100644
index 0000000..d382112
--- /dev/null
+++ b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/ConnectionManager.java
@@ -0,0 +1,193 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc.internal;
+
+import java.sql.Connection;
+import java.sql.DatabaseMetaData;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
+import org.apache.geode.cache.Operation;
+import org.apache.geode.pdx.PdxInstance;
+
+class ConnectionManager {
+
+  private final InternalJdbcConnectorService configService;
+  private final Map<String, Connection> connectionMap = new ConcurrentHashMap<>();
+  private final ConcurrentMap<String, String> tableToPrimaryKeyMap = new ConcurrentHashMap<>();
+  private final ThreadLocal<PreparedStatementCache> preparedStatementCache = new ThreadLocal<>();
+
+  ConnectionManager(InternalJdbcConnectorService configService) {
+    this.configService = configService;
+  }
+
+  RegionMapping getMappingForRegion(String regionName) {
+    return configService.getMappingForRegion(regionName);
+  }
+
+  Connection getConnection(ConnectionConfiguration config) {
+    Connection connection = connectionMap.get(config.getName());
+    try {
+      if (connection != null && !connection.isClosed()) {
+        return connection;
+      }
+    } catch (SQLException ignore) {
+      // If isClosed throws fall through and connect again
+    }
+    return getNewConnection(config);
+  }
+
+  <K> List<ColumnValue> getColumnToValueList(ConnectionConfiguration config,
+      RegionMapping regionMapping, K key, PdxInstance value, Operation operation) {
+    String keyColumnName = getKeyColumnName(config, regionMapping.getTableName());
+    ColumnValue keyColumnValue = new ColumnValue(true, keyColumnName, key);
+
+    if (operation.isDestroy() || operation.isGet()) {
+      return Collections.singletonList(keyColumnValue);
+    }
+
+    List<ColumnValue> result = createColumnValueList(regionMapping, value, keyColumnName);
+    result.add(keyColumnValue);
+    return result;
+  }
+
+  void close() {
+    connectionMap.values().forEach(this::close);
+  }
+
+  String getKeyColumnName(ConnectionConfiguration connectionConfig, String tableName) {
+    return tableToPrimaryKeyMap.computeIfAbsent(tableName,
+        k -> computeKeyColumnName(connectionConfig, k));
+  }
+
+  ConnectionConfiguration getConnectionConfig(String connectionConfigName) {
+    return configService.getConnectionConfig(connectionConfigName);
+  }
+
+  PreparedStatement getPreparedStatement(Connection connection, List<ColumnValue> columnList,
+      String tableName, Operation operation, int pdxTypeId) {
+    PreparedStatementCache statementCache = preparedStatementCache.get();
+
+    if (statementCache == null) {
+      statementCache = new PreparedStatementCache();
+      preparedStatementCache.set(statementCache);
+    }
+
+    return statementCache.getPreparedStatement(connection, columnList, tableName, operation,
+        pdxTypeId);
+  }
+
+  // package protected for testing purposes only
+  Connection getSQLConnection(ConnectionConfiguration config) throws SQLException {
+    return DriverManager.getConnection(config.getUrl(), config.getUser(), config.getPassword());
+  }
+
+  private synchronized Connection getNewConnection(ConnectionConfiguration config) {
+    Connection connection;
+    try {
+      connection = getSQLConnection(config);
+    } catch (SQLException e) {
+      // TODO: consider a different exception
+      throw new IllegalStateException("Could not connect to " + config.getUrl(), e);
+    }
+    connectionMap.put(config.getName(), connection);
+    return connection;
+  }
+
+  private List<ColumnValue> createColumnValueList(RegionMapping regionMapping, PdxInstance value,
+      String keyColumnName) {
+    List<ColumnValue> result = new ArrayList<>();
+    for (String fieldName : value.getFieldNames()) {
+      String columnName = regionMapping.getColumnNameForField(fieldName);
+      if (columnName.equalsIgnoreCase(keyColumnName)) {
+        continue;
+      }
+      ColumnValue columnValue = new ColumnValue(false, columnName, value.getField(fieldName));
+      result.add(columnValue);
+    }
+    return result;
+  }
+
+  private String computeKeyColumnName(ConnectionConfiguration connectionConfig, String tableName) {
+    // TODO: check config for key column
+    String key = null;
+    try {
+      Connection connection = getConnection(connectionConfig);
+      DatabaseMetaData metaData = connection.getMetaData();
+      ResultSet tables = metaData.getTables(null, null, "%", null);
+
+      String realTableName = getTableNameFromMetaData(tableName, tables);
+      key = getPrimaryKeyColumnNameFromMetaData(realTableName, metaData);
+
+    } catch (SQLException e) {
+      handleSQLException(e);
+    }
+    return key;
+  }
+
+  private String getTableNameFromMetaData(String tableName, ResultSet tables) throws SQLException {
+    String realTableName = null;
+    while (tables.next()) {
+      String name = tables.getString("TABLE_NAME");
+      if (name.equalsIgnoreCase(tableName)) {
+        if (realTableName != null) {
+          throw new IllegalStateException("Duplicate tables that match region name");
+        }
+        realTableName = name;
+      }
+    }
+
+    if (realTableName == null) {
+      throw new IllegalStateException("no table was found that matches " + tableName);
+    }
+    return realTableName;
+  }
+
+  private String getPrimaryKeyColumnNameFromMetaData(String tableName, DatabaseMetaData metaData)
+      throws SQLException {
+    ResultSet primaryKeys = metaData.getPrimaryKeys(null, null, tableName);
+    if (!primaryKeys.next()) {
+      throw new IllegalStateException(
+          "The table " + tableName + " does not have a primary key column.");
+    }
+    String key = primaryKeys.getString("COLUMN_NAME");
+    if (primaryKeys.next()) {
+      throw new IllegalStateException(
+          "The table " + tableName + " has more than one primary key column.");
+    }
+    return key;
+  }
+
+  private void handleSQLException(SQLException e) {
+    throw new IllegalStateException("NYI: handleSQLException", e);
+  }
+
+  private void close(Connection connection) {
+    if (connection != null) {
+      try {
+        connection.close();
+      } catch (SQLException ignore) {
+      }
+    }
+  }
+}
diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/InternalJdbcConnectorService.java b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/InternalJdbcConnectorService.java
new file mode 100644
index 0000000..d0bd167
--- /dev/null
+++ b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/InternalJdbcConnectorService.java
@@ -0,0 +1,30 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc.internal;
+
+import org.apache.geode.cache.Cache;
+import org.apache.geode.internal.cache.CacheService;
+import org.apache.geode.internal.cache.extension.Extension;
+
+public interface InternalJdbcConnectorService extends Extension<Cache>, CacheService {
+  void addOrUpdateConnectionConfig(ConnectionConfiguration config);
+
+  void addOrUpdateRegionMapping(RegionMapping mapping);
+
+  ConnectionConfiguration getConnectionConfig(String connectionName);
+
+  RegionMapping getMappingForRegion(String regionName);
+
+}
diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/JdbcConnectorService.java b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/JdbcConnectorService.java
new file mode 100644
index 0000000..9af7aeb
--- /dev/null
+++ b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/JdbcConnectorService.java
@@ -0,0 +1,92 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc.internal;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.apache.geode.cache.Cache;
+import org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlGenerator;
+import org.apache.geode.internal.cache.CacheService;
+import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.internal.cache.extension.Extensible;
+import org.apache.geode.internal.cache.xmlcache.XmlGenerator;
+import org.apache.geode.management.internal.beans.CacheServiceMBeanBase;
+
+public class JdbcConnectorService implements InternalJdbcConnectorService {
+
+  private final Map<String, ConnectionConfiguration> connectionsByName = new ConcurrentHashMap<>();
+  private final Map<String, RegionMapping> mappingsByRegion = new ConcurrentHashMap<>();
+  private volatile InternalCache cache;
+  private boolean registered;
+
+  public ConnectionConfiguration getConnectionConfig(String connectionName) {
+    return connectionsByName.get(connectionName);
+  }
+
+  public RegionMapping getMappingForRegion(String regionName) {
+    return mappingsByRegion.get(regionName);
+  }
+
+  @Override
+  public void addOrUpdateConnectionConfig(ConnectionConfiguration config) {
+    registerAsExtension();
+    connectionsByName.put(config.getName(), config);
+  }
+
+  @Override
+  public void addOrUpdateRegionMapping(RegionMapping mapping) {
+    registerAsExtension();
+    mappingsByRegion.put(mapping.getRegionName(), mapping);
+  }
+
+  @Override
+  public void init(Cache cache) {
+    this.cache = (InternalCache) cache;
+  }
+
+  private synchronized void registerAsExtension() {
+    if (!registered) {
+      cache.getExtensionPoint().addExtension(this);
+      registered = true;
+    }
+  }
+
+  @Override
+  public Class<? extends CacheService> getInterface() {
+    return InternalJdbcConnectorService.class;
+  }
+
+  @Override
+  public CacheServiceMBeanBase getMBean() {
+    return null;
+  }
+
+  @Override
+  public XmlGenerator<Cache> getXmlGenerator() {
+    return new JdbcConnectorServiceXmlGenerator(connectionsByName.values(),
+        mappingsByRegion.values());
+  }
+
+  @Override
+  public void beforeCreate(Extensible<Cache> source, Cache cache) {
+    // nothing
+  }
+
+  @Override
+  public void onCreate(Extensible<Cache> source, Extensible<Cache> target) {
+    // nothing
+  }
+}
diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/PreparedStatementCache.java b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/PreparedStatementCache.java
new file mode 100644
index 0000000..bcc6700
--- /dev/null
+++ b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/PreparedStatementCache.java
@@ -0,0 +1,104 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc.internal;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.geode.cache.Operation;
+
+class PreparedStatementCache {
+
+  private SqlStatementFactory statementFactory = new SqlStatementFactory();
+  // TODO: if connection lost, we will still keep the statement. Make LRU?
+  private Map<StatementKey, PreparedStatement> statements = new HashMap<>();
+
+  PreparedStatement getPreparedStatement(Connection connection, List<ColumnValue> columnList,
+      String tableName, Operation operation, int pdxTypeId) {
+    StatementKey key = new StatementKey(pdxTypeId, operation, tableName);
+    return statements.computeIfAbsent(key, k -> {
+      String sqlStr = getSqlString(tableName, columnList, operation);
+      PreparedStatement statement = null;
+      try {
+        statement = connection.prepareStatement(sqlStr);
+      } catch (SQLException e) {
+        handleSQLException(e);
+      }
+      return statement;
+    });
+  }
+
+  private String getSqlString(String tableName, List<ColumnValue> columnList, Operation operation) {
+    if (operation.isCreate()) {
+      return statementFactory.createInsertSqlString(tableName, columnList);
+    } else if (operation.isUpdate()) {
+      return statementFactory.createUpdateSqlString(tableName, columnList);
+    } else if (operation.isDestroy()) {
+      return statementFactory.createDestroySqlString(tableName, columnList);
+    } else if (operation.isGet()) {
+      return statementFactory.createSelectQueryString(tableName, columnList);
+    } else {
+      throw new IllegalArgumentException("unsupported operation " + operation);
+    }
+  }
+
+  private void handleSQLException(SQLException e) {
+    throw new IllegalStateException("NYI: handleSQLException", e);
+  }
+
+  private static class StatementKey {
+    private final int pdxTypeId;
+    private final Operation operation;
+    private final String tableName;
+
+    StatementKey(int pdxTypeId, Operation operation, String tableName) {
+      this.pdxTypeId = pdxTypeId;
+      this.operation = operation;
+      this.tableName = tableName;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+      if (this == o) {
+        return true;
+      }
+      if (o == null || getClass() != o.getClass()) {
+        return false;
+      }
+
+      StatementKey that = (StatementKey) o;
+
+      if (pdxTypeId != that.pdxTypeId) {
+        return false;
+      }
+      if (operation != null ? !operation.equals(that.operation) : that.operation != null) {
+        return false;
+      }
+      return tableName != null ? tableName.equals(that.tableName) : that.tableName == null;
+    }
+
+    @Override
+    public int hashCode() {
+      int result = pdxTypeId;
+      result = 31 * result + (operation != null ? operation.hashCode() : 0);
+      result = 31 * result + (tableName != null ? tableName.hashCode() : 0);
+      return result;
+    }
+  }
+}
diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/RegionMapping.java b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/RegionMapping.java
new file mode 100644
index 0000000..327775c
--- /dev/null
+++ b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/RegionMapping.java
@@ -0,0 +1,118 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc.internal;
+
+import java.util.Collections;
+import java.util.Map;
+
+public class RegionMapping {
+  private final String regionName;
+  private final String pdxClassName;
+  private final String tableName;
+  private final String connectionConfigName;
+  private final boolean primaryKeyInValue;
+  private final Map<String, String> fieldToColumnMap;
+
+  public RegionMapping(String regionName, String pdxClassName, String tableName,
+      String connectionConfigName, boolean primaryKeyInValue,
+      Map<String, String> fieldToColumnMap) {
+    this.regionName = regionName;
+    this.pdxClassName = pdxClassName;
+    this.tableName = tableName;
+    this.connectionConfigName = connectionConfigName;
+    this.primaryKeyInValue = primaryKeyInValue;
+    this.fieldToColumnMap = fieldToColumnMap;
+  }
+
+  public String getConnectionConfigName() {
+    return connectionConfigName;
+  }
+
+  public String getRegionName() {
+    return regionName;
+  }
+
+  public String getPdxClassName() {
+    return pdxClassName;
+  }
+
+  public String getTableName() {
+    return tableName;
+  }
+
+  public boolean isPrimaryKeyInValue() {
+    return primaryKeyInValue;
+  }
+
+  public String getColumnNameForField(String fieldName) {
+    String columnName = fieldToColumnMap.get(fieldName);
+    return columnName != null ? columnName : fieldName;
+  }
+
+  public Map<String, String> getFieldToColumnMap() {
+    return Collections.unmodifiableMap(fieldToColumnMap);
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (o == null || getClass() != o.getClass()) {
+      return false;
+    }
+
+    RegionMapping that = (RegionMapping) o;
+
+    if (primaryKeyInValue != that.primaryKeyInValue) {
+      return false;
+    }
+    if (regionName != null ? !regionName.equals(that.regionName) : that.regionName != null) {
+      return false;
+    }
+    if (pdxClassName != null ? !pdxClassName.equals(that.pdxClassName)
+        : that.pdxClassName != null) {
+      return false;
+    }
+    if (tableName != null ? !tableName.equals(that.tableName) : that.tableName != null) {
+      return false;
+    }
+    if (connectionConfigName != null ? !connectionConfigName.equals(that.connectionConfigName)
+        : that.connectionConfigName != null) {
+      return false;
+    }
+    return fieldToColumnMap != null ? fieldToColumnMap.equals(that.fieldToColumnMap)
+        : that.fieldToColumnMap == null;
+  }
+
+  @Override
+  public int hashCode() {
+    int result = regionName != null ? regionName.hashCode() : 0;
+    result = 31 * result + (pdxClassName != null ? pdxClassName.hashCode() : 0);
+    result = 31 * result + (tableName != null ? tableName.hashCode() : 0);
+    result = 31 * result + (connectionConfigName != null ? connectionConfigName.hashCode() : 0);
+    result = 31 * result + (primaryKeyInValue ? 1 : 0);
+    result = 31 * result + (fieldToColumnMap != null ? fieldToColumnMap.hashCode() : 0);
+    return result;
+  }
+
+  @Override
+  public String toString() {
+    return "RegionMapping{" + "regionName='" + regionName + '\'' + ", pdxClassName='" + pdxClassName
+        + '\'' + ", tableName='" + tableName + '\'' + ", connectionConfigName='"
+        + connectionConfigName + '\'' + ", primaryKeyInValue=" + primaryKeyInValue
+        + ", fieldToColumnMap=" + fieldToColumnMap + '}';
+  }
+}
diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/SqlHandler.java b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/SqlHandler.java
new file mode 100644
index 0000000..b73698c
--- /dev/null
+++ b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/SqlHandler.java
@@ -0,0 +1,187 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc.internal;
+
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+import java.util.List;
+
+import org.apache.geode.cache.Operation;
+import org.apache.geode.cache.Region;
+import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.pdx.PdxInstance;
+import org.apache.geode.pdx.PdxInstanceFactory;
+import org.apache.geode.pdx.internal.PdxInstanceImpl;
+
+public class SqlHandler {
+  private ConnectionManager manager;
+
+  public SqlHandler(ConnectionManager manager) {
+    this.manager = manager;
+  }
+
+  public void close() {
+    manager.close();
+  }
+
+  public <K, V> PdxInstance read(Region<K, V> region, K key) {
+    if (key == null) {
+      throw new IllegalArgumentException("Key for query cannot be null");
+    }
+
+    RegionMapping regionMapping = manager.getMappingForRegion(region.getName());
+    ConnectionConfiguration connectionConfig =
+        manager.getConnectionConfig(regionMapping.getConnectionConfigName());
+
+    List<ColumnValue> columnList =
+        manager.getColumnToValueList(connectionConfig, regionMapping, key, null, Operation.GET);
+    String tableName = regionMapping.getTableName();
+    PreparedStatement statement = manager.getPreparedStatement(
+        manager.getConnection(connectionConfig), columnList, tableName, Operation.GET, 0);
+    PdxInstanceFactory factory = getPdxInstanceFactory(region, regionMapping);
+    String keyColumnName = manager.getKeyColumnName(connectionConfig, tableName);
+    return executeReadStatement(statement, columnList, factory, regionMapping, keyColumnName);
+  }
+
+  private <K, V> PdxInstanceFactory getPdxInstanceFactory(Region<K, V> region,
+      RegionMapping regionMapping) {
+    InternalCache cache = (InternalCache) region.getRegionService();
+    String valueClassName = regionMapping.getPdxClassName();
+    PdxInstanceFactory factory;
+    if (valueClassName != null) {
+      factory = cache.createPdxInstanceFactory(valueClassName);
+    } else {
+      factory = cache.createPdxInstanceFactory("no class", false);
+    }
+    return factory;
+  }
+
+  private PdxInstance executeReadStatement(PreparedStatement statement,
+      List<ColumnValue> columnList, PdxInstanceFactory factory, RegionMapping regionMapping,
+      String keyColumnName) {
+    PdxInstance pdxInstance = null;
+    synchronized (statement) {
+      try {
+        setValuesInStatement(statement, columnList);
+        ResultSet resultSet = statement.executeQuery();
+        if (resultSet.next()) {
+
+          ResultSetMetaData metaData = resultSet.getMetaData();
+          int ColumnsNumber = metaData.getColumnCount();
+          for (int i = 1; i <= ColumnsNumber; i++) {
+            Object columnValue = resultSet.getObject(i);
+            String columnName = metaData.getColumnName(i);
+            String fieldName = mapColumnNameToFieldName(columnName);
+            if (regionMapping.isPrimaryKeyInValue()
+                || !keyColumnName.equalsIgnoreCase(columnName)) {
+              factory.writeField(fieldName, columnValue, Object.class);
+            }
+          }
+          if (resultSet.next()) {
+            throw new IllegalStateException(
+                "Multiple rows returned for query: " + resultSet.getStatement().toString());
+          }
+          pdxInstance = factory.create();
+        }
+      } catch (SQLException e) {
+        handleSQLException(e);
+      } finally {
+        clearStatementParameters(statement);
+      }
+    }
+    return pdxInstance;
+  }
+
+  private void setValuesInStatement(PreparedStatement statement, List<ColumnValue> columnList)
+      throws SQLException {
+    int index = 0;
+    for (ColumnValue columnValue : columnList) {
+      index++;
+      statement.setObject(index, columnValue.getValue());
+    }
+  }
+
+  private String mapColumnNameToFieldName(String columnName) {
+    return columnName.toLowerCase();
+  }
+
+  public <K, V> void write(Region<K, V> region, Operation operation, K key, PdxInstance value) {
+    if (value == null && operation != Operation.DESTROY) {
+      throw new IllegalArgumentException("PdxInstance cannot be null for non-destroy operations");
+    }
+    RegionMapping regionMapping = manager.getMappingForRegion(region.getName());
+    final String tableName = regionMapping.getTableName();
+    ConnectionConfiguration connectionConfig =
+        manager.getConnectionConfig(regionMapping.getConnectionConfigName());
+    List<ColumnValue> columnList =
+        manager.getColumnToValueList(connectionConfig, regionMapping, key, value, operation);
+
+    int pdxTypeId = value == null ? 0 : ((PdxInstanceImpl) value).getPdxType().getTypeId();
+    PreparedStatement statement = manager.getPreparedStatement(
+        manager.getConnection(connectionConfig), columnList, tableName, operation, pdxTypeId);
+    int updateCount = executeWriteStatement(statement, columnList, operation, false);
+
+    // Destroy action not guaranteed to modify any database rows
+    if (operation.isDestroy()) {
+      return;
+    }
+
+    if (updateCount <= 0) {
+      Operation upsertOp = getOppositeOperation(operation);
+      PreparedStatement upsertStatement = manager.getPreparedStatement(
+          manager.getConnection(connectionConfig), columnList, tableName, upsertOp, pdxTypeId);
+      updateCount = executeWriteStatement(upsertStatement, columnList, upsertOp, true);
+    }
+
+    if (updateCount != 1) {
+      throw new IllegalStateException("Unexpected updateCount " + updateCount);
+    }
+  }
+
+  private Operation getOppositeOperation(Operation operation) {
+    return operation.isUpdate() ? Operation.CREATE : Operation.UPDATE;
+  }
+
+  private int executeWriteStatement(PreparedStatement statement, List<ColumnValue> columnList,
+      Operation operation, boolean handleException) {
+    int updateCount = 0;
+    synchronized (statement) {
+      try {
+        setValuesInStatement(statement, columnList);
+        updateCount = statement.executeUpdate();
+      } catch (SQLException e) {
+        if (handleException || operation.isDestroy()) {
+          handleSQLException(e);
+        }
+      } finally {
+        clearStatementParameters(statement);
+      }
+    }
+    return updateCount;
+  }
+
+  private void clearStatementParameters(PreparedStatement statement) {
+    try {
+      statement.clearParameters();
+    } catch (SQLException ignore) {
+    }
+  }
+
+  private void handleSQLException(SQLException e) {
+    throw new IllegalStateException("NYI: handleSQLException", e);
+  }
+}
diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/SqlStatementFactory.java b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/SqlStatementFactory.java
new file mode 100644
index 0000000..d5367ef
--- /dev/null
+++ b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/SqlStatementFactory.java
@@ -0,0 +1,78 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc.internal;
+
+import java.util.List;
+
+class SqlStatementFactory {
+
+  String createSelectQueryString(String tableName, List<ColumnValue> columnList) {
+    assert columnList.size() == 1;
+    ColumnValue keyCV = columnList.get(0);
+    assert keyCV.isKey();
+    return "SELECT * FROM " + tableName + " WHERE " + keyCV.getColumnName() + " = ?";
+  }
+
+  String createDestroySqlString(String tableName, List<ColumnValue> columnList) {
+    assert columnList.size() == 1;
+    ColumnValue keyCV = columnList.get(0);
+    assert keyCV.isKey();
+    return "DELETE FROM " + tableName + " WHERE " + keyCV.getColumnName() + " = ?";
+  }
+
+  String createUpdateSqlString(String tableName, List<ColumnValue> columnList) {
+    StringBuilder query = new StringBuilder("UPDATE " + tableName + " SET ");
+    int idx = 0;
+    for (ColumnValue column : columnList) {
+      if (!column.isKey()) {
+        idx++;
+        if (idx > 1) {
+          query.append(", ");
+        }
+        query.append(column.getColumnName());
+        query.append(" = ?");
+      }
+    }
+    for (ColumnValue column : columnList) {
+      if (column.isKey()) {
+        query.append(" WHERE ");
+        query.append(column.getColumnName());
+        query.append(" = ?");
+        // currently only support simple primary key with one column
+        break;
+      }
+    }
+    return query.toString();
+  }
+
+  String createInsertSqlString(String tableName, List<ColumnValue> columnList) {
+    StringBuilder columnNames = new StringBuilder("INSERT INTO " + tableName + " (");
+    StringBuilder columnValues = new StringBuilder(" VALUES (");
+    int columnCount = columnList.size();
+    int idx = 0;
+    for (ColumnValue column : columnList) {
+      idx++;
+      columnNames.append(column.getColumnName());
+      columnValues.append('?');
+      if (idx != columnCount) {
+        columnNames.append(", ");
+        columnValues.append(",");
+      }
+    }
+    columnNames.append(")");
+    columnValues.append(")");
+    return columnNames.append(columnValues).toString();
+  }
+}
diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/xml/ConnectionConfigBuilder.java b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/xml/ConnectionConfigBuilder.java
new file mode 100644
index 0000000..34d61ad
--- /dev/null
+++ b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/xml/ConnectionConfigBuilder.java
@@ -0,0 +1,48 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc.internal.xml;
+
+import org.apache.geode.connectors.jdbc.internal.ConnectionConfiguration;
+
+class ConnectionConfigBuilder {
+  private String name;
+  private String url;
+  private String user;
+  private String password;
+
+  ConnectionConfigBuilder withName(String name) {
+    this.name = name;
+    return this;
+  }
+
+  ConnectionConfigBuilder withUrl(String url) {
+    this.url = url;
+    return this;
+  }
+
+  ConnectionConfigBuilder withUser(String user) {
+    this.user = user;
+    return this;
+  }
+
+  ConnectionConfigBuilder withPassword(String password) {
+    this.password = password;
+    return this;
+  }
+
+  ConnectionConfiguration build() {
+    return new ConnectionConfiguration(name, url, user, password);
+  }
+}
diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/xml/ElementType.java b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/xml/ElementType.java
new file mode 100644
index 0000000..580910c
--- /dev/null
+++ b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/xml/ElementType.java
@@ -0,0 +1,131 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc.internal.xml;
+
+import java.util.Stack;
+
+import org.xml.sax.Attributes;
+
+import org.apache.geode.cache.CacheXmlException;
+import org.apache.geode.connectors.jdbc.internal.ConnectionConfiguration;
+import org.apache.geode.connectors.jdbc.internal.RegionMapping;
+import org.apache.geode.internal.cache.xmlcache.CacheCreation;
+
+enum ElementType {
+  CONNECTION_SERVICE("connector-service") {
+    @Override
+    void startElement(Stack<Object> stack, Attributes attributes) {
+      if (!(stack.peek() instanceof CacheCreation)) {
+        throw new CacheXmlException(
+            "jdbc <connector-service> elements must occur within <cache> elements");
+      }
+      CacheCreation cacheCreation = (CacheCreation) stack.peek();
+      JdbcServiceConfiguration serviceConfig = new JdbcServiceConfiguration();
+      cacheCreation.getExtensionPoint().addExtension(serviceConfig);
+      stack.push(serviceConfig);
+    }
+
+    @Override
+    void endElement(Stack<Object> stack) {
+      stack.pop();
+    }
+  },
+  CONNECTION("connection") {
+    @Override
+    void startElement(Stack<Object> stack, Attributes attributes) {
+      if (!(stack.peek() instanceof JdbcServiceConfiguration)) {
+        throw new CacheXmlException(
+            "jdbc <connection> elements must occur within <connector-service> elements");
+      }
+      ConnectionConfigBuilder connectionConfig = new ConnectionConfigBuilder()
+          .withName(attributes.getValue(JdbcConnectorServiceXmlParser.NAME))
+          .withUrl(attributes.getValue(JdbcConnectorServiceXmlParser.URL))
+          .withUser(attributes.getValue(JdbcConnectorServiceXmlParser.USER))
+          .withPassword(attributes.getValue(JdbcConnectorServiceXmlParser.PASSWORD));
+      stack.push(connectionConfig);
+    }
+
+    @Override
+    void endElement(Stack<Object> stack) {
+      ConnectionConfiguration config = ((ConnectionConfigBuilder) stack.pop()).build();
+      JdbcServiceConfiguration connectorService = (JdbcServiceConfiguration) stack.peek();
+      connectorService.addConnectionConfig(config);
+    }
+  },
+  REGION_MAPPING("region-mapping") {
+    @Override
+    void startElement(Stack<Object> stack, Attributes attributes) {
+      if (!(stack.peek() instanceof JdbcServiceConfiguration)) {
+        throw new CacheXmlException(
+            "jdbc <region-mapping> elements must occur within <connector-service> elements");
+      }
+      RegionMappingBuilder mapping = new RegionMappingBuilder()
+          .withRegionName(attributes.getValue(JdbcConnectorServiceXmlParser.REGION))
+          .withConnectionConfigName(
+              attributes.getValue(JdbcConnectorServiceXmlParser.CONNECTION_NAME))
+          .withTableName(attributes.getValue(JdbcConnectorServiceXmlParser.TABLE))
+          .withPdxClassName(attributes.getValue(JdbcConnectorServiceXmlParser.PDX_CLASS))
+          .withPrimaryKeyInValue(
+              attributes.getValue(JdbcConnectorServiceXmlParser.PRIMARY_KEY_IN_VALUE));
+      stack.push(mapping);
+    }
+
+    @Override
+    void endElement(Stack<Object> stack) {
+      RegionMapping mapping = ((RegionMappingBuilder) stack.pop()).build();
+      JdbcServiceConfiguration connectorService = (JdbcServiceConfiguration) stack.peek();
+      connectorService.addRegionMapping(mapping);
+    }
+  },
+  FIELD_MAPPING("field-mapping") {
+    @Override
+    void startElement(Stack<Object> stack, Attributes attributes) {
+      if (!(stack.peek() instanceof RegionMappingBuilder)) {
+        throw new CacheXmlException(
+            "jdbc <field-mapping> elements must occur within <region-mapping> elements");
+      }
+      RegionMappingBuilder mapping = (RegionMappingBuilder) stack.peek();
+      String fieldName = attributes.getValue(JdbcConnectorServiceXmlParser.FIELD_NAME);
+      String columnName = attributes.getValue(JdbcConnectorServiceXmlParser.COLUMN_NAME);
+      mapping.withFieldToColumnMapping(fieldName, columnName);
+    }
+
+    @Override
+    void endElement(Stack<Object> stack) {}
+  };
+
+  private String typeName;
+
+  ElementType(String typeName) {
+    this.typeName = typeName;
+  }
+
+  static ElementType getTypeFromName(String typeName) {
+    for (ElementType type : ElementType.values()) {
+      if (type.typeName.equals(typeName))
+        return type;
+    }
+    throw new IllegalArgumentException("Invalid type '" + typeName + "'");
+  }
+
+  String getTypeName() {
+    return typeName;
+  }
+
+  abstract void startElement(Stack<Object> stack, Attributes attributes);
+
+  abstract void endElement(Stack<Object> stack);
+
+}
diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/xml/JdbcConnectorServiceXmlGenerator.java b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/xml/JdbcConnectorServiceXmlGenerator.java
new file mode 100644
index 0000000..867dd7f
--- /dev/null
+++ b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/xml/JdbcConnectorServiceXmlGenerator.java
@@ -0,0 +1,130 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc.internal.xml;
+
+import static org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlParser.COLUMN_NAME;
+import static org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlParser.CONNECTION_NAME;
+import static org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlParser.FIELD_NAME;
+import static org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlParser.NAME;
+import static org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlParser.NAMESPACE;
+import static org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlParser.PASSWORD;
+import static org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlParser.PDX_CLASS;
+import static org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlParser.PRIMARY_KEY_IN_VALUE;
+import static org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlParser.REGION;
+import static org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlParser.TABLE;
+import static org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlParser.URL;
+import static org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlParser.USER;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Map;
+
+import org.xml.sax.ContentHandler;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.AttributesImpl;
+
+import org.apache.geode.cache.Cache;
+import org.apache.geode.connectors.jdbc.internal.ConnectionConfiguration;
+import org.apache.geode.connectors.jdbc.internal.RegionMapping;
+import org.apache.geode.internal.cache.xmlcache.CacheXmlGenerator;
+import org.apache.geode.internal.cache.xmlcache.XmlGenerator;
+import org.apache.geode.internal.cache.xmlcache.XmlGeneratorUtils;
+
+public class JdbcConnectorServiceXmlGenerator implements XmlGenerator<Cache> {
+  private static final AttributesImpl EMPTY = new AttributesImpl();
+  static final String PREFIX = "jdbc";
+
+  private final Collection<ConnectionConfiguration> connections;
+  private final Collection<RegionMapping> mappings;
+
+  public JdbcConnectorServiceXmlGenerator(Collection<ConnectionConfiguration> connections,
+      Collection<RegionMapping> mappings) {
+    this.connections = connections != null ? connections : Collections.emptyList();
+    this.mappings = mappings != null ? mappings : Collections.emptyList();
+  }
+
+  @Override
+  public String getNamespaceUri() {
+    return NAMESPACE;
+  }
+
+  @Override
+  public void generate(CacheXmlGenerator cacheXmlGenerator) throws SAXException {
+    final ContentHandler handler = cacheXmlGenerator.getContentHandler();
+
+    handler.startPrefixMapping(PREFIX, NAMESPACE);
+    XmlGeneratorUtils.startElement(handler, PREFIX, ElementType.CONNECTION_SERVICE.getTypeName(),
+        EMPTY);
+    for (ConnectionConfiguration connection : connections) {
+      outputConnectionConfiguration(handler, connection);
+    }
+    for (RegionMapping mapping : mappings) {
+      outputRegionMapping(handler, mapping);
+    }
+    XmlGeneratorUtils.endElement(handler, PREFIX, ElementType.CONNECTION_SERVICE.getTypeName());
+  }
+
+  /**
+   * For testing only
+   */
+  Collection<ConnectionConfiguration> getConnections() {
+    return connections;
+  }
+
+  /**
+   * For testing only
+   */
+  Collection<RegionMapping> getMappings() {
+    return mappings;
+  }
+
+  private void outputConnectionConfiguration(ContentHandler handler, ConnectionConfiguration config)
+      throws SAXException {
+    AttributesImpl attributes = new AttributesImpl();
+    XmlGeneratorUtils.addAttribute(attributes, NAME, config.getName());
+    XmlGeneratorUtils.addAttribute(attributes, URL, config.getUrl());
+    XmlGeneratorUtils.addAttribute(attributes, USER, config.getUser());
+    XmlGeneratorUtils.addAttribute(attributes, PASSWORD, config.getPassword());
+    XmlGeneratorUtils.emptyElement(handler, PREFIX, ElementType.CONNECTION.getTypeName(),
+        attributes);
+  }
+
+  private void outputRegionMapping(ContentHandler handler, RegionMapping mapping)
+      throws SAXException {
+    AttributesImpl attributes = new AttributesImpl();
+    XmlGeneratorUtils.addAttribute(attributes, CONNECTION_NAME, mapping.getConnectionConfigName());
+    XmlGeneratorUtils.addAttribute(attributes, REGION, mapping.getRegionName());
+    XmlGeneratorUtils.addAttribute(attributes, TABLE, mapping.getTableName());
+    XmlGeneratorUtils.addAttribute(attributes, PDX_CLASS, mapping.getPdxClassName());
+    XmlGeneratorUtils.addAttribute(attributes, PRIMARY_KEY_IN_VALUE,
+        Boolean.toString(mapping.isPrimaryKeyInValue()));
+
+    XmlGeneratorUtils.startElement(handler, PREFIX, ElementType.REGION_MAPPING.getTypeName(),
+        attributes);
+    addFieldMappings(handler, mapping.getFieldToColumnMap());
+    XmlGeneratorUtils.endElement(handler, PREFIX, ElementType.REGION_MAPPING.getTypeName());
+  }
+
+  private void addFieldMappings(ContentHandler handler, Map<String, String> fieldMappings)
+      throws SAXException {
+    for (Map.Entry<String, String> fieldMapping : fieldMappings.entrySet()) {
+      AttributesImpl fieldAttributes = new AttributesImpl();
+      XmlGeneratorUtils.addAttribute(fieldAttributes, FIELD_NAME, fieldMapping.getKey());
+      XmlGeneratorUtils.addAttribute(fieldAttributes, COLUMN_NAME, fieldMapping.getValue());
+      XmlGeneratorUtils.emptyElement(handler, PREFIX, ElementType.FIELD_MAPPING.getTypeName(),
+          fieldAttributes);
+    }
+  }
+}
diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/xml/JdbcConnectorServiceXmlParser.java b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/xml/JdbcConnectorServiceXmlParser.java
new file mode 100644
index 0000000..7caaa1d
--- /dev/null
+++ b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/xml/JdbcConnectorServiceXmlParser.java
@@ -0,0 +1,57 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc.internal.xml;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+import org.apache.geode.internal.cache.xmlcache.AbstractXmlParser;
+
+public class JdbcConnectorServiceXmlParser extends AbstractXmlParser {
+  static final String NAMESPACE = "http://geode.apache.org/schema/jdbc-connector";
+  static final String NAME = "name";
+  static final String URL = "url";
+  static final String USER = "user";
+  static final String PASSWORD = "password";
+  static final String REGION = "region";
+  static final String CONNECTION_NAME = "connection-name";
+  static final String TABLE = "table";
+  static final String PDX_CLASS = "pdx-class";
+  static final String FIELD_NAME = "field-name";
+  static final String COLUMN_NAME = "column-name";
+  static final String PRIMARY_KEY_IN_VALUE = "primary-key-in-value";
+
+  @Override
+  public String getNamespaceUri() {
+    return NAMESPACE;
+  }
+
+  @Override
+  public void startElement(String uri, String localName, String qName, Attributes attributes)
+      throws SAXException {
+    if (!NAMESPACE.equals(uri)) {
+      return;
+    }
+    ElementType.getTypeFromName(localName).startElement(stack, attributes);
+  }
+
+  @Override
+  public void endElement(String uri, String localName, String qName) throws SAXException {
+    if (!NAMESPACE.equals(uri)) {
+      return;
+    }
+    ElementType.getTypeFromName(localName).endElement(stack);
+  }
+}
diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/xml/JdbcServiceConfiguration.java b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/xml/JdbcServiceConfiguration.java
new file mode 100644
index 0000000..2892334
--- /dev/null
+++ b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/xml/JdbcServiceConfiguration.java
@@ -0,0 +1,60 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc.internal.xml;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.geode.cache.Cache;
+import org.apache.geode.connectors.jdbc.internal.ConnectionConfiguration;
+import org.apache.geode.connectors.jdbc.internal.InternalJdbcConnectorService;
+import org.apache.geode.connectors.jdbc.internal.RegionMapping;
+import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.internal.cache.extension.Extensible;
+import org.apache.geode.internal.cache.extension.Extension;
+import org.apache.geode.internal.cache.xmlcache.XmlGenerator;
+
+public class JdbcServiceConfiguration implements Extension<Cache> {
+
+  private final List<ConnectionConfiguration> connections = new ArrayList<>();
+  private final List<RegionMapping> mappings = new ArrayList<>();
+
+  void addConnectionConfig(ConnectionConfiguration config) {
+    connections.add(config);
+  }
+
+  void addRegionMapping(RegionMapping mapping) {
+    mappings.add(mapping);
+  }
+
+  @Override
+  public XmlGenerator<Cache> getXmlGenerator() {
+    return new JdbcConnectorServiceXmlGenerator(connections, mappings);
+  }
+
+  @Override
+  public void beforeCreate(Extensible<Cache> source, Cache cache) {
+    // nothing
+  }
+
+  @Override
+  public void onCreate(Extensible<Cache> source, Extensible<Cache> target) {
+    InternalCache internalCache = (InternalCache) target;
+    InternalJdbcConnectorService service =
+        internalCache.getService(InternalJdbcConnectorService.class);
+    connections.forEach(connection -> service.addOrUpdateConnectionConfig(connection));
+    mappings.forEach(mapping -> service.addOrUpdateRegionMapping(mapping));
+  }
+}
diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/xml/RegionMappingBuilder.java b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/xml/RegionMappingBuilder.java
new file mode 100644
index 0000000..b4adcaf
--- /dev/null
+++ b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/xml/RegionMappingBuilder.java
@@ -0,0 +1,65 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc.internal.xml;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.geode.connectors.jdbc.internal.RegionMapping;
+
+class RegionMappingBuilder {
+
+  private String regionName;
+  private String pdxClassName;
+  private String tableName;
+  private String connectionConfigName;
+  private boolean primaryKeyInValue;
+  private final Map<String, String> fieldToColumnMap = new HashMap<>();
+
+  RegionMappingBuilder withRegionName(String regionName) {
+    this.regionName = regionName;
+    return this;
+  }
+
+  RegionMappingBuilder withPdxClassName(String pdxClassName) {
+    this.pdxClassName = pdxClassName;
+    return this;
+  }
+
+  RegionMappingBuilder withTableName(String tableName) {
+    this.tableName = tableName;
+    return this;
+  }
+
+  RegionMappingBuilder withConnectionConfigName(String connectionConfigName) {
+    this.connectionConfigName = connectionConfigName;
+    return this;
+  }
+
+  RegionMappingBuilder withPrimaryKeyInValue(String primaryKeyInValue) {
+    this.primaryKeyInValue = Boolean.parseBoolean(primaryKeyInValue);
+    return this;
+  }
+
+  RegionMappingBuilder withFieldToColumnMapping(String fieldName, String columnMapping) {
+    this.fieldToColumnMap.put(fieldName, columnMapping);
+    return this;
+  }
+
+  RegionMapping build() {
+    return new RegionMapping(regionName, pdxClassName, tableName, connectionConfigName,
+        primaryKeyInValue, fieldToColumnMap);
+  }
+}
diff --git a/geode-connectors/src/main/resources/META-INF/services/org.apache.geode.internal.cache.CacheService b/geode-connectors/src/main/resources/META-INF/services/org.apache.geode.internal.cache.CacheService
new file mode 100644
index 0000000..bc91015
--- /dev/null
+++ b/geode-connectors/src/main/resources/META-INF/services/org.apache.geode.internal.cache.CacheService
@@ -0,0 +1 @@
+org.apache.geode.connectors.jdbc.internal.JdbcConnectorService
\ No newline at end of file
diff --git a/geode-connectors/src/main/resources/META-INF/services/org.apache.geode.internal.cache.xmlcache.XmlParser b/geode-connectors/src/main/resources/META-INF/services/org.apache.geode.internal.cache.xmlcache.XmlParser
new file mode 100644
index 0000000..9fbc42a
--- /dev/null
+++ b/geode-connectors/src/main/resources/META-INF/services/org.apache.geode.internal.cache.xmlcache.XmlParser
@@ -0,0 +1 @@
+org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlParser
\ No newline at end of file
diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/Employee.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/Employee.java
new file mode 100644
index 0000000..82e2e90
--- /dev/null
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/Employee.java
@@ -0,0 +1,54 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc;
+
+import org.apache.geode.pdx.PdxReader;
+import org.apache.geode.pdx.PdxSerializable;
+import org.apache.geode.pdx.PdxWriter;
+
+@SuppressWarnings("unused")
+public class Employee implements PdxSerializable {
+  private String name;
+  private int age;
+
+  public Employee() {
+    // nothing
+  }
+
+  Employee(String name, int age) {
+    this.name = name;
+    this.age = age;
+  }
+
+  String getName() {
+    return name;
+  }
+
+  int getAge() {
+    return age;
+  }
+
+  @Override
+  public void toData(PdxWriter writer) {
+    writer.writeString("name", this.name);
+    writer.writeInt("age", this.age);
+  }
+
+  @Override
+  public void fromData(PdxReader reader) {
+    this.name = reader.readString("name");
+    this.age = reader.readInt("age");
+  }
+}
diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcAsyncWriterIntegrationTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcAsyncWriterIntegrationTest.java
new file mode 100644
index 0000000..1655bd9
--- /dev/null
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcAsyncWriterIntegrationTest.java
@@ -0,0 +1,254 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc;
+
+import static org.apache.geode.cache.RegionShortcut.REPLICATE;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.concurrent.TimeUnit;
+
+import org.awaitility.Awaitility;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.cache.Cache;
+import org.apache.geode.cache.CacheFactory;
+import org.apache.geode.cache.Region;
+import org.apache.geode.cache.RegionFactory;
+import org.apache.geode.connectors.jdbc.internal.SqlHandler;
+import org.apache.geode.connectors.jdbc.internal.TestConfigService;
+import org.apache.geode.connectors.jdbc.internal.TestableConnectionManager;
+import org.apache.geode.pdx.PdxInstance;
+import org.apache.geode.test.junit.categories.IntegrationTest;
+
+@Category(IntegrationTest.class)
+public class JdbcAsyncWriterIntegrationTest {
+
+  private static final String DB_NAME = "DerbyDB";
+  private static final String REGION_TABLE_NAME = "employees";
+  private static final String CONNECTION_URL = "jdbc:derby:memory:" + DB_NAME + ";create=true";
+
+  private Cache cache;
+  private Region<String, PdxInstance> employees;
+  private Connection connection;
+  private Statement statement;
+  private JdbcAsyncWriter jdbcWriter;
+  private PdxInstance pdxEmployee1;
+  private PdxInstance pdxEmployee2;
+  private Employee employee1;
+  private Employee employee2;
+
+  @Before
+  public void setup() throws Exception {
+    cache = new CacheFactory().setPdxReadSerialized(false).create();
+    employees = createRegionWithJDBCAsyncWriter(REGION_TABLE_NAME);
+    connection = DriverManager.getConnection(CONNECTION_URL);
+    statement = connection.createStatement();
+    statement.execute("Create Table " + REGION_TABLE_NAME
+        + " (id varchar(10) primary key not null, name varchar(10), age int)");
+    pdxEmployee1 = cache.createPdxInstanceFactory(Employee.class.getName())
+        .writeString("name", "Emp1").writeInt("age", 55).create();
+    pdxEmployee2 = cache.createPdxInstanceFactory(Employee.class.getName())
+        .writeString("name", "Emp2").writeInt("age", 21).create();
+    employee1 = (Employee) pdxEmployee1.getObject();
+    employee2 = (Employee) pdxEmployee2.getObject();
+  }
+
+  @After
+  public void tearDown() throws Exception {
+    cache.close();
+    closeDB();
+  }
+
+  private void closeDB() throws Exception {
+    if (statement == null) {
+      statement = connection.createStatement();
+    }
+    statement.execute("Drop table " + REGION_TABLE_NAME);
+    statement.close();
+
+    if (connection != null) {
+      connection.close();
+    }
+  }
+
+  @Test
+  public void validateJDBCAsyncWriterTotalEvents() {
+    employees.put("1", pdxEmployee1);
+    employees.put("2", pdxEmployee2);
+
+    awaitUntil(() -> assertThat(jdbcWriter.getTotalEvents()).isEqualTo(2));
+  }
+
+  @Test
+  public void canInsertIntoTable() throws Exception {
+    employees.put("1", pdxEmployee1);
+    employees.put("2", pdxEmployee2);
+
+    awaitUntil(() -> assertThat(jdbcWriter.getSuccessfulEvents()).isEqualTo(2));
+
+    ResultSet resultSet =
+        statement.executeQuery("select * from " + REGION_TABLE_NAME + " order by id asc");
+    assertRecordMatchesEmployee(resultSet, "1", employee1);
+    assertRecordMatchesEmployee(resultSet, "2", employee2);
+    assertThat(resultSet.next()).isFalse();
+  }
+
+  @Test
+  public void verifyThatPdxFieldNamedSameAsPrimaryKeyIsIgnored() throws Exception {
+    PdxInstance pdx1 = cache.createPdxInstanceFactory("Employee").writeString("name", "Emp1")
+        .writeInt("age", 55).writeInt("id", 3).create();
+    employees.put("1", pdx1);
+
+    awaitUntil(() -> assertThat(jdbcWriter.getSuccessfulEvents()).isEqualTo(1));
+
+    ResultSet resultSet =
+        statement.executeQuery("select * from " + REGION_TABLE_NAME + " order by id asc");
+    assertRecordMatchesEmployee(resultSet, "1", employee1);
+    assertThat(resultSet.next()).isFalse();
+  }
+
+  @Test
+  public void putNonPdxInstanceFails() {
+    Region nonPdxEmployees = this.employees;
+    nonPdxEmployees.put("1", "non pdx instance");
+
+    awaitUntil(() -> assertThat(jdbcWriter.getTotalEvents()).isEqualTo(1));
+
+    assertThat(jdbcWriter.getSuccessfulEvents()).isEqualTo(0);
+  }
+
+  @Test
+  public void putNonPdxInstanceThatIsPdxSerializable() throws SQLException {
+    Region nonPdxEmployees = this.employees;
+    Employee value = new Employee("Emp2", 22);
+    nonPdxEmployees.put("2", value);
+
+    awaitUntil(() -> assertThat(jdbcWriter.getSuccessfulEvents()).isEqualTo(1));
+
+    ResultSet resultSet =
+        statement.executeQuery("select * from " + REGION_TABLE_NAME + " order by id asc");
+    assertRecordMatchesEmployee(resultSet, "2", value);
+    assertThat(resultSet.next()).isFalse();
+  }
+
+  @Test
+  public void canDestroyFromTable() throws Exception {
+    employees.put("1", pdxEmployee1);
+    employees.put("2", pdxEmployee2);
+
+    awaitUntil(() -> assertThat(jdbcWriter.getSuccessfulEvents()).isEqualTo(2));
+
+    employees.destroy("1");
+
+    awaitUntil(() -> assertThat(jdbcWriter.getSuccessfulEvents()).isEqualTo(3));
+
+    ResultSet resultSet =
+        statement.executeQuery("select * from " + REGION_TABLE_NAME + " order by id asc");
+    assertRecordMatchesEmployee(resultSet, "2", employee2);
+    assertThat(resultSet.next()).isFalse();
+  }
+
+  @Test
+  public void canUpdateTable() throws Exception {
+    employees.put("1", pdxEmployee1);
+
+    awaitUntil(() -> assertThat(jdbcWriter.getSuccessfulEvents()).isEqualTo(1));
+
+    employees.put("1", pdxEmployee2);
+
+    awaitUntil(() -> assertThat(jdbcWriter.getSuccessfulEvents()).isEqualTo(2));
+
+    ResultSet resultSet =
+        statement.executeQuery("select * from " + REGION_TABLE_NAME + " order by id asc");
+    assertRecordMatchesEmployee(resultSet, "1", employee2);
+    assertThat(resultSet.next()).isFalse();
+  }
+
+  @Test
+  public void canUpdateBecomeInsert() throws Exception {
+    employees.put("1", pdxEmployee1);
+
+    awaitUntil(() -> assertThat(jdbcWriter.getSuccessfulEvents()).isEqualTo(1));
+
+    statement.execute("delete from " + REGION_TABLE_NAME + " where id = '1'");
+    validateTableRowCount(0);
+
+    employees.put("1", pdxEmployee2);
+
+    awaitUntil(() -> assertThat(jdbcWriter.getSuccessfulEvents()).isEqualTo(2));
+
+    ResultSet resultSet =
+        statement.executeQuery("select * from " + REGION_TABLE_NAME + " order by id asc");
+    assertRecordMatchesEmployee(resultSet, "1", employee2);
+    assertThat(resultSet.next()).isFalse();
+  }
+
+  @Test
+  public void canInsertBecomeUpdate() throws Exception {
+    statement.execute("Insert into " + REGION_TABLE_NAME + " values('1', 'bogus', 11)");
+    validateTableRowCount(1);
+
+    employees.put("1", pdxEmployee1);
+
+    awaitUntil(() -> assertThat(jdbcWriter.getSuccessfulEvents()).isEqualTo(1));
+
+    ResultSet resultSet =
+        statement.executeQuery("select * from " + REGION_TABLE_NAME + " order by id asc");
+    assertRecordMatchesEmployee(resultSet, "1", employee1);
+    assertThat(resultSet.next()).isFalse();
+  }
+
+  private void awaitUntil(final Runnable supplier) {
+    Awaitility.await().atMost(30, TimeUnit.SECONDS).until(supplier);
+  }
+
+  private void assertRecordMatchesEmployee(ResultSet resultSet, String key, Employee employee)
+      throws SQLException {
+    assertThat(resultSet.next()).isTrue();
+    assertThat(resultSet.getString("id")).isEqualTo(key);
+    assertThat(resultSet.getString("name")).isEqualTo(employee.getName());
+    assertThat(resultSet.getObject("age")).isEqualTo(employee.getAge());
+  }
+
+  private Region<String, PdxInstance> createRegionWithJDBCAsyncWriter(String regionName) {
+    jdbcWriter = new JdbcAsyncWriter(createSqlHandler());
+    cache.createAsyncEventQueueFactory().setBatchSize(1).setBatchTimeInterval(1)
+        .create("jdbcAsyncQueue", jdbcWriter);
+
+    RegionFactory<String, PdxInstance> regionFactory = cache.createRegionFactory(REPLICATE);
+    regionFactory.addAsyncEventQueueId("jdbcAsyncQueue");
+    return regionFactory.create(regionName);
+  }
+
+  private void validateTableRowCount(int expected) throws Exception {
+    ResultSet resultSet = statement.executeQuery("select count(*) from " + REGION_TABLE_NAME);
+    resultSet.next();
+    int size = resultSet.getInt(1);
+    assertThat(size).isEqualTo(expected);
+  }
+
+  private SqlHandler createSqlHandler() {
+    return new SqlHandler(new TestableConnectionManager(TestConfigService.getTestConfigService()));
+  }
+
+}
diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcAsyncWriterTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcAsyncWriterTest.java
new file mode 100644
index 0000000..ef285dd
--- /dev/null
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcAsyncWriterTest.java
@@ -0,0 +1,93 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyZeroInteractions;
+import static org.mockito.Mockito.when;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.cache.asyncqueue.AsyncEvent;
+import org.apache.geode.connectors.jdbc.internal.SqlHandler;
+import org.apache.geode.internal.cache.InternalRegion;
+import org.apache.geode.test.junit.categories.UnitTest;
+
+@Category(UnitTest.class)
+public class JdbcAsyncWriterTest {
+
+  private SqlHandler sqlHandler;
+  private JdbcAsyncWriter writer;
+
+  @Before
+  public void setup() {
+    sqlHandler = mock(SqlHandler.class);
+    writer = new JdbcAsyncWriter(sqlHandler);
+  }
+
+  @Test
+  public void throwsNullPointerExceptionIfGivenNullList() {
+    assertThatThrownBy(() -> writer.processEvents(null)).isInstanceOf(NullPointerException.class);
+  }
+
+  @Test
+  public void doesNothingIfEventListIsEmpty() {
+    writer.processEvents(Collections.emptyList());
+
+    verifyZeroInteractions(sqlHandler);
+    assertThat(writer.getSuccessfulEvents()).isZero();
+    assertThat(writer.getTotalEvents()).isZero();
+  }
+
+  @Test
+  public void writesAProvidedEvent() {
+    writer.processEvents(Collections.singletonList(createMockEvent()));
+
+    verify(sqlHandler, times(1)).write(any(), any(), any(), any());
+    assertThat(writer.getSuccessfulEvents()).isEqualTo(1);
+    assertThat(writer.getTotalEvents()).isEqualTo(1);
+  }
+
+  @Test
+  public void writesMultipleProvidedEvents() {
+    List<AsyncEvent> events = new ArrayList<>();
+    events.add(createMockEvent());
+    events.add(createMockEvent());
+    events.add(createMockEvent());
+
+    writer.processEvents(events);
+
+    verify(sqlHandler, times(3)).write(any(), any(), any(), any());
+    assertThat(writer.getSuccessfulEvents()).isEqualTo(3);
+    assertThat(writer.getTotalEvents()).isEqualTo(3);
+  }
+
+  private AsyncEvent createMockEvent() {
+    AsyncEvent event = mock(AsyncEvent.class);
+    when(event.getRegion()).thenReturn(mock(InternalRegion.class));
+    return event;
+  }
+}
diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcLoaderIntegrationTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcLoaderIntegrationTest.java
new file mode 100644
index 0000000..3905531
--- /dev/null
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcLoaderIntegrationTest.java
@@ -0,0 +1,105 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.cache.Cache;
+import org.apache.geode.cache.CacheFactory;
+import org.apache.geode.cache.Region;
+import org.apache.geode.cache.RegionFactory;
+import org.apache.geode.cache.RegionShortcut;
+import org.apache.geode.connectors.jdbc.internal.SqlHandler;
+import org.apache.geode.connectors.jdbc.internal.TestConfigService;
+import org.apache.geode.connectors.jdbc.internal.TestableConnectionManager;
+import org.apache.geode.pdx.PdxInstance;
+import org.apache.geode.test.junit.categories.IntegrationTest;
+
+@Category(IntegrationTest.class)
+public class JdbcLoaderIntegrationTest {
+
+  private static final String DB_NAME = "DerbyDB";
+  private static final String REGION_TABLE_NAME = "employees";
+  private static final String CONNECTION_URL = "jdbc:derby:memory:" + DB_NAME + ";create=true";
+
+  private Cache cache;
+  private Connection connection;
+  private Statement statement;
+
+  @Before
+  public void setup() throws Exception {
+    cache = new CacheFactory().setPdxReadSerialized(false).create();
+    connection = DriverManager.getConnection(CONNECTION_URL);
+    statement = connection.createStatement();
+    statement.execute("Create Table " + REGION_TABLE_NAME
+        + " (id varchar(10) primary key not null, name varchar(10), age int)");
+  }
+
+  @After
+  public void tearDown() throws Exception {
+    cache.close();
+    closeDB();
+  }
+
+  private void closeDB() throws Exception {
+    if (statement == null) {
+      statement = connection.createStatement();
+    }
+    statement.execute("Drop table " + REGION_TABLE_NAME);
+    statement.close();
+
+    if (connection != null) {
+      connection.close();
+    }
+  }
+
+  @Test
+  public void verifySimpleGet() throws SQLException {
+    statement.execute("Insert into " + REGION_TABLE_NAME + " values('1', 'Emp1', 21)");
+    Region<String, PdxInstance> region = createRegionWithJDBCLoader(REGION_TABLE_NAME);
+    PdxInstance pdx = region.get("1");
+
+    assertThat(pdx.getField("name")).isEqualTo("Emp1");
+    assertThat(pdx.getField("age")).isEqualTo(21);
+  }
+
+  @Test
+  public void verifySimpleMiss() throws SQLException {
+    Region<String, PdxInstance> region = createRegionWithJDBCLoader(REGION_TABLE_NAME);
+    PdxInstance pdx = region.get("1");
+    assertThat(pdx).isNull();
+  }
+
+  private SqlHandler createSqlHandler() {
+    return new SqlHandler(new TestableConnectionManager(TestConfigService.getTestConfigService()));
+  }
+
+  private Region<String, PdxInstance> createRegionWithJDBCLoader(String regionName) {
+    JdbcLoader<String, PdxInstance> jdbcLoader = new JdbcLoader<>(createSqlHandler());
+    RegionFactory<String, PdxInstance> rf = cache.createRegionFactory(RegionShortcut.REPLICATE);
+    rf.setCacheLoader(jdbcLoader);
+    return rf.create(regionName);
+  }
+}
diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcLoaderTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcLoaderTest.java
new file mode 100644
index 0000000..8b08587
--- /dev/null
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcLoaderTest.java
@@ -0,0 +1,44 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.cache.LoaderHelper;
+import org.apache.geode.connectors.jdbc.internal.SqlHandler;
+import org.apache.geode.internal.cache.InternalRegion;
+import org.apache.geode.test.junit.categories.UnitTest;
+
+@Category(UnitTest.class)
+public class JdbcLoaderTest {
+
+  @Test
+  public void loadReadsFromSqlHandler() {
+    SqlHandler sqlHandler = mock(SqlHandler.class);
+    JdbcLoader<Object, Object> loader = new JdbcLoader<>(sqlHandler);
+    LoaderHelper loaderHelper = mock(LoaderHelper.class);
+    when(loaderHelper.getRegion()).thenReturn(mock(InternalRegion.class));
+    loader.load(loaderHelper);
+    verify(sqlHandler, times(1)).read(any(), any());
+  }
+
+}
diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcWriterIntegrationTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcWriterIntegrationTest.java
new file mode 100644
index 0000000..e26b3ee
--- /dev/null
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcWriterIntegrationTest.java
@@ -0,0 +1,234 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc;
+
+import static com.googlecode.catchexception.CatchException.catchException;
+import static com.googlecode.catchexception.CatchException.caughtException;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.cache.Cache;
+import org.apache.geode.cache.CacheFactory;
+import org.apache.geode.cache.Region;
+import org.apache.geode.cache.RegionFactory;
+import org.apache.geode.cache.RegionShortcut;
+import org.apache.geode.connectors.jdbc.internal.SqlHandler;
+import org.apache.geode.connectors.jdbc.internal.TestConfigService;
+import org.apache.geode.connectors.jdbc.internal.TestableConnectionManager;
+import org.apache.geode.pdx.PdxInstance;
+import org.apache.geode.test.junit.categories.IntegrationTest;
+
+@Category(IntegrationTest.class)
+public class JdbcWriterIntegrationTest {
+
+  private static final String DB_NAME = "DerbyDB";
+  private static final String REGION_TABLE_NAME = "employees";
+  private static final String CONNECTION_URL = "jdbc:derby:memory:" + DB_NAME + ";create=true";
+
+  private Cache cache;
+  private Region<String, PdxInstance> employees;
+  private Connection connection;
+  private Statement statement;
+  private JdbcWriter jdbcWriter;
+  private PdxInstance pdx1;
+  private PdxInstance pdx2;
+  private Employee employee1;
+  private Employee employee2;
+
+  @Before
+  public void setup() throws Exception {
+    cache = new CacheFactory().setPdxReadSerialized(false).create();
+    employees = createRegionWithJDBCSynchronousWriter(REGION_TABLE_NAME);
+    connection = DriverManager.getConnection(CONNECTION_URL);
+    statement = connection.createStatement();
+    statement.execute("Create Table " + REGION_TABLE_NAME
+        + " (id varchar(10) primary key not null, name varchar(10), age int)");
+    pdx1 = cache.createPdxInstanceFactory(Employee.class.getName()).writeString("name", "Emp1")
+        .writeInt("age", 55).create();
+    pdx2 = cache.createPdxInstanceFactory(Employee.class.getName()).writeString("name", "Emp2")
+        .writeInt("age", 21).create();
+    employee1 = (Employee) pdx1.getObject();
+    employee2 = (Employee) pdx2.getObject();
+  }
+
+  @After
+  public void tearDown() throws Exception {
+    cache.close();
+    closeDB();
+  }
+
+  private void closeDB() throws Exception {
+    if (statement == null) {
+      statement = connection.createStatement();
+    }
+    statement.execute("Drop table " + REGION_TABLE_NAME);
+    statement.close();
+
+    if (connection != null) {
+      connection.close();
+    }
+  }
+
+  @Test
+  public void canInsertIntoTable() throws Exception {
+    employees.put("1", pdx1);
+    employees.put("2", pdx2);
+
+    ResultSet resultSet =
+        statement.executeQuery("select * from " + REGION_TABLE_NAME + " order by id asc");
+    assertRecordMatchesEmployee(resultSet, "1", employee1);
+    assertRecordMatchesEmployee(resultSet, "2", employee2);
+    assertThat(resultSet.next()).isFalse();
+  }
+
+  @Test
+  public void canPutAllInsertIntoTable() throws Exception {
+    Map<String, PdxInstance> putAllMap = new HashMap<>();
+    putAllMap.put("1", pdx1);
+    putAllMap.put("2", pdx2);
+    employees.putAll(putAllMap);
+
+    ResultSet resultSet =
+        statement.executeQuery("select * from " + REGION_TABLE_NAME + " order by id asc");
+    assertRecordMatchesEmployee(resultSet, "1", employee1);
+    assertRecordMatchesEmployee(resultSet, "2", employee2);
+    assertThat(resultSet.next()).isFalse();
+  }
+
+  @Test
+  public void verifyThatPdxFieldNamedSameAsPrimaryKeyIsIgnored() throws Exception {
+    PdxInstance pdxInstanceWithId = cache.createPdxInstanceFactory(Employee.class.getName())
+        .writeString("name", "Emp1").writeInt("age", 55).writeInt("id", 3).create();
+    employees.put("1", pdxInstanceWithId);
+
+    ResultSet resultSet =
+        statement.executeQuery("select * from " + REGION_TABLE_NAME + " order by id asc");
+    assertRecordMatchesEmployee(resultSet, "1", (Employee) pdxInstanceWithId.getObject());
+    assertThat(resultSet.next()).isFalse();
+  }
+
+  @Test
+  public void putNonPdxInstanceFails() {
+    Region nonPdxEmployees = this.employees;
+    catchException(nonPdxEmployees).put("1", "non pdx instance");
+    assertThat((Exception) caughtException()).isInstanceOf(IllegalArgumentException.class);
+  }
+
+  @Test
+  public void putNonPdxInstanceThatIsPdxSerializable() throws SQLException {
+    Region nonPdxEmployees = this.employees;
+    Employee value = new Employee("Emp2", 22);
+    nonPdxEmployees.put("2", value);
+
+    ResultSet resultSet =
+        statement.executeQuery("select * from " + REGION_TABLE_NAME + " order by id asc");
+    assertRecordMatchesEmployee(resultSet, "2", value);
+    assertThat(resultSet.next()).isFalse();
+  }
+
+  @Test
+  public void canDestroyFromTable() throws Exception {
+    employees.put("1", pdx1);
+    employees.put("2", pdx2);
+
+    employees.destroy("1");
+
+    ResultSet resultSet =
+        statement.executeQuery("select * from " + REGION_TABLE_NAME + " order by id asc");
+    assertRecordMatchesEmployee(resultSet, "2", employee2);
+    assertThat(resultSet.next()).isFalse();
+  }
+
+  @Test
+  public void canUpdateTable() throws Exception {
+    employees.put("1", pdx1);
+    employees.put("1", pdx2);
+
+    ResultSet resultSet =
+        statement.executeQuery("select * from " + REGION_TABLE_NAME + " order by id asc");
+    assertRecordMatchesEmployee(resultSet, "1", employee2);
+    assertThat(resultSet.next()).isFalse();
+  }
+
+  @Test
+  public void canUpdateBecomeInsert() throws Exception {
+    employees.put("1", pdx1);
+
+    statement.execute("delete from " + REGION_TABLE_NAME + " where id = '1'");
+    validateTableRowCount(0);
+
+    employees.put("1", pdx2);
+
+    ResultSet resultSet =
+        statement.executeQuery("select * from " + REGION_TABLE_NAME + " order by id asc");
+    assertRecordMatchesEmployee(resultSet, "1", employee2);
+    assertThat(resultSet.next()).isFalse();
+  }
+
+  @Test
+  public void canInsertBecomeUpdate() throws Exception {
+    statement.execute("Insert into " + REGION_TABLE_NAME + " values('1', 'bogus', 11)");
+    validateTableRowCount(1);
+
+    employees.put("1", pdx1);
+
+    ResultSet resultSet =
+        statement.executeQuery("select * from " + REGION_TABLE_NAME + " order by id asc");
+    assertRecordMatchesEmployee(resultSet, "1", employee1);
+    assertThat(resultSet.next()).isFalse();
+  }
+
+  private Region<String, PdxInstance> createRegionWithJDBCSynchronousWriter(String regionName) {
+    jdbcWriter = new JdbcWriter(createSqlHandler());
+    jdbcWriter.init(new Properties());
+
+    RegionFactory<String, PdxInstance> regionFactory =
+        cache.createRegionFactory(RegionShortcut.REPLICATE);
+    regionFactory.setCacheWriter(jdbcWriter);
+    return regionFactory.create(regionName);
+  }
+
+  private void validateTableRowCount(int expected) throws Exception {
+    ResultSet resultSet = statement.executeQuery("select count(*) from " + REGION_TABLE_NAME);
+    resultSet.next();
+    int size = resultSet.getInt(1);
+    assertThat(size).isEqualTo(expected);
+  }
+
+  private SqlHandler createSqlHandler() {
+    return new SqlHandler(new TestableConnectionManager(TestConfigService.getTestConfigService()));
+  }
+
+  private void assertRecordMatchesEmployee(ResultSet resultSet, String key, Employee employee)
+      throws SQLException {
+    assertThat(resultSet.next()).isTrue();
+    assertThat(resultSet.getString("id")).isEqualTo(key);
+    assertThat(resultSet.getString("name")).isEqualTo(employee.getName());
+    assertThat(resultSet.getObject("age")).isEqualTo(employee.getAge());
+  }
+}
diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcWriterTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcWriterTest.java
new file mode 100644
index 0000000..1767c63
--- /dev/null
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcWriterTest.java
@@ -0,0 +1,119 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc;
+
+import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyZeroInteractions;
+import static org.mockito.Mockito.when;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.cache.EntryEvent;
+import org.apache.geode.cache.RegionEvent;
+import org.apache.geode.cache.SerializedCacheValue;
+import org.apache.geode.connectors.jdbc.internal.SqlHandler;
+import org.apache.geode.internal.cache.InternalRegion;
+import org.apache.geode.pdx.PdxInstance;
+import org.apache.geode.test.junit.categories.UnitTest;
+
+@Category(UnitTest.class)
+public class JdbcWriterTest {
+
+  private EntryEvent<Object, Object> entryEvent;
+  private PdxInstance pdxInstance;
+  private SqlHandler sqlHandler;
+
+  @Before
+  public void setUp() {
+    entryEvent = mock(EntryEvent.class);
+    pdxInstance = mock(PdxInstance.class);
+    SerializedCacheValue<Object> serializedNewValue = mock(SerializedCacheValue.class);
+    sqlHandler = mock(SqlHandler.class);
+
+    when(entryEvent.getRegion()).thenReturn(mock(InternalRegion.class));
+    when(entryEvent.getSerializedNewValue()).thenReturn(serializedNewValue);
+    when(serializedNewValue.getDeserializedValue()).thenReturn(pdxInstance);
+
+  }
+
+  @Test
+  public void beforeUpdateWithPdxInstanceWritesToSqlHandler() {
+    JdbcWriter<Object, Object> writer = new JdbcWriter<>(sqlHandler);
+
+    writer.beforeUpdate(entryEvent);
+
+    verify(sqlHandler, times(1)).write(any(), any(), any(), eq(pdxInstance));
+  }
+
+  @Test
+  public void beforeUpdateWithoutPdxInstanceWritesToSqlHandler() {
+    EntryEvent<Object, Object> entryEvent = mock(EntryEvent.class);
+    Object value = new Object();
+    SerializedCacheValue<Object> serializedNewValue = mock(SerializedCacheValue.class);
+    SqlHandler sqlHander = mock(SqlHandler.class);
+
+    when(entryEvent.getRegion()).thenReturn(mock(InternalRegion.class));
+    when(entryEvent.getSerializedNewValue()).thenReturn(serializedNewValue);
+    when(serializedNewValue.getDeserializedValue()).thenReturn(value);
+
+    JdbcWriter<Object, Object> writer = new JdbcWriter<>(sqlHander);
+
+    assertThatThrownBy(() -> writer.beforeUpdate(entryEvent))
+        .isInstanceOf(IllegalArgumentException.class);
+  }
+
+  @Test
+  public void beforeCreateWithPdxInstanceWritesToSqlHandler() {
+    JdbcWriter<Object, Object> writer = new JdbcWriter<>(sqlHandler);
+
+    writer.beforeCreate(entryEvent);
+
+    verify(sqlHandler, times(1)).write(any(), any(), any(), eq(pdxInstance));
+  }
+
+  @Test
+  public void beforeDestroyWithPdxInstanceWritesToSqlHandler() {
+    JdbcWriter<Object, Object> writer = new JdbcWriter<>(sqlHandler);
+
+    writer.beforeDestroy(entryEvent);
+
+    verify(sqlHandler, times(1)).write(any(), any(), any(), eq(pdxInstance));
+  }
+
+  @Test
+  public void beforeRegionDestroyDoesNotWriteToSqlHandler() {
+    JdbcWriter<Object, Object> writer = new JdbcWriter<>(sqlHandler);
+
+    writer.beforeRegionDestroy(mock(RegionEvent.class));
+
+    verifyZeroInteractions(sqlHandler);
+  }
+
+  @Test
+  public void beforeRegionClearDoesNotWriteToSqlHandler() {
+    JdbcWriter<Object, Object> writer = new JdbcWriter<>(sqlHandler);
+
+    writer.beforeRegionClear(mock(RegionEvent.class));
+
+    verifyZeroInteractions(sqlHandler);
+  }
+}
diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/AbstractJdbcCallbackTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/AbstractJdbcCallbackTest.java
new file mode 100644
index 0000000..2199ebc
--- /dev/null
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/AbstractJdbcCallbackTest.java
@@ -0,0 +1,73 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc.internal;
+
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.test.junit.categories.UnitTest;
+
+@Category(UnitTest.class)
+public class AbstractJdbcCallbackTest {
+
+  private AbstractJdbcCallback jdbcCallback;
+  private SqlHandler sqlHandler;
+
+  @Before
+  public void setUp() throws Exception {
+    sqlHandler = mock(SqlHandler.class);
+    jdbcCallback = new AbstractJdbcCallback(sqlHandler) {};
+  }
+
+  @Test
+  public void closesSqlHandler() throws Exception {
+    jdbcCallback.close();
+    verify(sqlHandler, times(1)).close();
+  }
+
+  @Test
+  public void returnsCorrectSqlHander() throws Exception {
+    assertThat(jdbcCallback.getSqlHandler()).isSameAs(sqlHandler);
+  }
+
+  @Test
+  public void checkInitializedDoesNothingIfInitialized() {
+    jdbcCallback.checkInitialized(mock(InternalCache.class));
+    assertThat(jdbcCallback.getSqlHandler()).isSameAs(sqlHandler);
+  }
+
+  @Test
+  public void initializedSqlHandlerIfNoneExists() {
+    jdbcCallback = new AbstractJdbcCallback() {};
+    InternalCache cache = mock(InternalCache.class);
+    InternalJdbcConnectorService service = mock(InternalJdbcConnectorService.class);
+    when(cache.getService(any())).thenReturn(service);
+    assertThat(jdbcCallback.getSqlHandler()).isNull();
+
+    jdbcCallback.checkInitialized(cache);
+
+    assertThat(jdbcCallback.getSqlHandler()).isNotNull();
+  }
+}
diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/ColumnValueTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/ColumnValueTest.java
new file mode 100644
index 0000000..a7468fa
--- /dev/null
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/ColumnValueTest.java
@@ -0,0 +1,57 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc.internal;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.test.junit.categories.UnitTest;
+
+@Category(UnitTest.class)
+public class ColumnValueTest {
+  private static final String COLUMN_NAME = "columnName";
+  private static final Object VALUE = new Object();
+
+  private ColumnValue value;
+
+  @Before
+  public void setup() {
+    value = new ColumnValue(true, COLUMN_NAME, VALUE);
+  }
+
+  @Test
+  public void isKeyReturnsCorrectValue() {
+    assertThat(value.isKey()).isTrue();
+  }
+
+  @Test
+  public void hasCorrectColumnName() {
+    assertThat(value.getColumnName()).isEqualTo(COLUMN_NAME);
+  }
+
+  @Test
+  public void hasCorrectValue() {
+    assertThat(value.getValue()).isSameAs(VALUE);
+  }
+
+  @Test
+  public void toStringContainsAllVariables() {
+    assertThat(value.toString()).contains(Boolean.toString(true)).contains(COLUMN_NAME)
+        .contains(VALUE.toString());
+  }
+}
diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/ConnectionConfigurationTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/ConnectionConfigurationTest.java
new file mode 100644
index 0000000..639e278
--- /dev/null
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/ConnectionConfigurationTest.java
@@ -0,0 +1,63 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc.internal;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.test.junit.categories.UnitTest;
+
+@Category(UnitTest.class)
+public class ConnectionConfigurationTest {
+
+  @Test
+  public void initiatedWithNullValues() {
+    ConnectionConfiguration config = new ConnectionConfiguration(null, null, null, null);
+    assertThat(config.getName()).isNull();
+    assertThat(config.getUrl()).isNull();
+    assertThat(config.getUser()).isNull();
+    assertThat(config.getPassword()).isNull();
+  }
+
+  @Test
+  public void hasCorrectName() {
+    String name = "name";
+    ConnectionConfiguration config = new ConnectionConfiguration(name, null, null, null);
+    assertThat(config.getName()).isEqualTo(name);
+  }
+
+  @Test
+  public void hasCorrectUrl() {
+    String url = "url";
+    ConnectionConfiguration config = new ConnectionConfiguration(null, url, null, null);
+    assertThat(config.getUrl()).isEqualTo(url);
+  }
+
+  @Test
+  public void hasCorrectUser() {
+    String user = "user";
+    ConnectionConfiguration config = new ConnectionConfiguration(null, null, user, null);
+    assertThat(config.getUser()).isEqualTo(user);
+  }
+
+  @Test
+  public void hasCorrectPassword() {
+    String password = "password";
+    ConnectionConfiguration config = new ConnectionConfiguration(null, null, null, password);
+    assertThat(config.getPassword()).isEqualTo(password);
+  }
+}
diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/ConnectionManagerUnitTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/ConnectionManagerUnitTest.java
new file mode 100644
index 0000000..8358d1c
--- /dev/null
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/ConnectionManagerUnitTest.java
@@ -0,0 +1,252 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc.internal;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import java.sql.Connection;
+import java.sql.DatabaseMetaData;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.Arrays;
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.junit.rules.ExpectedException;
+
+import org.apache.geode.cache.Operation;
+import org.apache.geode.pdx.PdxInstance;
+import org.apache.geode.test.junit.categories.UnitTest;
+
+@Category(UnitTest.class)
+public class ConnectionManagerUnitTest {
+  private static final String REGION_NAME = "testRegion";
+  private static final String TABLE_NAME = "testTable";
+  private static final String CONFIG_NAME = "configName";
+  private static final String KEY_COLUMN = "keyColumn";
+
+  @Rule
+  public ExpectedException thrown = ExpectedException.none();
+
+  private JdbcConnectorService configService;
+  private ConnectionManager manager;
+  private Connection connection;
+  private ConnectionConfiguration connectionConfig;
+  private RegionMapping mapping;
+  private Object key = new Object();
+  private PdxInstance value = mock(PdxInstance.class);
+
+
+  @Before
+  public void setup() throws Exception {
+    configService = mock(JdbcConnectorService.class);
+    manager = spy(new ConnectionManager(configService));
+    connection = mock(Connection.class);
+
+    connectionConfig = getTestConnectionConfig("name", "url", null, null);
+    doReturn(connection).when(manager).getSQLConnection(connectionConfig);
+
+    mapping = mock(RegionMapping.class);
+    when(mapping.getTableName()).thenReturn(TABLE_NAME);
+  }
+
+  @Test
+  public void getsCorrectMapping() {
+    manager.getMappingForRegion(REGION_NAME);
+    verify(configService).getMappingForRegion(REGION_NAME);
+  }
+
+  @Test
+  public void getsCorrectConnectionConfig() {
+    manager.getConnectionConfig(CONFIG_NAME);
+    verify(configService).getConnectionConfig(CONFIG_NAME);
+  }
+
+  @Test
+  public void retrievesANewConnection() throws Exception {
+    Connection returnedConnection = manager.getConnection(connectionConfig);
+    assertThat(returnedConnection).isNotNull().isSameAs(connection);
+  }
+
+  @Test
+  public void retrievesSameConnectionForSameConnectionConfig() throws Exception {
+    Connection returnedConnection = manager.getConnection(connectionConfig);
+    Connection secondReturnedConnection = manager.getConnection(connectionConfig);
+    assertThat(returnedConnection).isNotNull().isSameAs(connection);
+    assertThat(secondReturnedConnection).isNotNull().isSameAs(connection);
+  }
+
+  @Test
+  public void retrievesDifferentConnectionForEachConfig() throws Exception {
+    Connection secondConnection = mock(Connection.class);
+    ConnectionConfiguration secondConnectionConfig =
+        getTestConnectionConfig("newName", "url", null, null);
+    doReturn(secondConnection).when(manager).getSQLConnection(secondConnectionConfig);
+
+    Connection returnedConnection = manager.getConnection(connectionConfig);
+    Connection secondReturnedConnection = manager.getConnection(secondConnectionConfig);
+    assertThat(returnedConnection).isNotNull().isSameAs(connection);
+    assertThat(secondReturnedConnection).isNotNull().isSameAs(secondConnection);
+    assertThat(returnedConnection).isNotSameAs(secondReturnedConnection);
+  }
+
+  @Test
+  public void retrievesANewConnectionIfCachedOneIsClosed() throws Exception {
+    manager.getConnection(connectionConfig);
+    when(connection.isClosed()).thenReturn(true);
+
+    Connection secondConnection = mock(Connection.class);
+    doReturn(secondConnection).when(manager).getSQLConnection(connectionConfig);
+    Connection secondReturnedConnection = manager.getConnection(connectionConfig);
+    assertThat(secondReturnedConnection).isSameAs(secondConnection);
+  }
+
+  @Test
+  public void closesAllConnections() throws Exception {
+    Connection secondConnection = mock(Connection.class);
+    ConnectionConfiguration secondConnectionConfig =
+        getTestConnectionConfig("newName", "url", null, null);
+
+    doReturn(secondConnection).when(manager).getSQLConnection(secondConnectionConfig);
+    manager.getConnection(connectionConfig);
+    manager.getConnection(secondConnectionConfig);
+
+    manager.close();
+    verify(connection).close();
+    verify(secondConnection).close();
+  }
+
+  @Test
+  public void returnsCorrectColumnForDestroy() throws Exception {
+    ResultSet primaryKeys = getPrimaryKeysMetadData();
+    when(primaryKeys.next()).thenReturn(true).thenReturn(false);
+
+    List<ColumnValue> columnValueList =
+        manager.getColumnToValueList(connectionConfig, mapping, key, value, Operation.DESTROY);
+    assertThat(columnValueList).hasSize(1);
+    assertThat(columnValueList.get(0).getColumnName()).isEqualTo(KEY_COLUMN);
+  }
+
+  @Test
+  public void returnsCorrectColumnForGet() throws Exception {
+    ResultSet primaryKeys = getPrimaryKeysMetadData();
+    when(primaryKeys.next()).thenReturn(true).thenReturn(false);
+
+    List<ColumnValue> columnValueList =
+        manager.getColumnToValueList(connectionConfig, mapping, key, value, Operation.GET);
+    assertThat(columnValueList).hasSize(1);
+    assertThat(columnValueList.get(0).getColumnName()).isEqualTo(KEY_COLUMN);
+  }
+
+  @Test
+  public void throwsExceptionIfTableHasCompositePrimaryKey() throws Exception {
+    ResultSet primaryKeys = getPrimaryKeysMetadData();
+    when(primaryKeys.next()).thenReturn(true);
+
+    thrown.expect(IllegalStateException.class);
+    manager.getColumnToValueList(connectionConfig, mapping, key, value, Operation.GET);
+  }
+
+  @Test
+  public void throwsExceptionWhenTwoTablesHasCaseInsensitiveSameName() throws Exception {
+    DatabaseMetaData metadata = mock(DatabaseMetaData.class);
+    when(connection.getMetaData()).thenReturn(metadata);
+    ResultSet resultSet = mock(ResultSet.class);
+    when(resultSet.next()).thenReturn(true).thenReturn(true).thenReturn(false);
+    when(resultSet.getString("TABLE_NAME")).thenReturn(TABLE_NAME);
+    when(resultSet.getString("TABLE_NAME")).thenReturn(TABLE_NAME.toUpperCase());
+    when(metadata.getTables(any(), any(), any(), any())).thenReturn(resultSet);
+
+    thrown.expect(IllegalStateException.class);
+    thrown.expectMessage("Duplicate tables that match region name");
+    manager.getColumnToValueList(connectionConfig, mapping, key, value, Operation.GET);
+  }
+
+  @Test
+  public void throwsExceptionWhenDesiredTableNotFound() throws Exception {
+    DatabaseMetaData metadata = mock(DatabaseMetaData.class);
+    when(connection.getMetaData()).thenReturn(metadata);
+    ResultSet resultSet = mock(ResultSet.class);
+    when(resultSet.next()).thenReturn(true).thenReturn(false);
+    when(resultSet.getString("TABLE_NAME")).thenReturn("otherTable");
+    when(metadata.getTables(any(), any(), any(), any())).thenReturn(resultSet);
+
+    thrown.expect(IllegalStateException.class);
+    manager.getColumnToValueList(connectionConfig, mapping, key, value, Operation.GET);
+  }
+
+  @Test
+  public void throwsExceptionWhenNoPrimaryKeyInTable() throws Exception {
+    ResultSet primaryKeys = getPrimaryKeysMetadData();
+    when(primaryKeys.next()).thenReturn(false);
+
+    thrown.expect(IllegalStateException.class);
+    manager.getColumnToValueList(connectionConfig, mapping, key, value, Operation.GET);
+  }
+
+  @Test
+  public void throwsExceptionWhenFailsToGetTableMetadata() throws Exception {
+    when(connection.getMetaData()).thenThrow(SQLException.class);
+
+    thrown.expect(IllegalStateException.class);
+    manager.getColumnToValueList(connectionConfig, mapping, key, value, Operation.GET);
+  }
+
+  @Test
+  public void returnsCorrectColumnsForUpsertOperations() throws Exception {
+    ResultSet primaryKeys = getPrimaryKeysMetadData();
+    when(primaryKeys.next()).thenReturn(true).thenReturn(false);
+
+    String nonKeyColumn = "otherColumn";
+    when(mapping.getColumnNameForField(KEY_COLUMN)).thenReturn(KEY_COLUMN);
+    when(mapping.getColumnNameForField(nonKeyColumn)).thenReturn(nonKeyColumn);
+    when(value.getFieldNames()).thenReturn(Arrays.asList(KEY_COLUMN, nonKeyColumn));
+
+    List<ColumnValue> columnValueList =
+        manager.getColumnToValueList(connectionConfig, mapping, key, value, Operation.UPDATE);
+    assertThat(columnValueList).hasSize(2);
+    assertThat(columnValueList.get(0).getColumnName()).isEqualTo(nonKeyColumn);
+    assertThat(columnValueList.get(1).getColumnName()).isEqualTo(KEY_COLUMN);
+  }
+
+  private ConnectionConfiguration getTestConnectionConfig(String name, String url, String user,
+      String password) {
+    ConnectionConfiguration config = new ConnectionConfiguration(name, url, user, password);
+    return config;
+  }
+
+  private ResultSet getPrimaryKeysMetadData() throws SQLException {
+    DatabaseMetaData metadata = mock(DatabaseMetaData.class);
+    when(connection.getMetaData()).thenReturn(metadata);
+    ResultSet resultSet = mock(ResultSet.class);
+    when(resultSet.next()).thenReturn(true).thenReturn(false);
+    when(resultSet.getString("TABLE_NAME")).thenReturn(TABLE_NAME);
+    when(metadata.getTables(any(), any(), any(), any())).thenReturn(resultSet);
+    ResultSet primaryKeys = mock(ResultSet.class);
+    when(metadata.getPrimaryKeys(any(), any(), anyString())).thenReturn(primaryKeys);
+    when(primaryKeys.getString("COLUMN_NAME")).thenReturn(KEY_COLUMN);
+    return primaryKeys;
+  }
+}
diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/JdbcConnectorServiceTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/JdbcConnectorServiceTest.java
new file mode 100644
index 0000000..d91e4df
--- /dev/null
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/JdbcConnectorServiceTest.java
@@ -0,0 +1,88 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc.internal;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.internal.cache.extension.ExtensionPoint;
+import org.apache.geode.test.junit.categories.UnitTest;
+
+@Category(UnitTest.class)
+public class JdbcConnectorServiceTest {
+  private static final String TEST_CONFIG_NAME = "testConfig";
+  private static final String TEST_REGION_NAME = "testRegion";
+
+  private JdbcConnectorService service = new JdbcConnectorService();
+
+  @Before
+  public void setup() {
+    InternalCache cache = mock(InternalCache.class);
+    when(cache.getExtensionPoint()).thenReturn(mock(ExtensionPoint.class));
+    service.init(cache);
+  }
+
+  @Test
+  public void returnsNoConfigIfEmpty() {
+    assertThat(service.getConnectionConfig("foo")).isNull();
+  }
+
+  @Test
+  public void returnsNoMappingIfEmpty() {
+    assertThat(service.getMappingForRegion("foo")).isNull();
+  }
+
+  @Test
+  public void returnsCorrectConfig() {
+    ConnectionConfiguration config = mock(ConnectionConfiguration.class);
+    when(config.getName()).thenReturn(TEST_CONFIG_NAME);
+    service.addOrUpdateConnectionConfig(config);
+
+    assertThat(service.getConnectionConfig(TEST_CONFIG_NAME)).isSameAs(config);
+  }
+
+  @Test
+  public void doesNotReturnConfigWithDifferentName() {
+    ConnectionConfiguration config = mock(ConnectionConfiguration.class);
+    when(config.getName()).thenReturn("theOtherConfig");
+    service.addOrUpdateConnectionConfig(config);
+
+    assertThat(service.getConnectionConfig(TEST_CONFIG_NAME)).isNull();
+  }
+
+  @Test
+  public void returnsCorrectMapping() {
+    RegionMapping mapping = mock(RegionMapping.class);
+    when(mapping.getRegionName()).thenReturn(TEST_REGION_NAME);
+    service.addOrUpdateRegionMapping(mapping);
+
+    assertThat(service.getMappingForRegion(TEST_REGION_NAME)).isSameAs(mapping);
+  }
+
+  @Test
+  public void doesNotReturnMappingForDifferentRegion() {
+    RegionMapping mapping = mock(RegionMapping.class);
+    when(mapping.getRegionName()).thenReturn("theOtherMapping");
+    service.addOrUpdateRegionMapping(mapping);
+
+    assertThat(service.getMappingForRegion(TEST_REGION_NAME)).isNull();
+  }
+}
diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/PreparedStatementCacheTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/PreparedStatementCacheTest.java
new file mode 100644
index 0000000..ed78310
--- /dev/null
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/PreparedStatementCacheTest.java
@@ -0,0 +1,82 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc.internal;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.junit.rules.ExpectedException;
+
+import org.apache.geode.cache.Operation;
+import org.apache.geode.test.junit.categories.UnitTest;
+
+@Category(UnitTest.class)
+public class PreparedStatementCacheTest {
+  @Rule
+  public ExpectedException thrown = ExpectedException.none();
+
+  private PreparedStatementCache cache;
+  private Connection connection;
+  private List<ColumnValue> values = new ArrayList<>();
+
+  @Before
+  public void setup() throws SQLException {
+    cache = new PreparedStatementCache();
+    connection = mock(Connection.class);
+    when(connection.prepareStatement(any())).thenReturn(mock(PreparedStatement.class));
+    values.add(mock(ColumnValue.class));
+  }
+
+  @Test
+  public void returnsSameStatementForIdenticalInputs() throws Exception {
+    cache.getPreparedStatement(connection, values, "table1", Operation.UPDATE, 1);
+    cache.getPreparedStatement(connection, values, "table1", Operation.UPDATE, 1);
+    verify(connection, times(1)).prepareStatement(any());
+  }
+
+  @Test
+  public void returnsDifferentStatementForNonIdenticalInputs() throws Exception {
+    cache.getPreparedStatement(connection, values, "table1", Operation.UPDATE, 1);
+    cache.getPreparedStatement(connection, values, "table2", Operation.UPDATE, 1);
+    verify(connection, times(2)).prepareStatement(any());
+  }
+
+  @Test()
+  public void throwsExceptionIfPreparingStatementFails() throws Exception {
+    when(connection.prepareStatement(any())).thenThrow(SQLException.class);
+    thrown.expect(IllegalStateException.class);
+    cache.getPreparedStatement(connection, values, "table1", Operation.UPDATE, 1);
+  }
+
+  @Test
+  public void throwsExceptionIfInvalidOperationGiven() throws Exception {
+    thrown.expect(IllegalArgumentException.class);
+    cache.getPreparedStatement(connection, values, "table1", Operation.REGION_CLOSE, 1);
+
+  }
+}
diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/RegionMappingTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/RegionMappingTest.java
new file mode 100644
index 0000000..1c7201c
--- /dev/null
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/RegionMappingTest.java
@@ -0,0 +1,108 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc.internal;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.test.junit.categories.UnitTest;
+
+@Category(UnitTest.class)
+public class RegionMappingTest {
+
+  @Test
+  public void initiatedWithNullValues() {
+    RegionMapping mapping = new RegionMapping(null, null, null, null, false, null);
+    assertThat(mapping.getTableName()).isNull();
+    assertThat(mapping.getRegionName()).isNull();
+    assertThat(mapping.getConnectionConfigName()).isNull();
+    assertThat(mapping.getPdxClassName()).isNull();
+  }
+
+  @Test
+  public void hasCorrectTableName() {
+    String name = "name";
+    RegionMapping mapping = new RegionMapping(null, null, name, null, false, null);
+    assertThat(mapping.getTableName()).isEqualTo(name);
+  }
+
+  @Test
+  public void hasCorrectRegionName() {
+    String name = "name";
+    RegionMapping mapping = new RegionMapping(name, null, null, null, false, null);
+    assertThat(mapping.getRegionName()).isEqualTo(name);
+  }
+
+  @Test
+  public void hasCorrectConfigName() {
+    String name = "name";
+    RegionMapping mapping = new RegionMapping(null, null, null, name, false, null);
+    assertThat(mapping.getConnectionConfigName()).isEqualTo(name);
+  }
+
+  @Test
+  public void hasCorrectPdxClassName() {
+    String name = "name";
+    RegionMapping mapping = new RegionMapping(null, name, null, null, false, null);
+    assertThat(mapping.getPdxClassName()).isEqualTo(name);
+  }
+
+  @Test
+  public void primaryKeyInValueSetCorrectly() {
+    RegionMapping mapping = new RegionMapping(null, null, null, null, true, null);
+    assertThat(mapping.isPrimaryKeyInValue()).isTrue();
+  }
+
+  @Test
+  public void returnsFieldNameIfColumnNotMapped() {
+    String fieldName = "myField";
+    Map<String, String> fieldMap = new HashMap<>();
+    fieldMap.put("otherField", "column");
+    RegionMapping mapping = new RegionMapping(null, null, null, null, true, fieldMap);
+    assertThat(mapping.getColumnNameForField(fieldName)).isEqualTo(fieldName);
+  }
+
+  @Test
+  public void returnsMappedColumnNameForField() {
+    String fieldName = "myField";
+    String columnName = "myColumn";
+    Map<String, String> fieldMap = new HashMap<>();
+    fieldMap.put(fieldName, columnName);
+    RegionMapping mapping = new RegionMapping(null, null, null, null, true, fieldMap);
+    assertThat(mapping.getColumnNameForField(fieldName)).isEqualTo(columnName);
+  }
+
+  @Test
+  public void returnsAllMappings() {
+    String fieldName1 = "myField1";
+    String columnName1 = "myColumn1";
+    String fieldName2 = "myField2";
+    String columnName2 = "myColumn2";
+    Map<String, String> fieldMap = new HashMap<>();
+    fieldMap.put(fieldName1, columnName1);
+    fieldMap.put(fieldName2, columnName2);
+    RegionMapping mapping = new RegionMapping(null, null, null, null, true, fieldMap);
+
+    assertThat(mapping.getFieldToColumnMap().size()).isEqualTo(2);
+    assertThat(mapping.getFieldToColumnMap()).containsOnlyKeys(fieldName1, fieldName2);
+    assertThat(mapping.getFieldToColumnMap()).containsEntry(fieldName1, columnName1)
+        .containsEntry(fieldName2, columnName2);
+  }
+}
diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/SqlHandlerTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/SqlHandlerTest.java
new file mode 100644
index 0000000..7cd623b
--- /dev/null
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/SqlHandlerTest.java
@@ -0,0 +1,365 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc.internal;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+import static org.mockito.Mockito.when;
+
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.junit.rules.ExpectedException;
+
+import org.apache.geode.cache.Operation;
+import org.apache.geode.cache.Region;
+import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.pdx.PdxInstanceFactory;
+import org.apache.geode.pdx.internal.PdxInstanceImpl;
+import org.apache.geode.pdx.internal.PdxType;
+import org.apache.geode.test.junit.categories.UnitTest;
+
+@Category(UnitTest.class)
+public class SqlHandlerTest {
+  private static final String REGION_NAME = "testRegion";
+  private static final String TABLE_NAME = "testTable";
+  private static final Object COLUMN_VALUE_1 = new Object();
+  private static final String COLUMN_NAME_1 = "columnName1";
+  private static final Object COLUMN_VALUE_2 = new Object();
+  private static final String COLUMN_NAME_2 = "columnName2";
+
+  @Rule
+  public ExpectedException thrown = ExpectedException.none();
+
+  private ConnectionManager manager;
+  private Region region;
+  private InternalCache cache;
+  private SqlHandler handler;
+  private PreparedStatement statement;
+  private RegionMapping regionMapping;
+  private PdxInstanceImpl value;
+
+  @Before
+  public void setup() throws Exception {
+    manager = mock(ConnectionManager.class);
+    region = mock(Region.class);
+    cache = mock(InternalCache.class);
+    when(region.getRegionService()).thenReturn(cache);
+    handler = new SqlHandler(manager);
+    value = mock(PdxInstanceImpl.class);
+    when(value.getPdxType()).thenReturn(mock(PdxType.class));
+    setupManagerMock();
+  }
+
+  @Test
+  public void readReturnsNullIfNoKeyProvided() {
+    thrown.expect(IllegalArgumentException.class);
+    handler.read(region, null);
+  }
+
+  @Test
+  public void usesPdxFactoryForClassWhenExists() throws Exception {
+    setupEmptyResultSet();
+    String pdxClassName = "classname";
+    when(regionMapping.getPdxClassName()).thenReturn(pdxClassName);
+    handler.read(region, new Object());
+
+    verify(cache).createPdxInstanceFactory(pdxClassName);
+    verifyNoMoreInteractions(cache);
+  }
+
+  @Test
+  public void readClearsPreparedStatementWhenFinished() throws Exception {
+    setupEmptyResultSet();
+    handler.read(region, new Object());
+    verify(statement).clearParameters();
+  }
+
+  @Test
+  public void usesPbxFactoryForNoPbxClassWhenClassNonExistent() throws Exception {
+    setupEmptyResultSet();
+    handler.read(region, new Object());
+
+    verify(cache).createPdxInstanceFactory("no class", false);
+    verifyNoMoreInteractions(cache);
+  }
+
+  @Test
+  public void readReturnsNullIfNoResultsReturned() throws Exception {
+    setupEmptyResultSet();
+    assertThat(handler.read(region, new Object())).isNull();
+  }
+
+  @Test
+  public void throwsExceptionIfQueryFails() throws Exception {
+    when(statement.executeQuery()).thenThrow(SQLException.class);
+
+    thrown.expect(IllegalStateException.class);
+    handler.read(region, new Object());
+  }
+
+  @Test
+  public void readReturnsDataFromAllResultColumns() throws Exception {
+    ResultSet result = mock(ResultSet.class);
+    setupResultSet(result);
+    when(result.next()).thenReturn(true).thenReturn(false);
+    when(statement.executeQuery()).thenReturn(result);
+
+    when(manager.getKeyColumnName(any(), anyString())).thenReturn("key");
+    PdxInstanceFactory factory = mock(PdxInstanceFactory.class);
+    when(cache.createPdxInstanceFactory(anyString(), anyBoolean())).thenReturn(factory);
+
+    String filedName1 = COLUMN_NAME_1.toLowerCase();
+    String filedName2 = COLUMN_NAME_2.toLowerCase();
+    handler.read(region, new Object());
+    verify(factory).writeField(filedName1, COLUMN_VALUE_1, Object.class);
+    verify(factory).writeField(filedName2, COLUMN_VALUE_2, Object.class);
+    verify(factory).create();
+  }
+
+  @Test
+  public void readResultOmitsKeyColumnIfNotInValue() throws Exception {
+    ResultSet result = mock(ResultSet.class);
+    setupResultSet(result);
+    when(result.next()).thenReturn(true).thenReturn(false);
+    when(statement.executeQuery()).thenReturn(result);
+
+    when(manager.getKeyColumnName(any(), anyString())).thenReturn(COLUMN_NAME_1);
+    PdxInstanceFactory factory = mock(PdxInstanceFactory.class);
+    when(cache.createPdxInstanceFactory(anyString(), anyBoolean())).thenReturn(factory);
+
+    String filedName2 = COLUMN_NAME_2.toLowerCase();
+    handler.read(region, new Object());
+    verify(factory).writeField(filedName2, COLUMN_VALUE_2, Object.class);
+    verify(factory, times(1)).writeField(any(), any(), any());
+    verify(factory).create();
+  }
+
+  @Test
+  public void throwsExceptionIfMoreThatOneResultReturned() throws Exception {
+    ResultSet result = mock(ResultSet.class);
+    setupResultSet(result);
+    when(result.next()).thenReturn(true);
+    when(result.getStatement()).thenReturn(mock(PreparedStatement.class));
+    when(statement.executeQuery()).thenReturn(result);
+
+    when(manager.getKeyColumnName(any(), anyString())).thenReturn("key");
+    when(cache.createPdxInstanceFactory(anyString(), anyBoolean()))
+        .thenReturn(mock(PdxInstanceFactory.class));
+
+    thrown.expect(IllegalStateException.class);
+    handler.read(region, new Object());
+  }
+
+  @Test
+  public void writeThrowsExceptionIfValueIsNullAndNotDoingDestroy() {
+    thrown.expect(IllegalArgumentException.class);
+    handler.write(region, Operation.UPDATE, new Object(), null);
+  }
+
+  @Test
+  public void insertActionSucceeds() throws Exception {
+    when(statement.executeUpdate()).thenReturn(1);
+    handler.write(region, Operation.CREATE, new Object(), value);
+    verify(statement).setObject(1, COLUMN_VALUE_1);
+    verify(statement).setObject(2, COLUMN_VALUE_2);
+  }
+
+  @Test
+  public void updateActionSucceeds() throws Exception {
+    when(statement.executeUpdate()).thenReturn(1);
+    handler.write(region, Operation.UPDATE, new Object(), value);
+    verify(statement).setObject(1, COLUMN_VALUE_1);
+    verify(statement).setObject(2, COLUMN_VALUE_2);
+  }
+
+  @Test
+  public void destroyActionSucceeds() throws Exception {
+    List<ColumnValue> columnList = new ArrayList<>();
+    columnList.add(new ColumnValue(true, COLUMN_NAME_1, COLUMN_VALUE_1));
+    when(manager.getColumnToValueList(any(), any(), any(), any(), any())).thenReturn(columnList);
+    when(statement.executeUpdate()).thenReturn(1);
+    handler.write(region, Operation.DESTROY, new Object(), value);
+    verify(statement).setObject(1, COLUMN_VALUE_1);
+    verify(statement, times(1)).setObject(anyInt(), any());
+  }
+
+  @Test
+  public void destroyActionThatRemovesNoRowCompletesUnexceptionally() throws Exception {
+    List<ColumnValue> columnList = new ArrayList<>();
+    columnList.add(new ColumnValue(true, COLUMN_NAME_1, COLUMN_VALUE_1));
+    when(manager.getColumnToValueList(any(), any(), any(), any(), any())).thenReturn(columnList);
+    when(statement.executeUpdate()).thenReturn(0);
+    handler.write(region, Operation.DESTROY, new Object(), value);
+    verify(statement).setObject(1, COLUMN_VALUE_1);
+    verify(statement, times(1)).setObject(anyInt(), any());
+  }
+
+  @Test
+  public void destroyThrowExceptionWhenFail() throws Exception {
+    List<ColumnValue> columnList = new ArrayList<>();
+    columnList.add(new ColumnValue(true, COLUMN_NAME_1, COLUMN_VALUE_1));
+    when(manager.getColumnToValueList(any(), any(), any(), any(), any())).thenReturn(columnList);
+    when(statement.executeUpdate()).thenThrow(SQLException.class);
+
+    thrown.expect(IllegalStateException.class);
+    handler.write(region, Operation.DESTROY, new Object(), value);
+  }
+
+  @Test
+  public void preparedStatementClearedAfterExecution() throws Exception {
+    when(statement.executeUpdate()).thenReturn(1);
+    handler.write(region, Operation.CREATE, new Object(), value);
+    verify(statement).clearParameters();
+  }
+
+  @Test
+  public void whenInsertFailsUpdateSucceeds() throws Exception {
+    when(statement.executeUpdate()).thenReturn(0);
+
+    PreparedStatement updateStatement = mock(PreparedStatement.class);
+    when(updateStatement.executeUpdate()).thenReturn(1);
+    when(manager.getPreparedStatement(any(), any(), any(), any(), anyInt())).thenReturn(statement)
+        .thenReturn(updateStatement);
+
+    handler.write(region, Operation.CREATE, new Object(), value);
+    verify(statement).executeUpdate();
+    verify(updateStatement).executeUpdate();
+    verify(statement).clearParameters();
+    verify(updateStatement).clearParameters();
+  }
+
+  @Test
+  public void whenUpdateFailsInsertSucceeds() throws Exception {
+    when(statement.executeUpdate()).thenReturn(0);
+
+    PreparedStatement insertStatement = mock(PreparedStatement.class);
+    when(insertStatement.executeUpdate()).thenReturn(1);
+    when(manager.getPreparedStatement(any(), any(), any(), any(), anyInt())).thenReturn(statement)
+        .thenReturn(insertStatement);
+
+    handler.write(region, Operation.UPDATE, new Object(), value);
+    verify(statement).executeUpdate();
+    verify(insertStatement).executeUpdate();
+    verify(statement).clearParameters();
+    verify(insertStatement).clearParameters();
+  }
+
+  @Test
+  public void whenInsertFailsWithExceptionUpdateSucceeds() throws Exception {
+    when(statement.executeUpdate()).thenThrow(SQLException.class);
+
+    PreparedStatement updateStatement = mock(PreparedStatement.class);
+    when(updateStatement.executeUpdate()).thenReturn(1);
+    when(manager.getPreparedStatement(any(), any(), any(), any(), anyInt())).thenReturn(statement)
+        .thenReturn(updateStatement);
+
+    handler.write(region, Operation.CREATE, new Object(), value);
+    verify(statement).executeUpdate();
+    verify(updateStatement).executeUpdate();
+    verify(statement).clearParameters();
+    verify(updateStatement).clearParameters();
+  }
+
+  @Test
+  public void whenUpdateFailsWithExceptionInsertSucceeds() throws Exception {
+    when(statement.executeUpdate()).thenThrow(SQLException.class);
+
+    PreparedStatement insertStatement = mock(PreparedStatement.class);
+    when(insertStatement.executeUpdate()).thenReturn(1);
+    when(manager.getPreparedStatement(any(), any(), any(), any(), anyInt())).thenReturn(statement)
+        .thenReturn(insertStatement);
+
+    handler.write(region, Operation.UPDATE, new Object(), value);
+    verify(statement).executeUpdate();
+    verify(insertStatement).executeUpdate();
+    verify(statement).clearParameters();
+    verify(insertStatement).clearParameters();
+  }
+
+  @Test
+  public void whenBothInsertAndUpdateFailExceptionIsThrown() throws Exception {
+    when(statement.executeUpdate()).thenThrow(SQLException.class);
+
+    PreparedStatement insertStatement = mock(PreparedStatement.class);
+    when(insertStatement.executeUpdate()).thenThrow(SQLException.class);
+    when(manager.getPreparedStatement(any(), any(), any(), any(), anyInt())).thenReturn(statement)
+        .thenReturn(insertStatement);
+
+    thrown.expect(IllegalStateException.class);
+    handler.write(region, Operation.UPDATE, new Object(), value);
+    verify(statement).clearParameters();
+    verify(insertStatement).clearParameters();
+  }
+
+  @Test
+  public void whenStatementUpdatesMultipleRowsExceptionThrown() throws Exception {
+    when(statement.executeUpdate()).thenReturn(2);
+    thrown.expect(IllegalStateException.class);
+    handler.write(region, Operation.CREATE, new Object(), value);
+    verify(statement).clearParameters();
+  }
+
+  private void setupManagerMock() throws SQLException {
+    ConnectionConfiguration connectionConfig = mock(ConnectionConfiguration.class);
+    when(manager.getConnectionConfig(any())).thenReturn(connectionConfig);
+
+    regionMapping = mock(RegionMapping.class);
+    when(regionMapping.getRegionName()).thenReturn(REGION_NAME);
+    when(regionMapping.getTableName()).thenReturn(TABLE_NAME);
+    when(manager.getMappingForRegion(any())).thenReturn(regionMapping);
+
+    List<ColumnValue> columnList = new ArrayList<>();
+    columnList.add(new ColumnValue(true, COLUMN_NAME_1, COLUMN_VALUE_1));
+    columnList.add(new ColumnValue(true, COLUMN_NAME_2, COLUMN_VALUE_2));
+    when(manager.getColumnToValueList(any(), any(), any(), any(), any())).thenReturn(columnList);
+
+    statement = mock(PreparedStatement.class);
+    when(manager.getPreparedStatement(any(), any(), any(), any(), anyInt())).thenReturn(statement);
+  }
+
+  private void setupResultSet(ResultSet result) throws SQLException {
+    ResultSetMetaData metaData = mock(ResultSetMetaData.class);
+    when(result.getMetaData()).thenReturn(metaData);
+    when(metaData.getColumnCount()).thenReturn(2);
+
+    when(result.getObject(1)).thenReturn(COLUMN_VALUE_1);
+    when(metaData.getColumnName(1)).thenReturn(COLUMN_NAME_1);
+
+    when(result.getObject(2)).thenReturn(COLUMN_VALUE_2);
+    when(metaData.getColumnName(2)).thenReturn(COLUMN_NAME_2);
+  }
+
+  private void setupEmptyResultSet() throws SQLException {
+    ResultSet result = mock(ResultSet.class);
+    when(result.next()).thenReturn(false);
+    when(statement.executeQuery()).thenReturn(result);
+  }
+}
diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/SqlStatementFactoryTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/SqlStatementFactoryTest.java
new file mode 100644
index 0000000..abfaf66
--- /dev/null
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/SqlStatementFactoryTest.java
@@ -0,0 +1,81 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc.internal;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.test.junit.categories.UnitTest;
+
+@Category(UnitTest.class)
+public class SqlStatementFactoryTest {
+  private static final String TABLE_NAME = "testTable";
+  private static final String KEY_COLUMN_NAME = "column1";
+
+  private List<ColumnValue> columnValues = new ArrayList<>();
+  private SqlStatementFactory factory = new SqlStatementFactory();
+
+  @Before
+  public void setup() {
+    columnValues.add(new ColumnValue(false, "column0", null));
+    columnValues.add(new ColumnValue(true, KEY_COLUMN_NAME, null));
+    columnValues.add(new ColumnValue(false, "column2", null));
+  }
+
+  @Test
+  public void getSelectQueryString() throws Exception {
+    List<ColumnValue> keyColumn = new ArrayList<>();
+    keyColumn.add(new ColumnValue(true, KEY_COLUMN_NAME, null));
+    String statement = factory.createSelectQueryString(TABLE_NAME, keyColumn);
+    String expectedStatement =
+        String.format("SELECT * FROM %s WHERE %s = ?", TABLE_NAME, KEY_COLUMN_NAME);
+    assertThat(statement).isEqualTo(expectedStatement);
+  }
+
+  @Test
+  public void getDestroySqlString() throws Exception {
+    List<ColumnValue> keyColumn = new ArrayList<>();
+    keyColumn.add(new ColumnValue(true, KEY_COLUMN_NAME, null));
+    String statement = factory.createDestroySqlString(TABLE_NAME, keyColumn);
+    String expectedStatement =
+        String.format("DELETE FROM %s WHERE %s = ?", TABLE_NAME, KEY_COLUMN_NAME);
+    assertThat(statement).isEqualTo(expectedStatement);
+  }
+
+  @Test
+  public void getUpdateSqlString() throws Exception {
+    String statement = factory.createUpdateSqlString(TABLE_NAME, columnValues);
+    String expectedStatement = String.format("UPDATE %s SET %s = ?, %s = ? WHERE %s = ?",
+        TABLE_NAME, columnValues.get(0).getColumnName(), columnValues.get(2).getColumnName(),
+        KEY_COLUMN_NAME);
+    assertThat(statement).isEqualTo(expectedStatement);
+  }
+
+  @Test
+  public void getInsertSqlString() throws Exception {
+    String statement = factory.createInsertSqlString(TABLE_NAME, columnValues);
+    String expectedStatement = String.format("INSERT INTO %s (%s, %s, %s) VALUES (?,?,?)",
+        TABLE_NAME, columnValues.get(0).getColumnName(), columnValues.get(1).getColumnName(),
+        columnValues.get(2).getColumnName());
+    assertThat(statement).isEqualTo(expectedStatement);
+  }
+
+}
diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/TestConfigService.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/TestConfigService.java
new file mode 100644
index 0000000..b387d72
--- /dev/null
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/TestConfigService.java
@@ -0,0 +1,54 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc.internal;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.Collections;
+
+import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.internal.cache.extension.ExtensionPoint;
+
+/**
+ * Generates fake JdbcConnectorService with Connections and RegionMappings for tests.
+ */
+public class TestConfigService {
+  private static final String DB_NAME = "DerbyDB";
+  private static final String REGION_TABLE_NAME = "employees";
+  private static final String REGION_NAME = "employees";
+  private static final String CONNECTION_URL = "jdbc:derby:memory:" + DB_NAME + ";create=true";
+  private static final String CONNECTION_CONFIG_NAME = "testConnectionConfig";
+
+  public static JdbcConnectorService getTestConfigService() {
+    InternalCache cache = mock(InternalCache.class);
+    when(cache.getExtensionPoint()).thenReturn(mock(ExtensionPoint.class));
+
+    JdbcConnectorService service = new JdbcConnectorService();
+    service.init(cache);
+    service.addOrUpdateConnectionConfig(createConnectionConfig());
+    service.addOrUpdateRegionMapping(createRegionMapping());
+    return service;
+  }
+
+  private static RegionMapping createRegionMapping() {
+    return new RegionMapping(REGION_NAME, null, REGION_TABLE_NAME, CONNECTION_CONFIG_NAME, false,
+        Collections.emptyMap());
+  }
+
+  private static ConnectionConfiguration createConnectionConfig() {
+    return new ConnectionConfiguration(CONNECTION_CONFIG_NAME, CONNECTION_URL, null, null);
+  }
+}
diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/TestableConnectionManager.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/TestableConnectionManager.java
new file mode 100644
index 0000000..01f73f8
--- /dev/null
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/TestableConnectionManager.java
@@ -0,0 +1,22 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc.internal;
+
+public class TestableConnectionManager extends ConnectionManager {
+
+  public TestableConnectionManager(InternalJdbcConnectorService configService) {
+    super(configService);
+  }
+}
diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/xml/ConnectionConfigBuilderTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/xml/ConnectionConfigBuilderTest.java
new file mode 100644
index 0000000..e97ecc1
--- /dev/null
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/xml/ConnectionConfigBuilderTest.java
@@ -0,0 +1,46 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc.internal.xml;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.connectors.jdbc.internal.ConnectionConfiguration;
+import org.apache.geode.test.junit.categories.UnitTest;
+
+@Category(UnitTest.class)
+public class ConnectionConfigBuilderTest {
+  @Test
+  public void createsAllNullObjectIfNothingSet() {
+    ConnectionConfiguration config = new ConnectionConfigBuilder().build();
+    assertThat(config.getName()).isNull();
+    assertThat(config.getUrl()).isNull();
+    assertThat(config.getUser()).isNull();
+    assertThat(config.getPassword()).isNull();
+  }
+
+  @Test
+  public void createsObjectWithCorrectValues() {
+    ConnectionConfigBuilder builder = new ConnectionConfigBuilder();
+    builder.withName("name").withUrl("url").withUser("user").withPassword("password");
+    ConnectionConfiguration config = builder.build();
+    assertThat(config.getName()).isEqualTo("name");
+    assertThat(config.getUrl()).isEqualTo("url");
+    assertThat(config.getUser()).isEqualTo("user");
+    assertThat(config.getPassword()).isEqualTo("password");
+  }
+}
diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/xml/ElementTypeTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/xml/ElementTypeTest.java
new file mode 100644
index 0000000..8c290b7
--- /dev/null
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/xml/ElementTypeTest.java
@@ -0,0 +1,216 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc.internal.xml;
+
+import static org.apache.geode.connectors.jdbc.internal.xml.ElementType.CONNECTION;
+import static org.apache.geode.connectors.jdbc.internal.xml.ElementType.CONNECTION_SERVICE;
+import static org.apache.geode.connectors.jdbc.internal.xml.ElementType.FIELD_MAPPING;
+import static org.apache.geode.connectors.jdbc.internal.xml.ElementType.REGION_MAPPING;
+import static org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlParser.COLUMN_NAME;
+import static org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlParser.CONNECTION_NAME;
+import static org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlParser.FIELD_NAME;
+import static org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlParser.PDX_CLASS;
+import static org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlParser.PRIMARY_KEY_IN_VALUE;
+import static org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlParser.REGION;
+import static org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlParser.TABLE;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyZeroInteractions;
+import static org.mockito.Mockito.when;
+
+import java.util.Stack;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.xml.sax.Attributes;
+
+import org.apache.geode.cache.Cache;
+import org.apache.geode.cache.CacheXmlException;
+import org.apache.geode.connectors.jdbc.internal.ConnectionConfiguration;
+import org.apache.geode.connectors.jdbc.internal.RegionMapping;
+import org.apache.geode.internal.cache.extension.ExtensionPoint;
+import org.apache.geode.internal.cache.xmlcache.CacheCreation;
+import org.apache.geode.test.junit.categories.UnitTest;
+
+@Category(UnitTest.class)
+public class ElementTypeTest {
+  private Stack<Object> stack = new Stack<>();
+  private Attributes attributes;
+  private CacheCreation cacheCreation;
+  private ExtensionPoint<Cache> extensionPoint;
+
+  @Before
+  public void setup() {
+    attributes = mock(Attributes.class);
+    cacheCreation = mock(CacheCreation.class);
+    extensionPoint = mock(ExtensionPoint.class);
+    when(cacheCreation.getExtensionPoint()).thenReturn(extensionPoint);
+  }
+
+  @Test
+  public void gettingElementTypeByNameReturnsCorrectType() {
+    assertThat(ElementType.getTypeFromName(CONNECTION_SERVICE.getTypeName()))
+        .isSameAs(CONNECTION_SERVICE);
+    assertThat(ElementType.getTypeFromName(CONNECTION.getTypeName())).isSameAs(CONNECTION);
+    assertThat(ElementType.getTypeFromName(REGION_MAPPING.getTypeName())).isSameAs(REGION_MAPPING);
+    assertThat(ElementType.getTypeFromName(FIELD_MAPPING.getTypeName())).isSameAs(FIELD_MAPPING);
+  }
+
+  @Test
+  public void gettingElementTypeThatDoesNotExistThrowsException() {
+    assertThatThrownBy(() -> ElementType.getTypeFromName("non-existant element"))
+        .isInstanceOf(IllegalArgumentException.class);
+  }
+
+  @Test
+  public void startElementConnectionServiceThrowsWithoutCacheCreation() {
+    stack.push(new Object());
+    assertThatThrownBy(() -> CONNECTION_SERVICE.startElement(stack, attributes))
+        .isInstanceOf(CacheXmlException.class);
+  }
+
+  @Test
+  public void startElementConnectionService() {
+    stack.push(cacheCreation);
+    CONNECTION_SERVICE.startElement(stack, attributes);
+    verify(extensionPoint, times(1)).addExtension(any(JdbcServiceConfiguration.class));
+    assertThat(stack.peek()).isInstanceOf(JdbcServiceConfiguration.class);
+  }
+
+  @Test
+  public void endElementConnectionService() {
+    stack.push(new Object());
+    CONNECTION_SERVICE.endElement(stack);
+    assertThat(stack).isEmpty();
+  }
+
+  @Test
+  public void startElementConnectionThrowsWithoutJdbcServiceConfiguration() {
+    stack.push(new Object());
+    assertThatThrownBy(() -> CONNECTION.startElement(stack, attributes))
+        .isInstanceOf(CacheXmlException.class);
+  }
+
+  @Test
+  public void startElementConnection() {
+    JdbcServiceConfiguration serviceConfiguration = mock(JdbcServiceConfiguration.class);
+    stack.push(serviceConfiguration);
+
+    when(attributes.getValue(JdbcConnectorServiceXmlParser.NAME)).thenReturn("connectionName");
+    when(attributes.getValue(JdbcConnectorServiceXmlParser.URL)).thenReturn("url");
+    when(attributes.getValue(JdbcConnectorServiceXmlParser.USER)).thenReturn("username");
+    when(attributes.getValue(JdbcConnectorServiceXmlParser.PASSWORD)).thenReturn("secret");
+
+    CONNECTION.startElement(stack, attributes);
+    ConnectionConfiguration config = ((ConnectionConfigBuilder) stack.pop()).build();
+
+    assertThat(config.getName()).isEqualTo("connectionName");
+    assertThat(config.getUrl()).isEqualTo("url");
+    assertThat(config.getUser()).isEqualTo("username");
+    assertThat(config.getPassword()).isEqualTo("secret");
+  }
+
+  @Test
+  public void endElementConnection() {
+    ConnectionConfigBuilder builder = mock(ConnectionConfigBuilder.class);
+    JdbcServiceConfiguration serviceConfiguration = mock(JdbcServiceConfiguration.class);
+    stack.push(serviceConfiguration);
+    stack.push(builder);
+
+    CONNECTION.endElement(stack);
+
+    assertThat(stack.size()).isEqualTo(1);
+    verify(serviceConfiguration, times(1)).addConnectionConfig(any());
+  }
+
+  @Test
+  public void startElementRegionMappingThrowsWithoutJdbcServiceConfiguration() {
+    stack.push(new Object());
+    assertThatThrownBy(() -> REGION_MAPPING.startElement(stack, attributes))
+        .isInstanceOf(CacheXmlException.class);
+  }
+
+  @Test
+  public void startElementRegionMapping() {
+    JdbcServiceConfiguration serviceConfiguration = mock(JdbcServiceConfiguration.class);
+    stack.push(serviceConfiguration);
+
+    when(attributes.getValue(REGION)).thenReturn("region");
+    when(attributes.getValue(CONNECTION_NAME)).thenReturn("connectionName");
+    when(attributes.getValue(TABLE)).thenReturn("table");
+    when(attributes.getValue(PDX_CLASS)).thenReturn("pdxClass");
+    when(attributes.getValue(PRIMARY_KEY_IN_VALUE)).thenReturn("true");
+
+    ElementType.REGION_MAPPING.startElement(stack, attributes);
+
+    RegionMapping regionMapping = ((RegionMappingBuilder) stack.pop()).build();
+    assertThat(regionMapping.getRegionName()).isEqualTo("region");
+    assertThat(regionMapping.getConnectionConfigName()).isEqualTo("connectionName");
+    assertThat(regionMapping.getTableName()).isEqualTo("table");
+    assertThat(regionMapping.getPdxClassName()).isEqualTo("pdxClass");
+    assertThat(regionMapping.isPrimaryKeyInValue()).isEqualTo(true);
+  }
+
+  @Test
+  public void endElementRegionMapping() {
+    RegionMappingBuilder builder = mock(RegionMappingBuilder.class);
+    JdbcServiceConfiguration serviceConfiguration = mock(JdbcServiceConfiguration.class);
+    stack.push(serviceConfiguration);
+    stack.push(builder);
+
+    ElementType.REGION_MAPPING.endElement(stack);
+
+    assertThat(stack.size()).isEqualTo(1);
+    verify(serviceConfiguration, times(1)).addRegionMapping(any());
+  }
+
+  @Test
+  public void startElementFieldMappingThrowsWithoutRegionMappingBuilder() {
+    stack.push(new Object());
+    assertThatThrownBy(() -> FIELD_MAPPING.startElement(stack, attributes))
+        .isInstanceOf(CacheXmlException.class);
+  }
+
+  @Test
+  public void startElementFieldMapping() {
+    RegionMappingBuilder builder = new RegionMappingBuilder();
+    stack.push(builder);
+    when(attributes.getValue(FIELD_NAME)).thenReturn("fieldName");
+    when(attributes.getValue(COLUMN_NAME)).thenReturn("columnName");
+
+    ElementType.FIELD_MAPPING.startElement(stack, attributes);
+    RegionMapping regionMapping = ((RegionMappingBuilder) stack.pop()).build();
+
+    assertThat(regionMapping.getColumnNameForField("fieldName")).isEqualTo("columnName");
+  }
+
+  @Test
+  public void endElementFieldMapping() {
+    RegionMappingBuilder builder = mock(RegionMappingBuilder.class);
+    JdbcServiceConfiguration serviceConfiguration = mock(JdbcServiceConfiguration.class);
+    stack.push(serviceConfiguration);
+    stack.push(builder);
+
+    ElementType.FIELD_MAPPING.endElement(stack);
+
+    assertThat(stack.size()).isEqualTo(2);
+    verifyZeroInteractions(builder);
+  }
+}
diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/xml/JdbcConnectorServiceXmlGeneratorIntegrationTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/xml/JdbcConnectorServiceXmlGeneratorIntegrationTest.java
new file mode 100644
index 0000000..5b6d260
--- /dev/null
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/xml/JdbcConnectorServiceXmlGeneratorIntegrationTest.java
@@ -0,0 +1,195 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc.internal.xml;
+
+import static org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlGenerator.PREFIX;
+import static org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlParser.COLUMN_NAME;
+import static org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlParser.CONNECTION_NAME;
+import static org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlParser.FIELD_NAME;
+import static org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlParser.NAME;
+import static org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlParser.NAMESPACE;
+import static org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlParser.PASSWORD;
+import static org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlParser.PDX_CLASS;
+import static org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlParser.PRIMARY_KEY_IN_VALUE;
+import static org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlParser.REGION;
+import static org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlParser.TABLE;
+import static org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlParser.URL;
+import static org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlParser.USER;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.fail;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.PrintWriter;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.junit.rules.TemporaryFolder;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
+
+import org.apache.geode.cache.CacheFactory;
+import org.apache.geode.connectors.jdbc.internal.ConnectionConfiguration;
+import org.apache.geode.connectors.jdbc.internal.InternalJdbcConnectorService;
+import org.apache.geode.connectors.jdbc.internal.RegionMapping;
+import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.internal.cache.xmlcache.CacheXmlGenerator;
+import org.apache.geode.test.junit.categories.IntegrationTest;
+
+@Category(IntegrationTest.class)
+public class JdbcConnectorServiceXmlGeneratorIntegrationTest {
+
+  private InternalCache cache;
+
+  @Rule
+  public TemporaryFolder temporaryFolder = new TemporaryFolder();
+
+  @Before
+  public void setup() {
+    cache = (InternalCache) new CacheFactory().create();
+  }
+
+  @After
+  public void tearDown() {
+    cache.close();
+  }
+
+  @Test
+  public void cacheGetServiceReturnsJdbcConnectorService() {
+    assertThat(cache.getService(InternalJdbcConnectorService.class)).isNotNull();
+  }
+
+  @Test
+  public void serviceWithoutInformationDoesNotPersist() throws Exception {
+    cache.getService(InternalJdbcConnectorService.class);
+    generateXml();
+    Document document = getCacheXmlDocument();
+    NodeList elements = getElementsByName(document, ElementType.CONNECTION_SERVICE);
+    assertThat(elements.getLength()).isZero();
+  }
+
+  @Test
+  public void serviceWithConnectionsHasCorrectXml() throws Exception {
+    InternalJdbcConnectorService service = cache.getService(InternalJdbcConnectorService.class);
+    ConnectionConfiguration config = new ConnectionConfigBuilder().withName("name").withUrl("url")
+        .withUser("username").withPassword("secret").build();
+    service.addOrUpdateConnectionConfig(config);
+
+    generateXml();
+
+    Document document = getCacheXmlDocument();
+    NodeList serviceElements = getElementsByName(document, ElementType.CONNECTION_SERVICE);
+    assertThat(serviceElements.getLength()).isEqualTo(1);
+
+    Element serviceElement = (Element) serviceElements.item(0);
+    assertThat(serviceElement.getAttribute("xmlns:" + PREFIX)).isEqualTo(NAMESPACE);
+
+    NodeList connectionElements = getElementsByName(document, ElementType.CONNECTION);
+    assertThat(connectionElements.getLength()).isEqualTo(1);
+
+    Element connectionElement = (Element) connectionElements.item(0);
+    assertThat(connectionElement.getAttribute(NAME)).isEqualTo("name");
+    assertThat(connectionElement.getAttribute(URL)).isEqualTo("url");
+    assertThat(connectionElement.getAttribute(USER)).isEqualTo("username");
+    assertThat(connectionElement.getAttribute(PASSWORD)).isEqualTo("secret");
+  }
+
+  @Test
+  public void generatesXmlContainingRegionMapping() throws Exception {
+    InternalJdbcConnectorService service = cache.getService(InternalJdbcConnectorService.class);
+    RegionMappingBuilder regionMappingBuilder = new RegionMappingBuilder()
+        .withRegionName("regionName").withPdxClassName("pdxClassName").withTableName("tableName")
+        .withConnectionConfigName("connectionConfigName").withPrimaryKeyInValue("true");
+    regionMappingBuilder.withFieldToColumnMapping("fieldName1", "columnMapping1");
+    regionMappingBuilder.withFieldToColumnMapping("fieldName2", "columnMapping2");
+    RegionMapping regionMapping = regionMappingBuilder.build();
+    service.addOrUpdateRegionMapping(regionMapping);
+
+    generateXml();
+
+    Document document = getCacheXmlDocument();
+    NodeList serviceElements = getElementsByName(document, ElementType.CONNECTION_SERVICE);
+    assertThat(serviceElements.getLength()).isEqualTo(1);
+
+    NodeList mappingElements = getElementsByName(document, ElementType.REGION_MAPPING);
+    assertThat(mappingElements.getLength()).isEqualTo(1);
+
+    Element mappingElement = (Element) mappingElements.item(0);
+    assertThat(mappingElement.getAttribute(REGION)).isEqualTo("regionName");
+    assertThat(mappingElement.getAttribute(PDX_CLASS)).isEqualTo("pdxClassName");
+    assertThat(mappingElement.getAttribute(TABLE)).isEqualTo("tableName");
+    assertThat(mappingElement.getAttribute(CONNECTION_NAME)).isEqualTo("connectionConfigName");
+    assertThat(mappingElement.getAttribute(PRIMARY_KEY_IN_VALUE)).isEqualTo("true");
+
+    NodeList fieldMappingElements = getElementsByName(mappingElement, ElementType.FIELD_MAPPING);
+    assertThat(fieldMappingElements.getLength()).isEqualTo(2);
+    validatePresenceOfFieldMapping(fieldMappingElements, "fieldName1", "columnMapping1");
+    validatePresenceOfFieldMapping(fieldMappingElements, "fieldName2", "columnMapping2");
+  }
+
+  private void validatePresenceOfFieldMapping(NodeList elements, String fieldName,
+      String columnName) {
+    for (int i = 0; i < elements.getLength(); i++) {
+      Element fieldMapping = (Element) elements.item(i);
+      if (fieldMapping.getAttribute(FIELD_NAME).equals(fieldName)) {
+        assertThat(fieldMapping.getAttribute(COLUMN_NAME)).isEqualTo(columnName);
+        return;
+      }
+    }
+    fail("Field name '" + fieldName + "' did not match those provided");
+  }
+
+  private NodeList getElementsByName(Document document, ElementType elementType) {
+    String name = getTagName(elementType);
+    return document.getElementsByTagName(name);
+  }
+
+  private NodeList getElementsByName(Element element, ElementType elementType) {
+    String name = getTagName(elementType);
+    return element.getElementsByTagName(name);
+  }
+
+  private String getTagName(ElementType elementType) {
+    return PREFIX + ":" + elementType.getTypeName();
+  }
+
+  private Document getCacheXmlDocument()
+      throws IOException, SAXException, ParserConfigurationException {
+    File cacheXml = new File(temporaryFolder.getRoot(), "cache.xml");
+    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
+    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
+    Document document = dBuilder.parse(cacheXml);
+    document.getDocumentElement().normalize();
+    return document;
+  }
+
+  private void generateXml() throws IOException {
+    File cacheXml = new File(temporaryFolder.getRoot(), "cache.xml");
+    PrintWriter printWriter = new PrintWriter(new FileWriter(cacheXml));
+    CacheXmlGenerator.generate(cache, printWriter, true, false, false);
+    printWriter.flush();
+  }
+
+}
diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/xml/JdbcConnectorServiceXmlGeneratorTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/xml/JdbcConnectorServiceXmlGeneratorTest.java
new file mode 100644
index 0000000..b91bd91
--- /dev/null
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/xml/JdbcConnectorServiceXmlGeneratorTest.java
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc.internal.xml;
+
+import static org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlParser.NAMESPACE;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.test.junit.categories.UnitTest;
+
+@Category(UnitTest.class)
+public class JdbcConnectorServiceXmlGeneratorTest {
+
+  @Test
+  public void returnsCorrectNamespace() {
+    JdbcConnectorServiceXmlGenerator generator = new JdbcConnectorServiceXmlGenerator(null, null);
+    assertThat(generator.getNamespaceUri()).isEqualTo(NAMESPACE);
+  }
+}
diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/xml/JdbcConnectorServiceXmlIntegrationTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/xml/JdbcConnectorServiceXmlIntegrationTest.java
new file mode 100644
index 0000000..ac7fcf5
--- /dev/null
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/xml/JdbcConnectorServiceXmlIntegrationTest.java
@@ -0,0 +1,116 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc.internal.xml;
+
+import static org.apache.geode.distributed.ConfigurationProperties.CACHE_XML_FILE;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.PrintWriter;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.junit.rules.TemporaryFolder;
+
+import org.apache.geode.cache.CacheFactory;
+import org.apache.geode.connectors.jdbc.internal.ConnectionConfiguration;
+import org.apache.geode.connectors.jdbc.internal.InternalJdbcConnectorService;
+import org.apache.geode.connectors.jdbc.internal.JdbcConnectorService;
+import org.apache.geode.connectors.jdbc.internal.RegionMapping;
+import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.internal.cache.xmlcache.CacheXmlGenerator;
+import org.apache.geode.test.junit.categories.IntegrationTest;
+
+@Category(IntegrationTest.class)
+public class JdbcConnectorServiceXmlIntegrationTest {
+
+  private InternalCache cache;
+  private File cacheXml;
+  private ConnectionConfiguration config1;
+  private ConnectionConfiguration config2;
+  private RegionMapping regionMapping1;
+  private RegionMapping regionMapping2;
+
+  @Rule
+  public TemporaryFolder temporaryFolder = new TemporaryFolder();
+
+  @Before
+  public void setup() throws Exception {
+    cache = (InternalCache) new CacheFactory().create();
+    configureService();
+    cacheXml = generateXml();
+    cache.close();
+  }
+
+  @After
+  public void tearDown() {
+    cache.close();
+  }
+
+  @Test
+  public void canRecreateJdbcConnectorServiceFromXml() throws Exception {
+    cache =
+        (InternalCache) new CacheFactory().set(CACHE_XML_FILE, cacheXml.getAbsolutePath()).create();
+
+    JdbcConnectorService service =
+        (JdbcConnectorService) cache.getExtensionPoint().getExtensions().iterator().next();
+    assertThat(service.getConnectionConfig(config1.getName())).isEqualTo(config1);
+    assertThat(service.getConnectionConfig(config2.getName())).isEqualTo(config2);
+    assertThat(service.getMappingForRegion(regionMapping1.getRegionName()))
+        .isEqualTo(regionMapping1);
+    assertThat(service.getMappingForRegion(regionMapping2.getRegionName()))
+        .isEqualTo(regionMapping2);
+  }
+
+  private void configureService() {
+    InternalJdbcConnectorService service = cache.getService(InternalJdbcConnectorService.class);
+    config1 = new ConnectionConfigBuilder().withName("connection1").withUrl("url1")
+        .withUser("username1").withPassword("secret1").build();
+    config2 = new ConnectionConfigBuilder().withName("connection2").withUrl("url2")
+        .withUser("username2").withPassword("secret2").build();
+    service.addOrUpdateConnectionConfig(config1);
+    service.addOrUpdateConnectionConfig(config2);
+
+    RegionMappingBuilder regionMappingBuilder1 = new RegionMappingBuilder()
+        .withRegionName("regionName1").withPdxClassName("pdxClassName1").withTableName("tableName1")
+        .withConnectionConfigName("connection1").withPrimaryKeyInValue("true");
+    regionMappingBuilder1.withFieldToColumnMapping("fieldName1", "columnMapping1");
+    regionMappingBuilder1.withFieldToColumnMapping("fieldName2", "columnMapping2");
+    regionMapping1 = regionMappingBuilder1.build();
+
+    RegionMappingBuilder regionMappingBuilder2 = new RegionMappingBuilder()
+        .withRegionName("regionName2").withPdxClassName("pdxClassName2").withTableName("tableName2")
+        .withConnectionConfigName("connection2").withPrimaryKeyInValue("false");
+    regionMappingBuilder1.withFieldToColumnMapping("fieldName3", "columnMapping3");
+    regionMappingBuilder1.withFieldToColumnMapping("fieldName4", "columnMapping4");
+    regionMapping2 = regionMappingBuilder2.build();
+
+    service.addOrUpdateRegionMapping(regionMapping1);
+    service.addOrUpdateRegionMapping(regionMapping2);
+  }
+
+  private File generateXml() throws IOException {
+    File cacheXml = new File(temporaryFolder.getRoot(), "cache.xml");
+    PrintWriter printWriter = new PrintWriter(new FileWriter(cacheXml));
+    CacheXmlGenerator.generate(cache, printWriter, true, false, false);
+    printWriter.flush();
+    return cacheXml;
+  }
+}
diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/xml/JdbcConnectorServiceXmlParserTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/xml/JdbcConnectorServiceXmlParserTest.java
new file mode 100644
index 0000000..95a4d45
--- /dev/null
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/xml/JdbcConnectorServiceXmlParserTest.java
@@ -0,0 +1,106 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc.internal.xml;
+
+import static org.apache.geode.connectors.jdbc.internal.xml.ElementType.CONNECTION_SERVICE;
+import static org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlParser.NAMESPACE;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verifyZeroInteractions;
+import static org.mockito.Mockito.when;
+
+import java.util.Stack;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.xml.sax.Attributes;
+
+import org.apache.geode.cache.Cache;
+import org.apache.geode.internal.cache.extension.ExtensionPoint;
+import org.apache.geode.internal.cache.xmlcache.CacheCreation;
+import org.apache.geode.test.junit.categories.UnitTest;
+
+@Category(UnitTest.class)
+public class JdbcConnectorServiceXmlParserTest {
+
+  private Stack<Object> stack = new Stack<>();
+  private Attributes attributes;
+  private CacheCreation cacheCreation;
+  private ExtensionPoint<Cache> extensionPoint;
+
+  @Before
+  public void setup() {
+    attributes = mock(Attributes.class);
+    cacheCreation = mock(CacheCreation.class);
+    extensionPoint = mock(ExtensionPoint.class);
+    when(cacheCreation.getExtensionPoint()).thenReturn(extensionPoint);
+  }
+
+  @Test
+  public void getNamespaceUriReturnsNamespace() {
+    assertThat(new JdbcConnectorServiceXmlParser().getNamespaceUri()).isEqualTo(NAMESPACE);
+  }
+
+  @Test
+  public void startElementCreatesJdbcServiceConfiguration() throws Exception {
+    JdbcConnectorServiceXmlParser parser = new JdbcConnectorServiceXmlParser();
+    stack.push(cacheCreation);
+    parser.setStack(stack);
+
+    parser.startElement(NAMESPACE, CONNECTION_SERVICE.getTypeName(), null, attributes);
+
+    assertThat(stack.pop()).isInstanceOf(JdbcServiceConfiguration.class);
+  }
+
+  @Test
+  public void startElementWithWrongUriDoesNothing() throws Exception {
+    JdbcConnectorServiceXmlParser parser = new JdbcConnectorServiceXmlParser();
+    stack.push(cacheCreation);
+    parser.setStack(stack);
+
+    parser.startElement("wrongNamespace", CONNECTION_SERVICE.getTypeName(), null, attributes);
+
+    assertThat(stack.pop()).isEqualTo(cacheCreation);
+  }
+
+  @Test
+  public void endElementRemovesJdbcServiceConfiguration() throws Exception {
+    JdbcConnectorServiceXmlParser parser = new JdbcConnectorServiceXmlParser();
+    stack.push(cacheCreation);
+    JdbcServiceConfiguration serviceConfiguration = mock(JdbcServiceConfiguration.class);
+    stack.push(serviceConfiguration);
+    parser.setStack(stack);
+
+    parser.endElement(NAMESPACE, CONNECTION_SERVICE.getTypeName(), null);
+
+    assertThat(stack.pop()).isEqualTo(cacheCreation);
+    verifyZeroInteractions(serviceConfiguration);
+  }
+
+  @Test
+  public void endElementRemovesWithWrongUriDoesNothing() throws Exception {
+    JdbcConnectorServiceXmlParser parser = new JdbcConnectorServiceXmlParser();
+    stack.push(cacheCreation);
+    JdbcServiceConfiguration serviceConfiguration = mock(JdbcServiceConfiguration.class);
+    stack.push(serviceConfiguration);
+    parser.setStack(stack);
+
+    parser.endElement("wrongNamespace", CONNECTION_SERVICE.getTypeName(), null);
+
+    assertThat(stack.pop()).isEqualTo(serviceConfiguration);
+    verifyZeroInteractions(serviceConfiguration);
+  }
+}
diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/xml/JdbcServiceConfigurationTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/xml/JdbcServiceConfigurationTest.java
new file mode 100644
index 0000000..939db7c
--- /dev/null
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/xml/JdbcServiceConfigurationTest.java
@@ -0,0 +1,136 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc.internal.xml;
+
+import static org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlParser.NAMESPACE;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyZeroInteractions;
+import static org.mockito.Mockito.when;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.cache.Cache;
+import org.apache.geode.connectors.jdbc.internal.ConnectionConfiguration;
+import org.apache.geode.connectors.jdbc.internal.InternalJdbcConnectorService;
+import org.apache.geode.connectors.jdbc.internal.RegionMapping;
+import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.internal.cache.xmlcache.XmlGenerator;
+import org.apache.geode.test.junit.categories.UnitTest;
+
+@Category(UnitTest.class)
+public class JdbcServiceConfigurationTest {
+
+  private JdbcServiceConfiguration configuration;
+
+  private InternalCache cache;
+  private InternalJdbcConnectorService service;
+  private ConnectionConfiguration connection1;
+  private ConnectionConfiguration connection2;
+  private RegionMapping mapping1;
+  private RegionMapping mapping2;
+
+  @Before
+  public void setUp() {
+    connection1 = mock(ConnectionConfiguration.class);
+    connection2 = mock(ConnectionConfiguration.class);
+    mapping1 = mock(RegionMapping.class);
+    mapping2 = mock(RegionMapping.class);
+
+    service = mock(InternalJdbcConnectorService.class);
+    cache = mock(InternalCache.class);
+    when(cache.getService(InternalJdbcConnectorService.class)).thenReturn(service);
+
+    configuration = new JdbcServiceConfiguration();
+  }
+
+  @Test
+  public void getXmlGeneratorReturnsJdbcConnectorServiceXmlGenerator() {
+    XmlGenerator<Cache> generator = configuration.getXmlGenerator();
+
+    assertThat(generator).isInstanceOf(JdbcConnectorServiceXmlGenerator.class);
+  }
+
+  @Test
+  public void getXmlGeneratorReturnsGeneratorWithJdbcConnectorNamespace() {
+    XmlGenerator<Cache> generator = configuration.getXmlGenerator();
+
+    assertThat(generator.getNamespaceUri()).isEqualTo(NAMESPACE);
+  }
+
+  @Test
+  public void getXmlGeneratorReturnsEmptyGeneratorByDefault() {
+    JdbcConnectorServiceXmlGenerator generator =
+        (JdbcConnectorServiceXmlGenerator) configuration.getXmlGenerator();
+
+    assertThat(generator.getConnections()).isEmpty();
+    assertThat(generator.getMappings()).isEmpty();
+  }
+
+  @Test
+  public void getXmlGeneratorWithConnections() {
+    configuration.addConnectionConfig(connection1);
+    configuration.addConnectionConfig(connection2);
+
+    JdbcConnectorServiceXmlGenerator generator =
+        (JdbcConnectorServiceXmlGenerator) configuration.getXmlGenerator();
+
+    assertThat(generator.getConnections()).containsExactly(connection1, connection2);
+  }
+
+  @Test
+  public void getXmlGeneratorWithRegionMappings() {
+    configuration.addRegionMapping(mapping1);
+    configuration.addRegionMapping(mapping2);
+
+    JdbcConnectorServiceXmlGenerator generator =
+        (JdbcConnectorServiceXmlGenerator) configuration.getXmlGenerator();
+
+    assertThat(generator.getMappings()).containsExactly(mapping1, mapping2);
+  }
+
+  @Test
+  public void onCreateWithNoConnectionsOrMappings() {
+    configuration.onCreate(cache, cache);
+    verifyZeroInteractions(service);
+  }
+
+  @Test
+  public void onCreateWithConnections() {
+    configuration.addConnectionConfig(connection1);
+    configuration.addConnectionConfig(connection2);
+
+    configuration.onCreate(cache, cache);
+
+    verify(service, times(1)).addOrUpdateConnectionConfig(connection1);
+    verify(service, times(1)).addOrUpdateConnectionConfig(connection2);
+  }
+
+  @Test
+  public void onCreateWithRegionMappings() {
+    configuration.addRegionMapping(mapping1);
+    configuration.addRegionMapping(mapping2);
+
+    configuration.onCreate(cache, cache);
+
+    verify(service, times(1)).addOrUpdateRegionMapping(mapping1);
+    verify(service, times(1)).addOrUpdateRegionMapping(mapping2);
+  }
+
+}
diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/xml/RegionMappingBuilderTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/xml/RegionMappingBuilderTest.java
new file mode 100644
index 0000000..9953d95
--- /dev/null
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/xml/RegionMappingBuilderTest.java
@@ -0,0 +1,54 @@
+/*
+ * 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.
+ */
+package org.apache.geode.connectors.jdbc.internal.xml;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.connectors.jdbc.internal.RegionMapping;
+import org.apache.geode.test.junit.categories.UnitTest;
+
+@Category(UnitTest.class)
+public class RegionMappingBuilderTest {
+
+  @Test
+  public void createsMappingWithDefaultValuesIfNonAreSet() {
+    RegionMapping regionMapping = new RegionMappingBuilder().build();
+
+    assertThat(regionMapping.getRegionName()).isNull();
+    assertThat(regionMapping.getTableName()).isNull();
+    assertThat(regionMapping.getPdxClassName()).isNull();
+    assertThat(regionMapping.getConnectionConfigName()).isNull();
+    assertThat(regionMapping.isPrimaryKeyInValue()).isFalse();
+  }
+
+  @Test
+  public void createsMappingWithSpecifiedValues() {
+    RegionMappingBuilder builder = new RegionMappingBuilder();
+    RegionMapping regionMapping = builder.withTableName("tableName").withRegionName("regionName")
+        .withPrimaryKeyInValue("true").withPdxClassName("pdxClassName")
+        .withConnectionConfigName("configName").withFieldToColumnMapping("fieldName", "columnName")
+        .build();
+
+    assertThat(regionMapping.getRegionName()).isEqualTo("regionName");
+    assertThat(regionMapping.getTableName()).isEqualTo("tableName");
+    assertThat(regionMapping.getPdxClassName()).isEqualTo("pdxClassName");
+    assertThat(regionMapping.getConnectionConfigName()).isEqualTo("configName");
+    assertThat(regionMapping.isPrimaryKeyInValue()).isTrue();
+    assertThat(regionMapping.getColumnNameForField("fieldName")).isEqualTo("columnName");
+  }
+}
diff --git a/geode-core/src/test/java/org/apache/geode/test/fake/Fakes.java b/geode-core/src/test/java/org/apache/geode/test/fake/Fakes.java
index cc4d3d1..f5b9266 100644
--- a/geode-core/src/test/java/org/apache/geode/test/fake/Fakes.java
+++ b/geode-core/src/test/java/org/apache/geode/test/fake/Fakes.java
@@ -35,6 +35,7 @@ import org.apache.geode.distributed.internal.membership.InternalDistributedMembe
 import org.apache.geode.internal.cache.CachePerfStats;
 import org.apache.geode.internal.cache.GemFireCacheImpl;
 import org.apache.geode.internal.security.SecurityService;
+import org.apache.geode.pdx.PdxInstanceFactory;
 
 /**
  * Factory methods for fake objects for use in test.
@@ -62,6 +63,7 @@ public class Fakes {
     InternalDistributedSystem system = mock(InternalDistributedSystem.class);
     DistributionConfig config = mock(DistributionConfig.class);
     DistributionManager distributionManager = mock(DistributionManager.class);
+    PdxInstanceFactory pdxInstanceFactory = mock(PdxInstanceFactory.class);
     CancelCriterion systemCancelCriterion = mock(CancelCriterion.class);
     DSClock clock = mock(DSClock.class);
     LogWriter logger = mock(LogWriter.class);
@@ -81,6 +83,7 @@ public class Fakes {
     when(cache.getCancelCriterion()).thenReturn(systemCancelCriterion);
     when(cache.getCachePerfStats()).thenReturn(mock(CachePerfStats.class));
     when(cache.getSecurityService()).thenReturn(mock(SecurityService.class));
+    when(cache.createPdxInstanceFactory(any())).thenReturn(pdxInstanceFactory);
 
     when(system.getDistributedMember()).thenReturn(member);
     when(system.getConfig()).thenReturn(config);
@@ -122,7 +125,7 @@ public class Fakes {
     when(region.getCache()).thenReturn(cache);
     when(region.getRegionService()).thenReturn(cache);
     when(region.getName()).thenReturn(name);
-
+    when(region.getFullPath()).thenReturn("/" + name);
     return region;
   }
 
diff --git a/settings.gradle b/settings.gradle
index 13a665c..a84f352 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -30,6 +30,7 @@ include 'geode-lucene'
 include 'geode-old-client-support'
 include 'geode-wan'
 include 'geode-cq'
+include 'geode-connectors'
 include 'geode-benchmarks'
 include 'geode-client-protocol'
 include 'extensions/geode-modules'

-- 
To stop receiving notification emails like this one, please contact
"commits@geode.apache.org" <co...@geode.apache.org>.