You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by ni...@apache.org on 2022/10/21 09:07:36 UTC

[pulsar] branch master updated: [feat][ci] check style for all source code (#18142)

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

nicoloboschi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/master by this push:
     new ae7722b0f49 [feat][ci] check style for all source code (#18142)
ae7722b0f49 is described below

commit ae7722b0f49097dea02f53abff8bc1ddcfe3fcc2
Author: tison <wa...@gmail.com>
AuthorDate: Fri Oct 21 17:07:26 2022 +0800

    [feat][ci] check style for all source code (#18142)
    
    * [feat][ci] check style for all source code
    
    This closes #18131.
    
    * fix violations
    
    Signed-off-by: tison <wa...@gmail.com>
    
    * no snapshot update
    
    Signed-off-by: tison <wa...@gmail.com>
    
    * remove mysterious dependency
    
    Signed-off-by: tison <wa...@gmail.com>
    
    Signed-off-by: tison <wa...@gmail.com>
---
 .github/workflows/pulsar-ci.yaml                   |  5 +++-
 .../pulsar/bcloader/BouncyCastleFipsLoader.java    |  1 -
 ...uncyCastleFipsLoader.java => package-info.java} | 28 -------------------
 .../pulsar/tests/MockitoCleanupListener.java       | 12 +++++----
 .../apache/pulsar/jclouds/ShadedJCloudsUtils.java  |  5 ++--
 .../org/apache/pulsar/jclouds/package-info.java    | 19 +++++++++++++
 pom.xml                                            |  7 -----
 .../pulsar/client/cli/PulsarClientToolTest.java    |  3 ---
 .../apache/pulsar/io/jdbc/JdbcAbstractSink.java    |  8 ++++--
 .../core/impl/PackagesManagementImpl.java          |  8 +++---
 .../functions/RemoveAvroFieldFunction.java         | 31 +++++++++++++---------
 .../tests/integration/functions/package-info.java  | 19 +++++++++++++
 .../integration/io/TestGenericObjectSink.java      | 20 +++++++++-----
 .../tests/integration/io/TestPropertySource.java   |  5 ++--
 .../pulsar/tests/integration/io/TestStateSink.java |  5 ++--
 .../tests/integration/io/TestStateSource.java      |  6 ++---
 .../pulsar/tests/integration/io/package-info.java  | 19 +++++++++++++
 .../integration/SimpleProducerConsumerTest.java    | 30 ++++++++++-----------
 .../integration/SimpleProducerConsumerTest.java    | 23 +++++++---------
 .../integration/SimpleProducerConsumerTest.java    | 30 ++++++++++-----------
 20 files changed, 157 insertions(+), 127 deletions(-)

diff --git a/.github/workflows/pulsar-ci.yaml b/.github/workflows/pulsar-ci.yaml
index c7198b04917..a488fca2f17 100644
--- a/.github/workflows/pulsar-ci.yaml
+++ b/.github/workflows/pulsar-ci.yaml
@@ -106,9 +106,12 @@ jobs:
       - name: Check source code license headers
         run: mvn -B -T 8 -ntp initialize apache-rat:check license:check
 
+      - name: Check source code style
+        run: mvn -B -T 8 -ntp initialize checkstyle:check
+
       - name: Build core-modules
         run: |
-          mvn -B -T 1C -ntp -Pcore-modules,-main clean install -DskipTests -Dlicense.skip=true -Drat.skip=true
+          mvn -B -T 1C -ntp -Pcore-modules,-main clean install -DskipTests -Dlicense.skip=true -Drat.skip=true -Dcheckstyle.skip=true
 
       - name: Check binary licenses
         run: src/check-binary-license.sh ./distribution/server/target/apache-pulsar-*-bin.tar.gz
diff --git a/bouncy-castle/bcfips/src/main/java/org/apache/pulsar/bcloader/BouncyCastleFipsLoader.java b/bouncy-castle/bcfips/src/main/java/org/apache/pulsar/bcloader/BouncyCastleFipsLoader.java
index 984df776d1e..2ea003b9b46 100644
--- a/bouncy-castle/bcfips/src/main/java/org/apache/pulsar/bcloader/BouncyCastleFipsLoader.java
+++ b/bouncy-castle/bcfips/src/main/java/org/apache/pulsar/bcloader/BouncyCastleFipsLoader.java
@@ -19,7 +19,6 @@
 package org.apache.pulsar.bcloader;
 
 import static org.apache.pulsar.common.util.SecurityUtility.BC_FIPS;
-
 import java.security.Provider;
 import java.security.Security;
 import lombok.extern.slf4j.Slf4j;
diff --git a/bouncy-castle/bcfips/src/main/java/org/apache/pulsar/bcloader/BouncyCastleFipsLoader.java b/bouncy-castle/bcfips/src/main/java/org/apache/pulsar/bcloader/package-info.java
similarity index 50%
copy from bouncy-castle/bcfips/src/main/java/org/apache/pulsar/bcloader/BouncyCastleFipsLoader.java
copy to bouncy-castle/bcfips/src/main/java/org/apache/pulsar/bcloader/package-info.java
index 984df776d1e..5d3c8c00a07 100644
--- a/bouncy-castle/bcfips/src/main/java/org/apache/pulsar/bcloader/BouncyCastleFipsLoader.java
+++ b/bouncy-castle/bcfips/src/main/java/org/apache/pulsar/bcloader/package-info.java
@@ -17,31 +17,3 @@
  * under the License.
  */
 package org.apache.pulsar.bcloader;
-
-import static org.apache.pulsar.common.util.SecurityUtility.BC_FIPS;
-
-import java.security.Provider;
-import java.security.Security;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.pulsar.common.util.BCLoader;
-import org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider;
-
-/**
- * This is a Bouncy Castle provider Loader.
- */
-@Slf4j
-public class BouncyCastleFipsLoader implements BCLoader {
-    public static Provider provider;
-    static {
-        if (Security.getProvider(BC_FIPS) == null) {
-            Security.addProvider(new BouncyCastleFipsProvider());
-        }
-        provider = Security.getProvider(BC_FIPS);
-        log.info("BouncyCastle Provider BC_FIPS: {}", Security.getProvider(BC_FIPS));
-    }
-
-    @Override
-    public Provider getProvider() {
-        return Security.getProvider(BC_FIPS);
-    }
-}
diff --git a/buildtools/src/main/java/org/apache/pulsar/tests/MockitoCleanupListener.java b/buildtools/src/main/java/org/apache/pulsar/tests/MockitoCleanupListener.java
index ff590c05bbc..de0ba280ace 100644
--- a/buildtools/src/main/java/org/apache/pulsar/tests/MockitoCleanupListener.java
+++ b/buildtools/src/main/java/org/apache/pulsar/tests/MockitoCleanupListener.java
@@ -32,16 +32,18 @@ import org.slf4j.LoggerFactory;
  */
 public class MockitoCleanupListener extends BetweenTestClassesListenerAdapter {
     private static final Logger LOG = LoggerFactory.getLogger(MockitoCleanupListener.class);
-    private static final boolean
-            MOCKITO_CLEANUP_ENABLED = Boolean.parseBoolean(System.getProperty("testMockitoCleanup", "true"));
+    private static final boolean MOCKITO_CLEANUP_ENABLED = Boolean.parseBoolean(
+            System.getProperty("testMockitoCleanup", "true"));
+
+    private static final String MOCKITO_CLEANUP_INFO =
+            "Cleaning up Mockito's ThreadSafeMockingProgress.MOCKING_PROGRESS_PROVIDER thread local state.";
 
     @Override
     protected void onBetweenTestClasses(Class<?> endedTestClass, Class<?> startedTestClass) {
         if (MOCKITO_CLEANUP_ENABLED) {
             try {
                 if (MockitoThreadLocalStateCleaner.INSTANCE.isEnabled()) {
-                    LOG.info(
-                            "Cleaning up Mockito's ThreadSafeMockingProgress.MOCKING_PROGRESS_PROVIDER thread local state.");
+                    LOG.info(MOCKITO_CLEANUP_INFO);
                     MockitoThreadLocalStateCleaner.INSTANCE.cleanup();
                 }
             } finally {
@@ -53,7 +55,7 @@ public class MockitoCleanupListener extends BetweenTestClassesListenerAdapter {
     /**
      * Mockito-inline can leak mocked objects, we need to clean up the inline mocks after every test.
      * See <a href="https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html#47"}>
-     *     mockito docs</a>.
+     * mockito docs</a>.
      */
     private void cleanupMockitoInline() {
         Mockito.framework().clearInlineMocks();
diff --git a/jclouds-shaded/src/main/java/org/apache/pulsar/jclouds/ShadedJCloudsUtils.java b/jclouds-shaded/src/main/java/org/apache/pulsar/jclouds/ShadedJCloudsUtils.java
index d2c1b0740a8..20215f5d0af 100644
--- a/jclouds-shaded/src/main/java/org/apache/pulsar/jclouds/ShadedJCloudsUtils.java
+++ b/jclouds-shaded/src/main/java/org/apache/pulsar/jclouds/ShadedJCloudsUtils.java
@@ -19,6 +19,8 @@
 package org.apache.pulsar.jclouds;
 
 import com.google.inject.AbstractModule;
+import java.util.ArrayList;
+import java.util.List;
 import lombok.experimental.UtilityClass;
 import lombok.extern.slf4j.Slf4j;
 import org.jclouds.ContextBuilder;
@@ -26,9 +28,6 @@ import org.jclouds.http.apachehc.config.ApacheHCHttpCommandExecutorServiceModule
 import org.jclouds.http.okhttp.config.OkHttpCommandExecutorServiceModule;
 import org.jclouds.logging.slf4j.config.SLF4JLoggingModule;
 
-import java.util.ArrayList;
-import java.util.List;
-
 /**
  * This utility class helps in dealing with shaded dependencies (especially Guice).
  */
diff --git a/jclouds-shaded/src/main/java/org/apache/pulsar/jclouds/package-info.java b/jclouds-shaded/src/main/java/org/apache/pulsar/jclouds/package-info.java
new file mode 100644
index 00000000000..08fa9c45454
--- /dev/null
+++ b/jclouds-shaded/src/main/java/org/apache/pulsar/jclouds/package-info.java
@@ -0,0 +1,19 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.pulsar.jclouds;
diff --git a/pom.xml b/pom.xml
index bb7709a5711..eef1a358530 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1410,13 +1410,6 @@ flexible messaging model and an intuitive client API.</description>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-checkstyle-plugin</artifactId>
-        <dependencies>
-          <dependency>
-            <groupId>org.apache.pulsar</groupId>
-            <artifactId>buildtools</artifactId>
-            <version>${project.version}</version>
-          </dependency>
-        </dependencies>
       </plugin>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
diff --git a/pulsar-client-tools-test/src/test/java/org/apache/pulsar/client/cli/PulsarClientToolTest.java b/pulsar-client-tools-test/src/test/java/org/apache/pulsar/client/cli/PulsarClientToolTest.java
index 29b82ae401e..3d6ca4d9330 100644
--- a/pulsar-client-tools-test/src/test/java/org/apache/pulsar/client/cli/PulsarClientToolTest.java
+++ b/pulsar-client-tools-test/src/test/java/org/apache/pulsar/client/cli/PulsarClientToolTest.java
@@ -19,7 +19,6 @@
 package org.apache.pulsar.client.cli;
 
 import static org.testng.Assert.assertEquals;
-
 import java.time.Duration;
 import java.util.Properties;
 import java.util.UUID;
@@ -28,8 +27,6 @@ import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
-
-import com.beust.jcommander.JCommander;
 import lombok.Cleanup;
 import org.apache.pulsar.broker.service.BrokerTestBase;
 import org.apache.pulsar.client.admin.PulsarAdminException;
diff --git a/pulsar-io/jdbc/core/src/main/java/org/apache/pulsar/io/jdbc/JdbcAbstractSink.java b/pulsar-io/jdbc/core/src/main/java/org/apache/pulsar/io/jdbc/JdbcAbstractSink.java
index 06beaaacf9e..92bad427056 100644
--- a/pulsar-io/jdbc/core/src/main/java/org/apache/pulsar/io/jdbc/JdbcAbstractSink.java
+++ b/pulsar-io/jdbc/core/src/main/java/org/apache/pulsar/io/jdbc/JdbcAbstractSink.java
@@ -25,7 +25,6 @@ import java.sql.DriverManager;
 import java.sql.PreparedStatement;
 import java.sql.SQLException;
 import java.sql.Statement;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Deque;
 import java.util.HashMap;
@@ -334,7 +333,12 @@ public abstract class JdbcAbstractSink<T> implements Sink<T> {
         }
     }
 
-    private void internalFlushBatch(Deque<Record<T>> swapList, PreparedStatement currentBatch, int count, long start) throws SQLException {
+    private void internalFlushBatch(
+            Deque<Record<T>> swapList,
+            PreparedStatement currentBatch,
+            int count,
+            long start
+    ) throws SQLException {
         executeBatch(swapList, currentBatch);
         if (log.isDebugEnabled()) {
             log.debug("Flushed {} messages in {} ms", count, (System.nanoTime() - start) / 1000 / 1000);
diff --git a/pulsar-package-management/core/src/main/java/org/apache/pulsar/packages/management/core/impl/PackagesManagementImpl.java b/pulsar-package-management/core/src/main/java/org/apache/pulsar/packages/management/core/impl/PackagesManagementImpl.java
index 792a1ecf106..de75360dc24 100644
--- a/pulsar-package-management/core/src/main/java/org/apache/pulsar/packages/management/core/impl/PackagesManagementImpl.java
+++ b/pulsar-package-management/core/src/main/java/org/apache/pulsar/packages/management/core/impl/PackagesManagementImpl.java
@@ -84,20 +84,20 @@ public class PackagesManagementImpl implements PackagesManagement {
                     future.completeExceptionally(throwable);
                     return;
                 }
-                try (ByteArrayInputStream inputStream = new ByteArrayInputStream(PackageMetadataUtil.toBytes(metadata))) {
+                try (ByteArrayInputStream in = new ByteArrayInputStream(PackageMetadataUtil.toBytes(metadata))) {
                     storage.deleteAsync(metadataPath)
-                        .thenCompose(aVoid -> storage.writeAsync(metadataPath, inputStream))
+                        .thenCompose(aVoid -> storage.writeAsync(metadataPath, in))
                         .whenComplete((aVoid, t) -> {
                             if (t != null) {
                                 future.completeExceptionally(new PackagesManagementException(
-                                    String.format("Update package '%s' metadata failed", packageName.toString()), t));
+                                    String.format("Update package '%s' metadata failed", packageName), t));
                             } else {
                                 future.complete(null);
                             }
                         });
                 } catch (IOException e) {
                     future.completeExceptionally(new PackagesManagementException(
-                        String.format("Read package '%s' metadata failed", packageName.toString()), e));
+                        String.format("Read package '%s' metadata failed", packageName), e));
                 }
             });
         return future;
diff --git a/tests/docker-images/java-test-functions/src/main/java/org/apache/pulsar/tests/integration/functions/RemoveAvroFieldFunction.java b/tests/docker-images/java-test-functions/src/main/java/org/apache/pulsar/tests/integration/functions/RemoveAvroFieldFunction.java
index cc2a81bde64..6d23676cf0c 100644
--- a/tests/docker-images/java-test-functions/src/main/java/org/apache/pulsar/tests/integration/functions/RemoveAvroFieldFunction.java
+++ b/tests/docker-images/java-test-functions/src/main/java/org/apache/pulsar/tests/integration/functions/RemoveAvroFieldFunction.java
@@ -18,6 +18,8 @@
  */
 package org.apache.pulsar.tests.integration.functions;
 
+import java.io.ByteArrayOutputStream;
+import java.util.stream.Collectors;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.avro.generic.GenericData;
 import org.apache.avro.generic.GenericDatumWriter;
@@ -33,11 +35,8 @@ import org.apache.pulsar.functions.api.Context;
 import org.apache.pulsar.functions.api.Function;
 import org.apache.pulsar.functions.api.Record;
 
-import java.io.ByteArrayOutputStream;
-import java.util.stream.Collectors;
-
 /**
- * This function removes a "field" from a AVRO message
+ * This function removes a "field" from a AVRO message.
  */
 @Slf4j
 public class RemoveAvroFieldFunction implements Function<GenericObject, Void> {
@@ -70,18 +69,22 @@ public class RemoveAvroFieldFunction implements Function<GenericObject, Void> {
                     org.apache.avro.Schema.Parser parser = new org.apache.avro.Schema.Parser();
                     org.apache.avro.Schema originalAvroSchema = parser.parse(avroSchema.toString(false));
                     org.apache.avro.Schema modified = org.apache.avro.Schema.createRecord(
-                            originalAvroSchema.getName(), originalAvroSchema.getDoc(), originalAvroSchema.getNamespace(), originalAvroSchema.isError(),
+                            originalAvroSchema.getName(),
+                            originalAvroSchema.getDoc(),
+                            originalAvroSchema.getNamespace(),
+                            originalAvroSchema.isError(),
                             originalAvroSchema.getFields().
                                     stream()
                                     .filter(f->!f.name().equals(FIELD_TO_REMOVE))
-                                    .map(f-> new org.apache.avro.Schema.Field(f.name(), f.schema(), f.doc(), f.defaultVal(), f.order()))
+                                    .map(f-> new org.apache.avro.Schema.Field(
+                                            f.name(), f.schema(), f.doc(), f.defaultVal(), f.order()))
                                     .collect(Collectors.toList()));
 
                     KeyValue originalObject = (KeyValue) nativeObject;
 
                     GenericRecord value = (GenericRecord) originalObject.getValue();
-                    org.apache.avro.generic.GenericRecord genericRecord
-                            = (org.apache.avro.generic.GenericRecord) value.getNativeObject();
+                    org.apache.avro.generic.GenericRecord genericRecord =
+                            (org.apache.avro.generic.GenericRecord) value.getNativeObject();
 
                     org.apache.avro.generic.GenericRecord newRecord = new GenericData.Record(modified);
                     for (org.apache.avro.Schema.Field field : modified.getFields()) {
@@ -105,15 +108,19 @@ public class RemoveAvroFieldFunction implements Function<GenericObject, Void> {
                 org.apache.avro.Schema.Parser parser = new org.apache.avro.Schema.Parser();
                 org.apache.avro.Schema originalAvroSchema = parser.parse(avroSchema.toString(false));
                 org.apache.avro.Schema modified = org.apache.avro.Schema.createRecord(
-                        originalAvroSchema.getName(), originalAvroSchema.getDoc(), originalAvroSchema.getNamespace(), originalAvroSchema.isError(),
+                        originalAvroSchema.getName(),
+                        originalAvroSchema.getDoc(),
+                        originalAvroSchema.getNamespace(),
+                        originalAvroSchema.isError(),
                         originalAvroSchema.getFields().
                                 stream()
                                 .filter(f -> !f.name().equals(FIELD_TO_REMOVE))
-                                .map(f -> new org.apache.avro.Schema.Field(f.name(), f.schema(), f.doc(), f.defaultVal(), f.order()))
+                                .map(f -> new org.apache.avro.Schema.Field(
+                                        f.name(), f.schema(), f.doc(), f.defaultVal(), f.order()))
                                 .collect(Collectors.toList()));
 
-                org.apache.avro.generic.GenericRecord genericRecord
-                        = (org.apache.avro.generic.GenericRecord) nativeObject;
+                org.apache.avro.generic.GenericRecord genericRecord =
+                        (org.apache.avro.generic.GenericRecord) nativeObject;
                 org.apache.avro.generic.GenericRecord newRecord = new GenericData.Record(modified);
                 for (org.apache.avro.Schema.Field field : modified.getFields()) {
                     newRecord.put(field.name(), genericRecord.get(field.name()));
diff --git a/tests/docker-images/java-test-functions/src/main/java/org/apache/pulsar/tests/integration/functions/package-info.java b/tests/docker-images/java-test-functions/src/main/java/org/apache/pulsar/tests/integration/functions/package-info.java
new file mode 100644
index 00000000000..5bd909ebb69
--- /dev/null
+++ b/tests/docker-images/java-test-functions/src/main/java/org/apache/pulsar/tests/integration/functions/package-info.java
@@ -0,0 +1,19 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.pulsar.tests.integration.functions;
diff --git a/tests/docker-images/java-test-functions/src/main/java/org/apache/pulsar/tests/integration/io/TestGenericObjectSink.java b/tests/docker-images/java-test-functions/src/main/java/org/apache/pulsar/tests/integration/io/TestGenericObjectSink.java
index fa8a3fe2211..1cc0abd8e99 100644
--- a/tests/docker-images/java-test-functions/src/main/java/org/apache/pulsar/tests/integration/io/TestGenericObjectSink.java
+++ b/tests/docker-images/java-test-functions/src/main/java/org/apache/pulsar/tests/integration/io/TestGenericObjectSink.java
@@ -19,6 +19,7 @@
 package org.apache.pulsar.tests.integration.io;
 
 import com.fasterxml.jackson.databind.JsonNode;
+import java.util.Map;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.avro.generic.GenericRecord;
 import org.apache.pulsar.client.api.schema.GenericObject;
@@ -28,7 +29,6 @@ import org.apache.pulsar.common.schema.SchemaType;
 import org.apache.pulsar.functions.api.Record;
 import org.apache.pulsar.io.core.Sink;
 import org.apache.pulsar.io.core.SinkContext;
-import java.util.Map;
 
 @Slf4j
 public class TestGenericObjectSink implements Sink<GenericObject> {
@@ -49,7 +49,11 @@ public class TestGenericObjectSink implements Sink<GenericObject> {
         String expectedRecordType = record.getProperties().getOrDefault("expectedType", "MISSING");
         log.info("expectedRecordType {}", expectedRecordType);
         if (!expectedRecordType.equals(record.getSchema().getSchemaInfo().getType().name())) {
-            throw new RuntimeException("Unexpected record type " + record.getSchema().getSchemaInfo().getType().name() + " is not " + expectedRecordType);
+            final String message = String.format(
+                    "Unexpected record type %s is not %s",
+                    record.getSchema().getSchemaInfo().getType().name(),
+                    expectedRecordType);
+            throw new RuntimeException(message);
         }
 
         log.info("value {}", record.getValue());
@@ -67,9 +71,11 @@ public class TestGenericObjectSink implements Sink<GenericObject> {
             log.info("kvkey {}", keyValue.getKey());
             log.info("kvvalue {}", keyValue.getValue());
         }
-        log.info("value {}", record.getValue());
-        log.info("value schema type {}", record.getValue().getSchemaType());
-        log.info("value native object {} class {}", record.getValue().getNativeObject(), record.getValue().getNativeObject().getClass());
+
+        final GenericObject value = record.getValue();
+        log.info("value {}", value);
+        log.info("value schema type {}", value.getSchemaType());
+        log.info("value native object {} class {}", value.getNativeObject(), value.getNativeObject().getClass());
 
         String expectedSchemaDefinition = record.getProperties().getOrDefault("expectedSchemaDefinition", "");
         log.info("schemaDefinition {}", record.getSchema().getSchemaInfo().getSchemaDefinition());
@@ -77,7 +83,9 @@ public class TestGenericObjectSink implements Sink<GenericObject> {
         if (!expectedSchemaDefinition.isEmpty()) {
             String schemaDefinition = record.getSchema().getSchemaInfo().getSchemaDefinition();
             if (!expectedSchemaDefinition.equals(schemaDefinition)) {
-                throw new RuntimeException("Unexpected schema definition " + schemaDefinition + " is not " + expectedSchemaDefinition);
+                final String message = String.format(
+                        "Unexpected schema definition %s is not %s", schemaDefinition, expectedSchemaDefinition);
+                throw new RuntimeException(message);
             }
         }
 
diff --git a/tests/docker-images/java-test-functions/src/main/java/org/apache/pulsar/tests/integration/io/TestPropertySource.java b/tests/docker-images/java-test-functions/src/main/java/org/apache/pulsar/tests/integration/io/TestPropertySource.java
index 5809cc7c694..f76df706bc8 100644
--- a/tests/docker-images/java-test-functions/src/main/java/org/apache/pulsar/tests/integration/io/TestPropertySource.java
+++ b/tests/docker-images/java-test-functions/src/main/java/org/apache/pulsar/tests/integration/io/TestPropertySource.java
@@ -18,13 +18,12 @@
  */
 package org.apache.pulsar.tests.integration.io;
 
+import java.util.HashMap;
+import java.util.Map;
 import org.apache.pulsar.functions.api.Record;
 import org.apache.pulsar.io.core.Source;
 import org.apache.pulsar.io.core.SourceContext;
 
-import java.util.HashMap;
-import java.util.Map;
-
 public class TestPropertySource implements Source<String> {
 
     @Override
diff --git a/tests/docker-images/java-test-functions/src/main/java/org/apache/pulsar/tests/integration/io/TestStateSink.java b/tests/docker-images/java-test-functions/src/main/java/org/apache/pulsar/tests/integration/io/TestStateSink.java
index d1d074065e3..20cf517ba7d 100644
--- a/tests/docker-images/java-test-functions/src/main/java/org/apache/pulsar/tests/integration/io/TestStateSink.java
+++ b/tests/docker-images/java-test-functions/src/main/java/org/apache/pulsar/tests/integration/io/TestStateSink.java
@@ -18,13 +18,12 @@
  */
 package org.apache.pulsar.tests.integration.io;
 
+import java.nio.ByteBuffer;
+import java.util.Map;
 import org.apache.pulsar.functions.api.Record;
 import org.apache.pulsar.io.core.Sink;
 import org.apache.pulsar.io.core.SinkContext;
 
-import java.nio.ByteBuffer;
-import java.util.Map;
-
 public class TestStateSink implements Sink<String> {
 
     private SinkContext sinkContext;
diff --git a/tests/docker-images/java-test-functions/src/main/java/org/apache/pulsar/tests/integration/io/TestStateSource.java b/tests/docker-images/java-test-functions/src/main/java/org/apache/pulsar/tests/integration/io/TestStateSource.java
index ebbd8097b21..879be866b85 100644
--- a/tests/docker-images/java-test-functions/src/main/java/org/apache/pulsar/tests/integration/io/TestStateSource.java
+++ b/tests/docker-images/java-test-functions/src/main/java/org/apache/pulsar/tests/integration/io/TestStateSource.java
@@ -18,16 +18,14 @@
  */
 package org.apache.pulsar.tests.integration.io;
 
+import java.nio.ByteBuffer;
+import java.util.Map;
 import org.apache.pulsar.functions.api.Record;
 import org.apache.pulsar.io.core.Source;
 import org.apache.pulsar.io.core.SourceContext;
 
-import java.nio.ByteBuffer;
-import java.util.Map;
-
 public class TestStateSource implements Source<String> {
 
-
     private SourceContext sourceContext;
     private int count;
 
diff --git a/tests/docker-images/java-test-functions/src/main/java/org/apache/pulsar/tests/integration/io/package-info.java b/tests/docker-images/java-test-functions/src/main/java/org/apache/pulsar/tests/integration/io/package-info.java
new file mode 100644
index 00000000000..167535514cf
--- /dev/null
+++ b/tests/docker-images/java-test-functions/src/main/java/org/apache/pulsar/tests/integration/io/package-info.java
@@ -0,0 +1,19 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.pulsar.tests.integration.io;
diff --git a/tests/pulsar-client-admin-shade-test/src/test/java/org/apache/pulsar/tests/integration/SimpleProducerConsumerTest.java b/tests/pulsar-client-admin-shade-test/src/test/java/org/apache/pulsar/tests/integration/SimpleProducerConsumerTest.java
index 3e33cd13a47..4474d434852 100644
--- a/tests/pulsar-client-admin-shade-test/src/test/java/org/apache/pulsar/tests/integration/SimpleProducerConsumerTest.java
+++ b/tests/pulsar-client-admin-shade-test/src/test/java/org/apache/pulsar/tests/integration/SimpleProducerConsumerTest.java
@@ -21,6 +21,20 @@ package org.apache.pulsar.tests.integration;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNull;
 import static org.testng.Assert.assertTrue;
+import java.io.IOException;
+import java.net.URI;
+import java.nio.ByteBuffer;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.security.Security;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Optional;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
 import lombok.Cleanup;
 import org.apache.pulsar.client.admin.PulsarAdmin;
 import org.apache.pulsar.client.api.CompressionType;
@@ -29,7 +43,6 @@ import org.apache.pulsar.client.api.ConsumerCryptoFailureAction;
 import org.apache.pulsar.client.api.CryptoKeyReader;
 import org.apache.pulsar.client.api.EncryptionKeyInfo;
 import org.apache.pulsar.client.api.Message;
-import org.apache.pulsar.client.api.MessageCrypto;
 import org.apache.pulsar.client.api.MessageRoutingMode;
 import org.apache.pulsar.client.api.Producer;
 import org.apache.pulsar.client.api.PulsarClient;
@@ -55,21 +68,6 @@ import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
-import java.io.IOException;
-import java.net.URI;
-import java.nio.ByteBuffer;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.security.Security;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
-import java.util.concurrent.TimeUnit;
-
 public class SimpleProducerConsumerTest extends TestRetrySupport {
     private static final Logger log = LoggerFactory.getLogger(SimpleProducerConsumerTest.class);
 
diff --git a/tests/pulsar-client-all-shade-test/src/test/java/org/apache/pulsar/tests/integration/SimpleProducerConsumerTest.java b/tests/pulsar-client-all-shade-test/src/test/java/org/apache/pulsar/tests/integration/SimpleProducerConsumerTest.java
index d66502f6c92..858b4cf0bf5 100644
--- a/tests/pulsar-client-all-shade-test/src/test/java/org/apache/pulsar/tests/integration/SimpleProducerConsumerTest.java
+++ b/tests/pulsar-client-all-shade-test/src/test/java/org/apache/pulsar/tests/integration/SimpleProducerConsumerTest.java
@@ -18,6 +18,15 @@
  */
 package org.apache.pulsar.tests.integration;
 
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNull;
+import static org.testng.Assert.assertTrue;
+import java.io.IOException;
+import java.net.URI;
+import java.nio.ByteBuffer;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.security.Security;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
@@ -25,6 +34,7 @@ import java.util.HashSet;
 import java.util.Map;
 import java.util.Optional;
 import java.util.Set;
+import java.util.concurrent.TimeUnit;
 import lombok.Cleanup;
 import org.apache.pulsar.client.admin.PulsarAdmin;
 import org.apache.pulsar.client.api.CompressionType;
@@ -33,7 +43,6 @@ import org.apache.pulsar.client.api.ConsumerCryptoFailureAction;
 import org.apache.pulsar.client.api.CryptoKeyReader;
 import org.apache.pulsar.client.api.EncryptionKeyInfo;
 import org.apache.pulsar.client.api.Message;
-import org.apache.pulsar.client.api.MessageCrypto;
 import org.apache.pulsar.client.api.MessageRoutingMode;
 import org.apache.pulsar.client.api.Producer;
 import org.apache.pulsar.client.api.PulsarClient;
@@ -59,18 +68,6 @@ import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
-import java.io.IOException;
-import java.net.URI;
-import java.nio.ByteBuffer;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.security.Security;
-import java.util.concurrent.TimeUnit;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNull;
-import static org.testng.Assert.assertTrue;
-
 public class SimpleProducerConsumerTest extends TestRetrySupport {
     private static final Logger log = LoggerFactory.getLogger(SimpleProducerConsumerTest.class);
 
diff --git a/tests/pulsar-client-shade-test/src/test/java/org/apache/pulsar/tests/integration/SimpleProducerConsumerTest.java b/tests/pulsar-client-shade-test/src/test/java/org/apache/pulsar/tests/integration/SimpleProducerConsumerTest.java
index 9f6f23595c1..bf6e67beebd 100644
--- a/tests/pulsar-client-shade-test/src/test/java/org/apache/pulsar/tests/integration/SimpleProducerConsumerTest.java
+++ b/tests/pulsar-client-shade-test/src/test/java/org/apache/pulsar/tests/integration/SimpleProducerConsumerTest.java
@@ -21,6 +21,20 @@ package org.apache.pulsar.tests.integration;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNull;
 import static org.testng.Assert.assertTrue;
+import java.io.IOException;
+import java.net.URI;
+import java.nio.ByteBuffer;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.security.Security;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Optional;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
 import lombok.Cleanup;
 import org.apache.pulsar.client.admin.PulsarAdmin;
 import org.apache.pulsar.client.api.CompressionType;
@@ -29,7 +43,6 @@ import org.apache.pulsar.client.api.ConsumerCryptoFailureAction;
 import org.apache.pulsar.client.api.CryptoKeyReader;
 import org.apache.pulsar.client.api.EncryptionKeyInfo;
 import org.apache.pulsar.client.api.Message;
-import org.apache.pulsar.client.api.MessageCrypto;
 import org.apache.pulsar.client.api.MessageRoutingMode;
 import org.apache.pulsar.client.api.Producer;
 import org.apache.pulsar.client.api.PulsarClient;
@@ -55,21 +68,6 @@ import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
-import java.io.IOException;
-import java.net.URI;
-import java.nio.ByteBuffer;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.security.Security;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
-import java.util.concurrent.TimeUnit;
-
 public class SimpleProducerConsumerTest extends TestRetrySupport {
     private static final Logger log = LoggerFactory.getLogger(SimpleProducerConsumerTest.class);