summaryrefslogtreecommitdiffstats
path: root/sonar-batch
diff options
context:
space:
mode:
authorJulien HENRY <julien.henry@sonarsource.com>2015-02-20 11:09:49 +0100
committerJulien HENRY <julien.henry@sonarsource.com>2015-02-20 15:05:18 +0100
commit38357bb24905509dd775e40bdf09e40aec6af39c (patch)
treee7043ad143fdf642764b6244dedba4336ee1af09 /sonar-batch
parent54beb6267d98d4e7429480bfbfaa70c8d1f73eff (diff)
downloadsonarqube-38357bb24905509dd775e40bdf09e40aec6af39c.tar.gz
sonarqube-38357bb24905509dd775e40bdf09e40aec6af39c.zip
SONAR-5931 Cleanup symbol reference API
Diffstat (limited to 'sonar-batch')
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/index/SourceDataFactory.java2
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/mediumtest/TaskResult.java2
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/sensor/DefaultSensorContext.java9
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/source/DefaultSymbol.java58
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/source/DefaultSymbolTable.java3
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/symbol/DefaultSymbolTableBuilder.java10
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/symbol/SymbolData.java2
-rw-r--r--sonar-batch/src/test/java/org/sonar/batch/index/SourceDataFactoryTest.java9
-rw-r--r--sonar-batch/src/test/java/org/sonar/batch/symbol/DefaultSymbolTableBuilderTest.java13
9 files changed, 76 insertions, 32 deletions
diff --git a/sonar-batch/src/main/java/org/sonar/batch/index/SourceDataFactory.java b/sonar-batch/src/main/java/org/sonar/batch/index/SourceDataFactory.java
index edea3a94051..0b7d9414f35 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/index/SourceDataFactory.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/index/SourceDataFactory.java
@@ -27,9 +27,9 @@ import org.sonar.api.batch.fs.internal.DefaultInputFile;
import org.sonar.api.batch.sensor.duplication.Duplication;
import org.sonar.api.batch.sensor.duplication.internal.DefaultDuplication;
import org.sonar.api.batch.sensor.highlighting.internal.SyntaxHighlightingRule;
-import org.sonar.api.batch.sensor.symbol.Symbol;
import org.sonar.api.measures.CoreMetrics;
import org.sonar.api.measures.Measure;
+import org.sonar.api.source.Symbol;
import org.sonar.api.utils.DateUtils;
import org.sonar.api.utils.KeyValueFormat;
import org.sonar.batch.duplication.DuplicationCache;
diff --git a/sonar-batch/src/main/java/org/sonar/batch/mediumtest/TaskResult.java b/sonar-batch/src/main/java/org/sonar/batch/mediumtest/TaskResult.java
index 8c07b72e5a6..6d2eeabcc73 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/mediumtest/TaskResult.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/mediumtest/TaskResult.java
@@ -31,10 +31,10 @@ import org.sonar.api.batch.sensor.duplication.Duplication;
import org.sonar.api.batch.sensor.highlighting.TypeOfText;
import org.sonar.api.batch.sensor.highlighting.internal.SyntaxHighlightingRule;
import org.sonar.api.batch.sensor.measure.internal.DefaultMeasure;
-import org.sonar.api.batch.sensor.symbol.Symbol;
import org.sonar.api.issue.Issue;
import org.sonar.api.issue.internal.DefaultIssue;
import org.sonar.api.measures.Measure;
+import org.sonar.api.source.Symbol;
import org.sonar.batch.dependency.DependencyCache;
import org.sonar.batch.duplication.DuplicationCache;
import org.sonar.batch.highlighting.SyntaxHighlightingData;
diff --git a/sonar-batch/src/main/java/org/sonar/batch/sensor/DefaultSensorContext.java b/sonar-batch/src/main/java/org/sonar/batch/sensor/DefaultSensorContext.java
index 73a05a177b5..130e8c10c63 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/sensor/DefaultSensorContext.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/sensor/DefaultSensorContext.java
@@ -21,8 +21,6 @@ package org.sonar.batch.sensor;
import org.sonar.api.batch.AnalysisMode;
import org.sonar.api.batch.fs.FileSystem;
-import org.sonar.api.batch.fs.InputFile;
-import org.sonar.api.batch.fs.internal.DefaultInputFile;
import org.sonar.api.batch.rule.ActiveRules;
import org.sonar.api.batch.sensor.SensorContext;
import org.sonar.api.batch.sensor.dependency.NewDependency;
@@ -36,10 +34,8 @@ import org.sonar.api.batch.sensor.issue.NewIssue;
import org.sonar.api.batch.sensor.issue.internal.DefaultIssue;
import org.sonar.api.batch.sensor.measure.NewMeasure;
import org.sonar.api.batch.sensor.measure.internal.DefaultMeasure;
-import org.sonar.api.batch.sensor.symbol.SymbolTableBuilder;
import org.sonar.api.config.Settings;
import org.sonar.batch.index.ComponentDataCache;
-import org.sonar.batch.symbol.DefaultSymbolTableBuilder;
import java.io.Serializable;
@@ -98,11 +94,6 @@ public class DefaultSensorContext implements SensorContext {
}
@Override
- public SymbolTableBuilder symbolTableBuilder(InputFile inputFile) {
- return new DefaultSymbolTableBuilder(((DefaultInputFile) inputFile).key(), componentDataCache);
- }
-
- @Override
public NewDuplication newDuplication() {
return new DefaultDuplication(sensorStorage);
}
diff --git a/sonar-batch/src/main/java/org/sonar/batch/source/DefaultSymbol.java b/sonar-batch/src/main/java/org/sonar/batch/source/DefaultSymbol.java
new file mode 100644
index 00000000000..0bca8bd9997
--- /dev/null
+++ b/sonar-batch/src/main/java/org/sonar/batch/source/DefaultSymbol.java
@@ -0,0 +1,58 @@
+/*
+ * SonarQube, open source software quality management tool.
+ * Copyright (C) 2008-2014 SonarSource
+ * mailto:contact AT sonarsource DOT com
+ *
+ * SonarQube is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * SonarQube is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+package org.sonar.batch.source;
+
+import com.google.common.base.Objects;
+
+import java.io.Serializable;
+
+public class DefaultSymbol implements org.sonar.api.source.Symbol, Serializable {
+
+ private final int declarationStartOffset;
+ private final int declarationEndOffset;
+
+ public DefaultSymbol(int startOffset, int endOffset) {
+ this.declarationStartOffset = startOffset;
+ this.declarationEndOffset = endOffset;
+ }
+
+ @Override
+ public int getDeclarationStartOffset() {
+ return declarationStartOffset;
+ }
+
+ @Override
+ public int getDeclarationEndOffset() {
+ return declarationEndOffset;
+ }
+
+ @Override
+ public String getFullyQualifiedName() {
+ return null;
+ }
+
+ @Override
+ public String toString() {
+ return Objects.toStringHelper("Symbol")
+ .add("offset", String.format("%d-%d", declarationStartOffset, declarationEndOffset))
+ .toString();
+ }
+}
diff --git a/sonar-batch/src/main/java/org/sonar/batch/source/DefaultSymbolTable.java b/sonar-batch/src/main/java/org/sonar/batch/source/DefaultSymbolTable.java
index b4ce0c15878..18b3e06df6b 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/source/DefaultSymbolTable.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/source/DefaultSymbolTable.java
@@ -20,7 +20,6 @@
package org.sonar.batch.source;
-import org.sonar.api.batch.sensor.symbol.internal.DefaultSymbol;
import org.sonar.api.source.Symbol;
import org.sonar.api.source.Symbolizable;
@@ -46,7 +45,7 @@ public class DefaultSymbolTable implements Symbolizable.SymbolTable {
@Override
public List<Symbol> symbols() {
List<Symbol> result = new ArrayList<Symbol>();
- for (org.sonar.api.batch.sensor.symbol.Symbol symbol : referencesBySymbol.keySet()) {
+ for (Symbol symbol : referencesBySymbol.keySet()) {
result.add((Symbol) symbol);
}
return result;
diff --git a/sonar-batch/src/main/java/org/sonar/batch/symbol/DefaultSymbolTableBuilder.java b/sonar-batch/src/main/java/org/sonar/batch/symbol/DefaultSymbolTableBuilder.java
index 72d4c050eb4..fc33c337b52 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/symbol/DefaultSymbolTableBuilder.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/symbol/DefaultSymbolTableBuilder.java
@@ -20,10 +20,9 @@
package org.sonar.batch.symbol;
-import org.sonar.api.batch.sensor.symbol.Symbol;
-import org.sonar.api.batch.sensor.symbol.SymbolTableBuilder;
-import org.sonar.api.batch.sensor.symbol.internal.DefaultSymbol;
+import org.sonar.api.source.Symbol;
import org.sonar.batch.index.ComponentDataCache;
+import org.sonar.batch.source.DefaultSymbol;
import org.sonar.core.source.SnapshotDataTypes;
import java.io.Serializable;
@@ -33,7 +32,7 @@ import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
-public class DefaultSymbolTableBuilder implements SymbolTableBuilder {
+public class DefaultSymbolTableBuilder {
private final String componentKey;
private final ComponentDataCache cache;
@@ -44,14 +43,12 @@ public class DefaultSymbolTableBuilder implements SymbolTableBuilder {
this.cache = cache;
}
- @Override
public Symbol newSymbol(int fromOffset, int toOffset) {
org.sonar.api.source.Symbol symbol = new DefaultSymbol(fromOffset, toOffset);
referencesBySymbol.put(symbol, new TreeSet<Integer>());
return symbol;
}
- @Override
public void newReference(Symbol symbol, int fromOffset) {
if (!referencesBySymbol.containsKey(symbol)) {
throw new UnsupportedOperationException("Cannot add reference to a symbol in another file");
@@ -66,7 +63,6 @@ public class DefaultSymbolTableBuilder implements SymbolTableBuilder {
return new SymbolData(referencesBySymbol);
}
- @Override
public void done() {
cache.setData(componentKey, SnapshotDataTypes.SYMBOL_HIGHLIGHTING, build());
}
diff --git a/sonar-batch/src/main/java/org/sonar/batch/symbol/SymbolData.java b/sonar-batch/src/main/java/org/sonar/batch/symbol/SymbolData.java
index baf897c6d1b..616429242ca 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/symbol/SymbolData.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/symbol/SymbolData.java
@@ -20,7 +20,7 @@
package org.sonar.batch.symbol;
-import org.sonar.api.batch.sensor.symbol.Symbol;
+import org.sonar.api.source.Symbol;
import org.sonar.batch.index.Data;
import java.util.Collection;
diff --git a/sonar-batch/src/test/java/org/sonar/batch/index/SourceDataFactoryTest.java b/sonar-batch/src/test/java/org/sonar/batch/index/SourceDataFactoryTest.java
index d6e07f67f5f..131ba214571 100644
--- a/sonar-batch/src/test/java/org/sonar/batch/index/SourceDataFactoryTest.java
+++ b/sonar-batch/src/test/java/org/sonar/batch/index/SourceDataFactoryTest.java
@@ -34,6 +34,7 @@ import org.sonar.api.batch.sensor.highlighting.TypeOfText;
import org.sonar.api.measures.CoreMetrics;
import org.sonar.api.measures.Measure;
import org.sonar.api.measures.Metric;
+import org.sonar.api.source.Symbol;
import org.sonar.batch.duplication.DuplicationCache;
import org.sonar.batch.highlighting.SyntaxHighlightingData;
import org.sonar.batch.highlighting.SyntaxHighlightingDataBuilder;
@@ -324,10 +325,10 @@ public class SourceDataFactoryTest {
@Test
public void applySymbolReferences() throws Exception {
DefaultSymbolTableBuilder symbolBuilder = new DefaultSymbolTableBuilder(inputFile.key(), null);
- org.sonar.api.batch.sensor.symbol.Symbol s1 = symbolBuilder.newSymbol(1, 2);
+ Symbol s1 = symbolBuilder.newSymbol(1, 2);
symbolBuilder.newReference(s1, 4);
symbolBuilder.newReference(s1, 11);
- org.sonar.api.batch.sensor.symbol.Symbol s2 = symbolBuilder.newSymbol(4, 6);
+ Symbol s2 = symbolBuilder.newSymbol(4, 6);
symbolBuilder.newReference(s2, 0);
symbolBuilder.newReference(s2, 7);
when(componentDataCache.getData(inputFile.key(), SnapshotDataTypes.SYMBOL_HIGHLIGHTING)).thenReturn(symbolBuilder.build());
@@ -344,10 +345,10 @@ public class SourceDataFactoryTest {
@Test
public void applySymbolReferences_declaration_order_is_not_important() throws Exception {
DefaultSymbolTableBuilder symbolBuilder = new DefaultSymbolTableBuilder(inputFile.key(), null);
- org.sonar.api.batch.sensor.symbol.Symbol s2 = symbolBuilder.newSymbol(4, 6);
+ Symbol s2 = symbolBuilder.newSymbol(4, 6);
symbolBuilder.newReference(s2, 7);
symbolBuilder.newReference(s2, 0);
- org.sonar.api.batch.sensor.symbol.Symbol s1 = symbolBuilder.newSymbol(1, 2);
+ Symbol s1 = symbolBuilder.newSymbol(1, 2);
symbolBuilder.newReference(s1, 11);
symbolBuilder.newReference(s1, 4);
when(componentDataCache.getData(inputFile.key(), SnapshotDataTypes.SYMBOL_HIGHLIGHTING)).thenReturn(symbolBuilder.build());
diff --git a/sonar-batch/src/test/java/org/sonar/batch/symbol/DefaultSymbolTableBuilderTest.java b/sonar-batch/src/test/java/org/sonar/batch/symbol/DefaultSymbolTableBuilderTest.java
index 8e125a74d04..05961573725 100644
--- a/sonar-batch/src/test/java/org/sonar/batch/symbol/DefaultSymbolTableBuilderTest.java
+++ b/sonar-batch/src/test/java/org/sonar/batch/symbol/DefaultSymbolTableBuilderTest.java
@@ -24,8 +24,7 @@ import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.mockito.ArgumentCaptor;
-import org.sonar.api.batch.sensor.symbol.Symbol;
-import org.sonar.api.batch.sensor.symbol.SymbolTableBuilder;
+import org.sonar.api.source.Symbol;
import org.sonar.batch.index.ComponentDataCache;
import org.sonar.core.source.SnapshotDataTypes;
@@ -46,7 +45,7 @@ public class DefaultSymbolTableBuilderTest {
@Test
public void should_write_symbol_and_references() throws Exception {
ComponentDataCache componentDataCache = mock(ComponentDataCache.class);
- SymbolTableBuilder symbolTableBuilder = new DefaultSymbolTableBuilder("foo", componentDataCache);
+ DefaultSymbolTableBuilder symbolTableBuilder = new DefaultSymbolTableBuilder("foo", componentDataCache);
Symbol firstSymbol = symbolTableBuilder.newSymbol(10, 20);
symbolTableBuilder.newReference(firstSymbol, 32);
Symbol secondSymbol = symbolTableBuilder.newSymbol(84, 92);
@@ -72,7 +71,7 @@ public class DefaultSymbolTableBuilderTest {
public void should_serialize_unused_symbol() throws Exception {
ComponentDataCache componentDataCache = mock(ComponentDataCache.class);
- SymbolTableBuilder symbolTableBuilder = new DefaultSymbolTableBuilder("foo", componentDataCache);
+ DefaultSymbolTableBuilder symbolTableBuilder = new DefaultSymbolTableBuilder("foo", componentDataCache);
symbolTableBuilder.newSymbol(10, 20);
symbolTableBuilder.done();
@@ -87,7 +86,7 @@ public class DefaultSymbolTableBuilderTest {
throwable.expect(UnsupportedOperationException.class);
ComponentDataCache componentDataCache = mock(ComponentDataCache.class);
- SymbolTableBuilder symbolTableBuilder = new DefaultSymbolTableBuilder("foo", componentDataCache);
+ DefaultSymbolTableBuilder symbolTableBuilder = new DefaultSymbolTableBuilder("foo", componentDataCache);
Symbol symbol = symbolTableBuilder.newSymbol(10, 20);
symbolTableBuilder.newReference(symbol, 15);
}
@@ -97,10 +96,10 @@ public class DefaultSymbolTableBuilderTest {
throwable.expect(UnsupportedOperationException.class);
ComponentDataCache componentDataCache = mock(ComponentDataCache.class);
- SymbolTableBuilder symbolTableBuilder = new DefaultSymbolTableBuilder("foo", componentDataCache);
+ DefaultSymbolTableBuilder symbolTableBuilder = new DefaultSymbolTableBuilder("foo", componentDataCache);
Symbol symbol = symbolTableBuilder.newSymbol(10, 20);
- SymbolTableBuilder symbolTableBuilder2 = new DefaultSymbolTableBuilder("foo2", componentDataCache);
+ DefaultSymbolTableBuilder symbolTableBuilder2 = new DefaultSymbolTableBuilder("foo2", componentDataCache);
Symbol symbol2 = symbolTableBuilder2.newSymbol(30, 40);
symbolTableBuilder.newReference(symbol2, 15);