]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-1352 alert property "period" should not be mandatory in the different xml exports
authorJulien Lancelot <julien.lancelot@gmail.com>
Thu, 29 Nov 2012 13:34:30 +0000 (14:34 +0100)
committerJulien Lancelot <julien.lancelot@gmail.com>
Thu, 29 Nov 2012 13:46:01 +0000 (14:46 +0100)
sonar-plugin-api/src/main/java/org/sonar/api/profiles/XMLProfileSerializer.java
sonar-plugin-api/src/test/java/org/sonar/api/profiles/XMLProfileSerializerTest.java
sonar-plugin-api/src/test/resources/org/sonar/api/profiles/XMLProfileParserTest/importProfileWithAlerts.xml
sonar-plugin-api/src/test/resources/org/sonar/api/profiles/XMLProfileSerializerTest/exportAlerts.xml
sonar-server/src/main/java/org/sonar/server/configuration/ProfilesBackup.java
sonar-server/src/test/resources/org/sonar/server/configuration/BackupTest/backup-restore-valid.xml
sonar-server/src/test/resources/org/sonar/server/configuration/BackupTest/backup-valid.xml

index 5e93ca45c0dc583c452e18a60cc7a485b1ece748..e8e59e513b1fce8dd670d519a30d99157451d4ed 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.api.profiles;
 
-import org.apache.commons.lang.ObjectUtils;
 import org.apache.commons.lang.StringEscapeUtils;
 import org.apache.commons.lang.StringUtils;
 import org.sonar.api.ServerComponent;
@@ -116,13 +115,19 @@ public final class XMLProfileSerializer implements ServerComponent {
   private void appendAlert(Alert alert, Writer writer) throws IOException {
     writer.append("<alert><metric>");
     StringEscapeUtils.escapeXml(writer, alert.getMetric().getKey());
-    writer.append("</metric><period>");
-    StringEscapeUtils.escapeXml(writer, ObjectUtils.toString(alert.getPeriod()));
-    writer.append("</period><operator>");
+    writer.append("</metric>");
+    if (alert.getPeriod() !=null) {
+      writer.append("<period>");
+      StringEscapeUtils.escapeXml(writer, Integer.toString(alert.getPeriod()));
+      writer.append("</period>");
+    }
+    writer.append("<operator>");
     StringEscapeUtils.escapeXml(writer, alert.getOperator());
-    writer.append("</operator><warning>");
+    writer.append("</operator>");
+    writer.append("<warning>");
     StringEscapeUtils.escapeXml(writer, alert.getValueWarning());
-    writer.append("</warning><error>");
+    writer.append("</warning>");
+    writer.append("<error>");
     StringEscapeUtils.escapeXml(writer, alert.getValueError());
     writer.append("</error></alert>");
   }
index f54bde9a043ce967b8bbac1710e039086d3b83cc..92c5f9c8659e8a4a15b6cecbc83d909732f12240 100644 (file)
@@ -34,6 +34,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.StringWriter;
 import java.io.Writer;
+import java.util.List;
 
 import static org.junit.Assert.assertTrue;
 
@@ -80,8 +81,11 @@ public class XMLProfileSerializerTest {
   public void exportAlerts() throws Exception {
     Writer writer = new StringWriter();
     RulesProfile profile = RulesProfile.create("sonar way", "java");
-    Alert alert = new Alert(profile, new Metric("coverage"), Alert.OPERATOR_SMALLER, "60", "80", 1);
-    profile.getAlerts().add(alert);
+    List<Alert> alerts = profile.getAlerts();
+    Alert alert1 = new Alert(profile, new Metric("coverage"), Alert.OPERATOR_SMALLER, "60", "80");
+    alerts.add(alert1);
+    Alert alert2 = new Alert(profile, new Metric("complexity"), Alert.OPERATOR_GREATER, "12", "10", 1);
+    alerts.add(alert2);
     new XMLProfileSerializer().write(profile, writer);
 
     assertSimilarXml("exportAlerts.xml", writer.toString());
index 3a34a304562b0c90aa84c61f137e7c4270d3ee63..5b5f42632cbfa7d09576bf620d480d2610fd3a52 100644 (file)
@@ -13,6 +13,7 @@
   <alerts>
     <alert>
       <metric>complexity</metric>
+      <period>1</period>
       <operator>&gt;</operator>
       <error>12</error>
       <warning>10</warning>
index 1ae4e6eda4aa71dc9d24d785bf5783f6c52cda3a..bdf2f1b904cb0aaea75aef425ec450f1f86b4cdf 100644 (file)
@@ -6,10 +6,16 @@
   <alerts>
     <alert>
       <metric>coverage</metric>
-      <period>1</period>
       <operator>&lt;</operator>
       <error>60</error>
       <warning>80</warning>
     </alert>
+    <alert>
+      <metric>complexity</metric>
+      <period>1</period>
+      <operator>&gt;</operator>
+      <error>12</error>
+      <warning>10</warning>
+    </alert>
   </alerts>
 </profile>
\ No newline at end of file
index 38ac74933585155a7a77d32db590724740134900..fbfac833dec0e5d51450f526f44ffcd05d92d31d 100644 (file)
@@ -26,7 +26,6 @@ import com.thoughtworks.xstream.converters.UnmarshallingContext;
 import com.thoughtworks.xstream.io.HierarchicalStreamReader;
 import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
 import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang.ObjectUtils;
 import org.codehaus.plexus.util.StringUtils;
 import org.slf4j.LoggerFactory;
 import org.sonar.api.database.DatabaseSession;
@@ -172,7 +171,9 @@ public class ProfilesBackup implements Backupable {
         writeNode(writer, "operator", alert.getOperator());
         writeNode(writer, "value-error", alert.getValueError());
         writeNode(writer, "value-warning", alert.getValueWarning());
-        writeNode(writer, "period", ObjectUtils.toString(alert.getPeriod()));
+        if (alert.getPeriod() != null) {
+          writeNode(writer, "period", Integer.toString(alert.getPeriod()));
+        }
         writeNode(writer, "metric-key", alert.getMetric().getKey());
       }
 
index ed5f21bb7686666a96bb4ca9644a0c4e3cb87f7b..c425caf0fc9cbeea602a7959e93b65cefff1fa3b 100644 (file)
@@ -55,7 +55,6 @@
           <operator><![CDATA[>]]></operator>
           <value-error><![CDATA[testError]]></value-error>
           <value-warning><![CDATA[testWarn]]></value-warning>
-          <period><![CDATA[]]></period>
           <metric-key><![CDATA[test key]]></metric-key>
         </alert>
         <alert>
index 8af076dc208a707868a73d61f17f394c1195928f..db8bbdf9a926f9e74922d23007b58df41a1f78cd 100644 (file)
@@ -57,7 +57,6 @@
           <operator><![CDATA[>]]></operator>
           <value-error><![CDATA[testError]]></value-error>
           <value-warning><![CDATA[testWarn]]></value-warning>
-          <period><![CDATA[]]></period>
           <metric-key><![CDATA[test key]]></metric-key>
         </alert>
         <alert>