diff options
author | Godin <mandrikov@gmail.com> | 2010-12-07 15:13:02 +0000 |
---|---|---|
committer | Godin <mandrikov@gmail.com> | 2010-12-07 15:13:02 +0000 |
commit | 8e9d7ff89a66bf987d7fcb7c298a53a992625375 (patch) | |
tree | 6e810a67b7d5ad7a4e9009cfbc4bc5502502bccb /sonar-server/src/main/java | |
parent | 2f65b14c5b45bf513cfb0a56d1087c4a49299744 (diff) | |
download | sonarqube-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.java | 14 |
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); |