Forráskód Böngészése

AMBARI-6526. Sqoop configTypes field returns null instead of empty object

Srimanth Gunturi 11 éve
szülő
commit
c4a6163eec

+ 10 - 3
ambari-server/src/main/java/org/apache/ambari/server/api/util/StackExtensionHelper.java

@@ -21,6 +21,7 @@ import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
@@ -124,7 +125,7 @@ public class StackExtensionHelper {
   }
 
 
-  private ServiceInfo mergeServices(ServiceInfo parentService,
+  ServiceInfo mergeServices(ServiceInfo parentService,
                                     ServiceInfo childService) {
     ServiceInfo mergedServiceInfo = new ServiceInfo();
     mergedServiceInfo.setSchemaVersion(childService.getSchemaVersion());
@@ -133,10 +134,16 @@ public class StackExtensionHelper {
     mergedServiceInfo.setVersion(childService.getVersion());
     mergedServiceInfo.setConfigDependencies(
         childService.getConfigDependencies() != null ?
-            childService.getConfigDependencies() : parentService.getConfigDependencies());
+            childService.getConfigDependencies() :
+            parentService.getConfigDependencies() != null ?
+                parentService.getConfigDependencies() :
+                Collections.<String>emptyList());
     mergedServiceInfo.setConfigTypes(
         childService.getConfigTypes() != null ?
-            childService.getConfigTypes() : parentService.getConfigTypes());
+            childService.getConfigTypes() :
+            parentService.getConfigTypes() != null ?
+                parentService.getConfigTypes() :
+                Collections.<String, Map<String, Map<String, String>>>emptyMap());
     
     mergedServiceInfo.setRestartRequiredAfterChange(
             (childService.isRestartRequiredAfterChange() != null) 

+ 21 - 0
ambari-server/src/test/java/org/apache/ambari/server/api/util/StackExtensionHelperTest.java

@@ -605,5 +605,26 @@ public class StackExtensionHelperTest {
     assertEquals(true, propertyInfo.isRequireInput());
     assertEquals(PropertyInfo.PropertyType.DEFAULT, propertyInfo.getType());
   }
+
+  @Test
+  public void testMergeServices_BothConfigTypesAreNull() throws Exception {
+    File stackRoot = new File(stackRootStr);
+    StackExtensionHelper helper = new StackExtensionHelper(injector, stackRoot);
+    ServiceInfo child = new ServiceInfo();
+    ServiceInfo parent = new ServiceInfo();
+
+    child.setConfigTypes(null);
+    child.setConfigDependencies(null);
+
+    parent.setConfigTypes(null);
+    parent.setConfigDependencies(null);
+
+    ServiceInfo merged = helper.mergeServices(parent, child);
+
+    assertNotNull(merged.getConfigDependencies());
+    assertEquals(0, merged.getConfigDependencies().size());
+    assertNotNull(merged.getConfigTypes());
+    assertEquals(0, merged.getConfigTypes().size());
+  }
 }