]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-5864 API cleanup
authorJulien HENRY <julien.henry@sonarsource.com>
Mon, 1 Dec 2014 14:36:12 +0000 (15:36 +0100)
committerJulien HENRY <julien.henry@sonarsource.com>
Mon, 1 Dec 2014 14:36:12 +0000 (15:36 +0100)
  * add a proper way to create perspective on InputFile
  * add a proper way to convert InputFile to resource
  * deprecate colorizer

36 files changed:
sonar-batch/src/main/java/org/sonar/batch/DefaultSensorContext.java
sonar-colorizer/src/main/java/org/sonar/colorizer/CDocTokenizer.java
sonar-colorizer/src/main/java/org/sonar/colorizer/CaseInsensitiveKeywordsTokenizer.java
sonar-colorizer/src/main/java/org/sonar/colorizer/CodeColorizer.java
sonar-colorizer/src/main/java/org/sonar/colorizer/CppDocTokenizer.java
sonar-colorizer/src/main/java/org/sonar/colorizer/GroovyKeywords.java
sonar-colorizer/src/main/java/org/sonar/colorizer/GroovyTokenizers.java
sonar-colorizer/src/main/java/org/sonar/colorizer/HtmlCodeBuilder.java
sonar-colorizer/src/main/java/org/sonar/colorizer/HtmlDecorator.java
sonar-colorizer/src/main/java/org/sonar/colorizer/HtmlOptions.java
sonar-colorizer/src/main/java/org/sonar/colorizer/HtmlRenderer.java
sonar-colorizer/src/main/java/org/sonar/colorizer/InlineDocTokenizer.java
sonar-colorizer/src/main/java/org/sonar/colorizer/JavaAnnotationTokenizer.java
sonar-colorizer/src/main/java/org/sonar/colorizer/JavaConstantTokenizer.java
sonar-colorizer/src/main/java/org/sonar/colorizer/JavaKeywords.java
sonar-colorizer/src/main/java/org/sonar/colorizer/JavaTokenizers.java
sonar-colorizer/src/main/java/org/sonar/colorizer/JavadocTokenizer.java
sonar-colorizer/src/main/java/org/sonar/colorizer/KeywordsTokenizer.java
sonar-colorizer/src/main/java/org/sonar/colorizer/LiteralTokenizer.java
sonar-colorizer/src/main/java/org/sonar/colorizer/MultilinesDocTokenizer.java
sonar-colorizer/src/main/java/org/sonar/colorizer/NotThreadSafeTokenizer.java
sonar-colorizer/src/main/java/org/sonar/colorizer/RegexpTokenizer.java
sonar-colorizer/src/main/java/org/sonar/colorizer/Renderer.java
sonar-colorizer/src/main/java/org/sonar/colorizer/StringTokenizer.java
sonar-colorizer/src/main/java/org/sonar/colorizer/SynhtaxHighlightingException.java
sonar-colorizer/src/main/java/org/sonar/colorizer/Tokenizer.java
sonar-core/src/main/java/org/sonar/core/component/ScanPerspectives.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/Decorator.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/PostJob.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/SensorContext.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/SonarIndex.java
sonar-plugin-api/src/main/java/org/sonar/api/component/ResourcePerspectives.java
sonar-plugin-api/src/main/java/org/sonar/api/measures/CoreMetrics.java
sonar-plugin-api/src/main/java/org/sonar/api/source/Highlightable.java
sonar-plugin-api/src/main/java/org/sonar/api/source/Symbolizable.java
sonar-plugin-api/src/main/java/org/sonar/api/web/CodeColorizerFormat.java

index 089b2a3c58f5e9bad745573a60981e893572eaa2..56c33623f393eea1a4497048c6b2217686167920 100644 (file)
@@ -25,11 +25,14 @@ import org.slf4j.LoggerFactory;
 import org.sonar.api.batch.Event;
 import org.sonar.api.batch.SensorContext;
 import org.sonar.api.batch.SonarIndex;
+import org.sonar.api.batch.fs.InputDir;
 import org.sonar.api.batch.fs.InputFile;
+import org.sonar.api.batch.fs.InputPath;
 import org.sonar.api.design.Dependency;
 import org.sonar.api.measures.Measure;
 import org.sonar.api.measures.MeasuresFilter;
 import org.sonar.api.measures.Metric;
+import org.sonar.api.resources.Directory;
 import org.sonar.api.resources.File;
 import org.sonar.api.resources.Project;
 import org.sonar.api.resources.ProjectLink;
@@ -245,15 +248,24 @@ public class DefaultSensorContext implements SensorContext {
 
   @Override
   public Measure saveMeasure(InputFile inputFile, Metric metric, Double value) {
-    return saveMeasure(fromInputFile(inputFile), metric, value);
+    return saveMeasure(getResource(inputFile), metric, value);
   }
 
   @Override
   public Measure saveMeasure(InputFile inputFile, Measure measure) {
-    return saveMeasure(fromInputFile(inputFile), measure);
+    return saveMeasure(getResource(inputFile), measure);
   }
 
-  private Resource fromInputFile(InputFile inputFile) {
-    return File.create(inputFile.relativePath());
+  @Override
+  public Resource getResource(InputPath inputPath) {
+    Resource r;
+    if (inputPath instanceof InputDir) {
+      r = Directory.create(((InputDir) inputPath).relativePath());
+    } else if (inputPath instanceof InputFile) {
+      r = File.create(((InputFile) inputPath).relativePath());
+    } else {
+      throw new IllegalArgumentException("Unknow input path type: " + inputPath);
+    }
+    return getResource(r);
   }
 }
index 51d47a1353244ddd71e4c0477272720a123600ce..3b43e59aefa2b758f9679995bf16cbac7cc2505d 100644 (file)
  */
 package org.sonar.colorizer;
 
+/**
+ * @deprecated since 4.5.2 replace by highlighting mechanism
+ */
+@Deprecated
 public class CDocTokenizer extends InlineDocTokenizer {
 
   public CDocTokenizer(String tagBefore, String tagAfter) {
index 1fe9930e2e3534b309fa8dcd2d12d590ce2f90a4..02d4e69f35c4fc7456cd2409be5f4aa091a5bb1c 100644 (file)
@@ -21,6 +21,10 @@ package org.sonar.colorizer;
 
 import java.util.Set;
 
+/**
+ * @deprecated since 4.5.2 replace by highlighting mechanism
+ */
+@Deprecated
 public class CaseInsensitiveKeywordsTokenizer extends KeywordsTokenizer {
 
   public CaseInsensitiveKeywordsTokenizer(String tagBefore, String tagAfter, Set<String> keywords) {
index bf1fe61df7464b823ee914db595e3137b7b46b05..f4a0523b7f1b3b6b6ab3b96030d1dd8210300cbd 100644 (file)
@@ -22,6 +22,10 @@ package org.sonar.colorizer;
 import java.io.Reader;
 import java.util.List;
 
+/**
+ * @deprecated since 4.5.2 replace by highlighting mechanism
+ */
+@Deprecated
 public class CodeColorizer {
 
   private List<Tokenizer> tokenizers = null;
index 282e54cd2f673774ba8d3acdbaff0ae087cb596d..55a57e24c9d4044a9ef6e10df81bbb5213acbe2c 100644 (file)
  */
 package org.sonar.colorizer;
 
+/**
+ * @deprecated since 4.5.2 replace by highlighting mechanism
+ */
+@Deprecated
 public class CppDocTokenizer extends MultilinesDocTokenizer {
 
   public CppDocTokenizer(String tagBefore, String tagAfter) {
index 2b4e0354794f6339d5788d4f80fce22aba786e79..8728faadd92e18056665976e4bd9f929b507e1de 100644 (file)
@@ -23,11 +23,15 @@ import com.google.common.collect.ImmutableSet;
 
 import java.util.Set;
 
+/**
+ * @deprecated since 4.5.2 replace by highlighting mechanism
+ */
+@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");
+    "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 d66c91b705c8da80d06240a664c5dcbfc82e6306..5c18a9f7da7a9362cfb88d9e55a2c3de1ace99e6 100644 (file)
@@ -23,6 +23,10 @@ import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
+/**
+ * @deprecated since 4.5.2 replace by highlighting mechanism
+ */
+@Deprecated
 public final class GroovyTokenizers {
 
   private static final String SPAN_END = "</span>";
@@ -32,8 +36,8 @@ public final class GroovyTokenizers {
 
   public static List<Tokenizer> forHtml() {
     return Collections.unmodifiableList(Arrays.asList(new JavaAnnotationTokenizer("<span class=\"a\">", SPAN_END), new LiteralTokenizer(
-        "<span class=\"s\">", SPAN_END), new CDocTokenizer("<span class=\"cd\">", SPAN_END), new CppDocTokenizer("<span class=\"cppd\">",
-        SPAN_END), new JavadocTokenizer("<span class=\"j\">", SPAN_END), new JavaConstantTokenizer("<span class=\"c\">", SPAN_END),
-        new KeywordsTokenizer("<span class=\"k\">", SPAN_END, GroovyKeywords.get())));
+      "<span class=\"s\">", SPAN_END), new CDocTokenizer("<span class=\"cd\">", SPAN_END), new CppDocTokenizer("<span class=\"cppd\">",
+      SPAN_END), new JavadocTokenizer("<span class=\"j\">", SPAN_END), new JavaConstantTokenizer("<span class=\"c\">", SPAN_END),
+      new KeywordsTokenizer("<span class=\"k\">", SPAN_END, GroovyKeywords.get())));
   }
 }
index e6755e7b7e779170c14b7b2ee1106300262c2b8d..8d7057103dba3a38859dab13a75e7b0125ceefce 100644 (file)
@@ -22,6 +22,10 @@ package org.sonar.colorizer;
 import java.util.HashMap;
 import java.util.Map;
 
+/**
+ * @deprecated since 4.5.2 replace by highlighting mechanism
+ */
+@Deprecated
 public class HtmlCodeBuilder implements Appendable {
 
   private StringBuilder colorizedCode = new StringBuilder();
index fdbd02a8180e1d49504102cea7d26df1d5f9902c..e55dc91718eea49ae9cf68633fa619967c843508 100644 (file)
@@ -26,6 +26,10 @@ import org.sonar.channel.CodeReader;
 import java.io.IOException;
 import java.io.InputStream;
 
+/**
+ * @deprecated since 4.5.2 replace by highlighting mechanism
+ */
+@Deprecated
 public class HtmlDecorator extends Tokenizer {
 
   private static final String CSS_PATH = "/sonar-colorizer.css";
index d91d89bf5e7c06e13bbb8bfd5fc7803acec8a31e..38c6b180f07c5d30be3c19467fb175955457211e 100644 (file)
  */
 package org.sonar.colorizer;
 
+/**
+ * @deprecated since 4.5.2 replace by highlighting mechanism
+ */
+@Deprecated
 public class HtmlOptions {
   public static final HtmlOptions DEFAULT = new HtmlOptions(true, null, true);
   public static final OnlySyntaxHtmlOptions ONLY_SYNTAX = new OnlySyntaxHtmlOptions();
index c90cdcff9736b3e63ede63bfcee0e7380c060c79..a95a43489916005b4fe20eec46834813a984ce4b 100644 (file)
  */
 package org.sonar.colorizer;
 
+import org.sonar.channel.Channel;
+import org.sonar.channel.CodeReader;
+
 import java.io.Reader;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.sonar.channel.Channel;
-import org.sonar.channel.CodeReader;
-
+/**
+ * @deprecated since 4.5.2 replace by highlighting mechanism
+ */
+@Deprecated
 public class HtmlRenderer extends Renderer {
 
   private HtmlOptions options = null;
index 7c5b0c851aa3e0d78c8a207a350a606d9fbefff8..9383296e4a79183473715a2da67422f70a22e289 100644 (file)
@@ -24,6 +24,10 @@ import org.sonar.channel.EndMatcher;
 
 import java.util.Arrays;
 
+/**
+ * @deprecated since 4.5.2 replace by highlighting mechanism
+ */
+@Deprecated
 public abstract class InlineDocTokenizer extends Tokenizer {
 
   private final String tagBefore;
index fc7cdf6b6d22ef7a189cfc872a332e9d598f075b..cf98d21a3865453f86602bc1b8f94ffcfa1a5524 100644 (file)
@@ -22,6 +22,10 @@ package org.sonar.colorizer;
 import org.sonar.channel.CodeReader;
 import org.sonar.channel.EndMatcher;
 
+/**
+ * @deprecated since 4.5.2 replace by highlighting mechanism
+ */
+@Deprecated
 public class JavaAnnotationTokenizer extends Tokenizer {
 
   private final String tagBefore;
index 3216b720ef6f2b8259bef8c5dcfe61bc8c3c6af9..12937ac49dae90232fbe21ac7524a140e498e626 100644 (file)
@@ -23,8 +23,9 @@ import org.sonar.channel.CodeReader;
 import org.sonar.channel.EndMatcher;
 
 /**
- * Detect Java constant
+ * @deprecated since 4.5.2 replace by highlighting mechanism
  */
+@Deprecated
 public class JavaConstantTokenizer extends Tokenizer {
 
   private final String tagBefore;
@@ -39,7 +40,7 @@ public class JavaConstantTokenizer extends Tokenizer {
   private boolean hasNextToken(CodeReader code) {
     int lastChar = code.lastChar();
     if (isJavaConstantStart(code.peek()) && !Character.isJavaIdentifierPart(lastChar) && !Character.isJavaIdentifierStart(lastChar)
-        && lastChar != DOT) {
+      && lastChar != DOT) {
       String constant = code.peekTo(endTokenMatcher);
       int nextCharAfterConstant = code.peek(constant.length() + 1)[constant.length()];
       if (nextCharAfterConstant != 0 && Character.isJavaIdentifierPart(nextCharAfterConstant)) {
index 18bed2eda7d68a99ebcfeebbbeb7d423c19f9e57..164945ad64c7b361014265010dca8c2bc6037a26 100644 (file)
@@ -23,16 +23,20 @@ import com.google.common.collect.ImmutableSet;
 
 import java.util.Set;
 
+/**
+ * @deprecated since 4.5.2 replace by highlighting mechanism
+ */
+@Deprecated
 public final class JavaKeywords {
 
   private static final Set<String> KEYWORDS = ImmutableSet.of(
-      "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");
+    "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");
 
   private JavaKeywords() {
   }
index 1b30e1a7b30320cbdf14d8f8edef83d2d2039232..f040d376594ab31d03e1121331a719537dddd02f 100644 (file)
@@ -23,6 +23,10 @@ import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
+/**
+ * @deprecated since 4.5.2 replace by highlighting mechanism
+ */
+@Deprecated
 public final class JavaTokenizers {
 
   private JavaTokenizers() {
@@ -30,12 +34,12 @@ public final class JavaTokenizers {
 
   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())));
+      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())));
   }
 }
index fee02f14bcacf50bc676a517cee7ae5a35610023..404a94a4f12f9b956917da0788b70aa4622c5dc1 100644 (file)
  */
 package org.sonar.colorizer;
 
+/**
+ * @deprecated since 4.5.2 replace by highlighting mechanism
+ */
+@Deprecated
 public class JavadocTokenizer extends MultilinesDocTokenizer {
 
   public JavadocTokenizer(String tagBefore, String tagAfter) {
index 3a1395fc5de48834fcb19f6e4f122dfa57189d6a..06025a33d3735caff4000a548a20d8db3024d6da 100644 (file)
@@ -28,8 +28,9 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 /**
- * Detect case-sensitive keywords
+ * @deprecated since 4.5.2 replace by highlighting mechanism
  */
+@Deprecated
 public class KeywordsTokenizer extends NotThreadSafeTokenizer {
 
   private final String tagBefore;
@@ -76,7 +77,7 @@ public class KeywordsTokenizer extends NotThreadSafeTokenizer {
   }
 
   private boolean isKeyword(String word) {
-    if ( !caseInsensitive && keywords.contains(word)) {
+    if (!caseInsensitive && keywords.contains(word)) {
       return true;
     } else if (caseInsensitive && keywords.contains(word.toUpperCase())) {
       return true;
index 42161a86d3ab1181f52317fa80f73257c4d291b1..054a74efe57d43e1fdc1e2458a97677efe7f0122 100644 (file)
@@ -22,6 +22,10 @@ package org.sonar.colorizer;
 import org.sonar.channel.CodeReader;
 import org.sonar.channel.EndMatcher;
 
+/**
+ * @deprecated since 4.5.2 replace by highlighting mechanism
+ */
+@Deprecated
 public class LiteralTokenizer extends Tokenizer {
 
   private final String tagBefore;
@@ -63,7 +67,7 @@ public class LiteralTokenizer extends Tokenizer {
 
     public boolean match(int endFlag) {
       literalValue.append((char) endFlag);
-      return code.lastChar()==firstChar && evenNumberOfBackSlashBeforeDelimiter() && literalValue.length()>1;
+      return code.lastChar() == firstChar && evenNumberOfBackSlashBeforeDelimiter() && literalValue.length() > 1;
     }
 
     private boolean evenNumberOfBackSlashBeforeDelimiter() {
index 005d52a32632b692616fb00fdca91cad77d6cbe9..120615063e214c677298e32213de2f558734696c 100644 (file)
@@ -24,6 +24,10 @@ import org.sonar.channel.EndMatcher;
 
 import java.util.Arrays;
 
+/**
+ * @deprecated since 4.5.2 replace by highlighting mechanism
+ */
+@Deprecated
 public class MultilinesDocTokenizer extends Tokenizer {
 
   private static final String COMMENT_STARTED_ON_PREVIOUS_LINE = "COMMENT_STARTED_ON_PREVIOUS_LINE";
@@ -50,9 +54,9 @@ public class MultilinesDocTokenizer extends Tokenizer {
 
   public boolean hasNextToken(CodeReader code, HtmlCodeBuilder codeBuilder) {
     return code.peek() != '\n'
-        && code.peek() != '\r'
-        && (isCommentStartedOnPreviousLine(codeBuilder) || (code.peek() == startToken[0] && Arrays.equals(code.peek(startToken.length),
-            startToken)));
+      && code.peek() != '\r'
+      && (isCommentStartedOnPreviousLine(codeBuilder) || (code.peek() == startToken[0] && Arrays.equals(code.peek(startToken.length),
+        startToken)));
   }
 
   @Override
index ea46b37f77f3fdbfa6e9d246ee70d173881df89f..1efa7e671683a91c4c95a9952596e7bc23d963b1 100644 (file)
@@ -22,8 +22,9 @@ package org.sonar.colorizer;
 /**
  * A thread safe Tokenizer. Before each use by the CodeColorizer, the method clone() is automatically
  * called to clone the current instance.
- * 
+ * @deprecated since 4.5.2 replace by highlighting mechanism
  */
+@Deprecated
 public abstract class NotThreadSafeTokenizer extends Tokenizer implements Cloneable {
 
   @Override
index fe21a8cd79b837a82bdba5e6f17b795eeaecaa34..11b1c2fe71ac7d261df053a73d6cbf9db09fd0a1 100644 (file)
  */
 package org.sonar.colorizer;
 
+import org.sonar.channel.CodeReader;
+
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import org.sonar.channel.CodeReader;
-
-public class RegexpTokenizer extends NotThreadSafeTokenizer{
+/**
+ * @deprecated since 4.5.2 replace by highlighting mechanism
+ */
+@Deprecated
+public class RegexpTokenizer extends NotThreadSafeTokenizer {
 
   private final String tagBefore;
   private final String tagAfter;
index b6a9c80607b1780b6b335416aa97eb17ece47b16..d9cb84c5f912968f6d5aee324f4216dcc96e930d 100644 (file)
  */
 package org.sonar.colorizer;
 
+import org.sonar.channel.Channel;
+
 import java.io.Reader;
 import java.util.List;
 
-import org.sonar.channel.Channel;
-
+/**
+ * @deprecated since 4.5.2 replace by highlighting mechanism
+ */
+@Deprecated
 public abstract class Renderer {
 
   public abstract String render(Reader code, List<? extends Channel<HtmlCodeBuilder>> tokenizers);
index eec4ddd0914e94b69b57e7108724ad951da36bd6..248f12f442fc02e43acf6fa5082282fa7e4c5ad9 100644 (file)
@@ -21,6 +21,10 @@ package org.sonar.colorizer;
 
 import org.sonar.channel.CodeReader;
 
+/**
+ * @deprecated since 4.5.2 replace by highlighting mechanism
+ */
+@Deprecated
 public class StringTokenizer extends Tokenizer {
 
   private final LiteralTokenizer tokenizer;
index ed7b5bc2a6fe6e251203f32181dc5cb79e4b9e76..8c008b031dacf39eafc0a6d6b1ea6e6dfa0acc62 100644 (file)
  */
 package org.sonar.colorizer;
 
+/**
+ * @deprecated since 4.5.2 replace by highlighting mechanism
+ */
+@Deprecated
 public class SynhtaxHighlightingException extends RuntimeException {
 
   public SynhtaxHighlightingException(String arg0, Throwable arg1) {
index 4e1d0f7ecd9dcfb95023cb8afe19b9ead61f2fae..3933e5215320a51fb67ab8d8b3eadc67a103dd36 100644 (file)
@@ -26,6 +26,8 @@ import org.sonar.channel.Channel;
  * and to add the highlighted token to an HtmlCodeBuilder.
  *
  * IMPORTANT: a Tokenizer must be THREAD-SAFE otherwise use {@link NotThreadSafeTokenizer}
+ * @deprecated since 4.5.2 replace by highlighting mechanism
  */
+@Deprecated
 public abstract class Tokenizer extends Channel<HtmlCodeBuilder> {
 }
index 142f52a4f7cd084fcb955db4b86710ea58293b34..a3cfb20cdc5098efca4f5b85e98584df9579a802 100644 (file)
@@ -22,12 +22,18 @@ package org.sonar.core.component;
 import com.google.common.collect.Maps;
 import org.sonar.api.BatchComponent;
 import org.sonar.api.batch.SonarIndex;
+import org.sonar.api.batch.fs.InputDir;
+import org.sonar.api.batch.fs.InputFile;
+import org.sonar.api.batch.fs.InputPath;
 import org.sonar.api.component.Component;
 import org.sonar.api.component.Perspective;
 import org.sonar.api.component.ResourcePerspectives;
+import org.sonar.api.resources.Directory;
+import org.sonar.api.resources.File;
 import org.sonar.api.resources.Resource;
 
 import javax.annotation.CheckForNull;
+
 import java.util.Map;
 
 public class ScanPerspectives implements ResourcePerspectives, BatchComponent {
@@ -64,6 +70,19 @@ public class ScanPerspectives implements ResourcePerspectives, BatchComponent {
     return null;
   }
 
+  @Override
+  public <P extends Perspective> P as(Class<P> perspectiveClass, InputPath inputPath) {
+    Resource r;
+    if (inputPath instanceof InputDir) {
+      r = Directory.create(((InputDir) inputPath).relativePath());
+    } else if (inputPath instanceof InputFile) {
+      r = File.create(((InputFile) inputPath).relativePath());
+    } else {
+      throw new IllegalArgumentException("Unknow input path type: " + inputPath);
+    }
+    return as(perspectiveClass, r);
+  }
+
   private <T extends Perspective> PerspectiveBuilder<T> builderFor(Class<T> clazz) {
     PerspectiveBuilder<T> builder = (PerspectiveBuilder<T>) builders.get(clazz);
     if (builder == null) {
index b3f2792b5075ade7887244ff298091841c7b7001..d6337af5bc2bd264aae98b2d6371f039fbd27636 100644 (file)
@@ -24,7 +24,10 @@ import org.sonar.api.resources.Resource;
 
 /**
  * @since 1.10
+ * @deprecated since 4.5.2. Starting from SQ 5.x aggregation/computation of data will be mostly done on server side.
+ * As a result Decoration on batch side will be dropped at some point.
  */
+@Deprecated
 public interface Decorator extends BatchExtension, CheckProject {
 
   /**
index 52eff7acc68547839b0378e90078b5b59830d687..5de94ebd0074e1fbbd0eec18982659a76735cabf 100644 (file)
@@ -30,7 +30,10 @@ import org.sonar.api.resources.Project;
  * </p>
  *
  * @since 1.10
+ * @deprecated since 4.5.2. Starting from SQ 5.0 a big part of project analysis will be processed asynchnonously on server side. As
+ * a result batch analysis will ends very quickly and probably before analysis results are persisted in SQ server referentials.
  */
+@Deprecated
 public interface PostJob extends BatchExtension {
 
   void executeOn(Project project, SensorContext context);
index c76eaf471384c68142ba24621b3f7991e124d35d..a21d421e6acf4a8c4ca6aefe4206340ffa23ade4 100644 (file)
@@ -19,8 +19,8 @@
  */
 package org.sonar.api.batch;
 
-import com.google.common.annotations.Beta;
 import org.sonar.api.batch.fs.InputFile;
+import org.sonar.api.batch.fs.InputPath;
 import org.sonar.api.design.Dependency;
 import org.sonar.api.measures.Measure;
 import org.sonar.api.measures.MeasuresFilter;
@@ -252,16 +252,20 @@ public interface SensorContext {
   void deleteEvent(Event event);
 
   /**
-   * Experimental - do not use
+   * Save measure on {@link InputFile}
    * @since 4.2
    */
-  @Beta
   Measure saveMeasure(InputFile inputFile, Metric metric, Double value);
 
   /**
-   * Experimental - do not use
+   * Save measure on {@link InputFile}
    * @since 4.2
    */
-  @Beta
   Measure saveMeasure(InputFile inputFile, Measure measure);
+
+  /**
+   * Allow to get {@link Resource} corresponding to provided {@link InputPath}.
+   * @since 4.5.2
+   */
+  Resource getResource(InputPath inputPath);
 }
index cbe29014b2f5fd733d657162bdb78ef8f07b2a1c..39124edb2ab0774a032874f4397d48c9eaf292c9 100644 (file)
@@ -36,6 +36,10 @@ import java.util.Date;
 import java.util.List;
 import java.util.Set;
 
+/**
+ * @deprecated since 4.5.2 should not be used by plugins.
+ */
+@Deprecated
 public abstract class SonarIndex implements DirectedGraphAccessor<Resource, Dependency> {
 
   /**
index d992b57100139abac09717a613f427d73f1d64ee..18bce8f9e36c9e3161ff6dfcb36fa6cc56581068 100644 (file)
  */
 package org.sonar.api.component;
 
+import org.sonar.api.batch.fs.InputFile;
+import org.sonar.api.batch.fs.InputPath;
+import org.sonar.api.issue.Issuable;
 import org.sonar.api.resources.Resource;
+import org.sonar.api.source.Highlightable;
+import org.sonar.api.source.Symbolizable;
+import org.sonar.api.test.TestPlan;
+import org.sonar.api.test.Testable;
 
 import javax.annotation.CheckForNull;
 
 /**
+ * Use this component to create perspective from resources or {@link InputPath}
  * Only on batch-side.
+ * 
+ * <pre>
+ * public class MySensor implements Sensor {
+ *   private final ResourcePerspectives perspectives;
  *
+ *   public MySensor(ResourcePerspectives perspectives) {
+ *     this.perspectives = perspectives;
+ *   }
+ *   
+ *   public void analyse(Project module, SensorContext context) {
+ *      // Get some Resource or InputFile/InputPath
+ *      Highlightable highlightable = perspectives.as(Highlightable.class, inputPath);
+ *      if (highlightable != null) {
+ *        ...
+ *      }
+ *   }
+ * }
+ * </pre>
+ * @see Issuable
+ * @see Highlightable
+ * @see Symbolizable
+ * @see Testable
+ * @see TestPlan
  * @since 3.5
  */
 public interface ResourcePerspectives extends Perspectives {
 
   @CheckForNull
   <P extends Perspective> P as(Class<P> perspectiveClass, Resource resource);
+
+  /**
+   * Allow to create perspective from {@link InputPath}. In particular from {@link InputFile}.
+   * @since 4.5.2
+   */
+  @CheckForNull
+  <P extends Perspective> P as(Class<P> perspectiveClass, InputPath inputPath);
 }
index 3269bd9933650f1bce1edd718d85beff7711808d..a2a677d7151349d6ea63cf4ddca95c482f20fe3e 100644 (file)
@@ -1319,7 +1319,7 @@ public final class CoreMetrics {
     .create();
 
   /**
-   * @deprecated since 4.5. Internal storage of duplication is not an API. No more available on batch side.
+   * @deprecated since 4.5. Internal storage of duplication is not an API.
    */
   @Deprecated
   public static final String DUPLICATIONS_DATA_KEY = "duplications_data";
@@ -1340,7 +1340,7 @@ public final class CoreMetrics {
    *   </duplications>
    * </pre>
    * </p>
-   * @deprecated since 4.5. Internal storage of duplication is not an API. No more available on batch side.
+   * @deprecated since 4.5. Internal storage of duplication is not an API.
    */
   @Deprecated
   public static final Metric<String> DUPLICATIONS_DATA = new Metric.Builder(DUPLICATIONS_DATA_KEY, "Duplications details", Metric.ValueType.DATA)
index 0ab229be03c6e77512b7f75583eebd1f677ce532..6c843b4ba261df0344c7d31365a1ef503b07432b 100644 (file)
 package org.sonar.api.source;
 
 import org.sonar.api.component.Perspective;
+import org.sonar.api.component.ResourcePerspectives;
 
 /**
+ * Use this perspective to save syntax highlighting on files.
+ * See {@link ResourcePerspectives}.
  * @since 3.6
  */
 public interface Highlightable extends Perspective {
index 3a49ada34df770e5b5adb15a9af12c8f0938e763..1cc821620478db52616273848eed105783aeaa03 100644 (file)
 package org.sonar.api.source;
 
 import org.sonar.api.component.Perspective;
+import org.sonar.api.component.ResourcePerspectives;
 
 import java.util.List;
 
 /**
+ * Use this perspective to save symbol references on files.
+ * See {@link ResourcePerspectives}.
  * @since 3.6
  */
 public interface Symbolizable extends Perspective {
index 26544ad5c50cd33060e6fdb321e138ffa57532e9..4c6c32a278a50ff37efbf4c8f5e72e4089e7dd38 100644 (file)
  */
 package org.sonar.api.web;
 
-import java.util.List;
-
 import com.google.common.base.Objects;
 import org.sonar.api.ServerExtension;
+import org.sonar.api.source.Highlightable;
 import org.sonar.colorizer.Tokenizer;
 
+import java.util.List;
+
 /**
  * Extend the library sonar-colorizer to support new languages. By default only Java sources are colorized in Sonar.
  * 
  * @since 1.12
+ * @deprecated since 4.5.2 use {@link Highlightable}
  */
+@Deprecated
 public abstract class CodeColorizerFormat implements ServerExtension {
 
   private String languageKey;
@@ -57,7 +60,7 @@ public abstract class CodeColorizerFormat implements ServerExtension {
     if (this == o) {
       return true;
     }
-    if ( !(o instanceof CodeColorizerFormat)) {
+    if (!(o instanceof CodeColorizerFormat)) {
       return false;
     }