]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-3930 Backup of settings then restore to a new Sonar instance can cause deployme...
authorJulien Lancelot <julien.lancelot@gmail.com>
Fri, 23 Nov 2012 14:52:00 +0000 (15:52 +0100)
committerJulien Lancelot <julien.lancelot@gmail.com>
Fri, 23 Nov 2012 14:57:11 +0000 (15:57 +0100)
sonar-server/src/main/java/org/sonar/server/configuration/PropertiesBackup.java
sonar-server/src/main/java/org/sonar/server/platform/PersistentSettings.java
sonar-server/src/test/java/org/sonar/server/configuration/PropertiesBackupTest.java

index 359db78cbaf04d061b91bda0613345e6894aa9c2..4aab263043ae1ce3a8361aefda5340ff9cedde79 100644 (file)
@@ -26,6 +26,7 @@ import org.apache.commons.collections.CollectionUtils;
 import org.slf4j.LoggerFactory;
 import org.sonar.api.CoreProperties;
 import org.sonar.api.database.configuration.Property;
+import org.sonar.core.properties.PropertyDto;
 import org.sonar.server.platform.PersistentSettings;
 
 import java.util.List;
@@ -42,10 +43,10 @@ public class PropertiesBackup implements Backupable {
   public void exportXml(SonarConfig sonarConfig) {
     List<Property> xmlProperties = Lists.newArrayList();
 
-    for (Map.Entry<String, String> entry : persistentSettings.getProperties().entrySet()) {
+    for (PropertyDto property : persistentSettings.getGlobalProperties()){
       // "sonar.core.id" must never be restored, it is unique for a server and it created once at the 1rst server startup
-      if (!CoreProperties.SERVER_ID.equals(entry.getKey())) {
-        xmlProperties.add(new Property(entry.getKey(), entry.getValue()));
+      if (!CoreProperties.SERVER_ID.equals(property.getKey())) {
+        xmlProperties.add(new Property(property.getKey(), property.getValue()));
       }
     }
     sonarConfig.setProperties(xmlProperties);
index 525c3be4ddf787d7ffd561df7b7775c1491f9ddf..bbcc32a50811a85ec03d048559ab31d7223f8d3b 100644 (file)
@@ -26,6 +26,8 @@ import org.sonar.core.properties.PropertiesDao;
 import org.sonar.core.properties.PropertyDto;
 
 import javax.annotation.Nullable;
+
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -42,7 +44,7 @@ public class PersistentSettings implements ServerComponent {
 
   public void start() {
     Map<String, String> databaseProperties = Maps.newHashMap();
-    for (PropertyDto property : propertiesDao.selectGlobalProperties()) {
+    for (PropertyDto property : getGlobalProperties()) {
       databaseProperties.put(property.getKey(), property.getValue());
     }
     settings.activateDatabaseSettings(databaseProperties);
@@ -83,4 +85,8 @@ public class PersistentSettings implements ServerComponent {
   public Settings getSettings() {
     return settings;
   }
+
+  public List<PropertyDto> getGlobalProperties(){
+    return propertiesDao.selectGlobalProperties();
+  }
 }
index 4880caf32d313cb9ab84b416f228333c78e5b7d7..1fd2a2c1be6481fb355581baea40233664302b9a 100644 (file)
 package org.sonar.server.configuration;
 
 import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Lists;
 import org.hamcrest.collection.IsMapContaining;
 import org.junit.Before;
 import org.junit.Test;
 import org.sonar.api.CoreProperties;
 import org.sonar.api.database.configuration.Property;
+import org.sonar.core.properties.PropertyDto;
 import org.sonar.jpa.test.AbstractDbUnitTestCase;
 import org.sonar.server.platform.PersistentSettings;
 
@@ -49,8 +51,8 @@ public class PropertiesBackupTest extends AbstractDbUnitTestCase {
   }
 
   @Test
-  public void export_properties() {
-    when(persistentSettings.getProperties()).thenReturn(ImmutableMap.of("key1", "value1", "key2", "value2"));
+  public void shouldExportProperties() {
+    when(persistentSettings.getGlobalProperties()).thenReturn(Lists.newArrayList(new PropertyDto().setKey("key1").setValue("value1"), new PropertyDto().setKey("key2").setValue("value2")));
 
     SonarConfig config = new SonarConfig();
     backup.exportXml(config);
@@ -59,17 +61,17 @@ public class PropertiesBackupTest extends AbstractDbUnitTestCase {
   }
 
   @Test
-  public void do_not_export_server_id() {
-    when(persistentSettings.getProperties()).thenReturn(ImmutableMap.of(CoreProperties.SERVER_ID, "111"));
+  public void shouldNotExportServerId() {
+    when(persistentSettings.getGlobalProperties()).thenReturn(Lists.newArrayList(new PropertyDto().setKey(CoreProperties.SERVER_ID).setValue("111"), new PropertyDto().setKey("key").setValue("value")));
 
     SonarConfig config = new SonarConfig();
     backup.exportXml(config);
 
-    assertThat(config.getProperties()).isEmpty();
+    assertThat(config.getProperties()).containsOnly(new Property("key", "value"));
   }
 
   @Test
-  public void import_backup_of_properties() {
+  public void shouldImportBackupOfProperties() {
     SonarConfig config = new SonarConfig();
     config.setProperties(Arrays.asList(new Property("key1", "value1")));
 
@@ -79,7 +81,7 @@ public class PropertiesBackupTest extends AbstractDbUnitTestCase {
   }
 
   @Test
-  public void do_not_import_server_id() {
+  public void shouldNotImportServerId() {
     // initial server id
     when(persistentSettings.getString(CoreProperties.SERVER_ID)).thenReturn("111");