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

[geode] branch feature/GEODE-3781 updated: Rename classes and cleanup packages

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

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


The following commit(s) were added to refs/heads/feature/GEODE-3781 by this push:
     new 88ab7b2  Rename classes and cleanup packages
88ab7b2 is described below

commit 88ab7b2a714ea3ad00280d1e3824b91244bdc0ba
Author: Nick Reich <nr...@pivotal.io>
AuthorDate: Thu Nov 16 15:42:54 2017 -0800

    Rename classes and cleanup packages
---
 .../connectors/jdbc/AbstractJdbcCallback.java      | 65 ----------------------
 .../geode/connectors/jdbc/JdbcAsyncWriter.java     |  3 +
 .../apache/geode/connectors/jdbc/JdbcLoader.java   |  3 +
 .../connectors/jdbc/JdbcSynchronousWriter.java     |  3 +
 .../jdbc/internal/AbstractJdbcCallback.java        | 63 +++++++++++++++++++++
 .../connectors/jdbc/internal/ColumnValue.java      |  8 +--
 .../jdbc/internal/ConnectionManager.java           |  9 +--
 .../connectors/jdbc/internal/xml/ElementType.java  | 25 +++++----
 .../xml/JdbcConnectorServiceXmlGenerator.java      | 24 ++++----
 ...ser.java => JdbcConnectorServiceXmlParser.java} |  2 +-
 .../jdbc/internal/xml/RegionMappingBuilder.java    | 16 +++---
 ....apache.geode.internal.cache.xmlcache.XmlParser |  2 +-
 .../connectors/jdbc/AbstractJdbcCallbackTest.java  |  1 +
 .../jdbc/JdbcAsyncWriterIntegrationTest.java       |  4 +-
 .../connectors/jdbc/JdbcLoaderIntegrationTest.java |  4 +-
 .../jdbc/JdbcSynchronousWriterIntegrationTest.java | 10 +---
 .../jdbc/internal/TestConfigService.java           | 11 ++--
 .../jdbc/internal/TestableConnectionManager.java}  | 28 +---------
 .../jdbc/internal/xml/ElementTypeTest.java         | 22 ++++----
 ...onnectorServiceXmlGeneratorIntegrationTest.java | 24 ++++----
 .../xml/JdbcConnectorServiceXmlGeneratorTest.java  |  2 +-
 ...java => JdbcConnectorServiceXmlParserTest.java} | 14 ++---
 .../internal/xml/JdbcServiceConfigurationTest.java |  2 +-
 23 files changed, 161 insertions(+), 184 deletions(-)

diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/AbstractJdbcCallback.java b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/AbstractJdbcCallback.java
deleted file mode 100644
index bb0c2c5..0000000
--- a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/AbstractJdbcCallback.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- *
- * * 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.Properties;
-
-import org.apache.geode.cache.CacheCallback;
-import org.apache.geode.connectors.jdbc.internal.ConnectionManager;
-import org.apache.geode.connectors.jdbc.internal.InternalJdbcConnectorService;
-import org.apache.geode.connectors.jdbc.internal.SqlHandler;
-import org.apache.geode.internal.cache.InternalCache;
-
-abstract class AbstractJdbcCallback implements CacheCallback {
-
-  private volatile SqlHandler sqlHandler;
-
-  AbstractJdbcCallback() {
-    // nothing
-  }
-
-  AbstractJdbcCallback(SqlHandler sqlHandler) {
-    this.sqlHandler = sqlHandler;
-  }
-
-  @Override
-  public void close() {
-    if (sqlHandler != null) {
-      sqlHandler.close();
-    }
-  }
-
-  @Override
-  public void init(Properties props) {
-    // nothing
-  }
-
-  SqlHandler getSqlHandler() {
-    return sqlHandler;
-  }
-
-  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/JdbcAsyncWriter.java b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/JdbcAsyncWriter.java
index dfc8297..465e1c6 100644
--- 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
@@ -20,9 +20,11 @@ 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;
@@ -33,6 +35,7 @@ import org.apache.geode.pdx.PdxInstance;
  *
  * @since Geode 1.4
  */
+@Experimental
 public class JdbcAsyncWriter extends AbstractJdbcCallback implements AsyncEventListener {
   private static final Logger logger = LogService.getLogger();
 
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
index aed38f1..f3ba9a5 100644
--- 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
@@ -14,9 +14,11 @@
  */
 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;
 
@@ -25,6 +27,7 @@ import org.apache.geode.internal.cache.InternalCache;
  *
  * @since Geode 1.4
  */
+@Experimental
 public class JdbcLoader<K, V> extends AbstractJdbcCallback implements CacheLoader<K, V> {
 
   @SuppressWarnings("unused")
diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/JdbcSynchronousWriter.java b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/JdbcSynchronousWriter.java
index 6440bf5..6fe8515 100644
--- a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/JdbcSynchronousWriter.java
+++ b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/JdbcSynchronousWriter.java
@@ -15,12 +15,14 @@
 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;
@@ -30,6 +32,7 @@ import org.apache.geode.pdx.PdxInstance;
  *
  * @since Geode 1.4
  */
+@Experimental
 public class JdbcSynchronousWriter<K, V> extends AbstractJdbcCallback implements CacheWriter<K, V> {
 
   @SuppressWarnings("unused")
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
index 8ade14b..c3f44d0 100644
--- 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
@@ -14,10 +14,10 @@
  */
 package org.apache.geode.connectors.jdbc.internal;
 
-public class ColumnValue {
-  final private boolean isKey;
-  final private String columnName;
-  final private Object value;
+class ColumnValue {
+  private final boolean isKey;
+  private final String columnName;
+  private final Object value;
 
   ColumnValue(boolean isKey, String columnName, Object value) {
     this.isKey = isKey;
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
index a114da7..67e6b51 100644
--- 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
@@ -30,17 +30,14 @@ import java.util.concurrent.ConcurrentMap;
 import org.apache.geode.cache.Operation;
 import org.apache.geode.pdx.PdxInstance;
 
-public class ConnectionManager {
+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<>();
 
-  public ConnectionManager(InternalJdbcConnectorService configService) {
+  ConnectionManager(InternalJdbcConnectorService configService) {
     this.configService = configService;
   }
 
@@ -147,7 +144,7 @@ public class ConnectionManager {
     throw new IllegalStateException("NYI: handleSQLException", e);
   }
 
-  public void close() {
+  void close() {
     connectionMap.values().forEach(connection -> close(connection));
   }
 
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
index 68fbe91..944cabd 100644
--- 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
@@ -49,9 +49,10 @@ enum ElementType {
             "jdbc <connection> elements must occur within <connector-service> elements");
       }
       ConnectionConfigBuilder connectionConfig = new ConnectionConfigBuilder()
-          .withName(attributes.getValue(XmlParser.NAME)).withUrl(attributes.getValue(XmlParser.URL))
-          .withUser(attributes.getValue(XmlParser.USER))
-          .withPassword(attributes.getValue(XmlParser.PASSWORD));
+          .withName(attributes.getValue(JdbcConnectorServiceXmlParser.NAME))
+          .withUrl(attributes.getValue(JdbcConnectorServiceXmlParser.URL))
+          .withUser(attributes.getValue(JdbcConnectorServiceXmlParser.USER))
+          .withPassword(attributes.getValue(JdbcConnectorServiceXmlParser.PASSWORD));
       stack.push(connectionConfig);
     }
 
@@ -69,12 +70,14 @@ enum ElementType {
         throw new CacheXmlException(
             "jdbc <region-mapping> elements must occur within <connector-service> elements");
       }
-      RegionMappingBuilder mapping =
-          new RegionMappingBuilder().withRegionName(attributes.getValue(XmlParser.REGION))
-              .withConnectionConfigName(attributes.getValue(XmlParser.CONNECTION_NAME))
-              .withTableName(attributes.getValue(XmlParser.TABLE))
-              .withPdxClassName(attributes.getValue(XmlParser.PDX_CLASS))
-              .withPrimaryKeyInValue(attributes.getValue(XmlParser.PRIMARY_KEY_IN_VALUE));
+      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);
     }
 
@@ -93,8 +96,8 @@ enum ElementType {
             "jdbc <field-mapping> elements must occur within <region-mapping> elements");
       }
       RegionMappingBuilder mapping = (RegionMappingBuilder) stack.peek();
-      String fieldName = attributes.getValue(XmlParser.FIELD_NAME);
-      String columnName = attributes.getValue(XmlParser.COLUMN_NAME);
+      String fieldName = attributes.getValue(JdbcConnectorServiceXmlParser.FIELD_NAME);
+      String columnName = attributes.getValue(JdbcConnectorServiceXmlParser.COLUMN_NAME);
       mapping.withFieldToColumnMapping(fieldName, columnName);
     }
 
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
index da0971b..3b0e6c7 100644
--- 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
@@ -13,18 +13,18 @@
  */
 package org.apache.geode.connectors.jdbc.internal.xml;
 
-import static org.apache.geode.connectors.jdbc.internal.xml.XmlParser.COLUMN_NAME;
-import static org.apache.geode.connectors.jdbc.internal.xml.XmlParser.CONNECTION_NAME;
-import static org.apache.geode.connectors.jdbc.internal.xml.XmlParser.FIELD_NAME;
-import static org.apache.geode.connectors.jdbc.internal.xml.XmlParser.NAME;
-import static org.apache.geode.connectors.jdbc.internal.xml.XmlParser.NAMESPACE;
-import static org.apache.geode.connectors.jdbc.internal.xml.XmlParser.PASSWORD;
-import static org.apache.geode.connectors.jdbc.internal.xml.XmlParser.PDX_CLASS;
-import static org.apache.geode.connectors.jdbc.internal.xml.XmlParser.PRIMARY_KEY_IN_VALUE;
-import static org.apache.geode.connectors.jdbc.internal.xml.XmlParser.REGION;
-import static org.apache.geode.connectors.jdbc.internal.xml.XmlParser.TABLE;
-import static org.apache.geode.connectors.jdbc.internal.xml.XmlParser.URL;
-import static org.apache.geode.connectors.jdbc.internal.xml.XmlParser.USER;
+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;
diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/xml/XmlParser.java b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/xml/JdbcConnectorServiceXmlParser.java
similarity index 96%
rename from geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/xml/XmlParser.java
rename to geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/xml/JdbcConnectorServiceXmlParser.java
index e93ace8..c030b09 100644
--- a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/xml/XmlParser.java
+++ b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/xml/JdbcConnectorServiceXmlParser.java
@@ -18,7 +18,7 @@ import org.xml.sax.SAXException;
 
 import org.apache.geode.internal.cache.xmlcache.AbstractXmlParser;
 
-public class XmlParser extends 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";
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
index d053455..f4a5a36 100644
--- 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
@@ -18,7 +18,7 @@ import java.util.Map;
 
 import org.apache.geode.connectors.jdbc.internal.RegionMapping;
 
-public class RegionMappingBuilder {
+class RegionMappingBuilder {
 
   private String regionName;
   private String pdxClassName;
@@ -27,37 +27,37 @@ public class RegionMappingBuilder {
   private boolean primaryKeyInValue;
   private final Map<String, String> fieldToColumnMap = new HashMap<>();
 
-  public RegionMappingBuilder withRegionName(String regionName) {
+  RegionMappingBuilder withRegionName(String regionName) {
     this.regionName = regionName;
     return this;
   }
 
-  public RegionMappingBuilder withPdxClassName(String pdxClassName) {
+  RegionMappingBuilder withPdxClassName(String pdxClassName) {
     this.pdxClassName = pdxClassName;
     return this;
   }
 
-  public RegionMappingBuilder withTableName(String tableName) {
+  RegionMappingBuilder withTableName(String tableName) {
     this.tableName = tableName;
     return this;
   }
 
-  public RegionMappingBuilder withConnectionConfigName(String connectionConfigName) {
+  RegionMappingBuilder withConnectionConfigName(String connectionConfigName) {
     this.connectionConfigName = connectionConfigName;
     return this;
   }
 
-  public RegionMappingBuilder withPrimaryKeyInValue(String primaryKeyInValue) {
+  RegionMappingBuilder withPrimaryKeyInValue(String primaryKeyInValue) {
     this.primaryKeyInValue = Boolean.parseBoolean(primaryKeyInValue);
     return this;
   }
 
-  public RegionMappingBuilder withFieldToColumnMapping(String fieldName, String columnMapping) {
+  RegionMappingBuilder withFieldToColumnMapping(String fieldName, String columnMapping) {
     this.fieldToColumnMap.put(fieldName, columnMapping);
     return this;
   }
 
-  public RegionMapping build() {
+  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.xmlcache.XmlParser b/geode-connectors/src/main/resources/META-INF/services/org.apache.geode.internal.cache.xmlcache.XmlParser
index 03cf3ae..9fbc42a 100644
--- 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
@@ -1 +1 @@
-org.apache.geode.connectors.jdbc.internal.xml.XmlParser
\ No newline at end of file
+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/AbstractJdbcCallbackTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/AbstractJdbcCallbackTest.java
index 05b6334..7987ee9 100644
--- a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/AbstractJdbcCallbackTest.java
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/AbstractJdbcCallbackTest.java
@@ -24,6 +24,7 @@ import static org.mockito.Mockito.when;
 import org.junit.Before;
 import org.junit.Test;
 
+import org.apache.geode.connectors.jdbc.internal.AbstractJdbcCallback;
 import org.apache.geode.connectors.jdbc.internal.InternalJdbcConnectorService;
 import org.apache.geode.connectors.jdbc.internal.SqlHandler;
 import org.apache.geode.internal.cache.InternalCache;
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
index cda4c2c..1655bd9 100644
--- 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
@@ -34,9 +34,9 @@ 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.ConnectionManager;
 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;
 
@@ -248,7 +248,7 @@ public class JdbcAsyncWriterIntegrationTest {
   }
 
   private SqlHandler createSqlHandler() {
-    return new SqlHandler(new ConnectionManager(TestConfigService.getTestConfigService()));
+    return new SqlHandler(new TestableConnectionManager(TestConfigService.getTestConfigService()));
   }
 
 }
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
index 7f9ddd6..3905531 100644
--- 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
@@ -31,9 +31,9 @@ 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.ConnectionManager;
 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;
 
@@ -93,7 +93,7 @@ public class JdbcLoaderIntegrationTest {
   }
 
   private SqlHandler createSqlHandler() {
-    return new SqlHandler(new ConnectionManager(TestConfigService.getTestConfigService()));
+    return new SqlHandler(new TestableConnectionManager(TestConfigService.getTestConfigService()));
   }
 
   private Region<String, PdxInstance> createRegionWithJDBCLoader(String regionName) {
diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcSynchronousWriterIntegrationTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcSynchronousWriterIntegrationTest.java
index 54f6329..24a98e3 100644
--- a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcSynchronousWriterIntegrationTest.java
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcSynchronousWriterIntegrationTest.java
@@ -26,9 +26,7 @@ import java.sql.Statement;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
-import java.util.concurrent.TimeUnit;
 
-import org.awaitility.Awaitility;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -39,14 +37,10 @@ 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.ConnectionManager;
 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.pdx.PdxReader;
-import org.apache.geode.pdx.PdxSerializable;
-import org.apache.geode.pdx.PdxSerializationException;
-import org.apache.geode.pdx.PdxWriter;
 import org.apache.geode.test.junit.categories.IntegrationTest;
 
 @Category(IntegrationTest.class)
@@ -227,7 +221,7 @@ public class JdbcSynchronousWriterIntegrationTest {
   }
 
   private SqlHandler createSqlHandler() {
-    return new SqlHandler(new ConnectionManager(TestConfigService.getTestConfigService()));
+    return new SqlHandler(new TestableConnectionManager(TestConfigService.getTestConfigService()));
   }
 
   private void assertRecordMatchesEmployee(ResultSet resultSet, String key, Employee employee)
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
index 45df697..4e45eda 100644
--- 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
@@ -16,7 +16,8 @@ package org.apache.geode.connectors.jdbc.internal;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
-import org.apache.geode.connectors.jdbc.internal.xml.RegionMappingBuilder;
+import java.util.Collections;
+
 import org.apache.geode.internal.cache.InternalCache;
 import org.apache.geode.internal.cache.extension.ExtensionPoint;
 
@@ -39,12 +40,8 @@ public class TestConfigService {
   }
 
   private static RegionMapping createRegionMapping() {
-    RegionMappingBuilder mappingBuilder = new RegionMappingBuilder();
-    mappingBuilder.withConnectionConfigName(CONNECTION_CONFIG_NAME);
-    mappingBuilder.withTableName(REGION_TABLE_NAME);
-    mappingBuilder.withRegionName(REGION_NAME);
-    mappingBuilder.withPrimaryKeyInValue("false");
-    return mappingBuilder.build();
+    return new RegionMapping(REGION_NAME, null, REGION_TABLE_NAME, CONNECTION_CONFIG_NAME, false,
+        Collections.emptyMap());
   }
 
   private static ConnectionConfiguration createConnectionConfig() {
diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/ColumnValue.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/TestableConnectionManager.java
similarity index 60%
copy from geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/ColumnValue.java
copy to geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/TestableConnectionManager.java
index 8ade14b..01f73f8 100644
--- a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/ColumnValue.java
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/TestableConnectionManager.java
@@ -14,31 +14,9 @@
  */
 package org.apache.geode.connectors.jdbc.internal;
 
-public class ColumnValue {
-  final private boolean isKey;
-  final private String columnName;
-  final private Object value;
+public class TestableConnectionManager extends ConnectionManager {
 
-  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 + "]";
+  public TestableConnectionManager(InternalJdbcConnectorService configService) {
+    super(configService);
   }
 }
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
index 4921499..f26c3f8 100644
--- 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
@@ -17,13 +17,13 @@ import static org.apache.geode.connectors.jdbc.internal.xml.ElementType.CONNECTI
 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.XmlParser.COLUMN_NAME;
-import static org.apache.geode.connectors.jdbc.internal.xml.XmlParser.CONNECTION_NAME;
-import static org.apache.geode.connectors.jdbc.internal.xml.XmlParser.FIELD_NAME;
-import static org.apache.geode.connectors.jdbc.internal.xml.XmlParser.PDX_CLASS;
-import static org.apache.geode.connectors.jdbc.internal.xml.XmlParser.PRIMARY_KEY_IN_VALUE;
-import static org.apache.geode.connectors.jdbc.internal.xml.XmlParser.REGION;
-import static org.apache.geode.connectors.jdbc.internal.xml.XmlParser.TABLE;
+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;
@@ -106,10 +106,10 @@ public class ElementTypeTest {
     JdbcServiceConfiguration serviceConfiguration = mock(JdbcServiceConfiguration.class);
     stack.push(serviceConfiguration);
 
-    when(attributes.getValue(XmlParser.NAME)).thenReturn("connectionName");
-    when(attributes.getValue(XmlParser.URL)).thenReturn("url");
-    when(attributes.getValue(XmlParser.USER)).thenReturn("username");
-    when(attributes.getValue(XmlParser.PASSWORD)).thenReturn("secret");
+    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();
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
index bbef124..4916f06 100644
--- 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
@@ -14,18 +14,18 @@
 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.XmlParser.COLUMN_NAME;
-import static org.apache.geode.connectors.jdbc.internal.xml.XmlParser.CONNECTION_NAME;
-import static org.apache.geode.connectors.jdbc.internal.xml.XmlParser.FIELD_NAME;
-import static org.apache.geode.connectors.jdbc.internal.xml.XmlParser.NAME;
-import static org.apache.geode.connectors.jdbc.internal.xml.XmlParser.NAMESPACE;
-import static org.apache.geode.connectors.jdbc.internal.xml.XmlParser.PASSWORD;
-import static org.apache.geode.connectors.jdbc.internal.xml.XmlParser.PDX_CLASS;
-import static org.apache.geode.connectors.jdbc.internal.xml.XmlParser.PRIMARY_KEY_IN_VALUE;
-import static org.apache.geode.connectors.jdbc.internal.xml.XmlParser.REGION;
-import static org.apache.geode.connectors.jdbc.internal.xml.XmlParser.TABLE;
-import static org.apache.geode.connectors.jdbc.internal.xml.XmlParser.URL;
-import static org.apache.geode.connectors.jdbc.internal.xml.XmlParser.USER;
+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;
 
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
index d369b00..584373b 100644
--- 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
@@ -13,7 +13,7 @@
  */
 package org.apache.geode.connectors.jdbc.internal.xml;
 
-import static org.apache.geode.connectors.jdbc.internal.xml.XmlParser.NAMESPACE;
+import static org.apache.geode.connectors.jdbc.internal.xml.JdbcConnectorServiceXmlParser.NAMESPACE;
 import static org.assertj.core.api.Assertions.assertThat;
 
 import org.junit.Test;
diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/xml/XmlParserTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/xml/JdbcConnectorServiceXmlParserTest.java
similarity index 86%
rename from geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/xml/XmlParserTest.java
rename to geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/xml/JdbcConnectorServiceXmlParserTest.java
index 3ebdc9a..77e3884 100644
--- a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/xml/XmlParserTest.java
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/xml/JdbcConnectorServiceXmlParserTest.java
@@ -14,7 +14,7 @@
 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.XmlParser.NAMESPACE;
+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;
@@ -33,7 +33,7 @@ import org.apache.geode.internal.cache.xmlcache.CacheCreation;
 import org.apache.geode.test.junit.categories.UnitTest;
 
 @Category(UnitTest.class)
-public class XmlParserTest {
+public class JdbcConnectorServiceXmlParserTest {
 
   private Stack<Object> stack = new Stack<>();
   private Attributes attributes;
@@ -50,12 +50,12 @@ public class XmlParserTest {
 
   @Test
   public void getNamespaceUriReturnsNamespace() {
-    assertThat(new XmlParser().getNamespaceUri()).isEqualTo(NAMESPACE);
+    assertThat(new JdbcConnectorServiceXmlParser().getNamespaceUri()).isEqualTo(NAMESPACE);
   }
 
   @Test
   public void startElementCreatesJdbcServiceConfiguration() throws Exception {
-    XmlParser parser = new XmlParser();
+    JdbcConnectorServiceXmlParser parser = new JdbcConnectorServiceXmlParser();
     stack.push(cacheCreation);
     parser.setStack(stack);
 
@@ -66,7 +66,7 @@ public class XmlParserTest {
 
   @Test
   public void startElementWithWrongUriDoesNothing() throws Exception {
-    XmlParser parser = new XmlParser();
+    JdbcConnectorServiceXmlParser parser = new JdbcConnectorServiceXmlParser();
     stack.push(cacheCreation);
     parser.setStack(stack);
 
@@ -77,7 +77,7 @@ public class XmlParserTest {
 
   @Test
   public void endElementRemovesJdbcServiceConfiguration() throws Exception {
-    XmlParser parser = new XmlParser();
+    JdbcConnectorServiceXmlParser parser = new JdbcConnectorServiceXmlParser();
     stack.push(cacheCreation);
     JdbcServiceConfiguration serviceConfiguration = mock(JdbcServiceConfiguration.class);
     stack.push(serviceConfiguration);
@@ -91,7 +91,7 @@ public class XmlParserTest {
 
   @Test
   public void endElementRemovesWithWrongUriDoesNothing() throws Exception {
-    XmlParser parser = new XmlParser();
+    JdbcConnectorServiceXmlParser parser = new JdbcConnectorServiceXmlParser();
     stack.push(cacheCreation);
     JdbcServiceConfiguration serviceConfiguration = mock(JdbcServiceConfiguration.class);
     stack.push(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
index bdf1d3f..cb58542 100644
--- 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
@@ -13,7 +13,7 @@
  */
 package org.apache.geode.connectors.jdbc.internal.xml;
 
-import static org.apache.geode.connectors.jdbc.internal.xml.XmlParser.NAMESPACE;
+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;

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