aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-server/src/main/java
diff options
context:
space:
mode:
authorGodin <mandrikov@gmail.com>2010-12-07 15:13:02 +0000
committerGodin <mandrikov@gmail.com>2010-12-07 15:13:02 +0000
commit8e9d7ff89a66bf987d7fcb7c298a53a992625375 (patch)
tree6e810a67b7d5ad7a4e9009cfbc4bc5502502bccb /sonar-server/src/main/java
parent2f65b14c5b45bf513cfb0a56d1087c4a49299744 (diff)
downloadsonarqube-8e9d7ff89a66bf987d7fcb7c298a53a992625375.tar.gz
sonarqube-8e9d7ff89a66bf987d7fcb7c298a53a992625375.zip
SONAR-1605: Correct backup should be created if value of property already contains CDATA section
Diffstat (limited to 'sonar-server/src/main/java')
-rw-r--r--sonar-server/src/main/java/org/sonar/server/configuration/Backup.java14
1 files changed, 11 insertions, 3 deletions
diff --git a/sonar-server/src/main/java/org/sonar/server/configuration/Backup.java b/sonar-server/src/main/java/org/sonar/server/configuration/Backup.java
index 1e88d02b3db..a8ed347761e 100644
--- a/sonar-server/src/main/java/org/sonar/server/configuration/Backup.java
+++ b/sonar-server/src/main/java/org/sonar/server/configuration/Backup.java
@@ -27,6 +27,7 @@ import com.thoughtworks.xstream.io.xml.PrettyPrintWriter;
import com.thoughtworks.xstream.io.xml.XppDriver;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.CharEncoding;
+import org.apache.commons.lang.StringUtils;
import org.sonar.api.database.DatabaseSession;
import org.sonar.jpa.entity.SchemaMigration;
@@ -147,17 +148,24 @@ public class Backup {
@Override
protected void writeText(QuickWriter writer, String text) {
writer.write("<![CDATA[");
+ /*
+ * See http://jira.codehaus.org/browse/SONAR-1605
+ * According to XML specification ( http://www.w3.org/TR/REC-xml/#sec-cdata-sect )
+ * CData section may contain everything except of sequence ']]>'
+ * so we will split all occurrences of this sequence into two CDATA
+ * first one would contain ']]' and second '>'
+ */
+ text = StringUtils.replace(text, "]]>", "]]]]><![CDATA[>");
writer.write(text);
writer.write("]]>");
}
};
}
- }
- );
+ });
xStream.processAnnotations(SonarConfig.class);
xStream.addDefaultImplementation(ArrayList.class, Collection.class);
- xStream.registerConverter(new DateConverter(DATE_FORMAT, new String[]{}));
+ xStream.registerConverter(new DateConverter(DATE_FORMAT, new String[] {}));
for (Backupable backupable : backupables) {
backupable.configure(xStream);