]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-6370 Remove guava from dependencies of sonar-colorizer
authorSimon Brandhof <simon.brandhof@sonarsource.com>
Mon, 25 May 2015 19:36:47 +0000 (21:36 +0200)
committerSimon Brandhof <simon.brandhof@sonarsource.com>
Thu, 28 May 2015 07:28:50 +0000 (09:28 +0200)
sonar-batch/src/main/java/org/sonar/batch/source/CodeColorizerSensor.java
sonar-batch/src/main/java/org/sonar/batch/source/CodeColorizers.java
sonar-colorizer/pom.xml
sonar-colorizer/src/main/java/org/sonar/colorizer/CodeColorizer.java
sonar-colorizer/src/main/java/org/sonar/colorizer/GroovyKeywords.java
sonar-colorizer/src/main/java/org/sonar/colorizer/HtmlDecorator.java
sonar-colorizer/src/main/java/org/sonar/colorizer/JavaKeywords.java
sonar-colorizer/src/main/java/org/sonar/colorizer/JavaTokenizers.java
sonar-colorizer/src/test/java/org/sonar/colorizer/CodeColorizerTest.java
sonar-colorizer/src/test/java/org/sonar/colorizer/HtmlDecoratorTest.java
sonar-colorizer/src/test/java/org/sonar/colorizer/HtmlRendererTest.java

index 0d19be3cdeac137a0c25383bac21785b8119f2a3..95d553a7ff5c51957ed46e73aba835f79b8320eb 100644 (file)
@@ -28,11 +28,7 @@ import org.sonar.api.batch.sensor.SensorDescriptor;
 import org.sonar.batch.index.BatchComponentCache;
 import org.sonar.batch.protocol.output.BatchReportReader;
 import org.sonar.batch.report.ReportPublisher;
-import org.sonar.colorizer.CodeColorizer;
 
-/**
- * Execute deprecated {@link CodeColorizer} if necessary.
- */
 @Phase(name = Phase.Name.POST)
 public final class CodeColorizerSensor implements Sensor {
 
index ca29460d8c87ec246260f9a0570cde6407906a8b..f607efb8b9ce7f3432c740ac8d920d4f77e68e7f 100644 (file)
 package org.sonar.batch.source;
 
 import com.google.common.collect.Lists;
-import org.apache.commons.io.input.BOMInputStream;
-import org.apache.commons.lang.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.sonar.api.batch.BatchSide;
-import org.sonar.api.batch.sensor.highlighting.NewHighlighting;
-import org.sonar.api.web.CodeColorizerFormat;
-import org.sonar.colorizer.CodeColorizer;
-import org.sonar.colorizer.Tokenizer;
-
-import javax.annotation.CheckForNull;
-
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileInputStream;
@@ -41,6 +29,16 @@ import java.nio.charset.Charset;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import javax.annotation.CheckForNull;
+import org.apache.commons.io.input.BOMInputStream;
+import org.apache.commons.lang.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.sonar.api.batch.BatchSide;
+import org.sonar.api.batch.sensor.highlighting.NewHighlighting;
+import org.sonar.api.web.CodeColorizerFormat;
+import org.sonar.colorizer.JavaTokenizers;
+import org.sonar.colorizer.Tokenizer;
 
 /**
  * Central point for sonar-colorizer extensions
@@ -77,7 +75,7 @@ public class CodeColorizers {
       // TODO can be dropped when Java plugin embed its own CodeColorizerFormat of (better) provides highlighting for tests
       // See SONARJAVA-830
       if ("java".equals(language)) {
-        tokenizers = CodeColorizer.Format.JAVA.getTokenizers();
+        tokenizers = JavaTokenizers.forHtml();
       } else {
         return;
       }
index 19ff87b150359e08869fe79566a7e094f20b48d1..9d590ec2d77208ec13f0a6488409444f6f6d305a 100644 (file)
   <description>Code syntax highlighter</description>
 
   <dependencies>
-    <dependency>
-      <groupId>com.google.guava</groupId>
-      <artifactId>guava</artifactId>
-    </dependency>
     <dependency>
       <groupId>org.codehaus.sonar</groupId>
       <artifactId>sonar-channel</artifactId>
+      <exclusions>
+        <exclusion>
+          <groupId>commons-io</groupId>
+          <artifactId>commons-io</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>com.google.code.findbugs</groupId>
index 91982b62c7195f4a8a60b7a6b430f0ef9d7d7dc0..f319d6669c468936e056c6baae2bc32e4551b663 100644 (file)
@@ -40,10 +40,6 @@ public class CodeColorizer {
     this.tokenizers = format.getTokenizers();
   }
 
-  public String toHtml(Reader code) {
-    return toHtml(code, null);
-  }
-
   public String toHtml(Reader code, @Nullable HtmlOptions options) {
     HtmlOptions opts = options == null ? HtmlOptions.DEFAULT : options;
     return new HtmlRenderer(opts).render(code, tokenizers);
@@ -57,10 +53,6 @@ public class CodeColorizer {
     return new CodeColorizer(Format.GROOVY).toHtml(code, options);
   }
 
-  public static String getCss() {
-    return HtmlDecorator.getCss();
-  }
-
   public enum Format {
     JAVA(JavaTokenizers.forHtml()), GROOVY(GroovyTokenizers.forHtml());
 
index 8728faadd92e18056665976e4bd9f929b507e1de..e7c3427068301b9455100e58dc856db11c3f710d 100644 (file)
@@ -19,8 +19,8 @@
  */
 package org.sonar.colorizer;
 
-import com.google.common.collect.ImmutableSet;
-
+import java.util.Arrays;
+import java.util.HashSet;
 import java.util.Set;
 
 /**
@@ -28,10 +28,14 @@ import java.util.Set;
  */
 @Deprecated
 public final class GroovyKeywords {
-  private static final Set<String> KEYWORDS = ImmutableSet.of(
-    "as", "assert", "break", "case", "catch", "class", "continue", "def",
-    "default", "do", "else", "extends", "finally", "for", "if", "in", "implements", "import", "instanceof", "interface", "new", "package",
-    "property", "return", "switch", "throw", "throws", "try", "while");
+
+  private static final Set<String> KEYWORDS = new HashSet<>();
+
+  static {
+    KEYWORDS.addAll(Arrays.asList("as", "assert", "break", "case", "catch", "class", "continue", "def",
+      "default", "do", "else", "extends", "finally", "for", "if", "in", "implements", "import", "instanceof", "interface", "new", "package",
+      "property", "return", "switch", "throw", "throws", "try", "while"));
+  }
 
   private GroovyKeywords() {
   }
index 48b65acaaf9ee43fca6d3ddd856bcc253f4e4af2..ed1ee38eb3c155a8564e76f4bfd19898d9b651eb 100644 (file)
  */
 package org.sonar.colorizer;
 
-import com.google.common.io.ByteStreams;
-import com.google.common.io.Closeables;
 import org.sonar.channel.CodeReader;
 
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.charset.StandardCharsets;
-
 /**
  * @deprecated since 4.5.2 replace by highlighting mechanism
  */
 @Deprecated
 public class HtmlDecorator extends Tokenizer {
 
-  private static final String CSS_PATH = "/sonar-colorizer.css";
-
   private HtmlOptions options;
   private int lineId;
 
@@ -50,9 +42,7 @@ public class HtmlDecorator extends Tokenizer {
     StringBuilder sb = new StringBuilder();
     if (options.isGenerateHtmlHeader()) {
       sb.append("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" "
-        + "\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"><html><head><style type=\"text/css\">");
-      sb.append(getCss());
-      sb.append("</style></head><body>");
+        + "\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"><html><body>");
     }
     sb.append("<table class=\"code\" id=\"");
     if (options.getTableId() != null) {
@@ -94,18 +84,4 @@ public class HtmlDecorator extends Tokenizer {
     }
     return false;
   }
-
-  public static String getCss() {
-    InputStream input = null;
-    try {
-      input = HtmlRenderer.class.getResourceAsStream(CSS_PATH);
-      return new String(ByteStreams.toByteArray(input), StandardCharsets.UTF_8);
-
-    } catch (IOException e) {
-      throw new SynhtaxHighlightingException("SonarQube Colorizer CSS file not found: " + CSS_PATH, e);
-
-    } finally {
-      Closeables.closeQuietly(input);
-    }
-  }
 }
index 164945ad64c7b361014265010dca8c2bc6037a26..e927e585f0cd14ebc7171f813c2f0c6267efbc94 100644 (file)
@@ -19,8 +19,9 @@
  */
 package org.sonar.colorizer;
 
-import com.google.common.collect.ImmutableSet;
-
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
 import java.util.Set;
 
 /**
@@ -29,14 +30,14 @@ import java.util.Set;
 @Deprecated
 public final class JavaKeywords {
 
-  private static final Set<String> KEYWORDS = ImmutableSet.of(
+  private static final Set<String> KEYWORDS = Collections.unmodifiableSet(new HashSet<>(Arrays.asList(
     "abstract", "assert", "boolean", "break", "byte", "case", "catch", "char",
     "class", "const", "continue", "default",
     "do", "double", "else", "enum", "extends", "false", "final", "finally", "float", "for",
     "goto", "if", "implements", "import", "instanceof",
     "int", "interface", "long", "native", "new", "null", "package", "private",
     "protected", "public", "return", "short", "static", "strictfp",
-    "super", "switch", "synchronized", "this", "throw", "throws", "transient", "true", "try", "void", "volatile", "while");
+    "super", "switch", "synchronized", "this", "throw", "throws", "transient", "true", "try", "void", "volatile", "while")));
 
   private JavaKeywords() {
   }
index f040d376594ab31d03e1121331a719537dddd02f..05390a6cbb81c8429bb5ca9e5dca1ced62b11610 100644 (file)
@@ -29,17 +29,20 @@ import java.util.List;
 @Deprecated
 public final class JavaTokenizers {
 
+  private static final List<Tokenizer> TOKENIZERS = Collections.unmodifiableList(Arrays.asList(
+    new JavaAnnotationTokenizer("<span class=\"a\">", "</span>"),
+    new LiteralTokenizer("<span class=\"s\">", "</span>"),
+    new CDocTokenizer("<span class=\"cd\">", "</span>"),
+    new JavadocTokenizer("<span class=\"j\">", "</span>"),
+    new CppDocTokenizer("<span class=\"cppd\">", "</span>"),
+    new JavaConstantTokenizer("<span class=\"c\">", "</span>"),
+    new KeywordsTokenizer("<span class=\"k\">", "</span>", JavaKeywords.get())));
+
   private JavaTokenizers() {
+    // only static stuff
   }
 
   public static List<Tokenizer> forHtml() {
-    return Collections.unmodifiableList(Arrays.asList(
-      new JavaAnnotationTokenizer("<span class=\"a\">", "</span>"),
-      new LiteralTokenizer("<span class=\"s\">", "</span>"),
-      new CDocTokenizer("<span class=\"cd\">", "</span>"),
-      new JavadocTokenizer("<span class=\"j\">", "</span>"),
-      new CppDocTokenizer("<span class=\"cppd\">", "</span>"),
-      new JavaConstantTokenizer("<span class=\"c\">", "</span>"),
-      new KeywordsTokenizer("<span class=\"k\">", "</span>", JavaKeywords.get())));
+    return TOKENIZERS;
   }
 }
index d3a5c4cb217afa6c09f7ea1b1b6696816339a3ec..5b53df03f79f9a01c3cd8a407a150b4987fa0316 100644 (file)
@@ -78,12 +78,6 @@ public class CodeColorizerTest {
     assertContains(html, "<pre><span class=\"k\">class</span> Greet {</pre>");
   }
 
-  @Test
-  public void getCss() {
-    assertThat(CodeColorizer.getCss().length()).isGreaterThan(100);
-    assertThat(CodeColorizer.getCss()).contains(".code");
-  }
-
   @Test
   public void mustBeThreadsafe() throws InterruptedException, ExecutionException, IOException {
     final int taskCount = 50;
@@ -151,7 +145,7 @@ public class CodeColorizerTest {
   }
 
   private void assertHtml(String html) {
-    assertContains(html, "<style", "<table class=\"code\"", "</html>");
+    assertContains(html, "<table class=\"code\"", "</html>");
   }
 
   private void assertContains(String html, String... strings) {
index ff69b9b1e05f6a590959282c8bc37cc7304a5211..49fc1d6711b9dba91e581750ba6720375ad9b0e3 100644 (file)
@@ -30,7 +30,7 @@ public class HtmlDecoratorTest {
   public void beginOfFileTag() {
     HtmlDecorator decorator = new HtmlDecorator(HtmlOptions.DEFAULT);
     String tag = decorator.getTagBeginOfFile();
-    assertContains(tag, "<html", "<style", "<table");
+    assertContains(tag, "<html", "<table");
   }
 
   @Test
@@ -50,7 +50,7 @@ public class HtmlDecoratorTest {
 
     String tag = decorator.getTagBeginOfFile();
 
-    assertNotContains(tag, "<html", "<style");
+    assertNotContains(tag, "<html", "<body");
     assertContains(tag, "<table");
   }
 
@@ -94,12 +94,6 @@ public class HtmlDecoratorTest {
     );
   }
 
-  @Test
-  public void getCss() {
-    assertThat(HtmlDecorator.getCss().length()).isGreaterThan(100);
-    assertThat(HtmlDecorator.getCss()).contains(".code");
-  }
-
   public void assertContains(String html, String... strings) {
     for (String string : strings) {
       assertThat(html).contains(string);
index f4a897952c1a2a02d4d8a86f1a67bb5e23034731..90e0c32cfd9f337704e0671b655f64250af00e3c 100644 (file)
@@ -59,7 +59,6 @@ public class HtmlRendererTest {
     String html = new HtmlRenderer().render(new FileReader(java), Arrays.asList(javaKeywordTokenizer));
 
     assertThat(html).contains("<html>");
-    assertThat(html).contains("<style");
     assertThat(html).contains("<table class=\"code\"");
     assertThat(html).contains("public");
     assertThat(html).contains("class");