]> source.dussan.org Git - sonarqube.git/commitdiff
fix DialectUtils: Dialects should not be statically stored
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Wed, 31 Oct 2018 08:45:07 +0000 (09:45 +0100)
committersonartech <sonartech@sonarsource.com>
Thu, 1 Nov 2018 08:32:48 +0000 (09:32 +0100)
server/sonar-db-core/src/main/java/org/sonar/db/dialect/DialectUtils.java

index 8ecd7cb83cdb1832561418b1e23f21cfdfad99cc..05cc565220534f7a9f1680f623edcf67d2096528 100644 (file)
  */
 package org.sonar.db.dialect;
 
-import java.util.Arrays;
+import com.google.common.collect.ImmutableSet;
 import java.util.Optional;
+import java.util.Set;
 import java.util.function.Predicate;
+import java.util.function.Supplier;
 import org.apache.commons.lang.StringUtils;
 import org.sonar.api.utils.MessageException;
 
 public final class DialectUtils {
 
-  private static final Dialect[] DIALECTS = new Dialect[] {new H2(), new MySql(), new Oracle(), new PostgreSql(), new MsSql()};
+  private static final Set<Supplier<Dialect>> DIALECTS = ImmutableSet.of(H2::new, MySql::new, Oracle::new, PostgreSql::new, MsSql::new);
 
   private DialectUtils() {
     // only static stuff
@@ -48,7 +50,8 @@ public final class DialectUtils {
   }
 
   private static Optional<Dialect> findDialect(Predicate<Dialect> predicate) {
-    return Arrays.stream(DIALECTS)
+    return DIALECTS.stream()
+      .map(Supplier::get)
       .filter(predicate)
       .findFirst();
   }