You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by ds...@apache.org on 2018/01/05 19:17:34 UTC
[geode] branch develop updated: GEODE-4160: fix gfsh describe
jdbc-connection (#1223)
This is an automated email from the ASF dual-hosted git repository.
dschneider pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/develop by this push:
new 92ced79 GEODE-4160: fix gfsh describe jdbc-connection (#1223)
92ced79 is described below
commit 92ced7912800128c078bccc65ad7476cc25cacee
Author: Darrel Schneider <ds...@pivotal.io>
AuthorDate: Fri Jan 5 11:17:32 2018 -0800
GEODE-4160: fix gfsh describe jdbc-connection (#1223)
* GEODE-4160: fix gfsh describe jdbc-connection
If the connection had no parameters set, then running
gfsh describe jdbc-connection would fail with an NPE.
---
.../jdbc/internal/ConnectionConfigBuilder.java | 17 ++++----
.../jdbc/internal/ConnectionConfiguration.java | 3 --
.../jdbc/internal/RegionMappingBuilder.java | 19 ++++-----
.../internal/cli/DescribeConnectionCommand.java | 10 +++--
.../connectors/jdbc/internal/xml/ElementType.java | 19 ++++-----
.../xml/JdbcConnectorServiceXmlGenerator.java | 45 +++++++++++++---------
.../{xml => }/ConnectionConfigBuilderTest.java | 28 +++++++++++++-
.../{xml => }/RegionMappingBuilderTest.java | 35 ++++++++++++++++-
.../DescribeConnectionCommandIntegrationTest.java | 24 ++++++++++++
.../jdbc/internal/xml/ElementTypeTest.java | 25 ++++++++++++
...onnectorServiceXmlGeneratorIntegrationTest.java | 43 +++++++++++++++++++++
11 files changed, 215 insertions(+), 53 deletions(-)
diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/ConnectionConfigBuilder.java b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/ConnectionConfigBuilder.java
index 308f61e..4ab2b7f 100644
--- a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/ConnectionConfigBuilder.java
+++ b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/ConnectionConfigBuilder.java
@@ -28,7 +28,7 @@ public class ConnectionConfigBuilder {
private String url;
private String user;
private String password;
- private Map<String, String> parameters = new HashMap<>();
+ private Map<String, String> parameters;
public ConnectionConfigBuilder withName(String name) {
this.name = name;
@@ -51,25 +51,26 @@ public class ConnectionConfigBuilder {
}
public ConnectionConfigBuilder withParameters(String[] params) {
- if (params == null) {
- parameters = null;
- } else {
+ if (params != null) {
+ parameters = new HashMap<>();
for (String param : params) {
if (param.isEmpty()) {
continue;
}
String[] keyValuePair = param.split(PARAMS_DELIMITER);
validateParam(keyValuePair, param);
- if (keyValuePair.length == 2) {
- parameters.put(keyValuePair[0], keyValuePair[1]);
- }
+ parameters.put(keyValuePair[0], keyValuePair[1]);
}
+ } else {
+ parameters = null;
}
return this;
}
private void validateParam(String[] paramKeyValue, String param) {
- if ((paramKeyValue.length <= 1) || paramKeyValue[0].isEmpty() || paramKeyValue[1].isEmpty()) {
+ // paramKeyValue is produced by split which will never give us
+ // an empty second element
+ if ((paramKeyValue.length != 2) || paramKeyValue[0].isEmpty()) {
throw new IllegalArgumentException("Parameter '" + param
+ "' is not of the form 'parameterName" + PARAMS_DELIMITER + "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
index 6a69079..c80e146 100644
--- 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
@@ -23,9 +23,6 @@ import org.apache.geode.annotations.Experimental;
@Experimental
public class ConnectionConfiguration implements Serializable {
- private static final Object USER = "user";
- private static final Object PASSWORD = "password";
-
private final String name;
private final String url;
private final String user;
diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/RegionMappingBuilder.java b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/RegionMappingBuilder.java
index 302f6cd..0d989a4 100644
--- a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/RegionMappingBuilder.java
+++ b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/RegionMappingBuilder.java
@@ -50,14 +50,15 @@ public class RegionMappingBuilder {
return this;
}
- // TODO: delete withPrimaryKeyInValue(String)
- public RegionMappingBuilder withPrimaryKeyInValue(String primaryKeyInValue) {
- this.primaryKeyInValue = Boolean.parseBoolean(primaryKeyInValue);
+ public RegionMappingBuilder withPrimaryKeyInValue(String v) {
+ if (v != null) {
+ withPrimaryKeyInValue(Boolean.parseBoolean(v));
+ }
return this;
}
- public RegionMappingBuilder withPrimaryKeyInValue(Boolean primaryKeyInValue) {
- this.primaryKeyInValue = primaryKeyInValue;
+ public RegionMappingBuilder withPrimaryKeyInValue(Boolean v) {
+ this.primaryKeyInValue = v;
return this;
}
@@ -76,16 +77,16 @@ public class RegionMappingBuilder {
}
String[] keyValuePair = mapping.split(MAPPINGS_DELIMITER);
validateParam(keyValuePair, mapping);
- if (keyValuePair.length == 2) {
- fieldToColumnMap.put(keyValuePair[0], keyValuePair[1]);
- }
+ fieldToColumnMap.put(keyValuePair[0], keyValuePair[1]);
}
}
return this;
}
private void validateParam(String[] paramKeyValue, String mapping) {
- if (paramKeyValue.length <= 1 || paramKeyValue[0].isEmpty() || paramKeyValue[1].isEmpty()) {
+ // paramKeyValue is produced by split which will never give us
+ // an empty second element
+ if (paramKeyValue.length != 2 || paramKeyValue[0].isEmpty()) {
throw new IllegalArgumentException("Field to column mapping '" + mapping
+ "' is not of the form 'Field" + MAPPINGS_DELIMITER + "Column'");
}
diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/DescribeConnectionCommand.java b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/DescribeConnectionCommand.java
index 9ecf900..3295340 100644
--- a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/DescribeConnectionCommand.java
+++ b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/DescribeConnectionCommand.java
@@ -103,9 +103,11 @@ public class DescribeConnectionCommand implements GfshCommand {
}
TabularResultData tabularResultData = sectionResult.addTable(CREATE_CONNECTION__PARAMS);
tabularResultData.setHeader("Additional connection parameters:");
- config.getParameters().entrySet().forEach((entry) -> {
- tabularResultData.accumulate("Param Name", entry.getKey());
- tabularResultData.accumulate("Value", entry.getValue());
- });
+ if (config.getParameters() != null) {
+ config.getParameters().entrySet().forEach((entry) -> {
+ tabularResultData.accumulate("Param Name", entry.getKey());
+ tabularResultData.accumulate("Value", entry.getValue());
+ });
+ }
}
}
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 eac053a..716e15f 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
@@ -51,21 +51,22 @@ public enum ElementType {
throw new CacheXmlException(
"jdbc <connection> elements must occur within <connector-service> elements");
}
- ConnectionConfigBuilder connectionConfig = new ConnectionConfigBuilder()
+ ConnectionConfigBuilder connectionConfigBuilder = new ConnectionConfigBuilder()
.withName(attributes.getValue(JdbcConnectorServiceXmlParser.NAME))
.withUrl(attributes.getValue(JdbcConnectorServiceXmlParser.URL))
.withUser(attributes.getValue(JdbcConnectorServiceXmlParser.USER))
- .withPassword(attributes.getValue(JdbcConnectorServiceXmlParser.PASSWORD));
- addParameters(connectionConfig,
- attributes.getValue(JdbcConnectorServiceXmlParser.PARAMETERS));
- stack.push(connectionConfig);
+ .withPassword(attributes.getValue(JdbcConnectorServiceXmlParser.PASSWORD))
+ .withParameters(parseParameters(attributes));
+ stack.push(connectionConfigBuilder);
}
- private void addParameters(ConnectionConfigBuilder connectionConfig, String value) {
- if (value == null) {
- return;
+ private String[] parseParameters(Attributes attributes) {
+ String[] result = null;
+ String value = attributes.getValue(JdbcConnectorServiceXmlParser.PARAMETERS);
+ if (value != null) {
+ result = value.split(",");
}
- connectionConfig.withParameters(value.split(","));
+ return result;
}
@Override
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 8fa59c8..70f9540 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
@@ -102,9 +102,15 @@ public class JdbcConnectorServiceXmlGenerator implements XmlGenerator<Cache> {
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.addAttribute(attributes, PARAMETERS, createParametersString(config));
+ if (config.getUser() != null) {
+ XmlGeneratorUtils.addAttribute(attributes, USER, config.getUser());
+ }
+ if (config.getPassword() != null) {
+ XmlGeneratorUtils.addAttribute(attributes, PASSWORD, config.getPassword());
+ }
+ if (config.getParameters() != null) {
+ XmlGeneratorUtils.addAttribute(attributes, PARAMETERS, createParametersString(config));
+ }
XmlGeneratorUtils.emptyElement(handler, PREFIX, ElementType.CONNECTION.getTypeName(),
attributes);
}
@@ -114,17 +120,23 @@ public class JdbcConnectorServiceXmlGenerator implements XmlGenerator<Cache> {
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()));
+ if (mapping.getTableName() != null) {
+ XmlGeneratorUtils.addAttribute(attributes, TABLE, mapping.getTableName());
+ }
+ if (mapping.getPdxClassName() != null) {
+ XmlGeneratorUtils.addAttribute(attributes, PDX_CLASS, mapping.getPdxClassName());
+ }
+ if (mapping.isPrimaryKeyInValue() != null) {
+ XmlGeneratorUtils.addAttribute(attributes, PRIMARY_KEY_IN_VALUE,
+ Boolean.toString(mapping.isPrimaryKeyInValue()));
+ }
- XmlGeneratorUtils.startElement(handler, PREFIX, ElementType.REGION_MAPPING.getTypeName(),
- attributes);
if (mapping.getFieldToColumnMap() != null) {
+ XmlGeneratorUtils.startElement(handler, PREFIX, ElementType.REGION_MAPPING.getTypeName(),
+ attributes);
addFieldMappings(handler, mapping.getFieldToColumnMap());
+ XmlGeneratorUtils.endElement(handler, PREFIX, ElementType.REGION_MAPPING.getTypeName());
}
- XmlGeneratorUtils.endElement(handler, PREFIX, ElementType.REGION_MAPPING.getTypeName());
}
private void addFieldMappings(ContentHandler handler, Map<String, String> fieldMappings)
@@ -139,16 +151,13 @@ public class JdbcConnectorServiceXmlGenerator implements XmlGenerator<Cache> {
}
private String createParametersString(ConnectionConfiguration config) {
- Properties properties = config.getConnectionProperties();
+ assert config.getParameters() != null;
StringBuilder stringBuilder = new StringBuilder();
- for (Map.Entry<Object, Object> entry : properties.entrySet()) {
- Object key = entry.getKey();
- if (!key.equals(USER) && !key.equals(PASSWORD)) {
- if (stringBuilder.length() > 0) {
- stringBuilder.append(",");
- }
- stringBuilder.append(key).append(PARAMS_DELIMITER).append(entry.getValue());
+ for (Map.Entry<String, String> entry : config.getParameters().entrySet()) {
+ if (stringBuilder.length() > 0) {
+ stringBuilder.append(",");
}
+ stringBuilder.append(entry.getKey()).append(PARAMS_DELIMITER).append(entry.getValue());
}
return stringBuilder.toString();
}
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/ConnectionConfigBuilderTest.java
similarity index 71%
rename from geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/xml/ConnectionConfigBuilderTest.java
rename to geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/ConnectionConfigBuilderTest.java
index 7afcf83..4e4b18c 100644
--- 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/ConnectionConfigBuilderTest.java
@@ -12,7 +12,7 @@
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
-package org.apache.geode.connectors.jdbc.internal.xml;
+package org.apache.geode.connectors.jdbc.internal;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
@@ -52,6 +52,30 @@ public class ConnectionConfigBuilderTest {
}
@Test
+ public void createsObjectWithEmptyParameterElement() {
+ ConnectionConfiguration config = new ConnectionConfigBuilder().withName("name").withUrl("url")
+ .withUser("user").withPassword("password")
+ .withParameters(new String[] {"param1:value1", "", "param2:value2"}).build();
+
+ assertThat(config.getName()).isEqualTo("name");
+ assertThat(config.getUrl()).isEqualTo("url");
+ assertThat(config.getUser()).isEqualTo("user");
+ assertThat(config.getPassword()).isEqualTo("password");
+ assertThat(config.getConnectionProperties()).containsEntry("param1", "value1")
+ .containsEntry("param2", "value2");
+ }
+
+ @Test
+ public void createsObjectWithNullParameters() {
+ ConnectionConfiguration config =
+ new ConnectionConfigBuilder().withName("name").withUrl("url").withParameters(null).build();
+
+ assertThat(config.getName()).isEqualTo("name");
+ assertThat(config.getUrl()).isEqualTo("url");
+ assertThat(config.getParameters()).isNull();
+ }
+
+ @Test
public void throwsExceptionWithInvalidParams() {
ConnectionConfigBuilder config = new ConnectionConfigBuilder();
assertThatThrownBy(() -> config.withParameters(new String[] {"param1value1"}))
@@ -60,6 +84,8 @@ public class ConnectionConfigBuilderTest {
.isInstanceOf(IllegalArgumentException.class);
assertThatThrownBy(() -> config.withParameters(new String[] {"param1value1:"}))
.isInstanceOf(IllegalArgumentException.class);
+ assertThatThrownBy(() -> config.withParameters(new String[] {"1:2:3"}))
+ .isInstanceOf(IllegalArgumentException.class);
assertThatThrownBy(() -> config.withParameters(new String[] {":"}))
.isInstanceOf(IllegalArgumentException.class);
}
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/RegionMappingBuilderTest.java
similarity index 69%
rename from geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/xml/RegionMappingBuilderTest.java
rename to geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/RegionMappingBuilderTest.java
index d7f31a5..5abfd74 100644
--- 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/RegionMappingBuilderTest.java
@@ -12,7 +12,7 @@
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
-package org.apache.geode.connectors.jdbc.internal.xml;
+package org.apache.geode.connectors.jdbc.internal;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
@@ -54,6 +54,26 @@ public class RegionMappingBuilderTest {
}
@Test
+ public void createsMappingWithNullAsPrimaryKeyInValue() {
+ RegionMapping regionMapping = new RegionMappingBuilder().withRegionName("regionName")
+ .withConnectionConfigName("configName").withPrimaryKeyInValue((String) null).build();
+
+ assertThat(regionMapping.getRegionName()).isEqualTo("regionName");
+ assertThat(regionMapping.getConnectionConfigName()).isEqualTo("configName");
+ assertThat(regionMapping.isPrimaryKeyInValue()).isNull();
+ }
+
+ @Test
+ public void createsMappingWithNullFieldToColumnMappings() {
+ RegionMapping regionMapping = new RegionMappingBuilder().withRegionName("regionName")
+ .withConnectionConfigName("configName").withFieldToColumnMappings(null).build();
+
+ assertThat(regionMapping.getRegionName()).isEqualTo("regionName");
+ assertThat(regionMapping.getConnectionConfigName()).isEqualTo("configName");
+ assertThat(regionMapping.getFieldToColumnMap()).isNull();
+ }
+
+ @Test
public void createsFieldMappingsFromArray() {
String[] fieldMappings = new String[] {"field1:column1", "field2:column2"};
RegionMapping regionMapping =
@@ -64,6 +84,16 @@ public class RegionMappingBuilderTest {
}
@Test
+ public void createsFieldMappingsFromArrayWithEmptyElement() {
+ String[] fieldMappings = new String[] {"field1:column1", "", "field2:column2"};
+ RegionMapping regionMapping =
+ new RegionMappingBuilder().withFieldToColumnMappings(fieldMappings).build();
+
+ assertThat(regionMapping.getColumnNameForField("field1")).isEqualTo("column1");
+ assertThat(regionMapping.getColumnNameForField("field2")).isEqualTo("column2");
+ }
+
+ @Test
public void throwsExceptionForInvalidFieldMappings() {
RegionMappingBuilder regionMappingbuilder = new RegionMappingBuilder();
@@ -74,6 +104,9 @@ public class RegionMappingBuilderTest {
() -> regionMappingbuilder.withFieldToColumnMappings(new String[] {":field1column1"}))
.isInstanceOf(IllegalArgumentException.class);
assertThatThrownBy(
+ () -> regionMappingbuilder.withFieldToColumnMappings(new String[] {"field1:column1:extra"}))
+ .isInstanceOf(IllegalArgumentException.class);
+ assertThatThrownBy(
() -> regionMappingbuilder.withFieldToColumnMappings(new String[] {"field1column1:"}))
.isInstanceOf(IllegalArgumentException.class);
assertThatThrownBy(() -> regionMappingbuilder.withFieldToColumnMappings(new String[] {":"}))
diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/DescribeConnectionCommandIntegrationTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/DescribeConnectionCommandIntegrationTest.java
index 05b5051..84e93c3 100644
--- a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/DescribeConnectionCommandIntegrationTest.java
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/DescribeConnectionCommandIntegrationTest.java
@@ -107,6 +107,30 @@ public class DescribeConnectionCommandIntegrationTest {
}
@Test
+ public void displaysConnectionInformationForConfigurationWithNullParameters() throws Exception {
+ connectionConfig = new ConnectionConfigBuilder().withName(CONNECTION).withUrl("myUrl")
+ .withParameters(null).build();
+ service.createConnectionConfig(connectionConfig);
+ Result result = command.describeConnection(CONNECTION);
+
+ assertThat(result.getStatus()).isSameAs(Result.Status.OK);
+ CommandResult commandResult = (CommandResult) result;
+ GfJsonObject sectionContent = commandResult.getTableContent()
+ .getJSONObject(SECTION_DATA_ACCESSOR + "-" + RESULT_SECTION_NAME);
+
+ assertThat(sectionContent.get(CREATE_CONNECTION__NAME)).isEqualTo(connectionConfig.getName());
+ assertThat(sectionContent.get(CREATE_CONNECTION__URL)).isEqualTo(connectionConfig.getUrl());
+ assertThat(sectionContent.get(CREATE_CONNECTION__USER)).isEqualTo(connectionConfig.getUser());
+ assertThat(sectionContent.get(CREATE_CONNECTION__PASSWORD)).isEqualTo(null);
+
+ GfJsonObject tableContent =
+ sectionContent.getJSONObject(TABLE_DATA_ACCESSOR + "-" + CREATE_CONNECTION__PARAMS)
+ .getJSONObject("content");
+ assertThat(tableContent.get("Param Name")).isNull();
+ assertThat(tableContent.get("Value")).isNull();
+ }
+
+ @Test
public void doesNotDisplayParametersWithNoValue() throws Exception {
connectionConfig = new ConnectionConfigBuilder().withName(CONNECTION).withUrl("myUrl").build();
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 144d1fa..7612527 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
@@ -34,6 +34,8 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyZeroInteractions;
import static org.mockito.Mockito.when;
+import java.util.HashMap;
+import java.util.Map;
import java.util.Stack;
import org.junit.Before;
@@ -136,6 +138,29 @@ public class ElementTypeTest {
assertThat(config.getUrl()).isEqualTo("url");
assertThat(config.getUser()).isEqualTo("username");
assertThat(config.getPassword()).isEqualTo("secret");
+ assertThat(config.getParameters()).isNull();
+ }
+
+ @Test
+ public void startElementConnectionWithParameters() {
+ 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.PARAMETERS))
+ .thenReturn("key1:value1,key2:value2");
+
+ CONNECTION.startElement(stack, attributes);
+
+ ConnectionConfiguration config = ((ConnectionConfigBuilder) stack.pop()).build();
+ assertThat(config.getName()).isEqualTo("connectionName");
+ assertThat(config.getUrl()).isEqualTo("url");
+ assertThat(config.getUser()).isNull();
+ assertThat(config.getPassword()).isNull();
+ Map<String, String> expectedParams = new HashMap<>();
+ expectedParams.put("key1", "value1");
+ expectedParams.put("key2", "value2");
+ assertThat(config.getParameters()).isEqualTo(expectedParams);
}
@Test
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 d59aaaf..1ba728f 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
@@ -175,6 +175,35 @@ public class JdbcConnectorServiceXmlGeneratorIntegrationTest {
}
@Test
+ public void generatedXmlWithConnectionConfigurationWithNoUserNameAndPasswordCanBeParsed()
+ throws Exception {
+ JdbcConnectorService service = cache.getService(JdbcConnectorService.class);
+ ConnectionConfiguration config =
+ new ConnectionConfigBuilder().withName("name").withUrl("url").build();
+ service.createConnectionConfig(config);
+ generateXml();
+ cache.close();
+
+ createCacheUsingXml();
+ service = cache.getService(JdbcConnectorService.class);
+ assertThat(service.getConnectionConfig("name")).isEqualTo(config);
+ }
+
+ @Test
+ public void generatedXmlWithConnectionConfigurationWithParametersCanBeParsed() throws Exception {
+ JdbcConnectorService service = cache.getService(JdbcConnectorService.class);
+ ConnectionConfiguration config = new ConnectionConfigBuilder().withName("name").withUrl("url")
+ .withParameters(new String[] {"key1:value1", "key2:value2"}).build();
+ service.createConnectionConfig(config);
+ generateXml();
+ cache.close();
+
+ createCacheUsingXml();
+ service = cache.getService(JdbcConnectorService.class);
+ assertThat(service.getConnectionConfig("name")).isEqualTo(config);
+ }
+
+ @Test
public void generatedXmlWithRegionMappingCanBeParsed() throws Exception {
JdbcConnectorService service = cache.getService(JdbcConnectorService.class);
RegionMapping mapping = new RegionMappingBuilder().withRegionName("region")
@@ -191,6 +220,20 @@ public class JdbcConnectorServiceXmlGeneratorIntegrationTest {
}
@Test
+ public void generatedXmlWithRegionMappingWithNoOptionalParametersCanBeParsed() throws Exception {
+ JdbcConnectorService service = cache.getService(JdbcConnectorService.class);
+ RegionMapping mapping = new RegionMappingBuilder().withRegionName("region")
+ .withConnectionConfigName("connection").build();
+ service.createRegionMapping(mapping);
+ generateXml();
+ cache.close();
+
+ createCacheUsingXml();
+ service = cache.getService(JdbcConnectorService.class);
+ assertThat(service.getMappingForRegion("region")).isEqualTo(mapping);
+ }
+
+ @Test
public void generatedXmlWithEverythingCanBeParsed() throws Exception {
JdbcConnectorService service = cache.getService(JdbcConnectorService.class);
ConnectionConfiguration config = new ConnectionConfigBuilder().withName("name").withUrl("url")
--
To stop receiving notification emails like this one, please contact
['"commits@geode.apache.org" <co...@geode.apache.org>'].