You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by ag...@apache.org on 2018/01/10 22:17:16 UTC

[geode] branch develop updated: GEODE-4241: Write region mapping to cluster configuration

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

agingade 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 3bc3b51  GEODE-4241: Write region mapping to cluster configuration
3bc3b51 is described below

commit 3bc3b51f5175079d23b3bab0824817c98cecb19a
Author: Anil <ag...@pivotal.io>
AuthorDate: Tue Jan 9 15:30:46 2018 -0800

    GEODE-4241: Write region mapping to cluster configuration
    
    When field mapping is not provided, cluster configuration for
    region mapping was not working.
---
 .../xml/JdbcConnectorServiceXmlGenerator.java      | 13 +++++-----
 .../cli/CreateMappingCommandDUnitTest.java         | 22 ++++++++++++++++
 ...onnectorServiceXmlGeneratorIntegrationTest.java | 30 ++++++++++++++++++++++
 3 files changed, 59 insertions(+), 6 deletions(-)

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 70f9540..205fbf2 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
@@ -131,16 +131,17 @@ public class JdbcConnectorServiceXmlGenerator implements XmlGenerator<Cache> {
           Boolean.toString(mapping.isPrimaryKeyInValue()));
     }
 
-    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.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 {
+    if (fieldMappings == null) {
+      return;
+    }
     for (Map.Entry<String, String> fieldMapping : fieldMappings.entrySet()) {
       AttributesImpl fieldAttributes = new AttributesImpl();
       XmlGeneratorUtils.addAttribute(fieldAttributes, FIELD_NAME, fieldMapping.getKey());
diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/CreateMappingCommandDUnitTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/CreateMappingCommandDUnitTest.java
index 4ac9f67..552cd23 100644
--- a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/CreateMappingCommandDUnitTest.java
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/CreateMappingCommandDUnitTest.java
@@ -78,6 +78,8 @@ public class CreateMappingCommandDUnitTest {
       String xml = InternalLocator.getLocator().getSharedConfiguration().getConfiguration("cluster")
           .getCacheXmlContent();
       assertThat(xml).isNotNull().contains("jdbc:connector-service");
+      assertThat(xml).isNotNull().contains("jdbc:region-mapping");
+      assertThat(xml).isNotNull().contains("jdbc:field-mapping");
     });
 
     server.invoke(() -> {
@@ -92,4 +94,24 @@ public class CreateMappingCommandDUnitTest {
           .containsEntry("field2", "column2");
     });
   }
+
+  @Test
+  public void createsRegionMappingWithoutFieldMap() {
+    CommandStringBuilder csb = new CommandStringBuilder(CREATE_MAPPING);
+    csb.addOption(CREATE_MAPPING__REGION_NAME, "testRegion");
+    csb.addOption(CREATE_MAPPING__CONNECTION_NAME, "connection");
+    csb.addOption(CREATE_MAPPING__TABLE_NAME, "myTable");
+    csb.addOption(CREATE_MAPPING__PDX_CLASS_NAME, "myPdxClass");
+    csb.addOption(CREATE_MAPPING__VALUE_CONTAINS_PRIMARY_KEY, "false");
+
+    gfsh.executeAndAssertThat(csb.toString()).statusIsSuccess();
+
+    locator.invoke(() -> {
+      String xml = InternalLocator.getLocator().getSharedConfiguration().getConfiguration("cluster")
+          .getCacheXmlContent();
+      assertThat(xml).isNotNull().contains("jdbc:connector-service");
+      assertThat(xml).isNotNull().contains("jdbc:region-mapping");
+      assertThat(xml).isNotNull().doesNotContain("jdbc:field-mapping");
+    });
+  }
 }
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 1ba728f..a3caac5 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
@@ -161,6 +161,36 @@ public class JdbcConnectorServiceXmlGeneratorIntegrationTest {
   }
 
   @Test
+  public void generatesXmlContainingRegionMappingWithoutFieldMap() throws Exception {
+    JdbcConnectorService service = cache.getService(JdbcConnectorService.class);
+    RegionMappingBuilder regionMappingBuilder =
+        new RegionMappingBuilder().withRegionName("regionName").withPdxClassName("pdxClassName")
+            .withTableName("tableName").withConnectionConfigName("connectionConfigName")
+            .withPrimaryKeyInValue("true").withFieldToColumnMappings(null);
+    RegionMapping regionMapping = regionMappingBuilder.build();
+    service.createRegionMapping(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(0);
+  }
+
+  @Test
   public void generatedXmlWithConnectionConfigurationCanBeParsed() 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>'].