]> source.dussan.org Git - sonarqube.git/commitdiff
Decrease coupling with Guava
authorSimon Brandhof <simon.brandhof@sonarsource.com>
Wed, 19 Jul 2017 19:48:19 +0000 (21:48 +0200)
committerSimon Brandhof <simon.brandhof@sonarsource.com>
Tue, 25 Jul 2017 21:02:07 +0000 (23:02 +0200)
39 files changed:
server/sonar-db-dao/src/main/java/org/sonar/db/component/ComponentKeyUpdaterDao.java
server/sonar-server/src/main/java/org/sonar/server/component/ws/TreeAction.java
server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/issue/ComponentsWithUnprocessedIssues.java
server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/PersistProjectLinksStep.java
server/sonar-server/src/main/java/org/sonar/server/issue/AbstractChangeTagsAction.java
server/sonar-server/src/main/java/org/sonar/server/issue/AddTagsAction.java
server/sonar-server/src/main/java/org/sonar/server/issue/IssueFieldsSetter.java
server/sonar-server/src/main/java/org/sonar/server/issue/IssueQueryFactory.java
server/sonar-server/src/main/java/org/sonar/server/issue/RemoveTagsAction.java
server/sonar-server/src/main/java/org/sonar/server/issue/workflow/StateMachine.java
server/sonar-server/src/main/java/org/sonar/server/issue/ws/TagsAction.java
server/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileBackuperImpl.java
server/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileComparison.java
server/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileResetImpl.java
server/sonar-server/src/main/java/org/sonar/server/rule/ws/SearchAction.java
server/sonar-server/src/main/java/org/sonar/server/rule/ws/UpdateAction.java
server/sonar-server/src/main/java/org/sonar/server/user/ws/DeactivateAction.java
server/sonar-server/src/main/java/org/sonar/server/user/ws/UpdateAction.java
server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/SearchAction.java
sonar-core/src/test/java/org/sonar/core/util/UuidsTest.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/internal/OrPredicate.java
sonar-plugin-api/src/main/java/org/sonar/api/config/AesCipher.java
sonar-plugin-api/src/main/java/org/sonar/api/config/License.java
sonar-plugin-api/src/main/java/org/sonar/api/config/PropertyDefinition.java
sonar-plugin-api/src/main/java/org/sonar/api/rules/AnnotationRuleParser.java
sonar-plugin-api/src/main/java/org/sonar/api/rules/XMLRuleParser.java
sonar-plugin-api/src/main/java/org/sonar/api/server/rule/RuleTagsToTypeConverter.java
sonar-plugin-api/src/main/java/org/sonar/api/server/rule/RulesDefinition.java
sonar-plugin-api/src/main/java/org/sonar/api/server/rule/RulesDefinitionAnnotationLoader.java
sonar-plugin-api/src/main/java/org/sonar/api/server/ws/LocalConnector.java
sonar-plugin-api/src/main/java/org/sonar/api/server/ws/Request.java
sonar-plugin-api/src/main/java/org/sonar/api/server/ws/WebService.java
sonar-plugin-api/src/main/java/org/sonar/api/task/TaskDefinition.java
sonar-plugin-api/src/main/java/org/sonar/api/user/UserGroupValidation.java
sonar-plugin-api/src/main/java/org/sonar/api/utils/UriReader.java
sonar-plugin-api/src/main/java/org/sonar/api/utils/internal/WorkDuration.java
sonar-plugin-api/src/main/java/org/sonar/api/web/ServletFilter.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/ScannerPluginPredicate.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/ignore/pattern/IssuePattern.java

index b954a67e27f0b97eba2e004c4210cd87711daf55..c001028bcf6c7529f7b42b62a0d07b68a696b7e5 100644 (file)
@@ -23,8 +23,8 @@ import com.google.common.annotations.VisibleForTesting;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -132,7 +132,7 @@ public class ComponentKeyUpdaterDao implements Dao {
 
   private static Set<ResourceDto> collectAllModules(String projectUuid, String stringToReplace, ComponentKeyUpdaterMapper mapper) {
     ResourceDto project = mapper.selectProject(projectUuid);
-    Set<ResourceDto> modules = Sets.newHashSet();
+    Set<ResourceDto> modules = new HashSet<>();
     if (project.getKey().contains(stringToReplace)) {
       modules.add(project);
     }
index aa67d804a534aaffd5a1f6415cca915b927d015a..96d358fa201be1aa9fbf95aa1ef68dbd73280ea3 100644 (file)
@@ -25,6 +25,7 @@ import com.google.common.collect.ImmutableSortedSet;
 import com.google.common.collect.Ordering;
 import com.google.common.collect.Sets;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
@@ -54,7 +55,6 @@ import org.sonarqube.ws.WsComponents.TreeWsResponse;
 import org.sonarqube.ws.client.component.TreeWsRequest;
 
 import static com.google.common.collect.FluentIterable.from;
-import static com.google.common.collect.Sets.newHashSet;
 import static java.lang.String.CASE_INSENSITIVE_ORDER;
 import static java.lang.String.format;
 import static java.util.Collections.emptyMap;
@@ -65,8 +65,8 @@ import static org.sonar.db.component.ComponentTreeQuery.Strategy.LEAVES;
 import static org.sonar.server.component.ComponentFinder.ParamNames.COMPONENT_ID_AND_COMPONENT;
 import static org.sonar.server.component.ws.ComponentDtoToWsComponent.componentDtoToWsComponent;
 import static org.sonar.server.ws.KeyExamples.KEY_PROJECT_EXAMPLE_001;
-import static org.sonar.server.ws.WsParameterBuilder.createQualifiersParameter;
 import static org.sonar.server.ws.WsParameterBuilder.QualifierParameterContext.newQualifierParameterContext;
+import static org.sonar.server.ws.WsParameterBuilder.createQualifiersParameter;
 import static org.sonar.server.ws.WsUtils.checkRequest;
 import static org.sonar.server.ws.WsUtils.writeProtobuf;
 import static org.sonarqube.ws.client.component.ComponentsWsParameters.ACTION_TREE;
@@ -261,7 +261,7 @@ public class TreeAction implements ComponentsWsAction {
       return requestQualifiers;
     }
 
-    Sets.SetView<String> qualifiersIntersection = Sets.intersection(newHashSet(childrenQualifiers), newHashSet(requestQualifiers));
+    Sets.SetView<String> qualifiersIntersection = Sets.intersection(new HashSet<>(childrenQualifiers), new HashSet<>(requestQualifiers));
 
     return new ArrayList<>(qualifiersIntersection);
   }
index 3541851b4d0a88f74e2f90dc5a73c3fc02773cc9..43fafd7dfe328d15ce3ba21934d646b450badcce 100644 (file)
  */
 package org.sonar.server.computation.task.projectanalysis.issue;
 
+import java.util.HashSet;
 import java.util.Set;
 import javax.annotation.CheckForNull;
 
 import static com.google.common.base.Preconditions.checkState;
-import static com.google.common.collect.Sets.newHashSet;
 import static java.util.Objects.requireNonNull;
 
 public class ComponentsWithUnprocessedIssues {
@@ -34,7 +34,7 @@ public class ComponentsWithUnprocessedIssues {
   public void setUuids(Set<String> uuids) {
     requireNonNull(uuids, "Uuids cannot be null");
     checkState(this.uuids == null, "Uuids have already been initialized");
-    this.uuids = newHashSet(uuids);
+    this.uuids = new HashSet<>(uuids);
   }
 
   public void remove(String uuid) {
index 0734c07c9fbec97d512dfe9a2b922b093a84b81c..91b8f31da9b1c9816825dab70d8eaed07008f7a3 100644 (file)
@@ -20,6 +20,7 @@
 package org.sonar.server.computation.task.projectanalysis.step;
 
 import com.google.common.collect.ImmutableMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
@@ -39,7 +40,6 @@ import org.sonar.server.computation.task.projectanalysis.component.TreeRootHolde
 import org.sonar.server.computation.task.projectanalysis.component.TypeAwareVisitorAdapter;
 import org.sonar.server.computation.task.step.ComputationStep;
 
-import static com.google.common.collect.Sets.newHashSet;
 import static org.sonar.server.computation.task.projectanalysis.component.ComponentVisitor.Order.PRE_ORDER;
 
 /**
@@ -105,7 +105,7 @@ public class PersistProjectLinksStep implements ComputationStep {
     }
 
     private void mergeLinks(DbSession session, String componentUuid, List<ScannerReport.ComponentLink> links, List<ComponentLinkDto> previousLinks) {
-      Set<String> linkType = newHashSet();
+      Set<String> linkType = new HashSet<>();
       for (final ScannerReport.ComponentLink link : links) {
         String type = convertType(link.getType());
         if (!linkType.contains(type)) {
index 24bcaefca2b7f3860ca0874e853a8e27d4438190..78cc97af888295f90ef14d816e5c95e7e8aa0b9b 100644 (file)
@@ -21,8 +21,8 @@ package org.sonar.server.issue;
 
 import com.google.common.base.Splitter;
 import com.google.common.base.Strings;
-import com.google.common.collect.Sets;
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 import org.sonar.api.issue.condition.IsUnResolved;
@@ -55,13 +55,13 @@ public abstract class AbstractChangeTagsAction extends Action {
   @Override
   public boolean execute(Map<String, Object> properties, Context context) {
     Collection<String> tags = getTagsToSet(context, parseTags(properties));
-    return issueUpdater.setTags((DefaultIssue) context.issue(), tags, context.issueChangeContext());
+    return issueUpdater.setTags(context.issue(), tags, context.issueChangeContext());
   }
 
   protected abstract Collection<String> getTagsToSet(Context context, Collection<String> tagsFromParams);
 
   private Set<String> parseTags(Map<String, Object> properties) {
-    Set<String> result = Sets.newHashSet();
+    Set<String> result = new HashSet<>();
     String tagsString = (String) properties.get(TAGS_PARAMETER);
     if (!Strings.isNullOrEmpty(tagsString)) {
       for (String tag : TAGS_SPLITTER.split(tagsString)) {
index be36724b96a2d001cd56af6e9146a79fc8bcb2df..4a0b98f46f5a7f8d2fcdc51d830c1e0570bfedde 100644 (file)
@@ -19,8 +19,8 @@
  */
 package org.sonar.server.issue;
 
-import com.google.common.collect.Sets;
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.Set;
 import org.sonar.api.server.ServerSide;
 
@@ -35,7 +35,7 @@ public class AddTagsAction extends AbstractChangeTagsAction {
 
   @Override
   protected Collection<String> getTagsToSet(Context context, Collection<String> tagsFromParams) {
-    Set<String> allTags = Sets.newHashSet(context.issue().tags());
+    Set<String> allTags = new HashSet<>(context.issue().tags());
     allTags.addAll(tagsFromParams);
     return allTags;
   }
index 725d93d036a27fb160588a0738bbaa1433ea90a3..a1de892c458c34bed6a5bf179317611942d80fa7 100644 (file)
 package org.sonar.server.issue;
 
 import com.google.common.base.Joiner;
-import com.google.common.collect.Sets;
 import java.time.temporal.ChronoUnit;
 import java.util.Collection;
 import java.util.Date;
+import java.util.HashSet;
 import java.util.Locale;
 import java.util.Objects;
 import java.util.Set;
@@ -318,7 +318,7 @@ public class IssueFieldsSetter {
       .map(tag -> RuleTagFormat.validate(tag.toLowerCase(Locale.ENGLISH)))
       .collect(MoreCollectors.toSet());
 
-    Set<String> oldTags = Sets.newHashSet(issue.tags());
+    Set<String> oldTags = new HashSet<>(issue.tags());
     if (!oldTags.equals(newTags)) {
       issue.setFieldChange(context, TAGS,
         oldTags.isEmpty() ? null : CHANGELOG_TAG_JOINER.join(oldTags),
index 43f8cbedae08ee6eecc0a809a8e4b43f35b83dad..6c95b348096e2e355ccd6d3ae35b22a750e68510 100644 (file)
@@ -25,11 +25,11 @@ import com.google.common.base.Splitter;
 import com.google.common.base.Strings;
 import com.google.common.collect.Collections2;
 import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Date;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Locale;
 import java.util.Objects;
@@ -110,7 +110,7 @@ public class IssueQueryFactory {
         .facetMode(request.getFacetMode())
         .organizationUuid(convertOrganizationKeyToUuid(dbSession, request.getOrganization()));
 
-      Set<String> allComponentUuids = Sets.newHashSet();
+      Set<String> allComponentUuids = new HashSet<>();
       boolean effectiveOnComponentOnly = mergeDeprecatedComponentParameters(dbSession,
         request.getOnComponentOnly(),
         request.getComponents(),
@@ -203,12 +203,12 @@ public class IssueQueryFactory {
   }
 
   private boolean mergeDeprecatedComponentParameters(DbSession session, @Nullable Boolean onComponentOnly,
-    @Nullable Collection<String> components,
-    @Nullable Collection<String> componentUuids,
-    @Nullable Collection<String> componentKeys,
-    @Nullable Collection<String> componentRootUuids,
-    @Nullable Collection<String> componentRoots,
-    Set<String> allComponentUuids) {
+                                                     @Nullable Collection<String> components,
+                                                     @Nullable Collection<String> componentUuids,
+                                                     @Nullable Collection<String> componentKeys,
+                                                     @Nullable Collection<String> componentRootUuids,
+                                                     @Nullable Collection<String> componentRoots,
+                                                     Set<String> allComponentUuids) {
     boolean effectiveOnComponentOnly = false;
 
     checkArgument(atMostOneNonNullElement(components, componentUuids, componentKeys, componentRootUuids, componentRoots),
@@ -241,13 +241,13 @@ public class IssueQueryFactory {
   }
 
   private void addComponentParameters(IssueQuery.Builder builder, DbSession session,
-    boolean onComponentOnly,
-    Collection<String> componentUuids,
-    @Nullable Collection<String> projectUuids, @Nullable Collection<String> projectKeys,
-    @Nullable Collection<String> moduleUuids,
-    @Nullable Collection<String> directories,
-    @Nullable Collection<String> fileUuids,
-    @Nullable Collection<String> authors) {
+                                      boolean onComponentOnly,
+                                      Collection<String> componentUuids,
+                                      @Nullable Collection<String> projectUuids, @Nullable Collection<String> projectKeys,
+                                      @Nullable Collection<String> moduleUuids,
+                                      @Nullable Collection<String> directories,
+                                      @Nullable Collection<String> fileUuids,
+                                      @Nullable Collection<String> authors) {
 
     builder.onComponentOnly(onComponentOnly);
     if (onComponentOnly) {
@@ -326,8 +326,8 @@ public class IssueQueryFactory {
   }
 
   private static void addDirectories(IssueQuery.Builder builder, List<ComponentDto> directories) {
-    Collection<String> directoryModuleUuids = Sets.newHashSet();
-    Collection<String> directoryPaths = Sets.newHashSet();
+    Collection<String> directoryModuleUuids = new HashSet<>();
+    Collection<String> directoryPaths = new HashSet<>();
     for (ComponentDto directory : directories) {
       directoryModuleUuids.add(directory.moduleUuid());
       directoryPaths.add(directory.path());
index e561332537dfe07bf5367aea2ce8e867cb6eaf4b..3abfe5c10e1337f90c9a61c175d345ea1503f4f6 100644 (file)
@@ -19,8 +19,8 @@
  */
 package org.sonar.server.issue;
 
-import com.google.common.collect.Sets;
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.Set;
 import org.sonar.api.server.ServerSide;
 
@@ -35,7 +35,7 @@ public class RemoveTagsAction extends AbstractChangeTagsAction {
 
   @Override
   protected Collection<String> getTagsToSet(Context context, Collection<String> tagsFromParams) {
-    Set<String> newTags = Sets.newHashSet(context.issue().tags());
+    Set<String> newTags = new HashSet<>(context.issue().tags());
     newTags.removeAll(tagsFromParams);
     return newTags;
   }
index 8e8a508f4ca88d6cf77e0ccbe3d5ff54590fca6a..b84106f0e7fb5d8d5e757f2d421e7731b722b83d 100644 (file)
@@ -24,8 +24,8 @@ import com.google.common.collect.ArrayListMultimap;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ListMultimap;
-import com.google.common.collect.Sets;
 import java.util.Arrays;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -61,7 +61,7 @@ public class StateMachine {
   }
 
   public static class Builder {
-    private final Set<String> states = Sets.newLinkedHashSet();
+    private final Set<String> states = new LinkedHashSet<>();
     // transitions per originating state
     private final ListMultimap<String, Transition> outTransitions = ArrayListMultimap.create();
 
index 8bcb6e79ad05756ec0b75778c5c65fd8fc8f8814..fd97bac9dd81224fcdfcace59a5f6ee21da10752 100644 (file)
  */
 package org.sonar.server.issue.ws;
 
-import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
 import com.google.common.io.Resources;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 import java.util.Optional;
 import java.util.SortedSet;
+import java.util.TreeSet;
 import javax.annotation.Nullable;
 import org.sonar.api.server.ws.Request;
 import org.sonar.api.server.ws.Response;
@@ -97,10 +97,10 @@ public class TagsAction implements IssuesWsAction {
     Collection<String> issueTags = issueIndex.listTags(organization, textQuery, pageSize);
     Collection<String> ruleTags = ruleIndex.listTags(organization, textQuery, pageSize);
 
-    SortedSet<String> result = Sets.newTreeSet();
+    SortedSet<String> result = new TreeSet<>();
     result.addAll(issueTags);
     result.addAll(ruleTags);
-    List<String> resultAsList = Lists.newArrayList(result);
+    List<String> resultAsList = new ArrayList<>(result);
     return resultAsList.size() > pageSize && pageSize > 0 ? resultAsList.subList(0, pageSize) : resultAsList;
   }
 
index b8173696254d7a9e0654c945f02a3114bc463942..1536fcce774ca3db7d98e25d8f50d526e9e07634 100644 (file)
@@ -21,11 +21,12 @@ package org.sonar.server.qualityprofile;
 
 import com.google.common.base.Joiner;
 import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
 import java.io.Reader;
 import java.io.Writer;
+import java.util.ArrayList;
 import java.util.Comparator;
+import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -171,15 +172,15 @@ public class QProfileBackuperImpl implements QProfileBackuper {
   }
 
   private static List<RuleActivation> parseRuleActivations(SMInputCursor rulesCursor) throws XMLStreamException {
-    List<RuleActivation> activations = Lists.newArrayList();
-    Set<RuleKey> activatedKeys = Sets.newHashSet();
-    List<RuleKey> duplicatedKeys = Lists.newArrayList();
+    List<RuleActivation> activations = new ArrayList<>();
+    Set<RuleKey> activatedKeys = new HashSet<>();
+    List<RuleKey> duplicatedKeys = new ArrayList<>();
     while (rulesCursor.getNext() != null) {
       SMInputCursor ruleCursor = rulesCursor.childElementCursor();
       String repositoryKey = null;
       String key = null;
       String severity = null;
-      Map<String, String> parameters = Maps.newHashMap();
+      Map<String, String> parameters = new HashMap<>();
       while (ruleCursor.getNext() != null) {
         String nodeName = ruleCursor.getLocalName();
         if (StringUtils.equals(ATTRIBUTE_REPOSITORY_KEY, nodeName)) {
index e027f8644143ee855589b48ef3e3788c9eae791d..68514b928362b9e4e0b665ed4beee775c67ef623 100644 (file)
@@ -22,9 +22,9 @@ package org.sonar.server.qualityprofile;
 import com.google.common.base.Function;
 import com.google.common.collect.MapDifference;
 import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
 import java.util.Collection;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -53,7 +53,7 @@ public class QProfileComparison {
     Map<RuleKey, OrgActiveRuleDto> leftActiveRulesByRuleKey = loadActiveRules(dbSession, left);
     Map<RuleKey, OrgActiveRuleDto> rightActiveRulesByRuleKey = loadActiveRules(dbSession, right);
 
-    Set<RuleKey> allRules = Sets.newHashSet();
+    Set<RuleKey> allRules = new HashSet<>();
     allRules.addAll(leftActiveRulesByRuleKey.keySet());
     allRules.addAll(rightActiveRulesByRuleKey.keySet());
 
@@ -130,7 +130,7 @@ public class QProfileComparison {
     }
 
     public Collection<RuleKey> collectRuleKeys() {
-      Set<RuleKey> keys = Sets.newHashSet();
+      Set<RuleKey> keys = new HashSet<>();
       keys.addAll(inLeft.keySet());
       keys.addAll(inRight.keySet());
       keys.addAll(modified.keySet());
index 2d7e13bda02965cc049f5605549b3968b7c340a0..1ec211badc9218bfd1b9a55b05f3bdcbbd840721 100644 (file)
@@ -19,9 +19,9 @@
  */
 package org.sonar.server.qualityprofile;
 
-import com.google.common.collect.Sets;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 import org.sonar.api.rule.RuleKey;
@@ -54,7 +54,7 @@ public class QProfileResetImpl implements QProfileReset {
     requireNonNull(profile.getId(), "Quality profile must be persisted");
     checkArgument(!profile.isBuiltIn(), "Operation forbidden for built-in Quality Profile '%s'", profile.getKee());
     BulkChangeResult result = new BulkChangeResult();
-    Set<RuleKey> ruleToBeDeactivated = Sets.newHashSet();
+    Set<RuleKey> ruleToBeDeactivated = new HashSet<>();
     // Keep reference to all the activated rules before backup restore
     for (ActiveRuleDto activeRuleDto : db.activeRuleDao().selectByProfile(dbSession, profile)) {
       if (activeRuleDto.getInheritance() == null) {
index fb5a05efabce27d4543b2ea5d8964f77c20665b9..5a69d2110a62ff3bd242cb9884cbd7e6fdf0a616 100644 (file)
@@ -25,10 +25,10 @@ import com.google.common.collect.ListMultimap;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Ordering;
-import com.google.common.collect.Sets;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -407,7 +407,7 @@ public class SearchAction implements RulesWsAction {
       facet.clear().setProperty(facetName);
       Map<String, Long> facets = results.facets.get(facetName);
       if (facets != null) {
-        Set<String> itemsFromFacets = Sets.newHashSet();
+        Set<String> itemsFromFacets = new HashSet<>();
         for (Map.Entry<String, Long> facetValue : facets.entrySet()) {
           itemsFromFacets.add(facetValue.getKey());
           facet.addValues(value
index 52a04e174963038b4b043ba433c4ec7929b07aa9..599ba81c97eed6c2ea6eebcc88d00a6d26caa8ef 100644 (file)
@@ -20,7 +20,6 @@
 package org.sonar.server.rule.ws;
 
 import com.google.common.base.Splitter;
-import com.google.common.collect.Sets;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -48,6 +47,7 @@ import org.sonar.server.user.UserSession;
 import org.sonar.server.ws.WsUtils;
 import org.sonarqube.ws.Rules.UpdateResponse;
 
+import static com.google.common.collect.Sets.newHashSet;
 import static java.lang.String.format;
 import static java.util.Collections.singletonList;
 import static java.util.Optional.ofNullable;
@@ -241,7 +241,7 @@ public class UpdateAction implements RulesWsAction {
       if (StringUtils.isBlank(value)) {
         update.setTags(null);
       } else {
-        update.setTags(Sets.newHashSet(Splitter.on(',').omitEmptyStrings().trimResults().split(value)));
+        update.setTags(newHashSet(Splitter.on(',').omitEmptyStrings().trimResults().split(value)));
       }
     }
     // else do not touch this field
index a3f702db63ffc24bea91bbc32fef1a3aaf00e042..d85c4f86198c1d75abe918be4ddc6dc423954e63 100644 (file)
@@ -19,8 +19,8 @@
  */
 package org.sonar.server.user.ws;
 
-import com.google.common.collect.Sets;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 import java.util.stream.Collectors;
@@ -118,7 +118,7 @@ public class DeactivateAction implements UsersWsAction {
       try (JsonWriter json = response.newJsonWriter()) {
         json.beginObject();
         json.name("user");
-        Set<String> groups = Sets.newHashSet();
+        Set<String> groups = new HashSet<>();
         groups.addAll(dbClient.groupMembershipDao().selectGroupsByLogins(dbSession, singletonList(login)).get(login));
         userWriter.write(json, user, groups, UserJsonWriter.FIELDS);
         json.endObject();
index 7b9a1da6394de145b2b272832b8f6315777a0dfd..cd89f46d5dd847927feefb4843c1b719f2e71363 100644 (file)
@@ -19,8 +19,8 @@
  */
 package org.sonar.server.user.ws;
 
-import com.google.common.collect.Sets;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 import org.sonar.api.server.ws.Change;
@@ -125,7 +125,7 @@ public class UpdateAction implements UsersWsAction {
     try (JsonWriter json = response.newJsonWriter()) {
       json.beginObject();
       json.name("user");
-      Set<String> groups = Sets.newHashSet();
+      Set<String> groups = new HashSet<>();
       UserDto user = checkFound(dbClient.userDao().selectByLogin(dbSession, login), "User '%s' doesn't exist", login);
       groups.addAll(dbClient.groupMembershipDao().selectGroupsByLogins(dbSession, singletonList(login)).get(login));
       userWriter.write(json, user, groups, UserJsonWriter.FIELDS);
index cb0d1120da7a2a97012a22473c6241c74966e6cf..13632c5bc2447f572efd61b2edd80eed4436cf7a 100644 (file)
@@ -19,8 +19,8 @@
  */
 package org.sonar.server.usergroups.ws;
 
-import com.google.common.collect.Sets;
 import java.util.Arrays;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -115,7 +115,7 @@ public class SearchAction implements UserGroupsWsAction {
   }
 
   private static Set<String> neededFields(Request request) {
-    Set<String> fields = Sets.newHashSet();
+    Set<String> fields = new HashSet<>();
     List<String> fieldsFromRequest = request.paramAsStrings(Param.FIELDS);
     if (fieldsFromRequest == null || fieldsFromRequest.isEmpty()) {
       fields.addAll(ALL_FIELDS);
index c00a49c2c8f3d3ab6e18b8e7c4fc678c066800b9..9c5f12be1ec6e7125234fe7ee76dd758ff9492d8 100644 (file)
  */
 package org.sonar.core.util;
 
-import com.google.common.collect.Sets;
+import java.util.HashSet;
+import java.util.Set;
 import org.junit.Test;
 import org.sonar.test.TestUtils;
 
-import java.util.Set;
-
 import static org.assertj.core.api.Assertions.assertThat;
 
 public class UuidsTest {
 
   @Test
   public void create_unique() {
-    Set<String> all = Sets.newHashSet();
+    Set<String> all = new HashSet<>();
     for (int i = 0; i < 50; i++) {
       String uuid = Uuids.create();
       assertThat(uuid).isNotEmpty();
index 5f98bd9346aa218d6c85d4ae7ab85e3a4160cb28..b711b7c87efed454114d0cecf67071894ebddc26 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.api.batch.fs.internal;
 
-import com.google.common.annotations.VisibleForTesting;
 import org.sonar.api.batch.fs.FilePredicate;
 import org.sonar.api.batch.fs.InputFile;
 
@@ -65,7 +64,6 @@ class OrPredicate extends AbstractFilePredicate {
     return false;
   }
 
-  @VisibleForTesting
   Collection<FilePredicate> predicates() {
     return predicates;
   }
index c5afc2a36b1e76435c1184b5afc5e0af53266187..049c138dd00e8c692b8923a908f2cfbf8cec3f31 100644 (file)
  */
 package org.sonar.api.config;
 
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Throwables;
-import org.apache.commons.codec.binary.Base64;
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.lang.StringUtils;
-import org.sonar.api.CoreProperties;
-
-import javax.annotation.Nullable;
-import javax.crypto.KeyGenerator;
-import javax.crypto.SecretKey;
-import javax.crypto.spec.SecretKeySpec;
-
 import java.io.File;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.security.Key;
 import java.security.SecureRandom;
+import javax.annotation.Nullable;
+import javax.crypto.KeyGenerator;
+import javax.crypto.SecretKey;
+import javax.crypto.spec.SecretKeySpec;
+import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang.StringUtils;
+import org.sonar.api.CoreProperties;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
 
@@ -60,8 +56,10 @@ final class AesCipher implements Cipher {
       javax.crypto.Cipher cipher = javax.crypto.Cipher.getInstance(CRYPTO_KEY);
       cipher.init(javax.crypto.Cipher.ENCRYPT_MODE, loadSecretFile());
       return Base64.encodeBase64String(cipher.doFinal(clearText.getBytes(StandardCharsets.UTF_8.name())));
+    } catch (RuntimeException e) {
+      throw e;
     } catch (Exception e) {
-      throw Throwables.propagate(e);
+      throw new RuntimeException(e);
     }
   }
 
@@ -72,8 +70,10 @@ final class AesCipher implements Cipher {
       cipher.init(javax.crypto.Cipher.DECRYPT_MODE, loadSecretFile());
       byte[] cipherData = cipher.doFinal(Base64.decodeBase64(StringUtils.trim(encryptedText)));
       return new String(cipherData, StandardCharsets.UTF_8);
+    } catch (RuntimeException e) {
+      throw e;
     } catch (Exception e) {
-      throw Throwables.propagate(e);
+      throw new RuntimeException(e);
     }
   }
 
@@ -94,7 +94,6 @@ final class AesCipher implements Cipher {
     return loadSecretFileFromFile(path);
   }
 
-  @VisibleForTesting
   Key loadSecretFileFromFile(@Nullable String path) throws IOException {
     if (StringUtils.isBlank(path)) {
       throw new IllegalStateException("Secret key not found. Please set the property " + CoreProperties.ENCRYPTION_SECRET_KEY_PATH);
@@ -122,7 +121,6 @@ final class AesCipher implements Cipher {
     }
   }
 
-  @VisibleForTesting
   String getPathToSecretKey() {
     if (StringUtils.isBlank(pathToSecretKey)) {
       pathToSecretKey = new File(FileUtils.getUserDirectoryPath(), ".sonar/sonar-secret.txt").getPath();
index 6b3facf42bde9ec057955b76037f7c982c6a4268..435fc8dd6f42d1ee5f553067320b86cbb355a61a 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.api.config;
 
-import com.google.common.annotations.VisibleForTesting;
 import java.io.IOException;
 import java.io.StringReader;
 import java.nio.charset.StandardCharsets;
@@ -97,7 +96,6 @@ public final class License {
     return isExpired(new Date());
   }
 
-  @VisibleForTesting
   boolean isExpired(Date now) {
     Date date = getExpirationDate();
     if (date == null) {
@@ -125,7 +123,6 @@ public final class License {
     return readPlainText(new String(Base64.decodeBase64(base64.getBytes(StandardCharsets.UTF_8)), StandardCharsets.UTF_8));
   }
 
-  @VisibleForTesting
   static License readPlainText(String data) {
     Map<String, String> props = new HashMap<>();
     try {
index d15b7c1a65b98e1d85bf5db7fe381ae39630560d..510a9013d356c575b32db78b1bbc05c1d5cf8c26 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.api.config;
 
-import com.google.common.collect.ImmutableMap;
 import java.util.ArrayList;
 import java.util.EnumMap;
 import java.util.LinkedHashSet;
@@ -177,15 +176,15 @@ public final class PropertyDefinition {
   }
 
   private static EnumMap<PropertyType, Function<String, Result>> createValidations(List<String> options) {
-    return new EnumMap<>(ImmutableMap.<PropertyType, Function<String, Result>>builder()
-      .put(BOOLEAN, validateBoolean())
-      .put(INTEGER, validateInteger())
-      .put(LONG, validateInteger())
-      .put(FLOAT, validateFloat())
-      .put(REGULAR_EXPRESSION, validateRegexp())
-      .put(SINGLE_SELECT_LIST,
-        aValue -> options.contains(aValue) ? Result.SUCCESS : Result.newError("notInOptions"))
-      .build());
+    EnumMap<PropertyType, Function<String, Result>> map = new EnumMap<>(PropertyType.class);
+    map.put(BOOLEAN, validateBoolean());
+    map.put(INTEGER, validateInteger());
+    map.put(LONG, validateInteger());
+    map.put(FLOAT, validateFloat());
+    map.put(REGULAR_EXPRESSION, validateRegexp());
+    map.put(SINGLE_SELECT_LIST,
+      aValue -> options.contains(aValue) ? Result.SUCCESS : Result.newError("notInOptions"));
+    return map;
   }
 
   private static Function<String, Result> validateBoolean() {
@@ -438,7 +437,7 @@ public final class PropertyDefinition {
      * only in General Settings.
      *
      * @throws IllegalArgumentException only qualifiers {@link Qualifiers#PROJECT PROJECT}, {@link Qualifiers#MODULE MODULE},
-     *         {@link Qualifiers#VIEW VIEW} and {@link Qualifiers#SUBVIEW SVW} are allowed.
+     *                                  {@link Qualifiers#VIEW VIEW} and {@link Qualifiers#SUBVIEW SVW} are allowed.
      */
     public Builder onQualifiers(String first, String... rest) {
       addQualifiers(this.onQualifiers, first, rest);
@@ -457,7 +456,7 @@ public final class PropertyDefinition {
      * only in General Settings.
      *
      * @throws IllegalArgumentException only qualifiers {@link Qualifiers#PROJECT PROJECT}, {@link Qualifiers#MODULE MODULE},
-     *         {@link Qualifiers#VIEW VIEW} and {@link Qualifiers#SUBVIEW SVW} are allowed.
+     *                                  {@link Qualifiers#VIEW VIEW} and {@link Qualifiers#SUBVIEW SVW} are allowed.
      */
     public Builder onQualifiers(List<String> qualifiers) {
       addQualifiers(this.onQualifiers, qualifiers);
@@ -476,7 +475,7 @@ public final class PropertyDefinition {
      * only in General Settings.
      *
      * @throws IllegalArgumentException only qualifiers {@link Qualifiers#PROJECT PROJECT}, {@link Qualifiers#MODULE MODULE},
-     *         {@link Qualifiers#VIEW VIEW} and {@link Qualifiers#SUBVIEW SVW} are allowed.
+     *                                  {@link Qualifiers#VIEW VIEW} and {@link Qualifiers#SUBVIEW SVW} are allowed.
      */
     public Builder onlyOnQualifiers(String first, String... rest) {
       addQualifiers(this.onlyOnQualifiers, first, rest);
@@ -495,7 +494,7 @@ public final class PropertyDefinition {
      * only in General Settings.
      *
      * @throws IllegalArgumentException only qualifiers {@link Qualifiers#PROJECT PROJECT}, {@link Qualifiers#MODULE MODULE},
-     *         {@link Qualifiers#VIEW VIEW} and {@link Qualifiers#SUBVIEW SVW} are allowed.
+     *                                  {@link Qualifiers#VIEW VIEW} and {@link Qualifiers#SUBVIEW SVW} are allowed.
      */
     public Builder onlyOnQualifiers(List<String> qualifiers) {
       addQualifiers(this.onlyOnQualifiers, qualifiers);
index edf566ad40330221e8b53f6b8399c2585c697a81..10f0ca044cdf582330ee14f9111199384a42a70f 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.api.rules;
 
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Function;
 import com.google.common.base.Functions;
 import com.google.common.collect.ImmutableMap;
@@ -113,7 +112,6 @@ public final class AnnotationRuleParser {
       .build(),
     PropertyType.STRING);
 
-  @VisibleForTesting
   static PropertyType guessType(Class<?> type) {
     return TYPE_FOR_CLASS.apply(type);
   }
index 093e3db899f00825952658f9cf70c662ca949a14..65ec0eb82cce237b5ed0d91bab78bbb3df1259e9 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.api.rules;
 
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Strings;
 import java.io.File;
 import java.io.IOException;
@@ -208,7 +207,6 @@ public final class XMLRuleParser {
     return map;
   }
 
-  @VisibleForTesting
   static String type(String type) {
     String validType = TYPE_MAP.get(type);
     if (null != validType) {
index 1248a83b31076e92a05c0e7cee33ba5b27b4a1d9..1d05f3bf29394f065436c284f1e6b63c8eac15a1 100644 (file)
  */
 package org.sonar.api.server.rule;
 
-import com.google.common.collect.ImmutableSet;
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.Set;
 import org.sonar.api.rules.RuleType;
 
+import static java.util.Arrays.asList;
+import static java.util.Collections.unmodifiableSet;
+
 /**
  * @see org.sonar.api.server.rule.RulesDefinition.NewRule#setType(RuleType)
  * @since 5.5
@@ -32,7 +35,7 @@ class RuleTagsToTypeConverter {
 
   public static final String TAG_BUG = "bug";
   public static final String TAG_SECURITY = "security";
-  static final Set<String> RESERVED_TAGS = ImmutableSet.of(TAG_BUG, TAG_SECURITY);
+  static final Set<String> RESERVED_TAGS = unmodifiableSet(new HashSet<>(asList(TAG_BUG, TAG_SECURITY)));
 
 
   private RuleTagsToTypeConverter() {
index ce2c76818bc8b3fee6d4de7b2cae83a1516972a4..0e9b90fbc3cfcd09cffdf0ee67fa1deab774f5bf 100644 (file)
  */
 package org.sonar.api.server.rule;
 
-import com.google.common.base.MoreObjects;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSortedSet;
 import com.google.common.collect.Sets;
 import java.io.IOException;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.TreeSet;
 import javax.annotation.CheckForNull;
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
@@ -159,8 +159,9 @@ public interface RulesDefinition {
 
   /**
    * Default sub-characteristics of technical debt model. See http://www.sqale.org
+   *
    * @deprecated in 5.5. SQALE Quality Model is replaced by SonarQube Quality Model.
-   *             See https://jira.sonarsource.com/browse/MMF-184
+   * See https://jira.sonarsource.com/browse/MMF-184
    */
   @Deprecated
   final class SubCharacteristics {
@@ -447,6 +448,7 @@ public interface RulesDefinition {
     /**
      * Create a rule with specified key. Max length of key is 200 characters. Key must be unique
      * among the repository
+     *
      * @throws IllegalArgumentException is key is not unique. Note a warning was logged up to version 5.4 (included)
      */
     NewRule createRule(String ruleKey);
@@ -520,10 +522,11 @@ public interface RulesDefinition {
 
     @Override
     public String toString() {
-      return MoreObjects.toStringHelper(this)
-        .add("key", key)
-        .add("language", language)
-        .toString();
+      StringBuilder sb = new StringBuilder("NewRepository{");
+      sb.append("key='").append(key).append('\'');
+      sb.append(", language='").append(language).append('\'');
+      sb.append('}');
+      return sb.toString();
     }
   }
 
@@ -620,10 +623,11 @@ public interface RulesDefinition {
 
     @Override
     public String toString() {
-      return MoreObjects.toStringHelper(this)
-        .add("language", language)
-        .add("key", key)
-        .toString();
+      StringBuilder sb = new StringBuilder("Repository{");
+      sb.append("key='").append(key).append('\'');
+      sb.append(", language='").append(language).append('\'');
+      sb.append('}');
+      return sb.toString();
     }
   }
 
@@ -634,6 +638,7 @@ public interface RulesDefinition {
 
     /**
      * Shortcut for {@code create(Type.LINEAR, gap multiplier, null)}.
+     *
      * @param gapMultiplier the duration to fix one issue. See {@link DebtRemediationFunction} for details about format.
      * @see org.sonar.api.server.debt.DebtRemediationFunction.Type#LINEAR
      */
@@ -641,14 +646,16 @@ public interface RulesDefinition {
 
     /**
      * Shortcut for {@code create(Type.LINEAR_OFFSET, gap multiplier, base effort)}.
+     *
      * @param gapMultiplier duration to fix one point of complexity. See {@link DebtRemediationFunction} for details and format.
-     * @param baseEffort duration to make basic analysis. See {@link DebtRemediationFunction} for details and format.
+     * @param baseEffort    duration to make basic analysis. See {@link DebtRemediationFunction} for details and format.
      * @see org.sonar.api.server.debt.DebtRemediationFunction.Type#LINEAR_OFFSET
      */
     DebtRemediationFunction linearWithOffset(String gapMultiplier, String baseEffort);
 
     /**
      * Shortcut for {@code create(Type.CONSTANT_ISSUE, null, base effort)}.
+     *
      * @param baseEffort cost per issue. See {@link DebtRemediationFunction} for details and format.
      * @see org.sonar.api.server.debt.DebtRemediationFunction.Type#CONSTANT_ISSUE
      */
@@ -657,6 +664,7 @@ public interface RulesDefinition {
     /**
      * Flexible way to create a {@link DebtRemediationFunction}. An unchecked exception is thrown if
      * coefficient and/or offset are not valid according to the given @{code type}.
+     *
      * @since 5.3
      */
     DebtRemediationFunction create(DebtRemediationFunction.Type type, @Nullable String gapMultiplier, @Nullable String baseEffort);
@@ -675,7 +683,7 @@ public interface RulesDefinition {
     private RuleStatus status = RuleStatus.defaultStatus();
     private DebtRemediationFunction debtRemediationFunction;
     private String gapDescription;
-    private final Set<String> tags = Sets.newTreeSet();
+    private final Set<String> tags = new TreeSet<>();
     private final Map<String, NewParam> paramsByKey = new HashMap<>();
     private final DebtRemediationFunctions functions;
     private boolean activatedByDefault;
@@ -705,6 +713,7 @@ public interface RulesDefinition {
 
     /**
      * Should this rule be enabled by default. For example in SonarLint standalone.
+     *
      * @since 6.0
      */
     public NewRule setActivatedByDefault(boolean activatedByDefault) {
@@ -731,6 +740,7 @@ public interface RulesDefinition {
      * </ul>
      * Finally the "bug" and "security" tags are considered as reserved. They
      * are silently removed from the final state of definition.
+     *
      * @since 5.5
      */
     public NewRule setType(RuleType t) {
@@ -805,9 +815,9 @@ public interface RulesDefinition {
      * SQALE sub-characteristic. See http://www.sqale.org
      *
      * @see org.sonar.api.server.rule.RulesDefinition.SubCharacteristics for constant values
-     * @deprecated in 5.5. SQALE Quality Model is replaced by SonarQube Quality Model. This method does nothing.
-     *             See https://jira.sonarsource.com/browse/MMF-184
      * @see #setType(RuleType)
+     * @deprecated in 5.5. SQALE Quality Model is replaced by SonarQube Quality Model. This method does nothing.
+     * See https://jira.sonarsource.com/browse/MMF-184
      */
     public NewRule setDebtSubCharacteristic(@Nullable String s) {
       return this;
@@ -948,11 +958,11 @@ public interface RulesDefinition {
       this.gapDescription = newRule.gapDescription;
       this.type = newRule.type == null ? RuleTagsToTypeConverter.convert(newRule.tags) : newRule.type;
       this.tags = ImmutableSortedSet.copyOf(Sets.difference(newRule.tags, RuleTagsToTypeConverter.RESERVED_TAGS));
-      ImmutableMap.Builder<String, Param> paramsBuilder = ImmutableMap.builder();
+      Map<String, Param> paramsBuilder = new HashMap<>();
       for (NewParam newParam : newRule.paramsByKey.values()) {
         paramsBuilder.put(newParam.key, new Param(newParam));
       }
-      this.params = paramsBuilder.build();
+      this.params = Collections.unmodifiableMap(paramsBuilder);
       this.activatedByDefault = newRule.activatedByDefault;
     }
 
@@ -969,8 +979,8 @@ public interface RulesDefinition {
     }
 
     /**
-     * @since 5.5
      * @see NewRule#setType(RuleType)
+     * @since 5.5
      */
     public RuleType type() {
       return type;
@@ -996,6 +1006,7 @@ public interface RulesDefinition {
 
     /**
      * Should this rule be enabled by default. For example in SonarLint standalone.
+     *
      * @since 6.0
      */
     public boolean activatedByDefault() {
@@ -1007,9 +1018,9 @@ public interface RulesDefinition {
     }
 
     /**
+     * @see #type()
      * @deprecated in 5.5. SQALE Quality Model is replaced by SonarQube Quality Model. {@code null} is
      * always returned. See https://jira.sonarsource.com/browse/MMF-184
-     * @see #type()
      */
     @CheckForNull
     @Deprecated
index 576c80d107c7b20b4e945a2b65804ff08f85fc58..95858cfe18b3c6689e0d439db918dcaf848be555 100644 (file)
  */
 package org.sonar.api.server.rule;
 
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Function;
-import com.google.common.base.Functions;
-import com.google.common.collect.ImmutableMap;
 import java.lang.reflect.Field;
+import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import javax.annotation.CheckForNull;
 import org.apache.commons.lang.StringUtils;
 import org.sonar.api.rule.RuleStatus;
@@ -45,16 +44,18 @@ public class RulesDefinitionAnnotationLoader {
 
   private static final Logger LOG = Loggers.get(RulesDefinitionAnnotationLoader.class);
 
-  private static final Function<Class<?>, RuleParamType> TYPE_FOR_CLASS = Functions.forMap(
-    ImmutableMap.<Class<?>, RuleParamType>builder()
-      .put(Integer.class, RuleParamType.INTEGER)
-      .put(int.class, RuleParamType.INTEGER)
-      .put(Float.class, RuleParamType.FLOAT)
-      .put(float.class, RuleParamType.FLOAT)
-      .put(Boolean.class, RuleParamType.BOOLEAN)
-      .put(boolean.class, RuleParamType.BOOLEAN)
-      .build(),
-    RuleParamType.STRING);
+  private static final Map<Class<?>, RuleParamType> TYPE_FOR_CLASS;
+
+  static {
+    Map<Class<?>, RuleParamType> map = new HashMap<>();
+    map.put(Integer.class, RuleParamType.INTEGER);
+    map.put(int.class, RuleParamType.INTEGER);
+    map.put(Float.class, RuleParamType.FLOAT);
+    map.put(float.class, RuleParamType.FLOAT);
+    map.put(Boolean.class, RuleParamType.BOOLEAN);
+    map.put(boolean.class, RuleParamType.BOOLEAN);
+    TYPE_FOR_CLASS = Collections.unmodifiableMap(map);
+  }
 
   public void load(RulesDefinition.NewExtendedRepository repo, Class... annotatedClasses) {
     for (Class annotatedClass : annotatedClasses) {
@@ -113,8 +114,8 @@ public class RulesDefinitionAnnotationLoader {
     }
   }
 
-  @VisibleForTesting
   static RuleParamType guessType(Class<?> type) {
-    return TYPE_FOR_CLASS.apply(type);
+    RuleParamType result = TYPE_FOR_CLASS.get(type);
+    return result != null ? result : RuleParamType.STRING;
   }
 }
index 6dea7ce323bb09cc3368685960e802e055d7c19d..a6cdc79c098de5c9d13673f7c20c0e4d4a769051 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.api.server.ws;
 
-import com.google.common.annotations.Beta;
 import java.util.Collection;
 import java.util.List;
 import javax.annotation.CheckForNull;
@@ -42,7 +41,7 @@ import javax.annotation.CheckForNull;
  *   }
  * }
  * </pre>
- *
+ * <p>
  * It requires to use the sonar-ws library which Maven ids are:
  * <pre>
  *   &lt;dependency&gt;
@@ -50,10 +49,9 @@ import javax.annotation.CheckForNull;
  *     &lt;artifactId&gt;sonar-ws&lt;/artifactId&gt;
  *   &lt;/dependency&gt;
  * </pre>
- * 
+ *
  * @since 5.5
  */
-@Beta
 public interface LocalConnector {
 
   LocalResponse call(LocalRequest request);
@@ -61,6 +59,7 @@ public interface LocalConnector {
   interface LocalRequest {
     /**
      * URL path, which is the concatenation of controller path and action key, for example "api/issues/search"
+     *
      * @see org.sonar.api.server.ws.WebService.Controller#path
      * @see org.sonar.api.server.ws.WebService.Action#key
      */
@@ -73,6 +72,7 @@ public interface LocalConnector {
 
     /**
      * HTTP method. Possible values are "GET" and "POST"
+     *
      * @see Request#method()
      */
     String getMethod();
@@ -112,6 +112,7 @@ public interface LocalConnector {
 
     /**
      * HTTP headers
+     *
      * @see Response#setHeader(String, String)
      */
     Collection<String> getHeaderNames();
index d8a6b9ce39cb9598914b0b6ae55bb8428d3f779a..2428fc441f57cd2fef3e8385ff398b40c059b812 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.api.server.ws;
 
-import com.google.common.annotations.Beta;
 import com.google.common.base.Splitter;
 import java.io.InputStream;
 import java.util.ArrayList;
@@ -277,7 +276,6 @@ public abstract class Request {
     }
   }
 
-  @Beta
   public <T> Param<T> getParam(String key, BiFunction<Request, String, T> retrieveAndValidate) {
     String param = this.param(key);
     if (param != null) {
@@ -286,7 +284,6 @@ public abstract class Request {
     return AbsentParam.absent();
   }
 
-  @Beta
   public StringParam getParam(String key, Consumer<String> validate) {
     String value = this.param(key);
     if (value != null) {
@@ -296,7 +293,6 @@ public abstract class Request {
     return AbsentStringParam.absent();
   }
 
-  @Beta
   public StringParam getParam(String key) {
     String value = this.param(key);
     if (value != null) {
@@ -310,7 +306,6 @@ public abstract class Request {
    * @see LocalConnector
    * @since 5.5
    */
-  @Beta
   public abstract LocalConnector localConnector();
 
   /**
@@ -332,7 +327,6 @@ public abstract class Request {
    * Represents a Request parameter, provides information whether is was specified or not (check {@link #isPresent()})
    * and utility method to nicely handles cases where the parameter is not present.
    */
-  @Beta
   public interface Param<T> {
     boolean isPresent();
 
index 84cb57735c68984572658d03cd53e1e07f7f69ea..aaa7b86b9103db5a5ed933cc515b0628dfd82d59 100644 (file)
@@ -20,9 +20,6 @@
 package org.sonar.api.server.ws;
 
 import com.google.common.base.Joiner;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Sets;
 import java.io.IOException;
 import java.net.URL;
 import java.nio.charset.StandardCharsets;
@@ -30,6 +27,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
@@ -89,7 +87,7 @@ import static java.util.Objects.requireNonNull;
  *   }
  * }
  * </pre>
- *
+ * <p>
  * Since version 5.5, a web service can call another web service to get some data. See {@link Request#localConnector()}
  * provided by {@link RequestHandler#handle(Request, Response)}.
  *
@@ -130,7 +128,7 @@ public interface WebService extends Definable<WebService.Context> {
     }
 
     public List<Controller> controllers() {
-      return ImmutableList.copyOf(controllers.values());
+      return Collections.unmodifiableList(new ArrayList<>(controllers.values()));
     }
   }
 
@@ -199,11 +197,11 @@ public interface WebService extends Definable<WebService.Context> {
       this.path = newController.path;
       this.description = newController.description;
       this.since = newController.since;
-      ImmutableMap.Builder<String, Action> mapBuilder = ImmutableMap.builder();
+      Map<String, Action> mapBuilder = new HashMap<>();
       for (NewAction newAction : newController.actions.values()) {
         mapBuilder.put(newAction.key, new Action(this, newAction));
       }
-      this.actions = mapBuilder.build();
+      this.actions = Collections.unmodifiableMap(mapBuilder);
     }
 
     public String path() {
@@ -411,7 +409,6 @@ public interface WebService extends Definable<WebService.Context> {
     }
 
     /**
-     *
      * Creates the parameter {@link org.sonar.api.server.ws.WebService.Param#TEXT_QUERY}, which is
      * used to search for a subset of fields containing the supplied string.
      * <p>
@@ -424,7 +421,6 @@ public interface WebService extends Definable<WebService.Context> {
     }
 
     /**
-     *
      * Creates the parameter {@link org.sonar.api.server.ws.WebService.Param#TEXT_QUERY}, which is
      * used to search for a subset of fields containing the supplied string.
      * <p>
@@ -511,11 +507,11 @@ public interface WebService extends Definable<WebService.Context> {
       logWarningIf(isNullOrEmpty(this.since), "Since is not set on action " + path);
       logWarningIf(!this.post && this.responseExample == null, "The response example is not set on action " + path);
 
-      ImmutableMap.Builder<String, Param> paramsBuilder = ImmutableMap.builder();
+      Map<String, Param> paramsBuilder = new HashMap<>();
       for (NewParam newParam : newAction.newParams.values()) {
         paramsBuilder.put(newParam.key, new Param(this, newParam));
       }
-      this.params = paramsBuilder.build();
+      this.params = Collections.unmodifiableMap(paramsBuilder);
     }
 
     private static void logWarningIf(boolean condition, String message) {
@@ -661,9 +657,9 @@ public interface WebService extends Definable<WebService.Context> {
     }
 
     /**
+     * @see #setDeprecatedKey(String, String)
      * @since 5.0
      * @deprecated since 6.4
-     * @see #setDeprecatedKey(String, String) 
      */
     @Deprecated
     public NewParam setDeprecatedKey(@Nullable String s) {
@@ -672,7 +668,6 @@ public interface WebService extends Definable<WebService.Context> {
     }
 
     /**
-     *
      * @param deprecatedSince Version when the old key was replaced/deprecated. Ex: 5.6
      * @since 6.4
      */
@@ -752,7 +747,7 @@ public interface WebService extends Definable<WebService.Context> {
       if (values == null || values.isEmpty()) {
         this.possibleValues = null;
       } else {
-        this.possibleValues = Sets.newLinkedHashSet();
+        this.possibleValues = new LinkedHashSet<>();
         for (Object value : values) {
           this.possibleValues.add(value.toString());
         }
@@ -909,8 +904,8 @@ public interface WebService extends Definable<WebService.Context> {
     /**
      * Is the parameter internal ?
      *
-     * @since 6.2
      * @see NewParam#setInternal(boolean)
+     * @since 6.2
      */
     public boolean isInternal() {
       return internal;
index c34ff5250b4486c3de3dda428917212301d4257b..9b08b95cfe430b97d3466e4391c3a774f9927601 100644 (file)
 package org.sonar.api.task;
 
 import com.google.common.base.Preconditions;
-import com.google.common.base.Strings;
 import java.util.regex.Pattern;
+import org.apache.commons.lang.StringUtils;
 import org.sonar.api.ExtensionPoint;
-import org.sonar.api.batch.ScannerSide;
 import org.sonar.api.batch.InstantiationStrategy;
+import org.sonar.api.batch.ScannerSide;
 
 /**
  * Register and describe a {@link TaskExtension}.
@@ -115,9 +115,9 @@ public class TaskDefinition implements Comparable<TaskDefinition> {
     }
 
     public TaskDefinition build() {
-      Preconditions.checkArgument(!Strings.isNullOrEmpty(key), "Task key must be set");
+      Preconditions.checkArgument(!StringUtils.isEmpty(key), "Task key must be set");
       Preconditions.checkArgument(Pattern.matches(KEY_PATTERN, key), "Task key '" + key + "' must match " + KEY_PATTERN);
-      Preconditions.checkArgument(!Strings.isNullOrEmpty(description), "Description must be set for task '" + key + "'");
+      Preconditions.checkArgument(!StringUtils.isEmpty(description), "Description must be set for task '" + key + "'");
       Preconditions.checkArgument(taskClass != null, "Class must be set for task '" + key + "'");
       return new TaskDefinition(this);
     }
index 31958e6a2c9b4a877014b8b96bb45a6fbd32ad8c..0eddb443a77c2e318d100e57d2ef83bc4ea86bd1 100644 (file)
  */
 package org.sonar.api.user;
 
+import org.apache.commons.lang.StringUtils;
 import org.sonar.api.security.DefaultGroups;
 
 import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Strings.isNullOrEmpty;
 
 public class UserGroupValidation {
 
@@ -33,7 +33,7 @@ public class UserGroupValidation {
   }
 
   public static void validateGroupName(String groupName) {
-    checkArgument(!isNullOrEmpty(groupName) && groupName.trim().length() > 0, "Group name cannot be empty");
+    checkArgument(!StringUtils.isEmpty(groupName) && groupName.trim().length() > 0, "Group name cannot be empty");
     checkArgument(groupName.length() <= GROUP_NAME_MAX_LENGTH, "Group name cannot be longer than %s characters", GROUP_NAME_MAX_LENGTH);
     checkArgument(!DefaultGroups.isAnyone(groupName), "Anyone group cannot be used");
   }
index b62ea204118a4d2cfadc108326f279a55dcb9447..61a548d04030d43fc7602fc82c475a044417cf3c 100644 (file)
  */
 package org.sonar.api.utils;
 
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Throwables;
-import com.google.common.collect.Lists;
 import com.google.common.io.Files;
 import java.io.File;
 import java.io.IOException;
 import java.net.URI;
 import java.nio.charset.Charset;
+import java.util.Arrays;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.stream.Stream;
 import org.sonar.api.batch.ScannerSide;
 import org.sonar.api.ce.ComputeEngineSide;
 import org.sonar.api.server.ServerSide;
@@ -49,12 +48,11 @@ public class UriReader {
   private final Map<String, SchemeProcessor> processorsByScheme = new HashMap<>();
 
   public UriReader(SchemeProcessor[] processors) {
-    List<SchemeProcessor> allProcessors = Lists.asList(new FileProcessor(), processors);
-    for (SchemeProcessor processor : allProcessors) {
+    Stream.concat(Stream.of(new FileProcessor()), Arrays.stream(processors)).forEach(processor -> {
       for (String scheme : processor.getSupportedSchemes()) {
         processorsByScheme.put(scheme.toLowerCase(Locale.ENGLISH), processor);
       }
-    }
+    });
   }
 
   /**
@@ -82,7 +80,6 @@ public class UriReader {
     return reader.description(uri);
   }
 
-  @VisibleForTesting
   SchemeProcessor searchForSupportedProcessor(URI uri) {
     SchemeProcessor processor = processorsByScheme.get(uri.getScheme().toLowerCase(Locale.ENGLISH));
     Preconditions.checkArgument(processor != null, "URI schema is not supported: " + uri.getScheme());
@@ -106,7 +103,7 @@ public class UriReader {
 
     @Override
     public String[] getSupportedSchemes() {
-      return new String[] {"file"};
+      return new String[]{"file"};
     }
 
     @Override
index 2ac02200643799ba9d0fec72f40d1f321be3a0d4..b7625873fd9904f01107dd717d7af36ecf4d2142 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.api.utils.internal;
 
-import com.google.common.annotations.VisibleForTesting;
 import java.io.Serializable;
 import javax.annotation.Nullable;
 import org.apache.commons.lang.builder.ToStringBuilder;
@@ -165,7 +164,6 @@ public class WorkDuration implements Serializable {
     return minutes;
   }
 
-  @VisibleForTesting
   int hoursInDay() {
     return hoursInDay;
   }
index da8f4dfe0fcfdd5b026a2f092a856f49b2ae62a3..ab129155de860b3b679a109f34830a7a7ed77f37 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.api.web;
 
-import com.google.common.collect.ImmutableList;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -141,8 +140,8 @@ public abstract class ServletFilter implements Filter {
      */
     public static class Builder {
       private static final String WILDCARD_CHAR = "*";
-      private static final Collection<String> STATIC_RESOURCES = ImmutableList.of("/css/*", "/fonts/*", "/images/*", "/js/*", "/static/*",
-        "/robots.txt", "/favicon.ico", "/apple-touch-icon*", "/mstile*");
+      private static final Collection<String> STATIC_RESOURCES = unmodifiableList(asList("/css/*", "/fonts/*", "/images/*", "/js/*", "/static/*",
+        "/robots.txt", "/favicon.ico", "/apple-touch-icon*", "/mstile*"));
 
       private final Set<String> inclusions = new LinkedHashSet<>();
       private final Set<String> exclusions = new LinkedHashSet<>();
index befc42c1ea08644fa233384c2bc04933a5354f41..dc39f5c0ced4623b320fcce02a3b243647cbdc01 100644 (file)
@@ -22,6 +22,7 @@ package org.sonar.scanner.bootstrap;
 import com.google.common.base.Joiner;
 import com.google.common.base.Predicate;
 import com.google.common.base.Splitter;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 import java.util.stream.Collectors;
@@ -33,8 +34,6 @@ import org.sonar.api.config.Configuration;
 import org.sonar.api.utils.log.Logger;
 import org.sonar.api.utils.log.Loggers;
 
-import static com.google.common.collect.Sets.newHashSet;
-
 /**
  * Filters the plugins to be enabled during analysis
  */
@@ -46,8 +45,8 @@ public class ScannerPluginPredicate implements Predicate<String> {
   private static final String BUILDBREAKER_PLUGIN_KEY = "buildbreaker";
   private static final Joiner COMMA_JOINER = Joiner.on(", ");
 
-  private final Set<String> whites = newHashSet();
-  private final Set<String> blacks = newHashSet();
+  private final Set<String> whites = new HashSet<>();
+  private final Set<String> blacks = new HashSet<>();
   private final GlobalMode mode;
 
   public ScannerPluginPredicate(Configuration settings, GlobalMode mode) {
index 689d4158d8d0db946a2218c6a42dbcfd8ce066f7..a6c50cd471529f127b4690293473092297226692 100644 (file)
  */
 package org.sonar.scanner.issue.ignore.pattern;
 
-import com.google.common.collect.Sets;
 import java.util.Collections;
 import java.util.LinkedHashSet;
 import java.util.Set;
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
-
 import org.apache.commons.lang.builder.ToStringBuilder;
 import org.apache.commons.lang.builder.ToStringStyle;
 import org.sonar.api.rule.RuleKey;
@@ -76,7 +74,7 @@ public class IssuePattern {
   }
 
   Set<Integer> getAllLines() {
-    Set<Integer> allLines = Sets.newLinkedHashSet(lines);
+    Set<Integer> allLines = new LinkedHashSet<>(lines);
     for (LineRange lineRange : lineRanges) {
       allLines.addAll(lineRange.toLines());
     }