From f4e4e1f30da63c41701e237f92d55171c7d5b927 Mon Sep 17 00:00:00 2001 From: Duarte Meneses Date: Tue, 31 Jan 2017 14:56:28 +0100 Subject: [PATCH] Reduce dependency on guava --- .../org/sonar/batch/bootstrapper/Batch.java | 11 +++--- .../bootstrapper/LoggingConfiguration.java | 5 +-- .../ScannerExtensionDictionnary.java | 15 ++++---- .../bootstrap/ScannerPluginInstaller.java | 10 +++--- .../bootstrap/ScannerPluginPredicate.java | 6 ++-- .../scanner/bootstrap/UserProperties.java | 6 ++-- .../org/sonar/scanner/events/EventBus.java | 4 +-- .../org/sonar/scanner/index/DefaultIndex.java | 2 +- .../issue/DefaultIssueFilterChain.java | 7 ++-- .../scanner/issue/DefaultProjectIssues.java | 34 +++++++++---------- .../issue/DeprecatedIssueFilterChain.java | 7 ++-- .../pattern/AbstractPatternInitializer.java | 4 +-- .../IssueExclusionPatternInitializer.java | 6 ++-- .../issue/ignore/pattern/LineRange.java | 4 +-- .../issue/ignore/pattern/PatternDecoder.java | 4 +-- .../scanner/IssueExclusionsRegexpScanner.java | 16 ++++----- .../issue/tracking/ServerIssueRepository.java | 3 +- .../issue/tracking/SourceHashHolder.java | 4 +-- .../scanner/phases/PhasesTimeProfiler.java | 2 +- .../scanner/phases/PostJobsExecutor.java | 6 ++-- .../postjob/DefaultPostJobContext.java | 26 +++++++------- .../scanner/report/ComponentsPublisher.java | 2 +- .../report/ContextPropertiesPublisher.java | 16 ++++----- .../scanner/report/MeasuresPublisher.java | 2 +- .../sonar/scanner/report/ReportPublisher.java | 8 +++-- .../repository/DefaultServerIssuesLoader.java | 3 +- .../repository/ServerIssuesLoader.java | 3 +- .../sonar/scanner/rule/ModuleQProfiles.java | 9 ++--- .../scanner/rule/RuleFinderCompatibility.java | 7 ++-- .../scanner/rule/RulesProfileProvider.java | 9 ++--- .../scanner/rule/RulesProfileWrapper.java | 4 +-- .../sonar/scanner/scan/ModuleSettings.java | 4 +-- .../filesystem/DefaultModuleFileSystem.java | 6 ++-- .../scan/filesystem/LanguageDetection.java | 8 ++--- .../ModuleFileSystemInitializer.java | 6 ++-- .../scan/measure/DeprecatedMetricFinder.java | 10 +++--- .../scanner/scan/report/ResourceReport.java | 13 +++---- .../sonar/scanner/source/CodeColorizers.java | 4 +-- .../scanner/source/ZeroCoverageSensor.java | 14 ++++---- .../org/sonar/scanner/storage/Storages.java | 5 +-- .../mediumtest/ScannerMediumTester.java | 3 +- .../DefaultServerIssuesLoaderTest.java | 13 +++---- 42 files changed, 172 insertions(+), 159 deletions(-) diff --git a/sonar-scanner-engine/src/main/java/org/sonar/batch/bootstrapper/Batch.java b/sonar-scanner-engine/src/main/java/org/sonar/batch/bootstrapper/Batch.java index bfd02386af7..0d4fbe7c475 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/batch/bootstrapper/Batch.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/batch/bootstrapper/Batch.java @@ -20,9 +20,10 @@ package org.sonar.batch.bootstrapper; import com.google.common.base.Throwables; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; + +import java.util.ArrayList; import java.util.Collections; +import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Nullable; @@ -39,11 +40,11 @@ public final class Batch { private boolean started = false; private LoggingConfiguration loggingConfig; private List components; - private Map bootstrapProperties = Maps.newHashMap(); + private Map bootstrapProperties = new HashMap<>(); private GlobalContainer bootstrapContainer; private Batch(Builder builder) { - components = Lists.newArrayList(); + components = new ArrayList<>(); components.addAll(builder.components); if (builder.environment != null) { components.add(builder.environment); @@ -203,7 +204,7 @@ public final class Batch { public static final class Builder { private Map bootstrapProperties; private EnvironmentInformation environment; - private List components = Lists.newArrayList(); + private List components = new ArrayList<>(); private boolean enableLoggingConfiguration = true; private LogOutput logOutput; diff --git a/sonar-scanner-engine/src/main/java/org/sonar/batch/bootstrapper/LoggingConfiguration.java b/sonar-scanner-engine/src/main/java/org/sonar/batch/bootstrapper/LoggingConfiguration.java index a330b6c37d0..7307615a0e6 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/batch/bootstrapper/LoggingConfiguration.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/batch/bootstrapper/LoggingConfiguration.java @@ -20,7 +20,8 @@ package org.sonar.batch.bootstrapper; import com.google.common.annotations.VisibleForTesting; -import com.google.common.collect.Maps; + +import java.util.HashMap; import java.util.Map; import javax.annotation.CheckForNull; import javax.annotation.Nullable; @@ -48,7 +49,7 @@ public final class LoggingConfiguration { @VisibleForTesting static final String FORMAT_MAVEN = "[%level] [%d{HH:mm:ss.SSS}] %msg%n"; - private Map substitutionVariables = Maps.newHashMap(); + private Map substitutionVariables = new HashMap<>(); private LogOutput logOutput = null; private boolean verbose; diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/ScannerExtensionDictionnary.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/ScannerExtensionDictionnary.java index a1f3451eaa8..1726adf4056 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/ScannerExtensionDictionnary.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/ScannerExtensionDictionnary.java @@ -19,9 +19,6 @@ */ package org.sonar.scanner.bootstrap; -import com.google.common.base.Predicates; -import com.google.common.collect.Collections2; -import com.google.common.collect.Lists; import java.lang.annotation.Annotation; import java.lang.reflect.Array; import java.lang.reflect.Method; @@ -30,6 +27,8 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.List; +import java.util.stream.Collectors; + import javax.annotation.Nullable; import org.apache.commons.lang.ClassUtils; import org.sonar.api.batch.CheckProject; @@ -94,7 +93,7 @@ public class ScannerExtensionDictionnary { } private List getFilteredExtensions(Class type, @Nullable DefaultInputModule module, @Nullable ExtensionMatcher matcher) { - List result = Lists.newArrayList(); + List result = new ArrayList<>(); for (Object extension : getExtensions(type)) { if (org.sonar.api.batch.Sensor.class.equals(type) && extension instanceof Sensor) { extension = new SensorWrapper((Sensor) extension, sensorContext, sensorOptimizer); @@ -125,7 +124,7 @@ public class ScannerExtensionDictionnary { } protected List getExtensions(Class type) { - List extensions = Lists.newArrayList(); + List extensions = new ArrayList<>(); completeBatchExtensions(componentContainer, extensions, type); return extensions; } @@ -153,7 +152,9 @@ public class ScannerExtensionDictionnary { } List sortedList = dag.sort(); - return (Collection) Collections2.filter(sortedList, Predicates.in(extensions)); + return (Collection) sortedList.stream() + .filter(extensions::contains) + .collect(Collectors.toList()); } /** @@ -187,7 +188,7 @@ public class ScannerExtensionDictionnary { } protected List evaluateAnnotatedClasses(Object extension, Class annotation) { - List results = Lists.newArrayList(); + List results = new ArrayList<>(); Class aClass = extension.getClass(); while (aClass != null) { evaluateClass(aClass, annotation, results); diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/ScannerPluginInstaller.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/ScannerPluginInstaller.java index 35b97e6ad7d..680b602566b 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/ScannerPluginInstaller.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/ScannerPluginInstaller.java @@ -20,11 +20,11 @@ package org.sonar.scanner.bootstrap; import com.google.common.annotations.VisibleForTesting; -import com.google.common.collect.Lists; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.Reader; +import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; @@ -71,7 +71,7 @@ public class ScannerPluginInstaller implements PluginInstaller { } private Map loadPlugins(List remotePlugins) { - Map infosByKey = new HashMap<>(); + Map infosByKey = new HashMap<>(remotePlugins.size()); Profiler profiler = Profiler.create(LOG).startDebug("Load plugins"); @@ -114,7 +114,7 @@ public class ScannerPluginInstaller implements PluginInstaller { try { String pluginIndex = loadPluginIndex(); String[] rows = StringUtils.split(pluginIndex, CharUtils.LF); - List result = Lists.newArrayList(); + List result = new ArrayList<>(); for (String row : rows) { result.add(RemotePlugin.unmarshal(row)); } @@ -131,10 +131,10 @@ public class ScannerPluginInstaller implements PluginInstaller { String str; try (Reader reader = wsClient.call(getRequest).contentReader()) { str = IOUtils.toString(reader); - } catch(IOException e) { + } catch (IOException e) { throw new IllegalStateException(e); } - + profiler.stopInfo(); return str; } diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/ScannerPluginPredicate.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/ScannerPluginPredicate.java index e3d0e2daea4..8e635486712 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/ScannerPluginPredicate.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/ScannerPluginPredicate.java @@ -22,10 +22,11 @@ package org.sonar.scanner.bootstrap; import com.google.common.base.Joiner; import com.google.common.base.Predicate; import com.google.common.base.Splitter; -import com.google.common.collect.Lists; import java.util.List; import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.StreamSupport; import javax.annotation.Nonnull; @@ -93,6 +94,7 @@ public class ScannerPluginPredicate implements Predicate { private static List propertyValues(Settings settings, String key, String defaultValue) { String s = StringUtils.defaultIfEmpty(settings.getString(key), defaultValue); - return Lists.newArrayList(Splitter.on(",").trimResults().omitEmptyStrings().split(s)); + return StreamSupport.stream(Splitter.on(",").trimResults().omitEmptyStrings().split(s).spliterator(), false) + .collect(Collectors.toList()); } } diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/UserProperties.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/UserProperties.java index 6e63e8643d7..24ea4c95305 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/UserProperties.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/UserProperties.java @@ -19,11 +19,11 @@ */ package org.sonar.scanner.bootstrap; -import com.google.common.collect.Maps; import org.sonar.api.config.Encryption; import javax.annotation.Nullable; +import java.util.HashMap; import java.util.Map; /** @@ -36,7 +36,7 @@ public abstract class UserProperties { public UserProperties(Map properties, @Nullable String pathToSecretKey) { encryption = new Encryption(pathToSecretKey); - Map decryptedProps = Maps.newHashMap(); + Map decryptedProps = new HashMap<>(properties.size()); for (Map.Entry entry : properties.entrySet()) { String value = entry.getValue(); if (value != null && encryption.isEncrypted(value)) { @@ -48,7 +48,7 @@ public abstract class UserProperties { } decryptedProps.put(entry.getKey(), value); } - this.properties = Maps.newHashMap(decryptedProps); + this.properties = decryptedProps; } public Map properties() { diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/events/EventBus.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/events/EventBus.java index fbbccc6bf11..2529f434a31 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/events/EventBus.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/events/EventBus.java @@ -19,9 +19,9 @@ */ package org.sonar.scanner.events; -import com.google.common.collect.Lists; import org.sonar.api.batch.events.EventHandler; +import java.util.ArrayList; import java.util.List; /** @@ -51,7 +51,7 @@ public class EventBus { } private List getDispatchList(Class handlerType) { - List result = Lists.newArrayList(); + List result = new ArrayList<>(registeredHandlers.length); for (EventHandler handler : registeredHandlers) { if (handlerType.isAssignableFrom(handler.getClass())) { result.add(handler); diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/index/DefaultIndex.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/index/DefaultIndex.java index 9a4e49a4eb8..73614569260 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/index/DefaultIndex.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/index/DefaultIndex.java @@ -21,6 +21,7 @@ package org.sonar.scanner.index; import java.util.ArrayList; import java.util.Collection; +import java.util.stream.Collectors; import javax.annotation.CheckForNull; @@ -41,7 +42,6 @@ import org.sonar.api.resources.Directory; import org.sonar.api.resources.File; import org.sonar.api.resources.Project; import org.sonar.api.resources.Resource; -import org.sonar.core.util.stream.Collectors; import org.sonar.scanner.scan.filesystem.InputComponentStore; import org.sonar.scanner.scan.measure.MeasureCache; import org.sonar.scanner.sensor.DefaultSensorStorage; diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/DefaultIssueFilterChain.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/DefaultIssueFilterChain.java index 270665a3837..52d5bfb13da 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/DefaultIssueFilterChain.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/DefaultIssueFilterChain.java @@ -19,9 +19,10 @@ */ package org.sonar.scanner.issue; -import com.google.common.collect.ImmutableList; import org.sonar.api.scan.issue.filter.IssueFilter; +import java.util.Arrays; +import java.util.Collections; import java.util.List; import org.sonar.api.scan.issue.filter.FilterableIssue; @@ -31,11 +32,11 @@ public class DefaultIssueFilterChain implements IssueFilterChain { private final List filters; public DefaultIssueFilterChain(IssueFilter... filters) { - this.filters = ImmutableList.copyOf(filters); + this.filters = Collections.unmodifiableList(Arrays.asList(filters)); } public DefaultIssueFilterChain() { - this.filters = ImmutableList.of(); + this.filters = Collections.emptyList(); } private DefaultIssueFilterChain(List filters) { diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/DefaultProjectIssues.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/DefaultProjectIssues.java index aa442f6ecf0..d3dc99fef58 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/DefaultProjectIssues.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/DefaultProjectIssues.java @@ -19,12 +19,14 @@ */ package org.sonar.scanner.issue; -import com.google.common.base.Function; -import com.google.common.base.Predicate; -import com.google.common.collect.Iterables; import org.sonar.api.issue.Issue; import org.sonar.api.issue.ProjectIssues; import org.sonar.scanner.issue.tracking.TrackedIssue; + +import java.util.function.Predicate; +import java.util.stream.Collectors; +import java.util.stream.StreamSupport; + import javax.annotation.Nullable; /** @@ -32,7 +34,8 @@ import javax.annotation.Nullable; * @since 4.0 */ public class DefaultProjectIssues implements ProjectIssues { - + private static final Predicate RESOLVED = new ResolvedPredicate(true); + private static final Predicate NOT_RESOLVED = new ResolvedPredicate(false); private final IssueCache cache; public DefaultProjectIssues(IssueCache cache) { @@ -41,16 +44,18 @@ public class DefaultProjectIssues implements ProjectIssues { @Override public Iterable issues() { - return Iterables.transform( - Iterables.filter(cache.all(), new ResolvedPredicate(false)), - new IssueTransformer()); + return StreamSupport.stream(cache.all().spliterator(), false) + .filter(NOT_RESOLVED) + .map(TrackedIssueAdapter::new) + .collect(Collectors.toList()); } @Override public Iterable resolvedIssues() { - return Iterables.transform( - Iterables.filter(cache.all(), new ResolvedPredicate(true)), - new IssueTransformer()); + return StreamSupport.stream(cache.all().spliterator(), false) + .filter(RESOLVED) + .map(TrackedIssueAdapter::new) + .collect(Collectors.toList()); } private static class ResolvedPredicate implements Predicate { @@ -61,18 +66,11 @@ public class DefaultProjectIssues implements ProjectIssues { } @Override - public boolean apply(@Nullable TrackedIssue issue) { + public boolean test(@Nullable TrackedIssue issue) { if (issue != null) { return resolved ? (issue.resolution() != null) : (issue.resolution() == null); } return false; } } - - private static class IssueTransformer implements Function { - @Override - public Issue apply(TrackedIssue issue) { - return new TrackedIssueAdapter(issue); - } - } } diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/DeprecatedIssueFilterChain.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/DeprecatedIssueFilterChain.java index e3ec5e5517d..2e4cea8b814 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/DeprecatedIssueFilterChain.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/DeprecatedIssueFilterChain.java @@ -19,11 +19,12 @@ */ package org.sonar.scanner.issue; -import com.google.common.collect.ImmutableList; import org.sonar.api.issue.Issue; import org.sonar.api.issue.batch.IssueFilter; import org.sonar.api.issue.batch.IssueFilterChain; +import java.util.Arrays; +import java.util.Collections; import java.util.List; /** @@ -35,11 +36,11 @@ public class DeprecatedIssueFilterChain implements IssueFilterChain { private final List filters; public DeprecatedIssueFilterChain(IssueFilter... filters) { - this.filters = ImmutableList.copyOf(filters); + this.filters = Arrays.asList(filters); } public DeprecatedIssueFilterChain() { - this.filters = ImmutableList.of(); + this.filters = Collections.emptyList(); } private DeprecatedIssueFilterChain(List filters) { diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/ignore/pattern/AbstractPatternInitializer.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/ignore/pattern/AbstractPatternInitializer.java index 1c2064449ae..cd107be1223 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/ignore/pattern/AbstractPatternInitializer.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/ignore/pattern/AbstractPatternInitializer.java @@ -20,11 +20,11 @@ package org.sonar.scanner.issue.ignore.pattern; import com.google.common.annotations.VisibleForTesting; -import com.google.common.collect.Lists; import org.apache.commons.lang.StringUtils; import org.sonar.api.batch.ScannerSide; import org.sonar.api.config.Settings; +import java.util.ArrayList; import java.util.List; import static com.google.common.base.MoreObjects.firstNonNull; @@ -62,7 +62,7 @@ public abstract class AbstractPatternInitializer { @VisibleForTesting protected final void initPatterns() { // Patterns Multicriteria - multicriteriaPatterns = Lists.newArrayList(); + multicriteriaPatterns = new ArrayList<>(); String patternConf = StringUtils.defaultIfBlank(settings.getString(getMulticriteriaConfigurationKey()), ""); for (String id : StringUtils.split(patternConf, ',')) { String propPrefix = getMulticriteriaConfigurationKey() + "." + id + "."; diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/ignore/pattern/IssueExclusionPatternInitializer.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/ignore/pattern/IssueExclusionPatternInitializer.java index c1311a03b13..cde3c0ccb8b 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/ignore/pattern/IssueExclusionPatternInitializer.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/ignore/pattern/IssueExclusionPatternInitializer.java @@ -20,11 +20,11 @@ package org.sonar.scanner.issue.ignore.pattern; import com.google.common.annotations.VisibleForTesting; -import com.google.common.collect.Lists; import org.apache.commons.lang.StringUtils; import org.sonar.api.config.Settings; import org.sonar.core.config.IssueExclusionProperties; +import java.util.ArrayList; import java.util.List; import static com.google.common.base.Strings.nullToEmpty; @@ -67,7 +67,7 @@ public class IssueExclusionPatternInitializer extends AbstractPatternInitializer @VisibleForTesting protected final void loadFileContentPatterns() { // Patterns Block - blockPatterns = Lists.newArrayList(); + blockPatterns = new ArrayList<>(); String patternConf = StringUtils.defaultIfBlank(getSettings().getString(IssueExclusionProperties.PATTERNS_BLOCK_KEY), ""); for (String id : StringUtils.split(patternConf, ',')) { String propPrefix = IssueExclusionProperties.PATTERNS_BLOCK_KEY + "." + id + "."; @@ -80,7 +80,7 @@ public class IssueExclusionPatternInitializer extends AbstractPatternInitializer } // Patterns All File - allFilePatterns = Lists.newArrayList(); + allFilePatterns = new ArrayList<>(); patternConf = StringUtils.defaultIfBlank(getSettings().getString(IssueExclusionProperties.PATTERNS_ALLFILE_KEY), ""); for (String id : StringUtils.split(patternConf, ',')) { String propPrefix = IssueExclusionProperties.PATTERNS_ALLFILE_KEY + "." + id + "."; diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/ignore/pattern/LineRange.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/ignore/pattern/LineRange.java index 80183709076..9f7face2823 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/ignore/pattern/LineRange.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/ignore/pattern/LineRange.java @@ -20,8 +20,8 @@ package org.sonar.scanner.issue.ignore.pattern; import com.google.common.base.Preconditions; -import com.google.common.collect.Sets; +import java.util.LinkedHashSet; import java.util.Set; public class LineRange { @@ -40,7 +40,7 @@ public class LineRange { } public Set toLines() { - Set lines = Sets.newLinkedHashSet(); + Set lines = new LinkedHashSet<>(to-from+1); for (int index = from; index <= to; index++) { lines.add(index); } diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/ignore/pattern/PatternDecoder.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/ignore/pattern/PatternDecoder.java index a24e583aca0..ddf7c74ad73 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/ignore/pattern/PatternDecoder.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/ignore/pattern/PatternDecoder.java @@ -20,10 +20,10 @@ package org.sonar.scanner.issue.ignore.pattern; import com.google.common.annotations.VisibleForTesting; -import com.google.common.collect.Lists; import org.apache.commons.lang.StringUtils; import org.sonar.api.utils.SonarException; +import java.util.LinkedList; import java.util.List; public class PatternDecoder { @@ -33,7 +33,7 @@ public class PatternDecoder { private static final String CONFIG_FORMAT_ERROR_PREFIX = "Exclusions > Issues : Invalid format. "; public List decode(String patternsList) { - List patterns = Lists.newLinkedList(); + List patterns = new LinkedList<>(); String[] patternsLines = StringUtils.split(patternsList, "\n"); for (String patternLine : patternsLines) { IssuePattern pattern = decodeLine(patternLine.trim()); diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/ignore/scanner/IssueExclusionsRegexpScanner.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/ignore/scanner/IssueExclusionsRegexpScanner.java index c031ef90572..5e6ac3cd3b4 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/ignore/scanner/IssueExclusionsRegexpScanner.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/ignore/scanner/IssueExclusionsRegexpScanner.java @@ -19,9 +19,6 @@ */ package org.sonar.scanner.issue.ignore.scanner; -import com.google.common.collect.Lists; -import com.google.common.collect.Sets; -import org.apache.commons.io.FileUtils; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -32,6 +29,9 @@ import org.sonar.scanner.issue.ignore.pattern.LineRange; import java.io.File; import java.io.IOException; import java.nio.charset.Charset; +import java.nio.file.Files; +import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Set; @@ -53,9 +53,9 @@ public class IssueExclusionsRegexpScanner { public IssueExclusionsRegexpScanner(IssueExclusionPatternInitializer patternsInitializer) { this.exclusionPatternInitializer = patternsInitializer; - lineExclusions = Lists.newArrayList(); - allFilePatterns = Lists.newArrayList(); - blockMatchers = Lists.newArrayList(); + lineExclusions = new ArrayList<>(); + allFilePatterns = new ArrayList<>(); + blockMatchers = new ArrayList<>(); for (IssuePattern pattern : patternsInitializer.getAllFilePatterns()) { allFilePatterns.add(java.util.regex.Pattern.compile(pattern.getAllFileRegexp())); @@ -80,7 +80,7 @@ public class IssueExclusionsRegexpScanner { LOG.debug("Scanning {}", resource); init(); - List lines = FileUtils.readLines(file, sourcesEncoding.name()); + List lines = Files.readAllLines(file.toPath(), sourcesEncoding); int lineIndex = 0; for (String line : lines) { lineIndex++; @@ -117,7 +117,7 @@ public class IssueExclusionsRegexpScanner { } private Set convertLineExclusionsToLineRanges() { - Set lineRanges = Sets.newHashSet(); + Set lineRanges = new HashSet<>(lineExclusions.size()); for (LineExclusion lineExclusion : lineExclusions) { lineRanges.add(lineExclusion.toLineRange()); } diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/tracking/ServerIssueRepository.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/tracking/ServerIssueRepository.java index f706da4e545..2398aa083a5 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/tracking/ServerIssueRepository.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/tracking/ServerIssueRepository.java @@ -19,7 +19,8 @@ */ package org.sonar.scanner.issue.tracking; -import com.google.common.base.Function; +import java.util.function.Function; + import javax.annotation.Nullable; import org.sonar.api.batch.ScannerSide; import org.sonar.api.batch.fs.InputComponent; diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/tracking/SourceHashHolder.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/tracking/SourceHashHolder.java index 1a6c04912b7..7d9e32b27ae 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/tracking/SourceHashHolder.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/tracking/SourceHashHolder.java @@ -19,13 +19,13 @@ */ package org.sonar.scanner.issue.tracking; -import com.google.common.collect.ImmutableSet; import org.sonar.api.batch.fs.InputFile.Status; import org.sonar.api.batch.fs.internal.DefaultInputFile; import javax.annotation.CheckForNull; import java.util.Collection; +import java.util.Collections; public class SourceHashHolder { @@ -69,7 +69,7 @@ public class SourceHashHolder { public Collection getNewLinesMatching(Integer originLine) { FileHashes reference = getHashedReference(); if (reference == null) { - return ImmutableSet.of(); + return Collections.emptySet(); } else { return getHashedSource().getLinesForHash(reference.getHash(originLine)); } diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/phases/PhasesTimeProfiler.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/phases/PhasesTimeProfiler.java index 9d22f5409f9..e2688dcf468 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/phases/PhasesTimeProfiler.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/phases/PhasesTimeProfiler.java @@ -62,7 +62,7 @@ public class PhasesTimeProfiler implements SensorExecutionHandler, SensorsPhaseH } } - private ClassLoader getSensorClassLoader(Sensor sensor) { + private static ClassLoader getSensorClassLoader(Sensor sensor) { if (sensor instanceof SensorWrapper) { SensorWrapper wrapper = (SensorWrapper) sensor; return wrapper.wrappedSensor().getClass().getClassLoader(); diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/phases/PostJobsExecutor.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/phases/PostJobsExecutor.java index 881a81df796..de3a57f3a9b 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/phases/PostJobsExecutor.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/phases/PostJobsExecutor.java @@ -19,7 +19,7 @@ */ package org.sonar.scanner.phases; -import com.google.common.collect.Lists; +import java.util.ArrayList; import java.util.Collection; import org.apache.commons.lang.StringUtils; import org.sonar.api.batch.PostJob; @@ -50,9 +50,9 @@ public class PostJobsExecutor { public void execute(SensorContext context) { Collection postJobs = selector.select(PostJob.class, module, true, null); - eventBus.fireEvent(new PostJobPhaseEvent(Lists.newArrayList(postJobs), true)); + eventBus.fireEvent(new PostJobPhaseEvent(new ArrayList<>(postJobs), true)); execute(context, postJobs); - eventBus.fireEvent(new PostJobPhaseEvent(Lists.newArrayList(postJobs), false)); + eventBus.fireEvent(new PostJobPhaseEvent(new ArrayList<>(postJobs), false)); } private void execute(SensorContext context, Collection postJobs) { diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/postjob/DefaultPostJobContext.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/postjob/DefaultPostJobContext.java index a647c150cce..5222166320e 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/postjob/DefaultPostJobContext.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/postjob/DefaultPostJobContext.java @@ -19,9 +19,10 @@ */ package org.sonar.scanner.postjob; -import com.google.common.base.Function; -import com.google.common.base.Predicate; -import com.google.common.collect.Iterables; +import java.util.function.Predicate; +import java.util.stream.Collectors; +import java.util.stream.StreamSupport; + import javax.annotation.Nullable; import org.sonar.api.batch.AnalysisMode; import org.sonar.api.batch.fs.InputComponent; @@ -63,7 +64,10 @@ public class DefaultPostJobContext implements PostJobContext { if (!analysisMode.isIssues()) { throw new UnsupportedOperationException("Issues are only available to PostJobs in 'issues' mode."); } - return Iterables.transform(Iterables.filter(cache.all(), new ResolvedPredicate(false)), new IssueTransformer()); + return StreamSupport.stream(cache.all().spliterator(), false) + .filter(new ResolvedPredicate(false)) + .map(DefaultIssueWrapper::new) + .collect(Collectors.toList()); } @Override @@ -71,7 +75,10 @@ public class DefaultPostJobContext implements PostJobContext { if (!analysisMode.isIssues()) { throw new UnsupportedOperationException("Resolved issues are only available to PostJobs in 'issues' mode."); } - return Iterables.transform(Iterables.filter(cache.all(), new ResolvedPredicate(true)), new IssueTransformer()); + return StreamSupport.stream(cache.all().spliterator(), false) + .filter(new ResolvedPredicate(true)) + .map(DefaultIssueWrapper::new) + .collect(Collectors.toList()); } private class DefaultIssueWrapper implements PostJobIssue { @@ -123,13 +130,6 @@ public class DefaultPostJobContext implements PostJobContext { } } - private class IssueTransformer implements Function { - @Override - public PostJobIssue apply(TrackedIssue input) { - return new DefaultIssueWrapper(input); - } - } - private static class ResolvedPredicate implements Predicate { private final boolean resolved; @@ -138,7 +138,7 @@ public class DefaultPostJobContext implements PostJobContext { } @Override - public boolean apply(@Nullable TrackedIssue issue) { + public boolean test(@Nullable TrackedIssue issue) { if (issue != null) { return resolved ? issue.resolution() != null : issue.resolution() == null; } diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/report/ComponentsPublisher.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/report/ComponentsPublisher.java index d51d3a4b1a4..f53c9c9e311 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/report/ComponentsPublisher.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/report/ComponentsPublisher.java @@ -20,6 +20,7 @@ package org.sonar.scanner.report; import java.util.Collection; +import java.util.stream.Collectors; import javax.annotation.CheckForNull; import org.apache.commons.lang.StringUtils; @@ -36,7 +37,6 @@ import org.sonar.api.batch.fs.internal.DefaultInputModule; import org.sonar.api.batch.fs.internal.InputComponentTree; import org.sonar.api.batch.fs.internal.InputModuleHierarchy; import org.sonar.core.util.CloseableIterator; -import org.sonar.core.util.stream.Collectors; import org.sonar.scanner.protocol.output.ScannerReport; import org.sonar.scanner.protocol.output.ScannerReportReader; import org.sonar.scanner.protocol.output.ScannerReport.Component.ComponentType; diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/report/ContextPropertiesPublisher.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/report/ContextPropertiesPublisher.java index 60428aaa7fc..260ec9b4ce8 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/report/ContextPropertiesPublisher.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/report/ContextPropertiesPublisher.java @@ -19,16 +19,17 @@ */ package org.sonar.scanner.report; -import com.google.common.base.Function; -import com.google.common.collect.Iterables; import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; +import java.util.stream.Stream; + import javax.annotation.Nonnull; import org.sonar.api.config.Settings; import org.sonar.scanner.protocol.output.ScannerReport; import org.sonar.scanner.protocol.output.ScannerReportWriter; import org.sonar.scanner.repository.ContextPropertiesCache; -import static com.google.common.collect.FluentIterable.from; import static org.sonar.core.config.WebhookProperties.ANALYSIS_PROPERTY_PREFIX; public class ContextPropertiesPublisher implements ReportPublisherStep { @@ -46,16 +47,15 @@ public class ContextPropertiesPublisher implements ReportPublisherStep { MapEntryToContextPropertyFunction transformer = new MapEntryToContextPropertyFunction(); // properties defined programmatically by plugins - Iterable fromCache = from(cache.getAll().entrySet()) - .transform(transformer); + Stream fromCache = cache.getAll().entrySet().stream().map(transformer); // properties that are automatically included to report so that // they can be included to webhook payloads - Iterable fromSettings = from(settings.getProperties().entrySet()) + Stream fromSettings = settings.getProperties().entrySet().stream() .filter(e -> e.getKey().startsWith(ANALYSIS_PROPERTY_PREFIX)) - .transform(transformer); + .map(transformer); - writer.writeContextProperties(Iterables.concat(fromCache, fromSettings)); + writer.writeContextProperties(Stream.concat(fromCache, fromSettings).collect(Collectors.toList())); } private static final class MapEntryToContextPropertyFunction implements Function, ScannerReport.ContextProperty> { diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/report/MeasuresPublisher.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/report/MeasuresPublisher.java index ba283458e14..df616624a4e 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/report/MeasuresPublisher.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/report/MeasuresPublisher.java @@ -23,6 +23,7 @@ import com.google.common.collect.Iterables; import java.io.Serializable; import java.util.Collections; import java.util.Map; +import java.util.stream.Collectors; import java.util.stream.StreamSupport; import org.sonar.api.batch.fs.InputComponent; @@ -35,7 +36,6 @@ import org.sonar.api.measures.CoreMetrics; import org.sonar.api.test.MutableTestPlan; import org.sonar.api.test.TestCase.Status; import org.sonar.api.utils.KeyValueFormat; -import org.sonar.core.util.stream.Collectors; import org.sonar.scanner.deprecated.test.TestPlanBuilder; import org.sonar.scanner.protocol.output.ScannerReport; import org.sonar.scanner.protocol.output.ScannerReport.Measure.BoolValue; diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/report/ReportPublisher.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/report/ReportPublisher.java index e0c50ecb416..1debaa7a665 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/report/ReportPublisher.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/report/ReportPublisher.java @@ -21,13 +21,15 @@ package org.sonar.scanner.report; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Throwables; -import com.google.common.io.Files; + import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.Writer; import java.net.URL; import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.LinkedHashMap; import java.util.Map; import javax.annotation.Nullable; @@ -222,8 +224,8 @@ public class ReportPublisher implements Startable { } private void dumpMetadata(Map metadata) { - File file = new File(projectReactor.getRoot().getWorkDir(), METADATA_DUMP_FILENAME); - try (Writer output = Files.newWriter(file, StandardCharsets.UTF_8)) { + Path file = projectReactor.getRoot().getWorkDir().toPath().resolve(METADATA_DUMP_FILENAME); + try (Writer output = Files.newBufferedWriter(file, StandardCharsets.UTF_8)) { for (Map.Entry entry : metadata.entrySet()) { output.write(entry.getKey()); output.write("="); diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/DefaultServerIssuesLoader.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/DefaultServerIssuesLoader.java index 6c796eae544..77417c3448b 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/DefaultServerIssuesLoader.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/DefaultServerIssuesLoader.java @@ -19,9 +19,10 @@ */ package org.sonar.scanner.repository; -import com.google.common.base.Function; import java.io.IOException; import java.io.InputStream; +import java.util.function.Function; + import org.apache.commons.io.IOUtils; import org.sonar.scanner.bootstrap.ScannerWsClient; import org.sonar.scanner.protocol.input.ScannerInput.ServerIssue; diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/ServerIssuesLoader.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/ServerIssuesLoader.java index 9d88cc7ff04..04bf5849806 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/ServerIssuesLoader.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/ServerIssuesLoader.java @@ -19,7 +19,8 @@ */ package org.sonar.scanner.repository; -import com.google.common.base.Function; +import java.util.function.Function; + import org.sonar.scanner.protocol.input.ScannerInput.ServerIssue; public interface ServerIssuesLoader { diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/rule/ModuleQProfiles.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/rule/ModuleQProfiles.java index e777a1643a8..421a1b5b9d7 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/rule/ModuleQProfiles.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/rule/ModuleQProfiles.java @@ -22,12 +22,13 @@ package org.sonar.scanner.rule; import org.sonar.api.utils.DateUtils; import org.sonarqube.ws.QualityProfiles.SearchWsResponse.QualityProfile; -import com.google.common.collect.ImmutableMap; import org.sonar.api.batch.ScannerSide; import javax.annotation.CheckForNull; import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; import java.util.Map; /** @@ -40,17 +41,17 @@ public class ModuleQProfiles { private final Map byLanguage; public ModuleQProfiles(Collection profiles) { - ImmutableMap.Builder builder = ImmutableMap.builder(); + Map map = new HashMap<>(profiles.size()); for (QualityProfile qProfile : profiles) { - builder.put(qProfile.getLanguage(), + map.put(qProfile.getLanguage(), new QProfile() .setKey(qProfile.getKey()) .setName(qProfile.getName()) .setLanguage(qProfile.getLanguage()) .setRulesUpdatedAt(DateUtils.parseDateTime(qProfile.getRulesUpdatedAt()))); } - byLanguage = builder.build(); + byLanguage = Collections.unmodifiableMap(map); } public Collection findAll() { diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/rule/RuleFinderCompatibility.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/rule/RuleFinderCompatibility.java index ea78959f3c7..cefd47fa861 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/rule/RuleFinderCompatibility.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/rule/RuleFinderCompatibility.java @@ -22,6 +22,8 @@ package org.sonar.scanner.rule; import java.util.Arrays; import java.util.Collection; import java.util.Collections; +import java.util.stream.Collectors; + import javax.annotation.CheckForNull; import javax.annotation.Nullable; import org.apache.commons.lang.builder.ReflectionToStringBuilder; @@ -31,7 +33,6 @@ import org.sonar.api.rule.RuleKey; import org.sonar.api.rules.Rule; import org.sonar.api.rules.RuleFinder; import org.sonar.api.rules.RuleQuery; -import org.sonar.core.util.stream.Collectors; public class RuleFinderCompatibility implements RuleFinder { @@ -87,7 +88,7 @@ public class RuleFinderCompatibility implements RuleFinder { private Collection byRepository(RuleQuery query) { return rules.findByRepository(query.getRepositoryKey()).stream() .map(RuleFinderCompatibility::toRule) - .collect(Collectors.toArrayList()); + .collect(Collectors.toList()); } private Collection byKey(RuleQuery query) { @@ -98,7 +99,7 @@ public class RuleFinderCompatibility implements RuleFinder { private Collection byInternalKey(RuleQuery query) { return rules.findByInternalKey(query.getRepositoryKey(), query.getConfigKey()).stream() .map(RuleFinderCompatibility::toRule) - .collect(Collectors.toArrayList()); + .collect(Collectors.toList()); } @CheckForNull diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/rule/RulesProfileProvider.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/rule/RulesProfileProvider.java index d96888bbe34..b1326433356 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/rule/RulesProfileProvider.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/rule/RulesProfileProvider.java @@ -19,7 +19,7 @@ */ package org.sonar.scanner.rule; -import com.google.common.collect.Lists; +import java.util.ArrayList; import java.util.Collection; import java.util.Map; import org.apache.commons.lang.StringUtils; @@ -57,12 +57,13 @@ public class RulesProfileProvider extends ProviderAdapter { if (qProfile != null) { return new RulesProfileWrapper(select(qProfile, activeRules)); } - return new RulesProfileWrapper(Lists.newArrayList()); + return new RulesProfileWrapper(new ArrayList<>()); } private static RulesProfile loadProfiles(ModuleQProfiles qProfiles, ActiveRules activeRules) { - Collection dtos = Lists.newArrayList(); - for (QProfile qProfile : qProfiles.findAll()) { + Collection profiles = qProfiles.findAll(); + Collection dtos = new ArrayList<>(profiles.size()); + for (QProfile qProfile : profiles) { dtos.add(select(qProfile, activeRules)); } return new RulesProfileWrapper(dtos); diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/rule/RulesProfileWrapper.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/rule/RulesProfileWrapper.java index d71448d21cc..772891b7b9c 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/rule/RulesProfileWrapper.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/rule/RulesProfileWrapper.java @@ -19,7 +19,6 @@ */ package org.sonar.scanner.rule; -import com.google.common.collect.Lists; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.sonar.api.profiles.RulesProfile; @@ -29,6 +28,7 @@ import org.sonar.api.utils.SonarException; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.List; /** @@ -51,7 +51,7 @@ public class RulesProfileWrapper extends RulesProfile { } public RulesProfileWrapper(RulesProfile profile) { - this.profiles = Lists.newArrayList(profile); + this.profiles = Collections.singletonList(profile); this.singleLanguageProfile = profile; } diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/ModuleSettings.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/ModuleSettings.java index c5f4dbaa3d7..b167347ad0c 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/ModuleSettings.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/ModuleSettings.java @@ -19,7 +19,7 @@ */ package org.sonar.scanner.scan; -import com.google.common.collect.Lists; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -79,7 +79,7 @@ public class ModuleSettings extends Settings { * From root to given project */ static List getTopDownParentProjects(ProjectDefinition project) { - List result = Lists.newArrayList(); + List result = new ArrayList<>(); ProjectDefinition p = project; while (p != null) { result.add(0, p); diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/filesystem/DefaultModuleFileSystem.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/filesystem/DefaultModuleFileSystem.java index 3baf5893654..da55a202d6c 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/filesystem/DefaultModuleFileSystem.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/filesystem/DefaultModuleFileSystem.java @@ -20,9 +20,9 @@ package org.sonar.scanner.scan.filesystem; import com.google.common.annotations.VisibleForTesting; -import com.google.common.collect.Lists; import java.io.File; import java.nio.charset.Charset; +import java.util.ArrayList; import java.util.List; import org.apache.commons.lang.StringUtils; import org.sonar.api.CoreProperties; @@ -42,8 +42,8 @@ public class DefaultModuleFileSystem extends DefaultFileSystem { private FileIndexer indexer; private Settings settings; - private List sourceDirsOrFiles = Lists.newArrayList(); - private List testDirsOrFiles = Lists.newArrayList(); + private List sourceDirsOrFiles = new ArrayList<>(); + private List testDirsOrFiles = new ArrayList<>(); private boolean initialized; private Charset charset = null; diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/filesystem/LanguageDetection.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/filesystem/LanguageDetection.java index 847f3f2f364..50b4c8cdf29 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/filesystem/LanguageDetection.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/filesystem/LanguageDetection.java @@ -20,9 +20,9 @@ package org.sonar.scanner.scan.filesystem; import com.google.common.base.Joiner; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; import java.text.MessageFormat; +import java.util.ArrayList; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import javax.annotation.CheckForNull; @@ -49,8 +49,8 @@ public class LanguageDetection { /** * Lower-case extension -> languages */ - private final Map patternsByLanguage = Maps.newLinkedHashMap(); - private final List languagesToConsider = Lists.newArrayList(); + private final Map patternsByLanguage = new LinkedHashMap<>(); + private final List languagesToConsider = new ArrayList<>(); private final String forcedLanguage; public LanguageDetection(Settings settings, LanguagesRepository languages) { diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/filesystem/ModuleFileSystemInitializer.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/filesystem/ModuleFileSystemInitializer.java index e0bdd64dc4b..f37c3267b0b 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/filesystem/ModuleFileSystemInitializer.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/filesystem/ModuleFileSystemInitializer.java @@ -19,8 +19,8 @@ */ package org.sonar.scanner.scan.filesystem; -import com.google.common.collect.Lists; import java.io.File; +import java.util.ArrayList; import java.util.List; import org.apache.commons.io.FileUtils; import org.sonar.api.batch.ScannerSide; @@ -36,8 +36,8 @@ public class ModuleFileSystemInitializer { private File baseDir; private File workingDir; - private List sourceDirsOrFiles = Lists.newArrayList(); - private List testDirsOrFiles = Lists.newArrayList(); + private List sourceDirsOrFiles = new ArrayList<>(); + private List testDirsOrFiles = new ArrayList<>(); public ModuleFileSystemInitializer(ProjectDefinition module, TempFolder tempUtils, PathResolver pathResolver) { baseDir = module.getBaseDir(); diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/measure/DeprecatedMetricFinder.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/measure/DeprecatedMetricFinder.java index ef64f649cf2..8507fbbfc69 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/measure/DeprecatedMetricFinder.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/measure/DeprecatedMetricFinder.java @@ -19,9 +19,9 @@ */ package org.sonar.scanner.scan.measure; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; import java.util.Collection; +import java.util.LinkedHashMap; +import java.util.LinkedList; import java.util.List; import java.util.Map; import org.sonar.api.measures.Metric; @@ -30,8 +30,8 @@ import org.sonar.scanner.repository.MetricsRepository; public final class DeprecatedMetricFinder implements MetricFinder { - private Map metricsByKey = Maps.newLinkedHashMap(); - private Map metricsById = Maps.newLinkedHashMap(); + private Map metricsByKey = new LinkedHashMap<>(); + private Map metricsById = new LinkedHashMap<>(); public DeprecatedMetricFinder(MetricsRepository metricsRepository) { for (Metric metric : metricsRepository.metrics()) { @@ -52,7 +52,7 @@ public final class DeprecatedMetricFinder implements MetricFinder { @Override public Collection findAll(List metricKeys) { - List result = Lists.newLinkedList(); + List result = new LinkedList<>(); for (String metricKey : metricKeys) { Metric metric = findByKey(metricKey); if (metric != null) { diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/report/ResourceReport.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/report/ResourceReport.java index fb6782b3d91..8a70a49b7d5 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/report/ResourceReport.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/report/ResourceReport.java @@ -19,9 +19,10 @@ */ package org.sonar.scanner.scan.report; -import com.google.common.collect.Maps; import java.util.ArrayList; import java.util.Collections; +import java.util.EnumMap; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; @@ -40,13 +41,13 @@ import org.sonar.scanner.issue.tracking.TrackedIssue; public final class ResourceReport { private final InputComponent component; private final IssueVariation total = new IssueVariation(); - private final Map ruleReportByRuleKey = Maps.newHashMap(); + private final Map ruleReportByRuleKey = new HashMap<>(); private List issues = new ArrayList<>(); - private Map> issuesPerLine = Maps.newHashMap(); - private Map> newIssuesPerLine = Maps.newHashMap(); - private Map issuesByRule = Maps.newHashMap(); - private Map issuesBySeverity = Maps.newHashMap(); + private Map> issuesPerLine = new HashMap<>(); + private Map> newIssuesPerLine = new HashMap<>(); + private Map issuesByRule = new HashMap<>(); + private Map issuesBySeverity = new EnumMap<>(RulePriority.class); public ResourceReport(InputComponent component) { this.component = component; diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/source/CodeColorizers.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/source/CodeColorizers.java index c30dd8ea091..74d3672d506 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/source/CodeColorizers.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/source/CodeColorizers.java @@ -19,13 +19,13 @@ */ package org.sonar.scanner.source; -import com.google.common.collect.Lists; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.io.Reader; import java.nio.charset.Charset; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -62,7 +62,7 @@ public class CodeColorizers { * Used when no plugin is defining some CodeColorizerFormat */ public CodeColorizers() { - this(Lists.newArrayList()); + this(new ArrayList<>()); } @CheckForNull diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/source/ZeroCoverageSensor.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/source/ZeroCoverageSensor.java index 0d2b51a3f70..4ae016a71dc 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/source/ZeroCoverageSensor.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/source/ZeroCoverageSensor.java @@ -19,10 +19,11 @@ */ package org.sonar.scanner.source; -import com.google.common.base.Function; -import com.google.common.collect.Sets; import java.util.Map; import java.util.Set; +import java.util.function.Function; +import java.util.stream.StreamSupport; + import org.sonar.api.batch.Phase; import org.sonar.api.batch.fs.FileSystem; import org.sonar.api.batch.fs.InputFile; @@ -36,11 +37,11 @@ import org.sonar.api.batch.sensor.coverage.NewCoverage; import org.sonar.api.batch.sensor.measure.internal.DefaultMeasure; import org.sonar.api.measures.CoreMetrics; import org.sonar.api.utils.KeyValueFormat; +import org.sonar.core.util.stream.Collectors; import org.sonar.scanner.scan.measure.MeasureCache; import org.sonar.scanner.sensor.coverage.CoverageExclusions; -import static com.google.common.collect.Iterables.transform; -import static com.google.common.collect.Sets.newHashSet; +import com.google.common.collect.Sets; @Phase(name = Phase.Name.POST) public final class ZeroCoverageSensor implements Sensor { @@ -101,9 +102,10 @@ public final class ZeroCoverageSensor implements Sensor { } private boolean isCoverageMeasuresAlreadyDefined(InputFile f) { - Set metricKeys = newHashSet(transform(measureCache.byComponentKey(f.key()), new MeasureToMetricKey())); + Set metricKeys = StreamSupport.stream(measureCache.byComponentKey(f.key()).spliterator(), false) + .map(new MeasureToMetricKey()).collect(Collectors.toSet()); Function metricToKey = new MetricToKey(); - Set allCoverageMetricKeys = newHashSet(transform(CoverageType.UNIT.allMetrics(), metricToKey)); + Set allCoverageMetricKeys = CoverageType.UNIT.allMetrics().stream().map(metricToKey).collect(Collectors.toSet()); return !Sets.intersection(metricKeys, allCoverageMetricKeys).isEmpty(); } diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/storage/Storages.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/storage/Storages.java index 392f29c07b3..a8b403732b4 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/storage/Storages.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/storage/Storages.java @@ -20,7 +20,6 @@ package org.sonar.scanner.storage; import com.google.common.base.Preconditions; -import com.google.common.collect.Maps; import com.persistit.Exchange; import com.persistit.Persistit; import com.persistit.Value; @@ -28,6 +27,8 @@ import com.persistit.Volume; import com.persistit.encoding.CoderManager; import com.persistit.encoding.ValueCoder; import com.persistit.exception.PersistitException; + +import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import org.picocontainer.Startable; @@ -35,7 +36,7 @@ import org.sonar.api.batch.ScannerSide; @ScannerSide public class Storages implements Startable { - private final Map cacheMap = Maps.newHashMap(); + private final Map cacheMap = new HashMap<>(); private Persistit persistit; private Volume volume; diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/mediumtest/ScannerMediumTester.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/mediumtest/ScannerMediumTester.java index 83bbeff529f..d73e2703efb 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/mediumtest/ScannerMediumTester.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/mediumtest/ScannerMediumTester.java @@ -19,7 +19,6 @@ */ package org.sonar.scanner.mediumtest; -import com.google.common.base.Function; import com.google.common.collect.HashBasedTable; import com.google.common.collect.Table; import java.io.File; @@ -37,6 +36,8 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Properties; +import java.util.function.Function; + import javax.annotation.Nullable; import org.apache.commons.io.FileUtils; import org.sonar.api.CoreProperties; diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/repository/DefaultServerIssuesLoaderTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/repository/DefaultServerIssuesLoaderTest.java index 00351ef8e61..09b6b8e281a 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/repository/DefaultServerIssuesLoaderTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/repository/DefaultServerIssuesLoaderTest.java @@ -21,10 +21,8 @@ package org.sonar.scanner.repository; import org.sonar.scanner.WsTestUtil; import org.sonar.scanner.bootstrap.ScannerWsClient; -import org.sonar.scanner.protocol.input.ScannerInput; import org.sonar.scanner.protocol.input.ScannerInput.ServerIssue; import org.sonar.scanner.repository.DefaultServerIssuesLoader; -import com.google.common.base.Function; import org.junit.Before; import org.junit.Test; import java.io.ByteArrayInputStream; @@ -33,6 +31,7 @@ import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; +import java.util.function.Function; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; @@ -61,13 +60,9 @@ public class DefaultServerIssuesLoaderTest { WsTestUtil.mockStream(wsClient, "/batch/issues.protobuf?key=foo", is); final List result = new ArrayList<>(); - loader.load("foo", new Function() { - - @Override - public Void apply(ServerIssue input) { - result.add(input); - return null; - } + loader.load("foo", issue -> { + result.add(issue); + return null; }); assertThat(result).extracting("key").containsExactly("ab1", "ab2"); -- 2.39.5