@Test public void testResolve_RestartRequiredAfterChange() throws Exception { Boolean isRestartRequired = true; // specified in child only ServiceInfo info = new ServiceInfo(); ServiceInfo parentInfo = new ServiceInfo(); info.setRestartRequiredAfterChange(isRestartRequired); ServiceModule service = resolveService(info, parentInfo); assertEquals(isRestartRequired, service.getModuleInfo().isRestartRequiredAfterChange()); // specified in parent only info.setRestartRequiredAfterChange(null); parentInfo.setRestartRequiredAfterChange(isRestartRequired); service = resolveService(info, parentInfo); assertEquals(isRestartRequired, service.getModuleInfo().isRestartRequiredAfterChange()); // specified in both info.setRestartRequiredAfterChange(isRestartRequired); parentInfo.setRestartRequiredAfterChange(false); service = resolveService(info, parentInfo); assertEquals(isRestartRequired, service.getModuleInfo().isRestartRequiredAfterChange()); }
@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()); }