You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by vl...@apache.org on 2019/11/17 14:39:28 UTC

[calcite-avatica] 01/01: Use Spotless and .editorconfig for import order normalization instead of Checkstyle

This is an automated email from the ASF dual-hosted git repository.

vladimirsitnikov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/calcite-avatica.git

commit d90fb8c14c877d58f9d4944cb554fbd66c6f1414
Author: Vladimir Sitnikov <si...@gmail.com>
AuthorDate: Sun Nov 17 16:29:06 2019 +0300

    Use Spotless and .editorconfig for import order normalization instead of Checkstyle
    
    It makes it much simpler to understand the violations,
    and it provides automatic fix via ./gradlew spotlessApply
---
 .editorconfig                                      | 47 ++++++++++++++++++
 build.gradle.kts                                   | 58 +++++++++++++++++++++-
 .../license.header.java                            | 23 ---------
 core/build.gradle.kts                              |  6 ++-
 .../remote/AvaticaCommonsHttpClientImpl.java       |  1 -
 .../avatica/remote/ClientKeytabJaasConf.java       |  1 -
 .../avatica/remote/DoAsAvaticaHttpClient.java      |  1 -
 .../calcite/avatica/remote/KerberosConnection.java |  1 -
 .../avatica/remote/KerberosConnectionTest.java     |  1 -
 gradle.properties                                  |  1 +
 .../org/apache/calcite/avatica/jdbc/JdbcMeta.java  |  4 +-
 .../avatica/server/AbstractAvaticaHandler.java     |  1 -
 .../calcite/avatica/server/AvaticaJsonHandler.java |  1 -
 .../avatica/server/AvaticaProtobufHandler.java     |  1 -
 .../avatica/server/AvaticaSpnegoAuthenticator.java |  1 -
 .../avatica/server/DelegatingAvaticaHandler.java   |  2 -
 ...ttpQueryStringParameterRemoteUserExtractor.java |  1 -
 .../apache/calcite/avatica/server/HttpServer.java  |  1 -
 .../server/PropertyBasedSpnegoLoginService.java    |  1 -
 .../avatica/server/ServerKeytabJaasConf.java       |  1 -
 .../apache/calcite/avatica/AvaticaSpnegoTest.java  |  2 -
 .../org/apache/calcite/avatica/HttpBaseTest.java   |  1 -
 .../org/apache/calcite/avatica/SpnegoTestUtil.java |  1 -
 .../org/apache/calcite/avatica/SslDriverTest.java  | 10 ++--
 .../avatica/server/AbstractAvaticaHandlerTest.java |  1 -
 .../calcite/avatica/server/AvaticaJaasKrbUtil.java |  1 -
 .../server/AvaticaSpnegoAuthenticatorTest.java     |  1 -
 .../avatica/server/CustomAuthHttpServerTest.java   |  7 ++-
 .../avatica/server/HttpServerCustomizerTest.java   |  1 -
 .../server/HttpServerSpnegoWithJaasTest.java       |  1 -
 .../server/HttpServerSpnegoWithoutJaasTest.java    |  1 -
 .../apache/calcite/avatica/test/AvaticaSuite.java  |  1 -
 settings.gradle.kts                                |  1 +
 site/community/index.md                            |  1 -
 src/main/config/checkstyle/checker.xml             |  7 ---
 standalone-server/build.gradle.kts                 |  6 ++-
 tck/build.gradle.kts                               |  7 +--
 37 files changed, 130 insertions(+), 74 deletions(-)

diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..b25c9f6
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,47 @@
+root = true
+
+[*]
+trim_trailing_whitespace = true
+insert_final_newline = true
+charset = utf-8
+indent_style = space
+
+[{*.sh,gradlew}]
+end_of_line = lf
+
+[{*.bat,*.cmd}]
+end_of_line = crlf
+
+[{*.kts,*.kt}]
+ij_kotlin_code_style_defaults = KOTLIN_OFFICIAL
+ij_kotlin_name_count_to_use_star_import = 99
+ij_kotlin_name_count_to_use_star_import_for_members = 99
+ij_java_use_single_class_imports = true
+max_line_length = 100
+ij_any_wrap_long_lines = true
+
+[*.java]
+# Doc: https://youtrack.jetbrains.com/issue/IDEA-170643#focus=streamItem-27-3708697.0-0
+# $ means "static"
+ij_java_imports_layout = org.apache.calcite.**,|,org.apache.**,|,au.com.**,|,com.**,|,io.**,|,mondrian.**,|,net.**,|,org.**,|,scala.**,|,java.**,javax.**,|,*,|,$com.**,|,$org.apache.calcite.**,|,$org.apache.**,|,$org.**,|,$java,|,$*
+indent_size = 2
+tab_width = 2
+max_line_length = 100
+ij_any_spaces_around_additive_operators = true
+ij_any_spaces_around_assignment_operators = true
+ij_any_spaces_around_bitwise_operators = true
+ij_any_spaces_around_equality_operators = true
+ij_any_spaces_around_lambda_arrow = true
+ij_any_spaces_around_logical_operators = true
+ij_any_spaces_around_multiplicative_operators = true
+ij_any_spaces_around_relational_operators = true
+ij_any_spaces_around_shift_operators = true
+ij_continuation_indent_size = 4
+ij_java_if_brace_force = always
+ij_java_indent_case_from_switch = false
+ij_java_space_after_colon = true
+ij_java_space_before_colon = true
+ij_java_ternary_operation_signs_on_next_line = true
+ij_java_use_single_class_imports = true
+ij_java_wrap_long_lines = true
+
diff --git a/build.gradle.kts b/build.gradle.kts
index cfcecd9..f13b0b0 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -27,13 +27,13 @@ import com.github.vlsi.gradle.properties.dsl.toBool
 import com.github.vlsi.gradle.release.RepositoryType
 import de.thetaphi.forbiddenapis.gradle.CheckForbiddenApis
 import de.thetaphi.forbiddenapis.gradle.CheckForbiddenApisExtension
-import org.apache.tools.ant.DirectoryScanner
 import org.gradle.api.tasks.testing.logging.TestExceptionFormat
 
 plugins {
     publishing
     // Verification
     checkstyle
+    id("com.diffplug.gradle.spotless")
     id("org.nosphere.apache.rat")
     id("com.github.spotbugs")
     id("de.thetaphi.forbiddenapis") apply false
@@ -61,6 +61,7 @@ val lastEditYear by extra(lastEditYear())
 // Do not enable spotbugs by default. Execute it only when -Pspotbugs is present
 val enableSpotBugs = props.bool("spotbugs", default = false)
 val skipCheckstyle by props()
+val skipSpotless by props()
 val skipJavadoc by props()
 val enableMavenLocal by props()
 val enableGradleMetadata by props()
@@ -152,10 +153,34 @@ val javadocAggregate by tasks.registering(Javadoc::class) {
     setDestinationDir(file("$buildDir/docs/javadocAggregate"))
 }
 
+val licenseHeaderFile = file("config/license.header.java")
+
 allprojects {
     group = "org.apache.calcite.avatica"
     version = buildVersion
 
+    if (!skipSpotless) {
+        apply(plugin = "com.diffplug.gradle.spotless")
+        spotless {
+            kotlinGradle {
+                ktlint()
+                trimTrailingWhitespace()
+                endWithNewline()
+            }
+            if (project == rootProject) {
+                // Spotless does not exclude subprojects when using target(...)
+                // So **/*.md is enough to scan all the md files in the codebase
+                // See https://github.com/diffplug/spotless/issues/468
+                format("markdown") {
+                    target("**/*.md")
+                    // Flot is known to have trailing whitespace, so the files
+                    // are kept in their original format (e.g. to simplify diff on library upgrade)
+                    trimTrailingWhitespace()
+                    endWithNewline()
+                }
+            }
+        }
+    }
     if (!skipCheckstyle) {
         apply<CheckstylePlugin>()
         dependencies {
@@ -257,6 +282,37 @@ allprojects {
             }
         }
 
+        if (!skipSpotless) {
+            spotless {
+                java {
+//                    targetExclude(*javaccGeneratedPatterns + "**/test/java/*.java")
+                    licenseHeaderFile(licenseHeaderFile)
+                    importOrder(
+                        "org.apache.calcite.",
+                        "org.apache.",
+                        "au.com.",
+                        "com.",
+                        "io.",
+                        "mondrian.",
+                        "net.",
+                        "org.",
+                        "scala.",
+                        "java",
+                        "",
+                        "static com.",
+                        "static org.apache.calcite.",
+                        "static org.apache.",
+                        "static org.",
+                        "static java",
+                        "static "
+                    )
+                    removeUnusedImports()
+                    trimTrailingWhitespace()
+                    indentWithSpaces(4)
+                    endWithNewline()
+                }
+            }
+        }
         if (enableSpotBugs) {
             apply(plugin = "com.github.spotbugs")
             spotbugs {
diff --git a/server/src/test/java/org/apache/calcite/avatica/test/AvaticaSuite.java b/config/license.header.java
similarity index 61%
copy from server/src/test/java/org/apache/calcite/avatica/test/AvaticaSuite.java
copy to config/license.header.java
index 661b0d4..2a42971 100644
--- a/server/src/test/java/org/apache/calcite/avatica/test/AvaticaSuite.java
+++ b/config/license.header.java
@@ -14,26 +14,3 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.calcite.avatica.test;
-
-import org.apache.calcite.avatica.RemoteDriverTest;
-
-import org.apache.calcite.avatica.remote.ConnectionPropertiesTest;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-
-/**
- * Avatica test suite.
- */
-@RunWith(Suite.class)
-@Suite.SuiteClasses({
-    AvaticaUtilsTest.class,
-    ConnectStringParserTest.class,
-    RemoteDriverTest.class,
-    ConnectionPropertiesTest.class
-    })
-public class AvaticaSuite {
-}
-
-// End AvaticaSuite.java
diff --git a/core/build.gradle.kts b/core/build.gradle.kts
index 6ca3aaa..08f7fa1 100644
--- a/core/build.gradle.kts
+++ b/core/build.gradle.kts
@@ -16,7 +16,11 @@
  *
  */
 
-import com.google.protobuf.gradle.*
+import com.google.protobuf.gradle.generateProtoTasks
+import com.google.protobuf.gradle.ofSourceSet
+import com.google.protobuf.gradle.proto
+import com.google.protobuf.gradle.protobuf
+import com.google.protobuf.gradle.protoc
 
 plugins {
     `java-library`
diff --git a/core/src/main/java/org/apache/calcite/avatica/remote/AvaticaCommonsHttpClientImpl.java b/core/src/main/java/org/apache/calcite/avatica/remote/AvaticaCommonsHttpClientImpl.java
index e2bda3a..b30b573 100644
--- a/core/src/main/java/org/apache/calcite/avatica/remote/AvaticaCommonsHttpClientImpl.java
+++ b/core/src/main/java/org/apache/calcite/avatica/remote/AvaticaCommonsHttpClientImpl.java
@@ -57,7 +57,6 @@ import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
 import java.util.Objects;
-
 import javax.net.ssl.HostnameVerifier;
 import javax.net.ssl.SSLContext;
 
diff --git a/core/src/main/java/org/apache/calcite/avatica/remote/ClientKeytabJaasConf.java b/core/src/main/java/org/apache/calcite/avatica/remote/ClientKeytabJaasConf.java
index ef060eb..ce29ffd 100644
--- a/core/src/main/java/org/apache/calcite/avatica/remote/ClientKeytabJaasConf.java
+++ b/core/src/main/java/org/apache/calcite/avatica/remote/ClientKeytabJaasConf.java
@@ -21,7 +21,6 @@ import org.slf4j.LoggerFactory;
 
 import java.util.HashMap;
 import java.util.Map;
-
 import javax.security.auth.login.AppConfigurationEntry;
 import javax.security.auth.login.Configuration;
 
diff --git a/core/src/main/java/org/apache/calcite/avatica/remote/DoAsAvaticaHttpClient.java b/core/src/main/java/org/apache/calcite/avatica/remote/DoAsAvaticaHttpClient.java
index e06760d..123f821 100644
--- a/core/src/main/java/org/apache/calcite/avatica/remote/DoAsAvaticaHttpClient.java
+++ b/core/src/main/java/org/apache/calcite/avatica/remote/DoAsAvaticaHttpClient.java
@@ -18,7 +18,6 @@ package org.apache.calcite.avatica.remote;
 
 import java.security.PrivilegedAction;
 import java.util.Objects;
-
 import javax.security.auth.Subject;
 
 /**
diff --git a/core/src/main/java/org/apache/calcite/avatica/remote/KerberosConnection.java b/core/src/main/java/org/apache/calcite/avatica/remote/KerberosConnection.java
index debe0cc..438d533 100644
--- a/core/src/main/java/org/apache/calcite/avatica/remote/KerberosConnection.java
+++ b/core/src/main/java/org/apache/calcite/avatica/remote/KerberosConnection.java
@@ -28,7 +28,6 @@ import java.util.Map.Entry;
 import java.util.Objects;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicBoolean;
-
 import javax.security.auth.Subject;
 import javax.security.auth.kerberos.KerberosPrincipal;
 import javax.security.auth.kerberos.KerberosTicket;
diff --git a/core/src/test/java/org/apache/calcite/avatica/remote/KerberosConnectionTest.java b/core/src/test/java/org/apache/calcite/avatica/remote/KerberosConnectionTest.java
index ad98569..6b4d618 100644
--- a/core/src/test/java/org/apache/calcite/avatica/remote/KerberosConnectionTest.java
+++ b/core/src/test/java/org/apache/calcite/avatica/remote/KerberosConnectionTest.java
@@ -24,7 +24,6 @@ import org.mockito.Mockito;
 import java.io.File;
 import java.util.Locale;
 import java.util.Map.Entry;
-
 import javax.security.auth.Subject;
 import javax.security.auth.login.Configuration;
 import javax.security.auth.login.LoginContext;
diff --git a/gradle.properties b/gradle.properties
index 67acf9f..1699514 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -32,6 +32,7 @@ calcite.avatica.version=1.16.0
 # publishGradleMetadata=true
 
 # Plugins
+com.diffplug.gradle.spotless.version=3.25.0
 com.github.johnrengelman.shadow.version=5.1.0
 com.github.spotbugs.version=2.0.0
 com.github.vlsi.vlsi-release-plugins.version=1.47.0
diff --git a/server/src/main/java/org/apache/calcite/avatica/jdbc/JdbcMeta.java b/server/src/main/java/org/apache/calcite/avatica/jdbc/JdbcMeta.java
index 7f19b11..257eead 100644
--- a/server/src/main/java/org/apache/calcite/avatica/jdbc/JdbcMeta.java
+++ b/server/src/main/java/org/apache/calcite/avatica/jdbc/JdbcMeta.java
@@ -46,8 +46,6 @@ import com.google.common.cache.RemovalNotification;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import static org.apache.calcite.avatica.remote.MetricsHelper.concat;
-
 import java.lang.reflect.InvocationTargetException;
 import java.sql.Connection;
 import java.sql.DatabaseMetaData;
@@ -71,6 +69,8 @@ import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import static org.apache.calcite.avatica.remote.MetricsHelper.concat;
+
 /** Implementation of {@link Meta} upon an existing JDBC data source. */
 public class JdbcMeta implements ProtobufMeta {
   private static final Logger LOG = LoggerFactory.getLogger(JdbcMeta.class);
diff --git a/server/src/main/java/org/apache/calcite/avatica/server/AbstractAvaticaHandler.java b/server/src/main/java/org/apache/calcite/avatica/server/AbstractAvaticaHandler.java
index edd9f0d..687c847 100644
--- a/server/src/main/java/org/apache/calcite/avatica/server/AbstractAvaticaHandler.java
+++ b/server/src/main/java/org/apache/calcite/avatica/server/AbstractAvaticaHandler.java
@@ -26,7 +26,6 @@ import org.eclipse.jetty.server.handler.AbstractHandler;
 import java.io.IOException;
 import java.net.HttpURLConnection;
 import java.util.Collections;
-
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
diff --git a/server/src/main/java/org/apache/calcite/avatica/server/AvaticaJsonHandler.java b/server/src/main/java/org/apache/calcite/avatica/server/AvaticaJsonHandler.java
index ff45400..094f7b2 100644
--- a/server/src/main/java/org/apache/calcite/avatica/server/AvaticaJsonHandler.java
+++ b/server/src/main/java/org/apache/calcite/avatica/server/AvaticaJsonHandler.java
@@ -34,7 +34,6 @@ import org.slf4j.LoggerFactory;
 import java.io.IOException;
 import java.util.Objects;
 import java.util.concurrent.Callable;
-
 import javax.servlet.ServletException;
 import javax.servlet.ServletInputStream;
 import javax.servlet.http.HttpServletRequest;
diff --git a/server/src/main/java/org/apache/calcite/avatica/server/AvaticaProtobufHandler.java b/server/src/main/java/org/apache/calcite/avatica/server/AvaticaProtobufHandler.java
index acb957b..1bf6af9 100644
--- a/server/src/main/java/org/apache/calcite/avatica/server/AvaticaProtobufHandler.java
+++ b/server/src/main/java/org/apache/calcite/avatica/server/AvaticaProtobufHandler.java
@@ -37,7 +37,6 @@ import org.slf4j.LoggerFactory;
 import java.io.IOException;
 import java.util.Objects;
 import java.util.concurrent.Callable;
-
 import javax.servlet.ServletException;
 import javax.servlet.ServletInputStream;
 import javax.servlet.http.HttpServletRequest;
diff --git a/server/src/main/java/org/apache/calcite/avatica/server/AvaticaSpnegoAuthenticator.java b/server/src/main/java/org/apache/calcite/avatica/server/AvaticaSpnegoAuthenticator.java
index 53724ca..d801d4f 100644
--- a/server/src/main/java/org/apache/calcite/avatica/server/AvaticaSpnegoAuthenticator.java
+++ b/server/src/main/java/org/apache/calcite/avatica/server/AvaticaSpnegoAuthenticator.java
@@ -24,7 +24,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.io.IOException;
-
 import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;
 import javax.servlet.http.HttpServletRequest;
diff --git a/server/src/main/java/org/apache/calcite/avatica/server/DelegatingAvaticaHandler.java b/server/src/main/java/org/apache/calcite/avatica/server/DelegatingAvaticaHandler.java
index fff176d..27a9708 100644
--- a/server/src/main/java/org/apache/calcite/avatica/server/DelegatingAvaticaHandler.java
+++ b/server/src/main/java/org/apache/calcite/avatica/server/DelegatingAvaticaHandler.java
@@ -21,13 +21,11 @@ import org.apache.calcite.avatica.remote.Service.RpcMetadataResponse;
 import org.eclipse.jetty.server.Handler;
 import org.eclipse.jetty.server.Request;
 import org.eclipse.jetty.server.Server;
-
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.io.IOException;
 import java.util.Objects;
-
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
diff --git a/server/src/main/java/org/apache/calcite/avatica/server/HttpQueryStringParameterRemoteUserExtractor.java b/server/src/main/java/org/apache/calcite/avatica/server/HttpQueryStringParameterRemoteUserExtractor.java
index 5419a2a..f1f6cee 100644
--- a/server/src/main/java/org/apache/calcite/avatica/server/HttpQueryStringParameterRemoteUserExtractor.java
+++ b/server/src/main/java/org/apache/calcite/avatica/server/HttpQueryStringParameterRemoteUserExtractor.java
@@ -17,7 +17,6 @@
 package org.apache.calcite.avatica.server;
 
 import java.util.Objects;
-
 import javax.servlet.http.HttpServletRequest;
 
 /**
diff --git a/server/src/main/java/org/apache/calcite/avatica/server/HttpServer.java b/server/src/main/java/org/apache/calcite/avatica/server/HttpServer.java
index a4d5dcb..989a01b 100644
--- a/server/src/main/java/org/apache/calcite/avatica/server/HttpServer.java
+++ b/server/src/main/java/org/apache/calcite/avatica/server/HttpServer.java
@@ -56,7 +56,6 @@ import java.util.Locale;
 import java.util.Objects;
 import java.util.Set;
 import java.util.concurrent.Callable;
-
 import javax.security.auth.Subject;
 import javax.security.auth.kerberos.KerberosPrincipal;
 import javax.security.auth.login.LoginContext;
diff --git a/server/src/main/java/org/apache/calcite/avatica/server/PropertyBasedSpnegoLoginService.java b/server/src/main/java/org/apache/calcite/avatica/server/PropertyBasedSpnegoLoginService.java
index d3accf2..2e19b8e 100644
--- a/server/src/main/java/org/apache/calcite/avatica/server/PropertyBasedSpnegoLoginService.java
+++ b/server/src/main/java/org/apache/calcite/avatica/server/PropertyBasedSpnegoLoginService.java
@@ -30,7 +30,6 @@ import org.slf4j.LoggerFactory;
 
 import java.lang.reflect.Field;
 import java.util.Objects;
-
 import javax.security.auth.Subject;
 import javax.servlet.ServletRequest;
 
diff --git a/server/src/main/java/org/apache/calcite/avatica/server/ServerKeytabJaasConf.java b/server/src/main/java/org/apache/calcite/avatica/server/ServerKeytabJaasConf.java
index c0927f1..1045b02 100644
--- a/server/src/main/java/org/apache/calcite/avatica/server/ServerKeytabJaasConf.java
+++ b/server/src/main/java/org/apache/calcite/avatica/server/ServerKeytabJaasConf.java
@@ -23,7 +23,6 @@ import org.slf4j.LoggerFactory;
 
 import java.util.HashMap;
 import java.util.Map;
-
 import javax.security.auth.login.AppConfigurationEntry;
 import javax.security.auth.login.Configuration;
 
diff --git a/server/src/test/java/org/apache/calcite/avatica/AvaticaSpnegoTest.java b/server/src/test/java/org/apache/calcite/avatica/AvaticaSpnegoTest.java
index 344871c..c33c6c2 100644
--- a/server/src/test/java/org/apache/calcite/avatica/AvaticaSpnegoTest.java
+++ b/server/src/test/java/org/apache/calcite/avatica/AvaticaSpnegoTest.java
@@ -30,7 +30,6 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
 import org.junit.runners.Parameterized.Parameters;
-
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -42,7 +41,6 @@ import java.sql.ResultSet;
 import java.sql.Statement;
 import java.util.ArrayList;
 import java.util.List;
-
 import javax.security.auth.Subject;
 
 import static org.junit.Assert.assertEquals;
diff --git a/server/src/test/java/org/apache/calcite/avatica/HttpBaseTest.java b/server/src/test/java/org/apache/calcite/avatica/HttpBaseTest.java
index b409749..7969eeb 100644
--- a/server/src/test/java/org/apache/calcite/avatica/HttpBaseTest.java
+++ b/server/src/test/java/org/apache/calcite/avatica/HttpBaseTest.java
@@ -36,7 +36,6 @@ import org.bouncycastle.cert.jcajce.JcaX509v3CertificateBuilder;
 import org.bouncycastle.jce.provider.BouncyCastleProvider;
 import org.bouncycastle.operator.OperatorCreationException;
 import org.bouncycastle.operator.jcajce.JcaContentSignerBuilder;
-
 import org.junit.AfterClass;
 import org.junit.Before;
 import org.slf4j.Logger;
diff --git a/server/src/test/java/org/apache/calcite/avatica/SpnegoTestUtil.java b/server/src/test/java/org/apache/calcite/avatica/SpnegoTestUtil.java
index e1f3782..2c5c763 100644
--- a/server/src/test/java/org/apache/calcite/avatica/SpnegoTestUtil.java
+++ b/server/src/test/java/org/apache/calcite/avatica/SpnegoTestUtil.java
@@ -41,7 +41,6 @@ import java.nio.charset.StandardCharsets;
 import java.security.AccessController;
 import java.security.Principal;
 import java.security.PrivilegedAction;
-
 import javax.security.auth.login.Configuration;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
diff --git a/server/src/test/java/org/apache/calcite/avatica/SslDriverTest.java b/server/src/test/java/org/apache/calcite/avatica/SslDriverTest.java
index 6277c7f..42abac5 100644
--- a/server/src/test/java/org/apache/calcite/avatica/SslDriverTest.java
+++ b/server/src/test/java/org/apache/calcite/avatica/SslDriverTest.java
@@ -24,11 +24,6 @@ import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
 import org.junit.runners.Parameterized.Parameters;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assume.assumeFalse;
-
 import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.ResultSet;
@@ -36,6 +31,11 @@ import java.sql.Statement;
 import java.util.ArrayList;
 import java.util.List;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assume.assumeFalse;
+
 /**
  * Test case for Avatica with TLS connectors.
  */
diff --git a/server/src/test/java/org/apache/calcite/avatica/server/AbstractAvaticaHandlerTest.java b/server/src/test/java/org/apache/calcite/avatica/server/AbstractAvaticaHandlerTest.java
index 0583436..93c634e 100644
--- a/server/src/test/java/org/apache/calcite/avatica/server/AbstractAvaticaHandlerTest.java
+++ b/server/src/test/java/org/apache/calcite/avatica/server/AbstractAvaticaHandlerTest.java
@@ -26,7 +26,6 @@ import org.junit.Test;
 
 import java.net.HttpURLConnection;
 import java.nio.charset.StandardCharsets;
-
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
diff --git a/server/src/test/java/org/apache/calcite/avatica/server/AvaticaJaasKrbUtil.java b/server/src/test/java/org/apache/calcite/avatica/server/AvaticaJaasKrbUtil.java
index f8a7c9b..0f41594 100644
--- a/server/src/test/java/org/apache/calcite/avatica/server/AvaticaJaasKrbUtil.java
+++ b/server/src/test/java/org/apache/calcite/avatica/server/AvaticaJaasKrbUtil.java
@@ -22,7 +22,6 @@ import java.io.File;
 import java.security.Principal;
 import java.util.HashSet;
 import java.util.Set;
-
 import javax.security.auth.Subject;
 import javax.security.auth.kerberos.KerberosPrincipal;
 import javax.security.auth.login.Configuration;
diff --git a/server/src/test/java/org/apache/calcite/avatica/server/AvaticaSpnegoAuthenticatorTest.java b/server/src/test/java/org/apache/calcite/avatica/server/AvaticaSpnegoAuthenticatorTest.java
index 586b9fd..acf814b 100644
--- a/server/src/test/java/org/apache/calcite/avatica/server/AvaticaSpnegoAuthenticatorTest.java
+++ b/server/src/test/java/org/apache/calcite/avatica/server/AvaticaSpnegoAuthenticatorTest.java
@@ -24,7 +24,6 @@ import org.junit.Test;
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
-
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
diff --git a/server/src/test/java/org/apache/calcite/avatica/server/CustomAuthHttpServerTest.java b/server/src/test/java/org/apache/calcite/avatica/server/CustomAuthHttpServerTest.java
index 2064669..464da84 100644
--- a/server/src/test/java/org/apache/calcite/avatica/server/CustomAuthHttpServerTest.java
+++ b/server/src/test/java/org/apache/calcite/avatica/server/CustomAuthHttpServerTest.java
@@ -40,16 +40,15 @@ import org.junit.Test;
 import org.mockito.Mockito;
 
 import java.sql.SQLException;
+import java.util.Arrays;
+import java.util.Properties;
+import java.util.concurrent.Callable;
 import javax.servlet.http.HttpServletRequest;
 
 import static org.hamcrest.core.StringContains.containsString;
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.fail;
 
-import java.util.Arrays;
-import java.util.Properties;
-import java.util.concurrent.Callable;
-
 /**
  * Test class for providing CustomAvaticaServerConfiguration to the HTTP Server
  */
diff --git a/server/src/test/java/org/apache/calcite/avatica/server/HttpServerCustomizerTest.java b/server/src/test/java/org/apache/calcite/avatica/server/HttpServerCustomizerTest.java
index a525682..e0adbef 100644
--- a/server/src/test/java/org/apache/calcite/avatica/server/HttpServerCustomizerTest.java
+++ b/server/src/test/java/org/apache/calcite/avatica/server/HttpServerCustomizerTest.java
@@ -22,7 +22,6 @@ import org.apache.calcite.avatica.remote.LocalService;
 import org.apache.calcite.avatica.remote.Service;
 
 import org.eclipse.jetty.server.Server;
-
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
diff --git a/server/src/test/java/org/apache/calcite/avatica/server/HttpServerSpnegoWithJaasTest.java b/server/src/test/java/org/apache/calcite/avatica/server/HttpServerSpnegoWithJaasTest.java
index 54d3c86..dd400db 100644
--- a/server/src/test/java/org/apache/calcite/avatica/server/HttpServerSpnegoWithJaasTest.java
+++ b/server/src/test/java/org/apache/calcite/avatica/server/HttpServerSpnegoWithJaasTest.java
@@ -45,7 +45,6 @@ import java.nio.charset.StandardCharsets;
 import java.security.Principal;
 import java.security.PrivilegedExceptionAction;
 import java.util.Set;
-
 import javax.security.auth.Subject;
 import javax.security.auth.kerberos.KerberosTicket;
 
diff --git a/server/src/test/java/org/apache/calcite/avatica/server/HttpServerSpnegoWithoutJaasTest.java b/server/src/test/java/org/apache/calcite/avatica/server/HttpServerSpnegoWithoutJaasTest.java
index 63e1b7f..bcaabdf 100644
--- a/server/src/test/java/org/apache/calcite/avatica/server/HttpServerSpnegoWithoutJaasTest.java
+++ b/server/src/test/java/org/apache/calcite/avatica/server/HttpServerSpnegoWithoutJaasTest.java
@@ -44,7 +44,6 @@ import java.nio.charset.StandardCharsets;
 import java.security.Principal;
 import java.security.PrivilegedExceptionAction;
 import java.util.Set;
-
 import javax.security.auth.Subject;
 import javax.security.auth.kerberos.KerberosTicket;
 
diff --git a/server/src/test/java/org/apache/calcite/avatica/test/AvaticaSuite.java b/server/src/test/java/org/apache/calcite/avatica/test/AvaticaSuite.java
index 661b0d4..a664c4a 100644
--- a/server/src/test/java/org/apache/calcite/avatica/test/AvaticaSuite.java
+++ b/server/src/test/java/org/apache/calcite/avatica/test/AvaticaSuite.java
@@ -17,7 +17,6 @@
 package org.apache.calcite.avatica.test;
 
 import org.apache.calcite.avatica.RemoteDriverTest;
-
 import org.apache.calcite.avatica.remote.ConnectionPropertiesTest;
 
 import org.junit.runner.RunWith;
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 217abf0..eb39a99 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -21,6 +21,7 @@ pluginManagement {
         fun String.v() = extra["$this.version"].toString()
         fun PluginDependenciesSpec.idv(id: String, key: String = id) = id(id) version key.v()
 
+        idv("com.diffplug.gradle.spotless")
         idv("com.github.johnrengelman.shadow")
         idv("com.github.spotbugs")
         idv("com.github.vlsi.crlf", "com.github.vlsi.vlsi-release-plugins")
diff --git a/site/community/index.md b/site/community/index.md
index bc4b26d..0545b93 100644
--- a/site/community/index.md
+++ b/site/community/index.md
@@ -22,4 +22,3 @@ See the License for the specific language governing permissions and
 limitations under the License.
 {% endcomment %}
 -->
-
diff --git a/src/main/config/checkstyle/checker.xml b/src/main/config/checkstyle/checker.xml
index c310433..7916684 100644
--- a/src/main/config/checkstyle/checker.xml
+++ b/src/main/config/checkstyle/checker.xml
@@ -120,13 +120,6 @@ limitations under the License.
       <property name="processJavadoc" value="true"/>
     </module>
     <module name="IllegalImport" />
-    <module name="AvoidStarImport" />
-    <module name="ImportOrder">
-      <property name="groups" value="org.apache.calcite,org.apache,au.com.,com.,io.,mondrian.,net.,org.,scala.,/^javax?\./"/>
-      <property name="ordered" value="true"/>
-      <property name="separated" value="true"/>
-      <property name="option" value="bottom"/>
-    </module>
 
     <!-- Checks for Javadoc comments (tree walker).       -->
     <!-- See http://checkstyle.sf.net/config_javadoc.html -->
diff --git a/standalone-server/build.gradle.kts b/standalone-server/build.gradle.kts
index 346fa0e..cd71851 100644
--- a/standalone-server/build.gradle.kts
+++ b/standalone-server/build.gradle.kts
@@ -19,7 +19,11 @@
 import com.github.vlsi.gradle.crlf.CrLfSpec
 import com.github.vlsi.gradle.crlf.LineEndings
 import com.github.vlsi.gradle.license.GatherLicenseTask
-import com.github.vlsi.gradle.license.api.*
+import com.github.vlsi.gradle.license.api.SimpleLicense
+import com.github.vlsi.gradle.license.api.SpdxLicense
+import com.github.vlsi.gradle.license.api.SpdxLicenseException
+import com.github.vlsi.gradle.license.api.and
+import com.github.vlsi.gradle.license.api.with
 import com.github.vlsi.gradle.release.Apache2LicenseRenderer
 import com.github.vlsi.gradle.release.ArtifactType
 import com.github.vlsi.gradle.release.dsl.dependencyLicenses
diff --git a/tck/build.gradle.kts b/tck/build.gradle.kts
index c827f13..481a7e5 100644
--- a/tck/build.gradle.kts
+++ b/tck/build.gradle.kts
@@ -19,7 +19,8 @@
 import com.github.vlsi.gradle.crlf.CrLfSpec
 import com.github.vlsi.gradle.crlf.LineEndings
 import com.github.vlsi.gradle.license.GatherLicenseTask
-import com.github.vlsi.gradle.license.api.*
+import com.github.vlsi.gradle.license.api.SimpleLicense
+import com.github.vlsi.gradle.license.api.SpdxLicense
 import com.github.vlsi.gradle.release.Apache2LicenseRenderer
 import com.github.vlsi.gradle.release.ArtifactType
 import com.github.vlsi.gradle.release.dsl.dependencyLicenses
@@ -48,8 +49,8 @@ dependencies {
     shaded("junit:junit")
     shaded("org.hamcrest:hamcrest-core")
     shaded("org.hsqldb:hsqldb")
-    //As long as we want to run compatibility checks again 1.6.0, we have to include these because
-    //they weren't yet provided by the avatica client jar
+    // As long as we want to run compatibility checks again 1.6.0, we have to include these because
+    // they weren't yet provided by the avatica client jar
     shaded("org.slf4j:slf4j-api")
     shaded("org.slf4j:slf4j-log4j12")