From 3fadbde9fc4c1b6000f8e592b07cc3bbc3d8319e Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Vilain Date: Tue, 23 Apr 2013 16:37:23 +0200 Subject: [PATCH] SONAR-4258 Added ampersand escaping in sonar-colorizer --- .../org/sonar/colorizer/HtmlCodeBuilder.java | 5 +++- .../src/main/resources/sonar-colorizer.css | 8 +++-- .../sonar/colorizer/CodeColorizerTest.java | 29 ++++++++++++++----- .../src/main/webapp/javascripts/resource.js | 2 +- 4 files changed, 33 insertions(+), 11 deletions(-) diff --git a/sonar-colorizer/src/main/java/org/sonar/colorizer/HtmlCodeBuilder.java b/sonar-colorizer/src/main/java/org/sonar/colorizer/HtmlCodeBuilder.java index 8b536378a34..6c99ca65fd4 100644 --- a/sonar-colorizer/src/main/java/org/sonar/colorizer/HtmlCodeBuilder.java +++ b/sonar-colorizer/src/main/java/org/sonar/colorizer/HtmlCodeBuilder.java @@ -39,7 +39,10 @@ public class HtmlCodeBuilder implements Appendable { colorizedCode.append("<"); } else if (c == '>') { colorizedCode.append(">"); - } else { + } else if (c == '&') { + colorizedCode.append("&"); + } + else { colorizedCode.append(c); } return this; diff --git a/sonar-colorizer/src/main/resources/sonar-colorizer.css b/sonar-colorizer/src/main/resources/sonar-colorizer.css index 38f4f67afc5..33813f45051 100644 --- a/sonar-colorizer/src/main/resources/sonar-colorizer.css +++ b/sonar-colorizer/src/main/resources/sonar-colorizer.css @@ -65,11 +65,15 @@ } .highlightable { - text-decoration: underline; - color: #0000AA; + /*text-decoration: underline;*/ + /*color: #0000AA;*/ cursor: hand; cursor: pointer; } +.highlightable:hover { + background-color: #ff8c00; +} + .highlighted { background-color: yellow; } diff --git a/sonar-colorizer/src/test/java/org/sonar/colorizer/CodeColorizerTest.java b/sonar-colorizer/src/test/java/org/sonar/colorizer/CodeColorizerTest.java index ae591b617d1..12a87f1887c 100644 --- a/sonar-colorizer/src/test/java/org/sonar/colorizer/CodeColorizerTest.java +++ b/sonar-colorizer/src/test/java/org/sonar/colorizer/CodeColorizerTest.java @@ -19,13 +19,6 @@ */ package org.sonar.colorizer; -import static org.hamcrest.Matchers.containsString; -import static org.hamcrest.core.Is.is; -import static org.hamcrest.core.IsNot.not; -import static org.hamcrest.number.OrderingComparisons.greaterThan; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertThat; - import org.apache.commons.io.IOUtils; import org.junit.Test; @@ -40,6 +33,13 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.Executors; import java.util.concurrent.Future; +import static org.hamcrest.Matchers.containsString; +import static org.hamcrest.core.Is.is; +import static org.hamcrest.core.IsNot.not; +import static org.hamcrest.number.OrderingComparisons.greaterThan; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThat; + public class CodeColorizerTest { @Test @@ -122,6 +122,21 @@ public class CodeColorizerTest { } } + @Test + public void shouldEscapeSpecialCharacters() throws Exception { + + Reader java = readFile("/org/sonar/colorizer/samples/SampleWithComments.java"); + + String html = CodeColorizer.javaToHtml(java, HtmlOptions.DEFAULT); + + assertHtml(html); + assertContains(html, "
  /*
", + "
   * This method does <b>something</b>
", + "
   *
", + "
   * &lt;p&gt;description&lt;/p&gt;
", + "
   */
"); + } + /** * @return Reader for specified file with EOL normalized to specified one. */ diff --git a/sonar-server/src/main/webapp/javascripts/resource.js b/sonar-server/src/main/webapp/javascripts/resource.js index 8c1dcc8179b..97318979a8d 100644 --- a/sonar-server/src/main/webapp/javascripts/resource.js +++ b/sonar-server/src/main/webapp/javascripts/resource.js @@ -206,5 +206,5 @@ function collapseTests(index, elt){ function highlight_usages(event){ var selectedClass = $j(this).attr("class").split(" ")[0]; $j("#" + event.data.id + " span.highlighted").removeClass("highlighted"); - $j("#" + event.data.id + " span." + selectedClass).toggleClass("highlighted"); + $j("#" + event.data.id + " span." + selectedClass).addClass("highlighted"); } \ No newline at end of file -- 2.39.5