diff options
author | Julien HENRY <julien.henry@sonarsource.com> | 2015-02-20 11:09:49 +0100 |
---|---|---|
committer | Julien HENRY <julien.henry@sonarsource.com> | 2015-02-20 15:05:18 +0100 |
commit | 38357bb24905509dd775e40bdf09e40aec6af39c (patch) | |
tree | e7043ad143fdf642764b6244dedba4336ee1af09 /sonar-batch | |
parent | 54beb6267d98d4e7429480bfbfaa70c8d1f73eff (diff) | |
download | sonarqube-38357bb24905509dd775e40bdf09e40aec6af39c.tar.gz sonarqube-38357bb24905509dd775e40bdf09e40aec6af39c.zip |
SONAR-5931 Cleanup symbol reference API
Diffstat (limited to 'sonar-batch')
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); |