Repository: eagle
Updated Branches:
  refs/heads/master 8b3729f97 -> d2fee6e6f


[EAGLE-687] updating SiteEntityToRelation to accept null values

Currently if you create site with any of the field set to NULL, it will throw
explored the way to use preparedStatements with explicitly specified parameters 
but that would require quite a large refactoring on entire metadata module.
so came up with the fix that is based on current assumptions in 
SiteEntityServiceJDBCImpl which is forming the sql in particular way that suits 
in SiteEntityToRelation.accept method.

Author: Jay <[email protected]>

Closes #758 from jhsenjaliya/EAGLE-687.


Project: http://git-wip-us.apache.org/repos/asf/eagle/repo
Commit: http://git-wip-us.apache.org/repos/asf/eagle/commit/d2fee6e6
Tree: http://git-wip-us.apache.org/repos/asf/eagle/tree/d2fee6e6
Diff: http://git-wip-us.apache.org/repos/asf/eagle/diff/d2fee6e6

Branch: refs/heads/master
Commit: d2fee6e6ff319f6a35e4c8209bd89d2d4e864c5c
Parents: 8b3729f
Author: Jay <[email protected]>
Authored: Tue Jan 3 10:10:37 2017 +0800
Committer: Hao Chen <[email protected]>
Committed: Tue Jan 3 10:10:37 2017 +0800

----------------------------------------------------------------------
 .../jdbc/service/orm/SiteEntityToRelation.java  |  8 +++++---
 .../jdbc/SiteEntityServiceJDBCImplTest.java     | 20 ++++++++++++++++++++
 2 files changed, 25 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/eagle/blob/d2fee6e6/eagle-core/eagle-metadata/eagle-metadata-jdbc/src/main/java/org/apache/eagle/metadata/store/jdbc/service/orm/SiteEntityToRelation.java
----------------------------------------------------------------------
diff --git 
a/eagle-core/eagle-metadata/eagle-metadata-jdbc/src/main/java/org/apache/eagle/metadata/store/jdbc/service/orm/SiteEntityToRelation.java
 
b/eagle-core/eagle-metadata/eagle-metadata-jdbc/src/main/java/org/apache/eagle/metadata/store/jdbc/service/orm/SiteEntityToRelation.java
index 910dec2..ae633d2 100644
--- 
a/eagle-core/eagle-metadata/eagle-metadata-jdbc/src/main/java/org/apache/eagle/metadata/store/jdbc/service/orm/SiteEntityToRelation.java
+++ 
b/eagle-core/eagle-metadata/eagle-metadata-jdbc/src/main/java/org/apache/eagle/metadata/store/jdbc/service/orm/SiteEntityToRelation.java
@@ -29,15 +29,17 @@ public class SiteEntityToRelation implements 
ThrowableConsumer2<PreparedStatemen
     @Override
     public void accept(PreparedStatement statement, SiteEntity entity) throws 
SQLException {
         int parameterIndex = 1;
-        if (StringUtils.isNotBlank(entity.getSiteId())) {
+        boolean addNullValue = 
(statement.getParameterMetaData().getParameterCount() > 5);
+
+        if (addNullValue || StringUtils.isNotBlank(entity.getSiteId())) {
             statement.setString(parameterIndex, entity.getSiteId());
             parameterIndex++;
         }
-        if (StringUtils.isNotBlank(entity.getSiteName())) {
+        if (addNullValue || StringUtils.isNotBlank(entity.getSiteName())) {
             statement.setString(parameterIndex, entity.getSiteName());
             parameterIndex++;
         }
-        if (StringUtils.isNotBlank(entity.getDescription())) {
+        if (addNullValue || StringUtils.isNotBlank(entity.getDescription())) {
             statement.setString(parameterIndex, entity.getDescription());
             parameterIndex++;
         }

http://git-wip-us.apache.org/repos/asf/eagle/blob/d2fee6e6/eagle-core/eagle-metadata/eagle-metadata-jdbc/src/test/java/org/apache/eagle/metadata/store/jdbc/SiteEntityServiceJDBCImplTest.java
----------------------------------------------------------------------
diff --git 
a/eagle-core/eagle-metadata/eagle-metadata-jdbc/src/test/java/org/apache/eagle/metadata/store/jdbc/SiteEntityServiceJDBCImplTest.java
 
b/eagle-core/eagle-metadata/eagle-metadata-jdbc/src/test/java/org/apache/eagle/metadata/store/jdbc/SiteEntityServiceJDBCImplTest.java
index adb730f..88ed729 100644
--- 
a/eagle-core/eagle-metadata/eagle-metadata-jdbc/src/test/java/org/apache/eagle/metadata/store/jdbc/SiteEntityServiceJDBCImplTest.java
+++ 
b/eagle-core/eagle-metadata/eagle-metadata-jdbc/src/test/java/org/apache/eagle/metadata/store/jdbc/SiteEntityServiceJDBCImplTest.java
@@ -52,7 +52,27 @@ public class SiteEntityServiceJDBCImplTest extends 
JDBCMetadataTestBase {
         Assert.assertEquals("testdesc", siteEntityFromDB.getDescription());
         Assert.assertEquals(createdTime, siteEntityFromDB.getCreatedTime());
         Assert.assertEquals(modifiedTime, siteEntityFromDB.getModifiedTime());
+    }
+
+    @Test
+    public void testInsertSiteEntityWithNullValues() throws SQLException {
+        SiteEntity siteEntity = new SiteEntity();
+        siteEntity.setSiteId("test-null-site");
 
+        siteEntityService.create(siteEntity);
+        String uuid = siteEntity.getUuid();
+        long createdTime = siteEntity.getCreatedTime();
+        long modifiedTime = siteEntity.getModifiedTime();
+
+        Collection<SiteEntity> results = siteEntityService.findAll();
+        Assert.assertEquals(1, results.size());
+        SiteEntity siteEntityFromDB = results.iterator().next();
+        Assert.assertEquals(uuid, siteEntityFromDB.getUuid());
+        Assert.assertEquals("test-null-site", siteEntityFromDB.getSiteId());
+        Assert.assertNull(siteEntityFromDB.getSiteName());
+        Assert.assertNull(siteEntityFromDB.getDescription());
+        Assert.assertEquals(createdTime, siteEntityFromDB.getCreatedTime());
+        Assert.assertEquals(modifiedTime, siteEntityFromDB.getModifiedTime());
     }
 
     @Test(expected = IllegalArgumentException.class)

Reply via email to