@Test public void testResolve_Comment() throws Exception { String comment = "test comment"; // comment specified in child only ServiceInfo info = new ServiceInfo(); ServiceInfo parentInfo = new ServiceInfo(); info.setComment(comment); ServiceModule service = resolveService(info, parentInfo); assertEquals(comment, service.getModuleInfo().getComment()); // comment specified in parent only info.setComment(null); parentInfo.setComment(comment); service = resolveService(info, parentInfo); assertEquals(comment, service.getModuleInfo().getComment()); // set in both info.setComment(comment); parentInfo.setComment("other comment"); service = resolveService(info, parentInfo); assertEquals(comment, service.getModuleInfo().getComment()); }
@Override public void resolve( ServiceModule parentModule, Map<String, StackModule> allStacks, Map<String, ServiceModule> commonServices) throws AmbariException { if (!serviceInfo.isValid() || !parentModule.isValid()) return; ServiceInfo parent = parentModule.getModuleInfo(); if (serviceInfo.getComment() == null) { serviceInfo.setComment(parent.getComment()); } if (serviceInfo.getDisplayName() == null) { serviceInfo.setDisplayName(parent.getDisplayName()); } if (serviceInfo.getVersion() == null) { serviceInfo.setVersion(parent.getVersion()); } if (serviceInfo.getRequiredServices() == null || serviceInfo.getRequiredServices().size() == 0) { serviceInfo.setRequiredServices( parent.getRequiredServices() != null ? parent.getRequiredServices() : Collections.<String>emptyList()); } if (serviceInfo.isRestartRequiredAfterChange() == null) { serviceInfo.setRestartRequiredAfterChange(parent.isRestartRequiredAfterChange()); } if (serviceInfo.isRestartRequiredAfterRackChange() == null) { serviceInfo.setRestartRequiredAfterRackChange(parent.isRestartRequiredAfterRackChange()); } if (serviceInfo.isMonitoringService() == null) { serviceInfo.setMonitoringService(parent.isMonitoringService()); } if (serviceInfo.getOsSpecifics().isEmpty()) { serviceInfo.setOsSpecifics(parent.getOsSpecifics()); } if (serviceInfo.getCommandScript() == null) { serviceInfo.setCommandScript(parent.getCommandScript()); } if (serviceInfo.getServicePackageFolder() == null) { serviceInfo.setServicePackageFolder(parent.getServicePackageFolder()); } if (serviceInfo.getMetricsFile() == null) { serviceInfo.setMetricsFile(parent.getMetricsFile()); } if (serviceInfo.getAlertsFile() == null) { serviceInfo.setAlertsFile(parent.getAlertsFile()); } if (serviceInfo.getKerberosDescriptorFile() == null) { serviceInfo.setKerberosDescriptorFile(parent.getKerberosDescriptorFile()); } if (serviceInfo.getThemesMap().isEmpty()) { serviceInfo.setThemesMap(parent.getThemesMap()); } if (serviceInfo.getWidgetsDescriptorFile() == null) { serviceInfo.setWidgetsDescriptorFile(parent.getWidgetsDescriptorFile()); } mergeCustomCommands(parent.getCustomCommands(), serviceInfo.getCustomCommands()); mergeConfigDependencies(parent); mergeComponents(parentModule, allStacks, commonServices); mergeConfigurations(parentModule, allStacks, commonServices); mergeThemes(parentModule, allStacks, commonServices); mergeExcludedConfigTypes(parent); mergeServiceProperties(parent.getServicePropertyList()); }