You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iggy.apache.org by ma...@apache.org on 2025/11/17 21:07:48 UTC

(iggy) branch java-formatting created (now e69600b3d)

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

maciej pushed a change to branch java-formatting
in repository https://gitbox.apache.org/repos/asf/iggy.git


      at e69600b3d chore(java): fix linting issues and add formatter

This branch includes the following new commits:

     new e69600b3d chore(java): fix linting issues and add formatter

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



(iggy) 01/01: chore(java): fix linting issues and add formatter

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

maciej pushed a commit to branch java-formatting
in repository https://gitbox.apache.org/repos/asf/iggy.git

commit e69600b3d3c6a8cd498933c98f6f79e784cb20b3
Author: Maciej Modzelewski <ma...@modzelewski.dev>
AuthorDate: Mon Nov 17 20:46:59 2025 +0100

    chore(java): fix linting issues and add formatter
---
 .github/actions/java-gradle/pre-merge/action.yml   |   5 +-
 .../IggyClientBuilder.java => build.gradle.kts}    |  28 +--
 foreign/java/dev-support/checkstyle/checkstyle.xml | 192 ++++++----------
 .../apache/iggy/async/AsyncConsumerExample.java    | 107 +++++----
 .../java/org/apache/iggy/async/AsyncProducer.java  | 167 +++++++-------
 .../org/apache/iggy/consumer/SimpleConsumer.java   |  29 ++-
 .../org/apache/iggy/producer/SimpleProducer.java   |  11 +-
 .../connector/config/IggyConnectionConfig.java     |  47 ++--
 .../apache/iggy/connector/config/OffsetConfig.java |   9 +-
 .../iggy/connector/flink/sink/IggyCommittable.java |   7 +-
 .../apache/iggy/connector/flink/sink/IggySink.java |  23 +-
 .../iggy/connector/flink/sink/IggySinkBuilder.java |  14 +-
 .../iggy/connector/flink/sink/IggySinkWriter.java  |  50 ++--
 .../flink/source/IggyPartitionSplitReader.java     |  73 +++---
 .../iggy/connector/flink/source/IggySource.java    |  40 ++--
 .../connector/flink/source/IggySourceBuilder.java  |  17 +-
 .../flink/source/IggySourceEnumeratorState.java    |   9 +-
 .../IggySourceEnumeratorStateSerializer.java       |  16 +-
 .../connector/flink/source/IggySourceReader.java   |  26 +--
 .../connector/flink/source/IggySourceSplit.java    |  13 +-
 .../flink/source/IggySourceSplitEnumerator.java    |  68 +++---
 .../flink/source/IggySourceSplitSerializer.java    |  10 +-
 .../iggy/connector/partition/PartitionInfo.java    |   3 +-
 .../serialization/JsonDeserializationSchema.java   |   5 +-
 .../serialization/JsonSerializationSchema.java     |  40 ++--
 .../connector/config/IggyConnectionConfigTest.java |  65 +++---
 .../iggy/connector/config/OffsetConfigTest.java    |  27 +--
 .../connector/error/ConnectorExceptionTest.java    |  50 ++--
 .../connector/partition/PartitionInfoTest.java     |   4 +-
 .../serialization/DeserializationSchemaTest.java   |  10 +-
 .../serialization/RecordMetadataTest.java          |   4 +-
 .../serialization/SerializationSchemaTest.java     |   7 +-
 .../serialization/TypeDescriptorTest.java          |  13 +-
 .../iggy/flink/example/MultiStreamJoinJob.java     |  87 ++++---
 .../iggy/flink/example/SendTestMessages.java       |  12 +-
 .../iggy/flink/example/StreamTransformJob.java     |  62 +++--
 .../apache/iggy/flink/example/WordCountJob.java    |  33 ++-
 .../iggy/flink/example/model/EnrichedActivity.java |   3 +-
 .../apache/iggy/flink/example/model/WordCount.java |   4 +-
 .../flink/example/AsyncTcpMessagePollTest.java     | 160 ++++++-------
 .../flink/example/AsyncTcpMessageSendTest.java     |  74 ++----
 .../iggy/flink/example/SendTextDataTest.java       |  46 ++--
 .../src/main/java/org/apache/iggy/Iggy.java        |   4 +-
 .../src/main/java/org/apache/iggy/NonNullApi.java  |   9 +-
 .../apache/iggy/client/async/MessagesClient.java   |  33 +--
 .../client/async/tcp/AsyncBytesDeserializer.java   |  13 +-
 .../client/async/tcp/AsyncBytesSerializer.java     |   3 +-
 .../iggy/client/async/tcp/AsyncIggyTcpClient.java  |  46 ++--
 .../iggy/client/async/tcp/AsyncTcpConnection.java  |  42 ++--
 .../client/async/tcp/ConsumerGroupsTcpClient.java  |  28 +--
 .../iggy/client/async/tcp/IggyFrameDecoder.java    |   6 +-
 .../iggy/client/async/tcp/MessagesTcpClient.java   |  13 +-
 .../iggy/client/async/tcp/StreamsTcpClient.java    |  63 +++---
 .../iggy/client/async/tcp/TopicsTcpClient.java     |  73 +++---
 .../iggy/client/async/tcp/UsersTcpClient.java      |  34 ++-
 .../iggy/client/blocking/ConsumerGroupsClient.java |   2 +-
 .../client/blocking/ConsumerOffsetsClient.java     |  14 +-
 .../iggy/client/blocking/IggyBaseClient.java       |   1 -
 .../apache/iggy/client/blocking/IggyClient.java    |   1 -
 .../iggy/client/blocking/IggyClientBuilder.java    |   1 -
 .../iggy/client/blocking/MessagesClient.java       |  30 ++-
 .../iggy/client/blocking/PartitionsClient.java     |   1 -
 .../blocking/PersonalAccessTokensClient.java       |   2 +-
 .../apache/iggy/client/blocking/StreamsClient.java |   2 +-
 .../apache/iggy/client/blocking/SystemClient.java  |   2 +-
 .../apache/iggy/client/blocking/TopicsClient.java  |  68 +++---
 .../apache/iggy/client/blocking/UsersClient.java   |   2 +-
 .../blocking/http/ConsumerGroupsHttpClient.java    |  11 +-
 .../blocking/http/ConsumerOffsetsHttpClient.java   |  20 +-
 .../iggy/client/blocking/http/IggyHttpClient.java  |   1 -
 .../client/blocking/http/InternalHttpClient.java   |  26 +--
 .../client/blocking/http/MessagesHttpClient.java   |  20 +-
 .../client/blocking/http/ObjectMapperFactory.java  |   4 +-
 .../client/blocking/http/PartitionsHttpClient.java |  10 +-
 .../http/PersonalAccessTokensHttpClient.java       |  22 +-
 .../client/blocking/http/StreamsHttpClient.java    |  13 +-
 .../client/blocking/http/SystemHttpClient.java     |   4 +-
 .../client/blocking/http/TopicsHttpClient.java     |  59 +++--
 .../iggy/client/blocking/http/UsersHttpClient.java |  33 ++-
 .../client/blocking/http/error/IggyHttpError.java  |   8 +-
 .../blocking/http/error/IggyHttpException.java     |   1 -
 .../client/blocking/tcp/BytesDeserializer.java     |  68 +++---
 .../iggy/client/blocking/tcp/BytesSerializer.java  |  22 +-
 .../iggy/client/blocking/tcp/CommandCode.java      | 252 ++++++++++-----------
 .../blocking/tcp/ConsumerGroupsTcpClient.java      |   3 +-
 .../blocking/tcp/ConsumerOffsetTcpClient.java      |   9 +-
 .../iggy/client/blocking/tcp/IggyTcpClient.java    |  42 ++--
 .../client/blocking/tcp/InternalTcpClient.java     |   4 +-
 .../client/blocking/tcp/MessagesTcpClient.java     |  12 +-
 .../client/blocking/tcp/PartitionsTcpClient.java   |   1 +
 .../tcp/PersonalAccessTokensTcpClient.java         |   2 +
 .../iggy/client/blocking/tcp/StreamsTcpClient.java |   3 +-
 .../iggy/client/blocking/tcp/SystemTcpClient.java  |   6 +-
 .../iggy/client/blocking/tcp/TopicsTcpClient.java  |  30 ++-
 .../iggy/client/blocking/tcp/UsersTcpClient.java   |  53 +++--
 .../org/apache/iggy/consumergroup/Consumer.java    |   1 -
 .../apache/iggy/consumergroup/ConsumerGroup.java   |   8 +-
 .../iggy/consumergroup/ConsumerGroupDetails.java   |  10 +-
 .../iggy/consumergroup/ConsumerGroupMember.java    |   7 +-
 .../iggy/consumeroffset/ConsumerOffsetInfo.java    |   7 +-
 .../org/apache/iggy/identifier/ConsumerId.java     |   3 +-
 .../org/apache/iggy/identifier/Identifier.java     |   3 +-
 .../java/org/apache/iggy/identifier/StreamId.java  |   3 +-
 .../java/org/apache/iggy/identifier/TopicId.java   |   3 +-
 .../java/org/apache/iggy/identifier/UserId.java    |   3 +-
 .../apache/iggy/message/BigIntegerMessageId.java   |   2 +-
 .../org/apache/iggy/message/BytesMessageId.java    |   2 +-
 .../java/org/apache/iggy/message/HeaderValue.java  |   3 +-
 .../main/java/org/apache/iggy/message/Message.java |  15 +-
 .../org/apache/iggy/message/MessageHeader.java     |  17 +-
 .../java/org/apache/iggy/message/MessageId.java    |   2 +-
 .../java/org/apache/iggy/message/Partitioning.java |   8 +-
 .../org/apache/iggy/message/PolledMessages.java    |   8 +-
 .../org/apache/iggy/message/PollingStrategy.java   |   1 -
 .../org/apache/iggy/message/UuidMessageId.java     |   2 +-
 .../java/org/apache/iggy/partition/Partition.java  |   4 +-
 .../PersonalAccessTokenInfo.java                   |   3 +-
 .../RawPersonalAccessToken.java                    |   3 +-
 .../java/org/apache/iggy/stream/StreamBase.java    |   9 +-
 .../java/org/apache/iggy/stream/StreamDetails.java |   4 +-
 .../java/org/apache/iggy/system/ClientInfo.java    |   8 +-
 .../org/apache/iggy/system/ClientInfoDetails.java  |  11 +-
 .../org/apache/iggy/system/ConsumerGroupInfo.java  |   7 +-
 .../main/java/org/apache/iggy/system/Stats.java    |   4 +-
 .../src/main/java/org/apache/iggy/topic/Topic.java |   4 +-
 .../java/org/apache/iggy/topic/TopicDetails.java   |   7 +-
 .../org/apache/iggy/user/GlobalPermissions.java    |   4 +-
 .../java/org/apache/iggy/user/IdentityInfo.java    |   3 +-
 .../java/org/apache/iggy/user/Permissions.java     |   7 +-
 .../org/apache/iggy/user/StreamPermissions.java    |   6 +-
 .../main/java/org/apache/iggy/user/TokenInfo.java  |   3 +-
 .../org/apache/iggy/user/TopicPermissions.java     |   8 +-
 .../main/java/org/apache/iggy/user/UserInfo.java   |   8 +-
 .../java/org/apache/iggy/user/UserInfoDetails.java |   7 +-
 .../src/test/java/org/apache/iggy/IggyTest.java    |   8 +-
 .../test/java/org/apache/iggy/TestConstants.java   |   4 +-
 .../client/async/AsyncClientIntegrationTest.java   | 112 ++++-----
 .../iggy/client/async/AsyncPollMessageTest.java    | 210 +++++++++--------
 .../async/tcp/AsyncIggyTcpClientBuilderTest.java   |  33 ++-
 .../blocking/ConsumerGroupsClientBaseTest.java     |  26 +--
 .../blocking/ConsumerOffsetsClientBaseTest.java    |  19 +-
 .../iggy/client/blocking/IntegrationTest.java      |  18 +-
 .../client/blocking/MessagesClientBaseTest.java    |  36 ++-
 .../client/blocking/PartitionsClientBaseTest.java  |   5 +-
 .../blocking/PersonalAccessTokensBaseTest.java     |  13 +-
 .../iggy/client/blocking/StreamClientBaseTest.java |   2 +-
 .../iggy/client/blocking/SystemClientBaseTest.java |   2 +-
 .../iggy/client/blocking/TopicsClientBaseTest.java |  31 +--
 .../iggy/client/blocking/UsersClientBaseTest.java  |  29 ++-
 .../http/ConsumerGroupsHttpClientTest.java         |   1 -
 .../http/ConsumerOffsetsHttpClientTest.java        |   1 -
 .../client/blocking/http/HttpClientFactory.java    |   2 +-
 .../blocking/http/MessagesHttpClientTest.java      |   1 -
 .../blocking/http/PartitionsHttpClientTest.java    |   1 -
 .../http/PersonalAccessTokensHttpClientTest.java   |   1 -
 .../client/blocking/http/StreamHttpClientTest.java |   1 -
 .../client/blocking/http/SystemHttpClientTest.java |   1 -
 .../client/blocking/http/TopicsHttpClientTest.java |   1 -
 .../client/blocking/http/UsersHttpClientTest.java  |   5 +-
 .../client/blocking/tcp/BytesSerializerTest.java   |  11 +-
 .../blocking/tcp/ConsumerGroupsTcpClientTest.java  |  18 +-
 .../blocking/tcp/ConsumerOffsetsTcpClientTest.java |   1 -
 .../blocking/tcp/IggyTcpClientBuilderTest.java     |  35 ++-
 .../client/blocking/tcp/MessagesTcpClientTest.java |   1 -
 .../blocking/tcp/PartitionsTcpClientTest.java      |   1 -
 .../tcp/PersonalAccessTokensTcpClientTest.java     |   1 -
 .../client/blocking/tcp/StreamTcpClientTest.java   |   1 -
 .../client/blocking/tcp/SystemTcpClientTest.java   |   4 +-
 .../iggy/client/blocking/tcp/TcpClientFactory.java |   2 +-
 .../client/blocking/tcp/TopicsTcpClientTest.java   |   1 -
 .../client/blocking/tcp/UsersTcpClientTest.java    |   3 +-
 171 files changed, 1779 insertions(+), 1983 deletions(-)

diff --git a/.github/actions/java-gradle/pre-merge/action.yml b/.github/actions/java-gradle/pre-merge/action.yml
index c84d4b533..a5336a79f 100644
--- a/.github/actions/java-gradle/pre-merge/action.yml
+++ b/.github/actions/java-gradle/pre-merge/action.yml
@@ -47,14 +47,13 @@ runs:
       if: inputs.task == 'lint'
       shell: bash
       run: |
-        # TODO(hubcio): make this blocking when Java lints are fixed
-        foreign/java/dev-support/checks/build.sh check -x test || true
+        foreign/java/dev-support/checks/build.sh check -x test
 
     - name: Build
       shell: bash
       if: inputs.task == 'build'
       run: |
-        foreign/java/dev-support/checks/build.sh build -x test -x checkstyleMain -x checkstyleTest
+        foreign/java/dev-support/checks/build.sh build -x test -x checkstyleMain -x checkstyleTest -x spotlessCheck
         BUILD_EXIT_CODE=$?
 
         # List artifacts only if build succeeded
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/IggyClientBuilder.java b/foreign/java/build.gradle.kts
similarity index 63%
copy from foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/IggyClientBuilder.java
copy to foreign/java/build.gradle.kts
index 5bf25c50b..9001f460f 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/IggyClientBuilder.java
+++ b/foreign/java/build.gradle.kts
@@ -17,22 +17,22 @@
  * under the License.
  */
 
-package org.apache.iggy.client.blocking;
-
-public class IggyClientBuilder {
+plugins {
+    id("com.diffplug.spotless") version "8.0.0" apply false
+}
 
-    private IggyBaseClient client;
+subprojects {
+    apply(plugin = "com.diffplug.spotless")
 
-    public IggyClientBuilder withBaseClient(IggyBaseClient client) {
-        this.client = client;
-        return this;
-    }
-
-    public IggyClient build() {
-        if (client == null) {
-            throw new IllegalArgumentException("Base client not provided");
+    configure<com.diffplug.gradle.spotless.SpotlessExtension> {
+        java {
+            palantirJavaFormat()
+            endWithNewline()
+            trimTrailingWhitespace()
+            importOrder("", "\n", "javax|java", "\n", "\\#")
+            removeUnusedImports()
+            forbidWildcardImports()
+            formatAnnotations()
         }
-        return new IggyClient(client);
     }
-
 }
diff --git a/foreign/java/dev-support/checkstyle/checkstyle.xml b/foreign/java/dev-support/checkstyle/checkstyle.xml
index 21a1c7a57..3d842d563 100644
--- a/foreign/java/dev-support/checkstyle/checkstyle.xml
+++ b/foreign/java/dev-support/checkstyle/checkstyle.xml
@@ -22,86 +22,27 @@
     "https://checkstyle.org/dtds/configuration_1_3.dtd">
 
 <!--
+  Checkstyle configuration for Apache Iggy.
 
-  Checkstyle configuration for Apache Iggy that is based on the sun_checks.xml file
-  that checks the coding conventions from:
-
-    - the Java Language Specification at
-      http://java.sun.com/docs/books/jls/second_edition/html/index.html
-
-    - the Sun Code Conventions at http://java.sun.com/docs/codeconv/
-
-    - the Javadoc guidelines at
-      http://java.sun.com/j2se/javadoc/writingdoccomments/index.html
-
-    - the JDK Api documentation http://java.sun.com/j2se/docs/api/index.html
-
-    - some best practices
-
-  Checkstyle is very configurable. Be sure to read the documentation at
-  http://checkstyle.sf.net (or in your downloaded distribution).
-
-  Most Checks are configurable, be sure to consult the documentation.
-
-  To completely disable a check, just comment it out or delete it from the file.
-
-  Finally, it is worth reading the documentation.
-
+  This configuration focuses on semantic code quality checks.
+  Formatting checks are handled by Spotless (Palantir Java Format).
 -->
 
 <module name="Checker">
-    <!--
-        If you set the basedir property below, then all reported file
-        names will be relative to the specified directory. See
-        https://checkstyle.org/5.x/config.html#Checker
-
-        <property name="basedir" value="${basedir}"/>
-    -->
-
     <property name="fileExtensions" value="java, properties, xml"/>
 
     <module name="SuppressWarningsFilter"/>
 
-    <!-- Checks that a package-info.java file exists for each package.     -->
-    <!-- See http://checkstyle.sf.net/config_javadoc.html#JavadocPackage -->
-    <!-- module name="JavadocPackage"/ -->
-
-    <!-- Checks whether files end with a new line.                        -->
-    <!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile -->
-    <!-- module name="NewlineAtEndOfFile"/ -->
-
-    <!-- Checks that property files contain the same keys.         -->
-    <!-- See http://checkstyle.sf.net/config_misc.html#Translation -->
+    <!-- Checks that property files contain the same keys. -->
     <module name="Translation"/>
 
-    <!-- Checks for Size Violations.                    -->
-    <!-- See http://checkstyle.sf.net/config_sizes.html -->
+    <!-- Checks for Size Violations. -->
     <module name="FileLength"/>
 
-    <!-- Checks for whitespace                               -->
-    <!-- See http://checkstyle.sf.net/config_whitespace.html -->
-    <module name="FileTabCharacter"/>
-
-    <!-- Miscellaneous other checks.                   -->
-    <!-- See http://checkstyle.sf.net/config_misc.html -->
+    <!-- Enforce logger variable name to be 'log' -->
     <module name="RegexpSingleline">
-       <property name="format" value="\s+$"/>
-       <property name="minimum" value="0"/>
-       <property name="maximum" value="0"/>
-       <property name="message" value="Line has trailing spaces."/>
-    </module>
-
-    <!-- Checks for Headers                                -->
-    <!-- See http://checkstyle.sf.net/config_header.html   -->
-    <!-- <module name="Header"> -->
-    <!--   <property name="headerFile" value="${checkstyle.header.file}"/> -->
-    <!--   <property name="fileExtensions" value="java"/> -->
-    <!-- </module> -->
-
-    <!-- Checks for Size Violations.                    -->
-    <!-- See http://checkstyle.sf.net/config_sizes.html#LineLength -->
-    <module name="LineLength">
-      <property name="max" value="120"/>
+        <property name="format" value="private\s+(static\s+)?(final\s+)?Logger\s+(?!log\s*[;=])"/>
+        <property name="message" value="Logger variable must be named 'log'"/>
     </module>
 
     <module name="TreeWalker">
@@ -109,23 +50,31 @@
         <module name="SuppressionCommentFilter"/>
         <module name="SuppressWithNearbyCommentFilter"/>
 
-        <!-- Checks for Javadoc comments.                     -->
-        <!-- See http://checkstyle.sf.net/config_javadoc.html -->
+        <!-- Checks for Javadoc comments. -->
         <!--
-        <module name="JavadocMethod"/>
+        <module name="JavadocMethod">
+            <property name="accessModifiers" value="public"/>
+        </module>
         <module name="JavadocType">
-          <property name="scope" value="public"/>
-          <property name="allowMissingParamTags" value="true"/>
+            <property name="scope" value="public"/>
         </module>
-        <module name="JavadocVariable"/>
         <module name="JavadocStyle"/>
+        <module name="MissingJavadocType">
+            <property name="scope" value="public"/>
+        </module>
+        <module name="MissingJavadocMethod">
+            <property name="scope" value="public"/>
+        </module>
         -->
 
-        <!-- Checks for Naming Conventions.                  -->
-        <!-- See http://checkstyle.sf.net/config_naming.html -->
-        <module name="ConstantName"/>
+        <!-- Checks for Naming Conventions. -->
+        <module name="ConstantName">
+            <property name="format" value="^log$|^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$"/>
+        </module>
         <module name="LocalFinalVariableName"/>
-        <module name="LocalVariableName"/>
+        <module name="LocalVariableName">
+            <property name="format" value="^(_?[a-z][a-zA-Z0-9]*|_)$"/>
+        </module>
         <module name="MemberName"/>
         <module name="MethodName"/>
         <module name="PackageName"/>
@@ -133,79 +82,78 @@
         <module name="StaticVariableName"/>
         <module name="TypeName"/>
 
-        <!-- Checks for imports                              -->
-        <!-- See http://checkstyle.sf.net/config_import.html -->
-        <!-- module name="AvoidStarImport"/ -->
+        <!-- Checks for imports -->
         <module name="IllegalImport"/> <!-- defaults to sun.* packages -->
-        <module name="RedundantImport"/>
-        <module name="UnusedImports">
-            <property name="processJavadoc" value="false"/>
-        </module>
 
-        <!-- Checks for Size Violations.                    -->
-        <!-- See http://checkstyle.sf.net/config_sizes.html -->
+        <!-- Checks for Size Violations. -->
         <module name="MethodLength"/>
         <module name="ParameterNumber">
-          <property name="ignoreOverriddenMethods" value="true"/>
+            <property name="ignoreOverriddenMethods" value="true"/>
         </module>
 
-        <!-- Checks for whitespace                               -->
-        <!-- See http://checkstyle.sf.net/config_whitespace.html -->
-        <!--
-        <module name="EmptyForIteratorPad"/>
-        <module name="GenericWhitespace"/>
-        <module name="MethodParamPad"/>
-        <module name="NoWhitespaceAfter"/>
-        <module name="NoWhitespaceBefore"/>
-        <module name="OperatorWrap"/>
-        <module name="ParenPad"/>
-        <module name="TypecastParenPad"/>
-        <module name="WhitespaceAfter"/>
-        <module name="WhitespaceAround"/>
-        -->
+        <!-- Complexity checks -->
+        <module name="CyclomaticComplexity">
+            <property name="max" value="10"/>
+        </module>
+        <module name="NPathComplexity">
+            <property name="max" value="200"/>
+        </module>
 
-        <!-- Modifier Checks                                    -->
-        <!-- See http://checkstyle.sf.net/config_modifiers.html -->
+        <!-- Modifier Checks -->
         <module name="ModifierOrder"/>
 
-        <!-- Checks for blocks. You know, those {}'s         -->
-        <!-- See http://checkstyle.sf.net/config_blocks.html -->
+        <!-- Checks for blocks. -->
         <module name="AvoidNestedBlocks"/>
         <module name="EmptyBlock"/>
-        <module name="LeftCurly"/>
         <module name="NeedBraces"/>
-        <module name="RightCurly"/>
 
-        <!-- Checks for common coding problems               -->
-        <!-- See http://checkstyle.sf.net/config_coding.html -->
-        <!-- module name="AvoidInlineConditionals"/ -->
+        <!-- Checks for common coding problems -->
+        <module name="AvoidDoubleBraceInitialization"/>
+        <module name="CovariantEquals"/>
+        <module name="DefaultComesLast"/>
         <module name="EmptyStatement"/>
+        <module name="EqualsAvoidNull"/>
         <module name="EqualsHashCode"/>
+        <module name="FallThrough"/>
         <module name="HiddenField">
-          <property name="ignoreConstructorParameter" value="true"/>
-          <property name="ignoreSetter" value="true"/>
-          <property name="setterCanReturnItsClass" value="true"/>
+            <property name="ignoreConstructorParameter" value="true"/>
+            <property name="ignoreSetter" value="true"/>
+            <property name="setterCanReturnItsClass" value="true"/>
+            <property name="tokens" value="VARIABLE_DEF"/>
+        </module>
+        <module name="IllegalCatch">
+            <property name="illegalClassNames" value="Exception, Throwable"/>
         </module>
         <module name="IllegalInstantiation"/>
-        <!-- module name="InnerAssignment"/-->
-        <!-- module name="MagicNumber"/ -->
+        <module name="IllegalThrows">
+            <property name="illegalClassNames" value="Exception, Throwable"/>
+        </module>
+        <module name="MissingOverride"/>
         <module name="MissingSwitchDefault"/>
+        <module name="MultipleVariableDeclarations"/>
+        <module name="NoClone"/>
+        <module name="NoFinalizer"/>
+        <module name="OneStatementPerLine"/>
         <module name="SimplifyBooleanExpression"/>
         <module name="SimplifyBooleanReturn"/>
+        <module name="StringLiteralEquality"/>
+        <module name="UnnecessarySemicolonInEnumeration"/>
 
-        <!-- Checks for class design                         -->
-        <!-- See http://checkstyle.sf.net/config_design.html -->
-        <!-- module name="DesignForExtension"/ -->
+        <!-- Checks for class design -->
         <module name="FinalClass"/>
         <module name="HideUtilityClassConstructor"/>
+        <module name="InnerTypeLast"/>
         <module name="InterfaceIsType"/>
         <module name="VisibilityModifier"/>
 
-        <!-- Miscellaneous other checks.                   -->
-        <!-- See http://checkstyle.sf.net/config_misc.html -->
+        <!-- Code organization -->
+        <module name="DeclarationOrder"/>
+        <module name="OuterTypeFilename"/>
+        <module name="OverloadMethodsDeclarationOrder"/>
+        <module name="PackageDeclaration"/>
+
+        <!-- Miscellaneous other checks. -->
         <module name="ArrayTypeStyle"/>
-        <!-- module name="FinalParameters"/ -->
-        <!-- module name="TodoComment"/ -->
         <module name="UpperEll"/>
 
     </module>
diff --git a/foreign/java/examples/src/main/java/org/apache/iggy/async/AsyncConsumerExample.java b/foreign/java/examples/src/main/java/org/apache/iggy/async/AsyncConsumerExample.java
index d8cccf8c8..b8f266e5d 100644
--- a/foreign/java/examples/src/main/java/org/apache/iggy/async/AsyncConsumerExample.java
+++ b/foreign/java/examples/src/main/java/org/apache/iggy/async/AsyncConsumerExample.java
@@ -21,11 +21,11 @@ package org.apache.iggy.async;
 
 import org.apache.iggy.client.async.tcp.AsyncIggyTcpClient;
 import org.apache.iggy.client.blocking.tcp.IggyTcpClient;
-import org.apache.iggy.identifier.StreamId;
-import org.apache.iggy.identifier.TopicId;
-import org.apache.iggy.identifier.ConsumerId;
 import org.apache.iggy.consumergroup.Consumer;
 import org.apache.iggy.consumergroup.ConsumerGroupDetails;
+import org.apache.iggy.identifier.ConsumerId;
+import org.apache.iggy.identifier.StreamId;
+import org.apache.iggy.identifier.TopicId;
 import org.apache.iggy.message.PollingStrategy;
 import org.apache.iggy.stream.StreamDetails;
 import org.apache.iggy.topic.CompressionAlgorithm;
@@ -76,21 +76,22 @@ public class AsyncConsumerExample {
         // Create topic if needed
         Optional<TopicDetails> topic = blockingClient.topics().getTopic(STREAM_ID, TOPIC_ID);
         if (!topic.isPresent()) {
-            blockingClient.topics().createTopic(
-                STREAM_ID,
-                    1L,
-                CompressionAlgorithm.None,
-                BigInteger.ZERO,
-                BigInteger.ZERO,
-                empty(),
-                TOPIC_NAME
-            );
+            blockingClient
+                    .topics()
+                    .createTopic(
+                            STREAM_ID,
+                            1L,
+                            CompressionAlgorithm.None,
+                            BigInteger.ZERO,
+                            BigInteger.ZERO,
+                            empty(),
+                            TOPIC_NAME);
             log.info("Created topic: {}", TOPIC_NAME);
         }
 
         // Create consumer group if needed
-        Optional<ConsumerGroupDetails> group = blockingClient.consumerGroups()
-            .getConsumerGroup(STREAM_ID, TOPIC_ID, GROUP_ID);
+        Optional<ConsumerGroupDetails> group =
+                blockingClient.consumerGroups().getConsumerGroup(STREAM_ID, TOPIC_ID, GROUP_ID);
         if (!group.isPresent()) {
             blockingClient.consumerGroups().createConsumerGroup(STREAM_ID, TOPIC_ID, GROUP_NAME);
             log.info("Created consumer group: {}", GROUP_NAME);
@@ -109,47 +110,43 @@ public class AsyncConsumerExample {
 
         // Connect asynchronously
         log.info("Connecting to server...");
-        asyncClient.connect()
-            .thenCompose(v -> {
-                log.info("Connected! Logging in...");
-                return asyncClient.users().loginAsync("iggy", "iggy");
-            })
-            .thenCompose(v -> {
-                log.info("Logged in! Joining consumer group...");
-                // Join the consumer group first
-                return asyncClient.consumerGroups().joinConsumerGroup(
-                    STREAM_ID,
-                    TOPIC_ID,
-                    GROUP_ID
-                );
-            })
-            .thenCompose(v -> {
-                log.info("Joined consumer group! Now polling messages...");
-                return asyncClient.messages().pollMessagesAsync(
-                    STREAM_ID,
-                    TOPIC_ID,
-                    Optional.empty(),
-                    Consumer.group(GROUP_ID),
-                    PollingStrategy.next(),
-                    10L,
-                    true
-                );
-            })
-            .thenAccept(messages -> {
-                log.info("Received {} messages", messages.messages().size());
-                messages.messages().forEach(msg ->
-                    log.info("Message: {}", new String(msg.payload()))
-                );
-            })
-            .exceptionally(error -> {
-                log.error("Error in async operation", error);
-                return null;
-            })
-            .thenCompose(v -> {
-                log.info("Closing connection...");
-                return asyncClient.close();
-            })
-            .get(10, TimeUnit.SECONDS);
+        asyncClient
+                .connect()
+                .thenCompose(v -> {
+                    log.info("Connected! Logging in...");
+                    return asyncClient.users().loginAsync("iggy", "iggy");
+                })
+                .thenCompose(v -> {
+                    log.info("Logged in! Joining consumer group...");
+                    // Join the consumer group first
+                    return asyncClient.consumerGroups().joinConsumerGroup(STREAM_ID, TOPIC_ID, GROUP_ID);
+                })
+                .thenCompose(v -> {
+                    log.info("Joined consumer group! Now polling messages...");
+                    return asyncClient
+                            .messages()
+                            .pollMessagesAsync(
+                                    STREAM_ID,
+                                    TOPIC_ID,
+                                    Optional.empty(),
+                                    Consumer.group(GROUP_ID),
+                                    PollingStrategy.next(),
+                                    10L,
+                                    true);
+                })
+                .thenAccept(messages -> {
+                    log.info("Received {} messages", messages.messages().size());
+                    messages.messages().forEach(msg -> log.info("Message: {}", new String(msg.payload())));
+                })
+                .exceptionally(error -> {
+                    log.error("Error in async operation", error);
+                    return null;
+                })
+                .thenCompose(v -> {
+                    log.info("Closing connection...");
+                    return asyncClient.close();
+                })
+                .get(10, TimeUnit.SECONDS);
 
         log.info("Async test completed!");
     }
diff --git a/foreign/java/examples/src/main/java/org/apache/iggy/async/AsyncProducer.java b/foreign/java/examples/src/main/java/org/apache/iggy/async/AsyncProducer.java
index 32d56e7cf..03975834f 100644
--- a/foreign/java/examples/src/main/java/org/apache/iggy/async/AsyncProducer.java
+++ b/foreign/java/examples/src/main/java/org/apache/iggy/async/AsyncProducer.java
@@ -68,66 +68,65 @@ public class AsyncProducer {
         logger.info("Starting AsyncProducer...");
 
         return client.connect()
-            .thenCompose(v -> {
-                logger.info("Connected to Iggy server at {}:{}", HOST, PORT);
-                return client.users().loginAsync(USERNAME, PASSWORD);
-            })
-            .thenCompose(v -> {
-                logger.info("Logged in successfully as user: {}", USERNAME);
-                return setupStreamAndTopic();
-            })
-            .thenCompose(v -> {
-                logger.info("Stream and topic setup complete");
-                return sendMessages();
-            })
-            .thenRun(() -> {
-                logger.info("All messages sent. Success: {}, Errors: {}",
-                    successCount.get(), errorCount.get());
-            })
-            .exceptionally(ex -> {
-                logger.error("Error in producer flow", ex);
-                return null;
-            });
+                .thenCompose(v -> {
+                    logger.info("Connected to Iggy server at {}:{}", HOST, PORT);
+                    return client.users().loginAsync(USERNAME, PASSWORD);
+                })
+                .thenCompose(v -> {
+                    logger.info("Logged in successfully as user: {}", USERNAME);
+                    return setupStreamAndTopic();
+                })
+                .thenCompose(v -> {
+                    logger.info("Stream and topic setup complete");
+                    return sendMessages();
+                })
+                .thenRun(() -> {
+                    logger.info("All messages sent. Success: {}, Errors: {}", successCount.get(), errorCount.get());
+                })
+                .exceptionally(ex -> {
+                    logger.error("Error in producer flow", ex);
+                    return null;
+                });
     }
 
     private CompletableFuture<Void> setupStreamAndTopic() {
         logger.info("Checking stream: {}", STREAM_NAME);
 
-        return client.streams().getStreamAsync(StreamId.of(STREAM_NAME))
-            .thenCompose(stream -> {
-                if (stream.isEmpty()) {
-                    logger.info("Creating stream: {}", STREAM_NAME);
-                    return client.streams().createStreamAsync(STREAM_NAME)
-                        .thenAccept(created -> logger.info("Stream created: {}", created.name()));
-                } else {
-                    logger.info("Stream exists: {}", STREAM_NAME);
-                    return CompletableFuture.completedFuture(null);
-                }
-            })
-            .thenCompose(v -> {
-                logger.info("Checking topic: {}", TOPIC_NAME);
-                return client.topics().getTopicAsync(
-                    StreamId.of(STREAM_NAME),
-                    TopicId.of(TOPIC_NAME)
-                );
-            })
-            .thenCompose(topic -> {
-                if (topic.isEmpty()) {
-                    logger.info("Creating topic: {}", TOPIC_NAME);
-                    return client.topics().createTopicAsync(
-                        StreamId.of(STREAM_NAME),
-                            1L,  // 1 partition
-                        CompressionAlgorithm.None,
-                        BigInteger.ZERO,
-                        BigInteger.ZERO,
-                        Optional.empty(),
-                        TOPIC_NAME
-                    ).thenAccept(created -> logger.info("Topic created: {}", created.name()));
-                } else {
-                    logger.info("Topic exists: {}", TOPIC_NAME);
-                    return CompletableFuture.completedFuture(null);
-                }
-            });
+        return client.streams()
+                .getStreamAsync(StreamId.of(STREAM_NAME))
+                .thenCompose(stream -> {
+                    if (stream.isEmpty()) {
+                        logger.info("Creating stream: {}", STREAM_NAME);
+                        return client.streams()
+                                .createStreamAsync(STREAM_NAME)
+                                .thenAccept(created -> logger.info("Stream created: {}", created.name()));
+                    } else {
+                        logger.info("Stream exists: {}", STREAM_NAME);
+                        return CompletableFuture.completedFuture(null);
+                    }
+                })
+                .thenCompose(v -> {
+                    logger.info("Checking topic: {}", TOPIC_NAME);
+                    return client.topics().getTopicAsync(StreamId.of(STREAM_NAME), TopicId.of(TOPIC_NAME));
+                })
+                .thenCompose(topic -> {
+                    if (topic.isEmpty()) {
+                        logger.info("Creating topic: {}", TOPIC_NAME);
+                        return client.topics()
+                                .createTopicAsync(
+                                        StreamId.of(STREAM_NAME),
+                                        1L, // 1 partition
+                                        CompressionAlgorithm.None,
+                                        BigInteger.ZERO,
+                                        BigInteger.ZERO,
+                                        Optional.empty(),
+                                        TOPIC_NAME)
+                                .thenAccept(created -> logger.info("Topic created: {}", created.name()));
+                    } else {
+                        logger.info("Topic exists: {}", TOPIC_NAME);
+                        return CompletableFuture.completedFuture(null);
+                    }
+                });
     }
 
     private CompletableFuture<Void> sendMessages() {
@@ -137,20 +136,18 @@ public class AsyncProducer {
 
         for (int i = 0; i < MESSAGE_COUNT; i++) {
             final int messageIndex = i;
-            futures[i] = sendMessage(messageIndex)
-                .handle((result, ex) -> {
-                    if (ex != null) {
-                        logger.error("Failed to send message {}: {}",
-                            messageIndex, ex.getMessage());
-                        errorCount.incrementAndGet();
-                    } else {
-                        if (messageIndex % 10 == 0) {
-                            logger.debug("Sent message {}", messageIndex);
-                        }
-                        successCount.incrementAndGet();
+            futures[i] = sendMessage(messageIndex).handle((result, ex) -> {
+                if (ex != null) {
+                    logger.error("Failed to send message {}: {}", messageIndex, ex.getMessage());
+                    errorCount.incrementAndGet();
+                } else {
+                    if (messageIndex % 10 == 0) {
+                        logger.debug("Sent message {}", messageIndex);
                     }
-                    return null;
-                });
+                    successCount.incrementAndGet();
+                }
+                return null;
+            });
 
             // Add a small delay between messages to avoid overwhelming the server
             try {
@@ -166,12 +163,8 @@ public class AsyncProducer {
 
     private CompletableFuture<Void> sendMessage(int index) {
         // Create message payload
-        String messageContent = String.format(
-            "Async message %d - %s - %s",
-            index,
-            UUID.randomUUID(),
-            System.currentTimeMillis()
-        );
+        String messageContent =
+                String.format("Async message %d - %s - %s", index, UUID.randomUUID(), System.currentTimeMillis());
 
         // Pad message to desired size
         while (messageContent.length() < MESSAGE_SIZE) {
@@ -187,32 +180,26 @@ public class AsyncProducer {
         Partitioning partitioning = Partitioning.partitionId(PARTITION_ID);
 
         // Send message using async client
-        return client.messages().sendMessagesAsync(
-            StreamId.of(STREAM_NAME),
-            TopicId.of(TOPIC_NAME),
-            partitioning,
-            List.of(message)
-        );
+        return client.messages()
+                .sendMessagesAsync(StreamId.of(STREAM_NAME), TopicId.of(TOPIC_NAME), partitioning, List.of(message));
     }
 
     public CompletableFuture<Void> stop() {
         logger.info("Stopping AsyncProducer...");
-        return client.close()
-            .thenRun(() -> logger.info("AsyncProducer stopped"));
+        return client.close().thenRun(() -> logger.info("AsyncProducer stopped"));
     }
 
     public static void main(String[] args) {
         AsyncProducer producer = new AsyncProducer();
 
         CompletableFuture<Void> producerFuture = producer.start()
-            .thenCompose(v -> {
-                // Keep producer running for a while
-                CompletableFuture<Void> delay = new CompletableFuture<>();
-                CompletableFuture.delayedExecutor(2, TimeUnit.SECONDS)
-                    .execute(() -> delay.complete(null));
-                return delay;
-            })
-            .thenCompose(v -> producer.stop());
+                .thenCompose(v -> {
+                    // Keep producer running for a while
+                    CompletableFuture<Void> delay = new CompletableFuture<>();
+                    CompletableFuture.delayedExecutor(2, TimeUnit.SECONDS).execute(() -> delay.complete(null));
+                    return delay;
+                })
+                .thenCompose(v -> producer.stop());
 
         try {
             producerFuture.get(30, TimeUnit.SECONDS);
diff --git a/foreign/java/examples/src/main/java/org/apache/iggy/consumer/SimpleConsumer.java b/foreign/java/examples/src/main/java/org/apache/iggy/consumer/SimpleConsumer.java
index 614ea5961..e6d1bb94f 100644
--- a/foreign/java/examples/src/main/java/org/apache/iggy/consumer/SimpleConsumer.java
+++ b/foreign/java/examples/src/main/java/org/apache/iggy/consumer/SimpleConsumer.java
@@ -19,9 +19,6 @@
 
 package org.apache.iggy.consumer;
 
-import org.apache.iggy.message.Message;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.apache.iggy.client.blocking.IggyBaseClient;
 import org.apache.iggy.client.blocking.tcp.IggyTcpClient;
 import org.apache.iggy.consumergroup.Consumer;
@@ -29,13 +26,18 @@ import org.apache.iggy.consumergroup.ConsumerGroupDetails;
 import org.apache.iggy.identifier.ConsumerId;
 import org.apache.iggy.identifier.StreamId;
 import org.apache.iggy.identifier.TopicId;
+import org.apache.iggy.message.Message;
 import org.apache.iggy.message.PollingStrategy;
 import org.apache.iggy.stream.StreamDetails;
 import org.apache.iggy.topic.CompressionAlgorithm;
 import org.apache.iggy.topic.TopicDetails;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import java.math.BigInteger;
 import java.util.ArrayList;
 import java.util.Optional;
+
 import static java.util.Optional.empty;
 
 public class SimpleConsumer {
@@ -60,15 +62,11 @@ public class SimpleConsumer {
         var messages = new ArrayList<Message>();
         while (messages.size() < 1000) {
             var polledMessages = client.messages()
-                    .pollMessages(STREAM_ID,
-                            TOPIC_ID,
-                            empty(),
-                            Consumer.group(GROUP_ID),
-                            PollingStrategy.next(),
-                            10L,
-                            true);
+                    .pollMessages(
+                            STREAM_ID, TOPIC_ID, empty(), Consumer.group(GROUP_ID), PollingStrategy.next(), 10L, true);
             messages.addAll(polledMessages.messages());
-            log.debug("Fetched {} messages from partition {}, current offset {}",
+            log.debug(
+                    "Fetched {} messages from partition {}, current offset {}",
                     polledMessages.messages().size(),
                     polledMessages.partitionId(),
                     polledMessages.currentOffset());
@@ -89,23 +87,22 @@ public class SimpleConsumer {
             return;
         }
         client.topics()
-                .createTopic(STREAM_ID,
+                .createTopic(
+                        STREAM_ID,
                         1L,
                         CompressionAlgorithm.None,
                         BigInteger.ZERO,
                         BigInteger.ZERO,
                         empty(),
                         TOPIC_NAME);
-
     }
 
     private static void createConsumerGroup(IggyBaseClient client) {
-        Optional<ConsumerGroupDetails> consumerGroup = client.consumerGroups()
-                .getConsumerGroup(STREAM_ID, TOPIC_ID, GROUP_ID);
+        Optional<ConsumerGroupDetails> consumerGroup =
+                client.consumerGroups().getConsumerGroup(STREAM_ID, TOPIC_ID, GROUP_ID);
         if (consumerGroup.isPresent()) {
             return;
         }
         client.consumerGroups().createConsumerGroup(STREAM_ID, TOPIC_ID, GROUP_NAME);
     }
-
 }
diff --git a/foreign/java/examples/src/main/java/org/apache/iggy/producer/SimpleProducer.java b/foreign/java/examples/src/main/java/org/apache/iggy/producer/SimpleProducer.java
index 0466f6f1d..28c62f3c0 100644
--- a/foreign/java/examples/src/main/java/org/apache/iggy/producer/SimpleProducer.java
+++ b/foreign/java/examples/src/main/java/org/apache/iggy/producer/SimpleProducer.java
@@ -19,8 +19,6 @@
 
 package org.apache.iggy.producer;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.apache.iggy.client.blocking.tcp.IggyTcpClient;
 import org.apache.iggy.identifier.StreamId;
 import org.apache.iggy.identifier.TopicId;
@@ -29,8 +27,12 @@ import org.apache.iggy.message.Partitioning;
 import org.apache.iggy.stream.StreamDetails;
 import org.apache.iggy.topic.CompressionAlgorithm;
 import org.apache.iggy.topic.TopicDetails;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import java.math.BigInteger;
 import java.util.Optional;
+
 import static java.util.Collections.singletonList;
 import static java.util.Optional.empty;
 
@@ -54,7 +56,6 @@ public class SimpleProducer {
             client.messages().sendMessages(STREAM_ID, TOPIC_ID, Partitioning.balanced(), singletonList(message));
             log.debug("Message {} sent", counter);
         }
-
     }
 
     private static void createStream(IggyTcpClient client) {
@@ -71,7 +72,8 @@ public class SimpleProducer {
             return;
         }
         client.topics()
-                .createTopic(STREAM_ID,
+                .createTopic(
+                        STREAM_ID,
                         1L,
                         CompressionAlgorithm.None,
                         BigInteger.ZERO,
@@ -79,5 +81,4 @@ public class SimpleProducer {
                         empty(),
                         TOPIC_NAME);
     }
-
 }
diff --git a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/config/IggyConnectionConfig.java b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/config/IggyConnectionConfig.java
index eff537a73..7203144a4 100644
--- a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/config/IggyConnectionConfig.java
+++ b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/config/IggyConnectionConfig.java
@@ -19,6 +19,9 @@
 
 package org.apache.iggy.connector.config;
 
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+
 import java.io.Serializable;
 import java.time.Duration;
 import java.util.Objects;
@@ -116,31 +119,37 @@ public final class IggyConnectionConfig implements Serializable {
         if (this == o) {
             return true;
         }
+
         if (o == null || getClass() != o.getClass()) {
             return false;
         }
+
         IggyConnectionConfig that = (IggyConnectionConfig) o;
-        return maxRetries == that.maxRetries
-                && enableTls == that.enableTls
-                && Objects.equals(serverAddress, that.serverAddress)
-                && Objects.equals(username, that.username)
-                && Objects.equals(password, that.password)
-                && Objects.equals(connectionTimeout, that.connectionTimeout)
-                && Objects.equals(requestTimeout, that.requestTimeout)
-                && Objects.equals(retryBackoff, that.retryBackoff);
+
+        return new EqualsBuilder()
+                .append(maxRetries, that.maxRetries)
+                .append(enableTls, that.enableTls)
+                .append(serverAddress, that.serverAddress)
+                .append(username, that.username)
+                .append(password, that.password)
+                .append(connectionTimeout, that.connectionTimeout)
+                .append(requestTimeout, that.requestTimeout)
+                .append(retryBackoff, that.retryBackoff)
+                .isEquals();
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(
-                serverAddress,
-                username,
-                password,
-                connectionTimeout,
-                requestTimeout,
-                maxRetries,
-                retryBackoff,
-                enableTls);
+        return new HashCodeBuilder(17, 37)
+                .append(serverAddress)
+                .append(username)
+                .append(password)
+                .append(connectionTimeout)
+                .append(requestTimeout)
+                .append(maxRetries)
+                .append(retryBackoff)
+                .append(enableTls)
+                .toHashCode();
     }
 
     @Override
@@ -159,7 +168,6 @@ public final class IggyConnectionConfig implements Serializable {
     /**
      * Builder for {@link IggyConnectionConfig}.
      */
-    @SuppressWarnings("checkstyle:HiddenField")
     public static final class Builder {
         private String serverAddress;
         private String username;
@@ -170,8 +178,7 @@ public final class IggyConnectionConfig implements Serializable {
         private Duration retryBackoff = Duration.ofMillis(100);
         private boolean enableTls = false;
 
-        private Builder() {
-        }
+        private Builder() {}
 
         public Builder serverAddress(String serverAddress) {
             this.serverAddress = serverAddress;
diff --git a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/config/OffsetConfig.java b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/config/OffsetConfig.java
index e147b7df0..921be5c87 100644
--- a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/config/OffsetConfig.java
+++ b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/config/OffsetConfig.java
@@ -37,10 +37,7 @@ public final class OffsetConfig implements Serializable {
     private final int commitBatchSize;
 
     private OffsetConfig(
-            OffsetResetStrategy resetStrategy,
-            Duration commitInterval,
-            boolean autoCommit,
-            int commitBatchSize) {
+            OffsetResetStrategy resetStrategy, Duration commitInterval, boolean autoCommit, int commitBatchSize) {
         this.resetStrategy = Objects.requireNonNull(resetStrategy, "resetStrategy must not be null");
         this.commitInterval = Objects.requireNonNull(commitInterval, "commitInterval must not be null");
         this.autoCommit = autoCommit;
@@ -116,15 +113,13 @@ public final class OffsetConfig implements Serializable {
     /**
      * Builder for {@link OffsetConfig}.
      */
-    @SuppressWarnings("checkstyle:HiddenField")
     public static final class Builder {
         private OffsetResetStrategy resetStrategy = OffsetResetStrategy.LATEST;
         private Duration commitInterval = Duration.ofSeconds(5);
         private boolean autoCommit = true;
         private int commitBatchSize = 100;
 
-        private Builder() {
-        }
+        private Builder() {}
 
         public Builder resetStrategy(OffsetResetStrategy resetStrategy) {
             this.resetStrategy = resetStrategy;
diff --git a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/sink/IggyCommittable.java b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/sink/IggyCommittable.java
index dba00a269..15cda42cc 100644
--- a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/sink/IggyCommittable.java
+++ b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/sink/IggyCommittable.java
@@ -45,12 +45,7 @@ public class IggyCommittable implements Serializable {
      * @param lastWrittenOffset the last offset written to this partition
      * @param messageCount the number of messages in this commit
      */
-    public IggyCommittable(
-            String streamId,
-            String topicId,
-            int partitionId,
-            long lastWrittenOffset,
-            int messageCount) {
+    public IggyCommittable(String streamId, String topicId, int partitionId, long lastWrittenOffset, int messageCount) {
 
         if (streamId == null || streamId.isEmpty()) {
             throw new IllegalArgumentException("streamId cannot be null or empty");
diff --git a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/sink/IggySink.java b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/sink/IggySink.java
index c2bb24f0c..b8faf5251 100644
--- a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/sink/IggySink.java
+++ b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/sink/IggySink.java
@@ -28,6 +28,7 @@ import org.apache.iggy.connector.serialization.SerializationSchema;
 
 import java.io.IOException;
 import java.io.Serializable;
+import java.net.URISyntaxException;
 import java.time.Duration;
 
 /**
@@ -107,13 +108,7 @@ public class IggySink<T> implements Sink<T>, Serializable {
     public SinkWriter<T> createWriter(WriterInitContext context) throws IOException {
         IggyHttpClient httpClient = createHttpClient();
         return new IggySinkWriter<>(
-                httpClient,
-                streamId,
-                topicId,
-                serializer,
-                batchSize,
-                flushInterval,
-                partitioningStrategy);
+                httpClient, streamId, topicId, serializer, batchSize, flushInterval, partitioningStrategy);
     }
 
     /**
@@ -128,8 +123,8 @@ public class IggySink<T> implements Sink<T>, Serializable {
 
             // Parse server address to extract host
             java.net.URI uri = serverAddress.contains("://")
-                ? new java.net.URI(serverAddress)
-                : new java.net.URI("tcp://" + serverAddress);
+                    ? new java.net.URI(serverAddress)
+                    : new java.net.URI("tcp://" + serverAddress);
 
             String host = uri.getHost();
             if (host == null) {
@@ -143,16 +138,12 @@ public class IggySink<T> implements Sink<T>, Serializable {
             IggyHttpClient httpClient = new IggyHttpClient(httpUrl);
 
             // Login
-            httpClient.users().login(
-                connectionConfig.getUsername(),
-                connectionConfig.getPassword()
-            );
+            httpClient.users().login(connectionConfig.getUsername(), connectionConfig.getPassword());
 
             return httpClient;
 
-        } catch (java.net.URISyntaxException e) {
-            throw new RuntimeException("Invalid server address format: "
-                + connectionConfig.getServerAddress(), e);
+        } catch (URISyntaxException e) {
+            throw new RuntimeException("Invalid server address format: " + connectionConfig.getServerAddress(), e);
         } catch (RuntimeException e) {
             throw new RuntimeException("Failed to create HTTP Iggy client", e);
         }
diff --git a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/sink/IggySinkBuilder.java b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/sink/IggySinkBuilder.java
index f8fc7f6e8..c3bfbd73a 100644
--- a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/sink/IggySinkBuilder.java
+++ b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/sink/IggySinkBuilder.java
@@ -40,8 +40,7 @@ public class IggySinkBuilder<T> implements Serializable {
     private SerializationSchema<T> serializer;
     private int batchSize = 100;
     private Duration flushInterval = Duration.ofSeconds(5);
-    private IggySinkWriter.PartitioningStrategy partitioningStrategy =
-            IggySinkWriter.PartitioningStrategy.BALANCED;
+    private IggySinkWriter.PartitioningStrategy partitioningStrategy = IggySinkWriter.PartitioningStrategy.BALANCED;
 
     /**
      * Sets the connection configuration.
@@ -143,8 +142,7 @@ public class IggySinkBuilder<T> implements Serializable {
      * @param partitioningStrategy the partitioning strategy
      * @return this builder
      */
-    public IggySinkBuilder<T> setPartitioningStrategy(
-            IggySinkWriter.PartitioningStrategy partitioningStrategy) {
+    public IggySinkBuilder<T> setPartitioningStrategy(IggySinkWriter.PartitioningStrategy partitioningStrategy) {
         this.partitioningStrategy = partitioningStrategy;
         return this;
     }
@@ -189,13 +187,7 @@ public class IggySinkBuilder<T> implements Serializable {
         validate();
 
         return new IggySink<>(
-                connectionConfig,
-                streamId,
-                topicId,
-                serializer,
-                batchSize,
-                flushInterval,
-                partitioningStrategy);
+                connectionConfig, streamId, topicId, serializer, batchSize, flushInterval, partitioningStrategy);
     }
 
     /**
diff --git a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/sink/IggySinkWriter.java b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/sink/IggySinkWriter.java
index 5a7d85e53..15cdbcff3 100644
--- a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/sink/IggySinkWriter.java
+++ b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/sink/IggySinkWriter.java
@@ -19,6 +19,7 @@
 
 package org.apache.iggy.connector.flink.sink;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.flink.api.connector.sink2.SinkWriter;
 import org.apache.iggy.client.blocking.http.IggyHttpClient;
 import org.apache.iggy.connector.error.ConnectorException;
@@ -45,7 +46,7 @@ import java.util.Optional;
  */
 public class IggySinkWriter<T> implements SinkWriter<T> {
 
-    private static final Logger LOGGER = LoggerFactory.getLogger(IggySinkWriter.class);
+    private static final Logger log = LoggerFactory.getLogger(IggySinkWriter.class);
 
     private final IggyHttpClient httpClient;
     private final String streamId;
@@ -91,10 +92,10 @@ public class IggySinkWriter<T> implements SinkWriter<T> {
         if (httpClient == null) {
             throw new IllegalArgumentException("httpClient cannot be null");
         }
-        if (streamId == null || streamId.isEmpty()) {
+        if (StringUtils.isBlank(streamId)) {
             throw new IllegalArgumentException("streamId cannot be null or empty");
         }
-        if (topicId == null || topicId.isEmpty()) {
+        if (StringUtils.isBlank(topicId)) {
             throw new IllegalArgumentException("topicId cannot be null or empty");
         }
         if (serializer == null) {
@@ -113,9 +114,7 @@ public class IggySinkWriter<T> implements SinkWriter<T> {
         this.serializer = serializer;
         this.batchSize = batchSize;
         this.flushInterval = flushInterval;
-        this.partitioningStrategy = partitioningStrategy != null
-                ? partitioningStrategy
-                : PartitioningStrategy.BALANCED;
+        this.partitioningStrategy = partitioningStrategy != null ? partitioningStrategy : PartitioningStrategy.BALANCED;
 
         this.buffer = new ArrayList<>(batchSize);
         this.lastFlushTime = System.currentTimeMillis();
@@ -124,13 +123,12 @@ public class IggySinkWriter<T> implements SinkWriter<T> {
 
     @Override
     public void write(T element, Context context) throws IOException {
-        LOGGER.debug("IggySinkWriter.write() called - element: {}, buffer size: {}",
-                element, buffer.size());
+        log.debug("IggySinkWriter.write() called - element: {}, buffer size: {}", element, buffer.size());
         buffer.add(element);
 
         // Flush if batch size reached or flush interval exceeded
         if (buffer.size() >= batchSize || shouldFlushByTime()) {
-            LOGGER.debug("IggySinkWriter: Flushing buffer of size {}", buffer.size());
+            log.debug("IggySinkWriter: Flushing buffer of size {}", buffer.size());
             flush(false);
         }
     }
@@ -138,12 +136,15 @@ public class IggySinkWriter<T> implements SinkWriter<T> {
     @Override
     public void flush(boolean endOfInput) throws IOException {
         if (buffer.isEmpty()) {
-            LOGGER.debug("IggySinkWriter.flush() - buffer is empty, skipping");
+            log.debug("IggySinkWriter.flush() - buffer is empty, skipping");
             return;
         }
 
-        LOGGER.debug("IggySinkWriter.flush() - flushing {} messages to stream={}, topic={}",
-                buffer.size(), streamId, topicId);
+        log.debug(
+                "IggySinkWriter.flush() - flushing {} messages to stream={}, topic={}",
+                buffer.size(),
+                streamId,
+                topicId);
 
         try {
             // Serialize all buffered records
@@ -161,25 +162,20 @@ public class IggySinkWriter<T> implements SinkWriter<T> {
             StreamId stream = parseStreamId(streamId);
             TopicId topic = parseTopicId(topicId);
 
-            LOGGER.debug("IggySinkWriter: Sending {} messages with partitioning={}",
-                    messages.size(), partitioning);
+            log.debug("IggySinkWriter: Sending {} messages with partitioning={}", messages.size(), partitioning);
             httpClient.messages().sendMessages(stream, topic, partitioning, messages);
 
             totalWritten += buffer.size();
-            LOGGER.debug("IggySinkWriter: Successfully sent {} messages. Total written: {}",
-                    buffer.size(), totalWritten);
+            log.debug("IggySinkWriter: Successfully sent {} messages. Total written: {}", buffer.size(), totalWritten);
 
             // Clear buffer and update flush time
             buffer.clear();
             lastFlushTime = System.currentTimeMillis();
 
-        } catch (Exception e) {
-            LOGGER.error("IggySinkWriter.flush() - ERROR: {}", e.getMessage(), e);
+        } catch (RuntimeException e) {
+            log.error("IggySinkWriter.flush() - ERROR: {}", e.getMessage(), e);
             throw new ConnectorException(
-                    "Failed to send messages to Iggy",
-                    e,
-                    ConnectorException.ErrorCode.RESOURCE_EXHAUSTED,
-                    true);
+                    "Failed to send messages to Iggy", e, ConnectorException.ErrorCode.RESOURCE_EXHAUSTED, true);
         }
     }
 
@@ -286,11 +282,11 @@ public class IggySinkWriter<T> implements SinkWriter<T> {
         MessageHeader header = new MessageHeader(
                 BigInteger.ZERO,
                 MessageId.serverGenerated(),
-                BigInteger.ZERO,  // offset
-                BigInteger.ZERO,  // timestamp
-                BigInteger.ZERO,  // originTimestamp
-                0L,               // userHeadersLength
-                (long) payload.length);  // payloadLength
+                BigInteger.ZERO, // offset
+                BigInteger.ZERO, // timestamp
+                BigInteger.ZERO, // originTimestamp
+                0L, // userHeadersLength
+                (long) payload.length); // payloadLength
 
         return new Message(header, payload, Optional.empty());
     }
diff --git a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/source/IggyPartitionSplitReader.java b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/source/IggyPartitionSplitReader.java
index 5ae2fff99..0262b1d75 100644
--- a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/source/IggyPartitionSplitReader.java
+++ b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/source/IggyPartitionSplitReader.java
@@ -20,29 +20,29 @@
 package org.apache.iggy.connector.flink.source;
 
 import org.apache.iggy.client.async.tcp.AsyncIggyTcpClient;
+import org.apache.iggy.connector.error.ConnectorException;
+import org.apache.iggy.connector.serialization.DeserializationSchema;
+import org.apache.iggy.connector.serialization.RecordMetadata;
 import org.apache.iggy.consumergroup.Consumer;
 import org.apache.iggy.identifier.StreamId;
 import org.apache.iggy.identifier.TopicId;
 import org.apache.iggy.message.Message;
 import org.apache.iggy.message.PolledMessages;
 import org.apache.iggy.message.PollingStrategy;
-import org.apache.iggy.connector.error.ConnectorException;
-import org.apache.iggy.connector.serialization.DeserializationSchema;
-import org.apache.iggy.connector.serialization.RecordMetadata;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * Reads messages from a single Iggy partition.
  * Manages offset tracking and message deserialization.
  */
 public class IggyPartitionSplitReader<T> {
-    private static final Logger LOGGER = LoggerFactory.getLogger(IggyPartitionSplitReader.class);
+    private static final Logger log = LoggerFactory.getLogger(IggyPartitionSplitReader.class);
 
     private final AsyncIggyTcpClient asyncClient;
     private final IggySourceSplit split;
@@ -57,10 +57,10 @@ public class IggyPartitionSplitReader<T> {
     /**
      * Creates a new partition split reader.
      *
-     * @param asyncClient the async Iggy client
-     * @param split the source split to read from
-     * @param deserializer the deserialization schema
-     * @param consumer the consumer identifier
+     * @param asyncClient   the async Iggy client
+     * @param split         the source split to read from
+     * @param deserializer  the deserialization schema
+     * @param consumer      the consumer identifier
      * @param pollBatchSize number of messages to fetch per poll
      */
     public IggyPartitionSplitReader(
@@ -111,15 +111,19 @@ public class IggyPartitionSplitReader<T> {
 
             // Join consumer group on first poll (idempotent operation in Iggy)
             if (!consumerGroupJoined) {
-                LOGGER.info("IggyPartitionSplitReader: Joining consumer group for stream={}, "
+                log.info(
+                        "IggyPartitionSplitReader: Joining consumer group for stream={}, "
                                 + "topic={}, consumer={}, partition={}",
-                        split.getStreamId(), split.getTopicId(), consumer.id(),
+                        split.getStreamId(),
+                        split.getTopicId(),
+                        consumer.id(),
                         split.getPartitionId());
-                asyncClient.consumerGroups()
+                asyncClient
+                        .consumerGroups()
                         .joinConsumerGroup(streamId, topicId, consumer.id())
                         .join();
                 consumerGroupJoined = true;
-                LOGGER.info("IggyPartitionSplitReader: Successfully joined consumer group");
+                log.info("IggyPartitionSplitReader: Successfully joined consumer group");
             }
             Optional<Long> partitionId = Optional.of((long) split.getPartitionId());
 
@@ -128,23 +132,27 @@ public class IggyPartitionSplitReader<T> {
             // Using PollingStrategy.offset() conflicts with consumer group offset management.
             PollingStrategy strategy = PollingStrategy.next();
 
-            LOGGER.info("IggyPartitionSplitReader: Polling partition={}, "
+            log.info(
+                    "IggyPartitionSplitReader: Polling partition={}, "
                             + "strategy=NEXT (consumer-group-managed), batchSize={}",
-                    split.getPartitionId(), pollBatchSize);
+                    split.getPartitionId(),
+                    pollBatchSize);
 
             // CRITICAL FIX: Enable autoCommit to advance consumer group offset after each poll
             // Without this, offset never advances and we read the same messages repeatedly
             // Poll messages from Iggy (async with blocking)
-            PolledMessages polledMessages = asyncClient.messages()
-                    .pollMessagesAsync(streamId, topicId, partitionId, consumer, strategy,
-                            pollBatchSize, true)
+            PolledMessages polledMessages = asyncClient
+                    .messages()
+                    .pollMessagesAsync(streamId, topicId, partitionId, consumer, strategy, pollBatchSize, true)
                     .join();
 
-            LOGGER.info("IggyPartitionSplitReader: Polled partition={}, messagesCount={}, "
-                            + "currentOffset={}",
-                    split.getPartitionId(), polledMessages.messages().size(),
+            log.info(
+                    "IggyPartitionSplitReader: Polled partition={}, messagesCount={}, " + "currentOffset={}",
+                    split.getPartitionId(),
+                    polledMessages.messages().size(),
                     polledMessages.currentOffset() != null
-                            ? polledMessages.currentOffset().longValue() : "null");
+                            ? polledMessages.currentOffset().longValue()
+                            : "null");
 
             if (polledMessages.messages().isEmpty()) {
                 // For unbounded streams, keep polling even if no messages available
@@ -157,9 +165,10 @@ public class IggyPartitionSplitReader<T> {
             for (Message message : polledMessages.messages()) {
                 T record = deserializeMessage(message);
                 if (record != null) {
-                    LOGGER.info("IggyPartitionSplitReader: Deserialized message at "
-                                    + "offset={}, record={}",
-                            message.header().offset(), record);
+                    log.info(
+                            "IggyPartitionSplitReader: Deserialized message at " + "offset={}, record={}",
+                            message.header().offset(),
+                            record);
                     records.add(record);
                 }
             }
@@ -167,13 +176,12 @@ public class IggyPartitionSplitReader<T> {
             // Update current offset
             if (polledMessages.currentOffset() != null) {
                 currentOffset = polledMessages.currentOffset().longValue() + 1;
-                LOGGER.info("IggyPartitionSplitReader: Updated currentOffset to {}",
-                        currentOffset);
+                log.info("IggyPartitionSplitReader: Updated currentOffset to {}", currentOffset);
             }
 
             return records;
 
-        } catch (Exception e) {
+        } catch (RuntimeException e) {
             throw new ConnectorException(
                     "Failed to poll messages from partition " + split.getPartitionId(),
                     e,
@@ -200,8 +208,11 @@ public class IggyPartitionSplitReader<T> {
 
         } catch (IOException e) {
             // Log warning and skip this message (can be made configurable)
-            LOGGER.warn("Failed to deserialize message at offset {}: {}",
-                    message.header().offset(), e.getMessage(), e);
+            log.warn(
+                    "Failed to deserialize message at offset {}: {}",
+                    message.header().offset(),
+                    e.getMessage(),
+                    e);
             return null;
         }
     }
diff --git a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/source/IggySource.java b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/source/IggySource.java
index 9c25982f9..7569ff917 100644
--- a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/source/IggySource.java
+++ b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/source/IggySource.java
@@ -19,12 +19,17 @@
 
 package org.apache.iggy.connector.flink.source;
 
-import org.apache.flink.api.connector.source.*;
+import org.apache.flink.api.connector.source.Boundedness;
+import org.apache.flink.api.connector.source.Source;
+import org.apache.flink.api.connector.source.SourceReader;
+import org.apache.flink.api.connector.source.SourceReaderContext;
+import org.apache.flink.api.connector.source.SplitEnumerator;
+import org.apache.flink.api.connector.source.SplitEnumeratorContext;
 import org.apache.flink.core.io.SimpleVersionedSerializer;
 import org.apache.iggy.client.async.tcp.AsyncIggyTcpClient;
-import org.apache.iggy.consumergroup.Consumer;
 import org.apache.iggy.connector.config.IggyConnectionConfig;
 import org.apache.iggy.connector.config.OffsetConfig;
+import org.apache.iggy.consumergroup.Consumer;
 
 import java.io.Serializable;
 
@@ -56,7 +61,7 @@ public class IggySource<T> implements Source<T, IggySourceSplit, IggySourceEnume
     private final IggyConnectionConfig connectionConfig;
     private final String streamId;
     private final String topicId;
-    private final String consumerGroupName;  // Serializable representation
+    private final String consumerGroupName; // Serializable representation
     private final org.apache.iggy.connector.serialization.DeserializationSchema<T> deserializer;
     private final OffsetConfig offsetConfig;
     private final long pollBatchSize;
@@ -110,12 +115,7 @@ public class IggySource<T> implements Source<T, IggySourceSplit, IggySourceEnume
     public SourceReader<T, IggySourceSplit> createReader(SourceReaderContext readerContext) throws Exception {
         AsyncIggyTcpClient asyncClient = createAsyncIggyClient();
         Consumer consumer = createConsumer();
-        return new IggySourceReader<>(
-                readerContext,
-                asyncClient,
-                deserializer,
-                consumer,
-                pollBatchSize);
+        return new IggySourceReader<>(readerContext, asyncClient, deserializer, consumer, pollBatchSize);
     }
 
     @Override
@@ -124,29 +124,17 @@ public class IggySource<T> implements Source<T, IggySourceSplit, IggySourceEnume
 
         AsyncIggyTcpClient asyncClient = createAsyncIggyClient();
         return new IggySourceSplitEnumerator(
-                enumContext,
-                asyncClient,
-                streamId,
-                topicId,
-                consumerGroupName,
-                offsetConfig,
-                null);
+                enumContext, asyncClient, streamId, topicId, consumerGroupName, offsetConfig, null);
     }
 
     @Override
     public SplitEnumerator<IggySourceSplit, IggySourceEnumeratorState> restoreEnumerator(
-            SplitEnumeratorContext<IggySourceSplit> enumContext,
-            IggySourceEnumeratorState checkpoint) throws Exception {
+            SplitEnumeratorContext<IggySourceSplit> enumContext, IggySourceEnumeratorState checkpoint)
+            throws Exception {
 
         AsyncIggyTcpClient asyncClient = createAsyncIggyClient();
         return new IggySourceSplitEnumerator(
-                enumContext,
-                asyncClient,
-                streamId,
-                topicId,
-                consumerGroupName,
-                offsetConfig,
-                checkpoint);
+                enumContext, asyncClient, streamId, topicId, consumerGroupName, offsetConfig, checkpoint);
     }
 
     @Override
@@ -192,7 +180,7 @@ public class IggySource<T> implements Source<T, IggySourceSplit, IggySourceEnume
 
             return asyncClient;
 
-        } catch (Exception e) {
+        } catch (RuntimeException e) {
             throw new RuntimeException("Failed to create async Iggy client", e);
         }
     }
diff --git a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/source/IggySourceBuilder.java b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/source/IggySourceBuilder.java
index 827b58301..bd3c7506d 100644
--- a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/source/IggySourceBuilder.java
+++ b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/source/IggySourceBuilder.java
@@ -19,6 +19,7 @@
 
 package org.apache.iggy.connector.flink.source;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.iggy.connector.config.IggyConnectionConfig;
 import org.apache.iggy.connector.config.OffsetConfig;
 import org.apache.iggy.connector.serialization.DeserializationSchema;
@@ -37,7 +38,7 @@ public class IggySourceBuilder<T> implements Serializable {
     private IggyConnectionConfig connectionConfig;
     private String streamId;
     private String topicId;
-    private String consumerGroupName;  // Store as String for serialization
+    private String consumerGroupName; // Store as String for serialization
     private DeserializationSchema<T> deserializer;
     private OffsetConfig offsetConfig = OffsetConfig.builder().build();
     private long pollBatchSize = 100L;
@@ -154,13 +155,7 @@ public class IggySourceBuilder<T> implements Serializable {
         validate();
 
         return new IggySource<>(
-                connectionConfig,
-                streamId,
-                topicId,
-                consumerGroupName,
-                deserializer,
-                offsetConfig,
-                pollBatchSize);
+                connectionConfig, streamId, topicId, consumerGroupName, deserializer, offsetConfig, pollBatchSize);
     }
 
     /**
@@ -172,13 +167,13 @@ public class IggySourceBuilder<T> implements Serializable {
         if (connectionConfig == null) {
             throw new IllegalStateException("connectionConfig is required");
         }
-        if (streamId == null || streamId.isEmpty()) {
+        if (StringUtils.isBlank(streamId)) {
             throw new IllegalStateException("streamId is required");
         }
-        if (topicId == null || topicId.isEmpty()) {
+        if (StringUtils.isBlank(topicId)) {
             throw new IllegalStateException("topicId is required");
         }
-        if (consumerGroupName == null || consumerGroupName.isEmpty()) {
+        if (StringUtils.isBlank(consumerGroupName)) {
             throw new IllegalStateException("consumerGroup is required (use setConsumerGroup)");
         }
         if (deserializer == null) {
diff --git a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/source/IggySourceEnumeratorState.java b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/source/IggySourceEnumeratorState.java
index 2ca39a493..07d0e995f 100644
--- a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/source/IggySourceEnumeratorState.java
+++ b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/source/IggySourceEnumeratorState.java
@@ -20,7 +20,10 @@
 package org.apache.iggy.connector.flink.source;
 
 import java.io.Serializable;
-import java.util.*;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Objects;
+import java.util.Set;
 
 /**
  * State for the Iggy source split enumerator.
@@ -39,9 +42,7 @@ public class IggySourceEnumeratorState implements Serializable {
      * @param assignedSplits the splits that have been assigned to readers
      * @param discoveredPartitions the partition IDs that have been discovered
      */
-    public IggySourceEnumeratorState(
-            Set<IggySourceSplit> assignedSplits,
-            Set<Integer> discoveredPartitions) {
+    public IggySourceEnumeratorState(Set<IggySourceSplit> assignedSplits, Set<Integer> discoveredPartitions) {
         this.assignedSplits = new HashSet<>(assignedSplits);
         this.discoveredPartitions = new HashSet<>(discoveredPartitions);
     }
diff --git a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/source/IggySourceEnumeratorStateSerializer.java b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/source/IggySourceEnumeratorStateSerializer.java
index 333777df6..2f6312f65 100644
--- a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/source/IggySourceEnumeratorStateSerializer.java
+++ b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/source/IggySourceEnumeratorStateSerializer.java
@@ -21,15 +21,18 @@ package org.apache.iggy.connector.flink.source;
 
 import org.apache.flink.core.io.SimpleVersionedSerializer;
 
-import java.io.*;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
 import java.util.HashSet;
 import java.util.Set;
 
 /**
  * Serializer for IggySourceEnumeratorState for checkpointing.
  */
-public class IggySourceEnumeratorStateSerializer
-        implements SimpleVersionedSerializer<IggySourceEnumeratorState> {
+public class IggySourceEnumeratorStateSerializer implements SimpleVersionedSerializer<IggySourceEnumeratorState> {
 
     private static final int VERSION = 1;
 
@@ -43,7 +46,7 @@ public class IggySourceEnumeratorStateSerializer
     @Override
     public byte[] serialize(IggySourceEnumeratorState state) throws IOException {
         try (ByteArrayOutputStream baos = new ByteArrayOutputStream();
-             DataOutputStream out = new DataOutputStream(baos)) {
+                DataOutputStream out = new DataOutputStream(baos)) {
 
             // Write assigned splits
             Set<IggySourceSplit> assignedSplits = state.getAssignedSplits();
@@ -73,7 +76,7 @@ public class IggySourceEnumeratorStateSerializer
         }
 
         try (ByteArrayInputStream bais = new ByteArrayInputStream(serialized);
-             DataInputStream in = new DataInputStream(bais)) {
+                DataInputStream in = new DataInputStream(bais)) {
 
             // Read assigned splits
             int splitsCount = in.readInt();
@@ -82,8 +85,7 @@ public class IggySourceEnumeratorStateSerializer
                 int splitBytesLength = in.readInt();
                 byte[] splitBytes = new byte[splitBytesLength];
                 in.readFully(splitBytes);
-                IggySourceSplit split = splitSerializer.deserialize(
-                        splitSerializer.getVersion(), splitBytes);
+                IggySourceSplit split = splitSerializer.deserialize(splitSerializer.getVersion(), splitBytes);
                 assignedSplits.add(split);
             }
 
diff --git a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/source/IggySourceReader.java b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/source/IggySourceReader.java
index 46e4e5c1b..cf08ffe14 100644
--- a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/source/IggySourceReader.java
+++ b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/source/IggySourceReader.java
@@ -19,19 +19,23 @@
 
 package org.apache.iggy.connector.flink.source;
 
-import org.apache.flink.api.connector.source.SourceReader;
-import org.apache.flink.api.connector.source.SourceReaderContext;
 import org.apache.flink.api.connector.source.ReaderOutput;
 import org.apache.flink.api.connector.source.SourceEvent;
+import org.apache.flink.api.connector.source.SourceReader;
+import org.apache.flink.api.connector.source.SourceReaderContext;
 import org.apache.flink.core.io.InputStatus;
 import org.apache.iggy.client.async.tcp.AsyncIggyTcpClient;
-import org.apache.iggy.consumergroup.Consumer;
 import org.apache.iggy.connector.serialization.DeserializationSchema;
-
+import org.apache.iggy.consumergroup.Consumer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.*;
+import java.util.ArrayDeque;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Queue;
 import java.util.concurrent.CompletableFuture;
 
 /**
@@ -40,7 +44,7 @@ import java.util.concurrent.CompletableFuture;
  */
 public class IggySourceReader<T> implements SourceReader<T, IggySourceSplit> {
 
-	private static final Logger LOGGER = LoggerFactory.getLogger(IggySourceReader.class);
+    private static final Logger log = LoggerFactory.getLogger(IggySourceReader.class);
 
     private final SourceReaderContext context;
     private final AsyncIggyTcpClient asyncClient;
@@ -152,12 +156,8 @@ public class IggySourceReader<T> implements SourceReader<T, IggySourceSplit> {
         for (IggySourceSplit split : splits) {
             String splitId = split.splitId();
             if (!splitReaders.containsKey(splitId)) {
-                IggyPartitionSplitReader<T> splitReader = new IggyPartitionSplitReader<>(
-                        asyncClient,
-                        split,
-                        deserializer,
-                        consumer,
-                        pollBatchSize);
+                IggyPartitionSplitReader<T> splitReader =
+                        new IggyPartitionSplitReader<>(asyncClient, split, deserializer, consumer, pollBatchSize);
                 splitReaders.put(splitId, splitReader);
             }
         }
@@ -185,7 +185,7 @@ public class IggySourceReader<T> implements SourceReader<T, IggySourceSplit> {
                 asyncClient.close().join();
             } catch (RuntimeException e) {
                 // Log but don't throw - we're in cleanup phase
-                LOGGER.error("Error closing async Iggy client: " + e.getMessage());
+                log.error("Error closing async Iggy client: " + e.getMessage());
             }
         }
     }
diff --git a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/source/IggySourceSplit.java b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/source/IggySourceSplit.java
index e9f5f077a..235df9d59 100644
--- a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/source/IggySourceSplit.java
+++ b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/source/IggySourceSplit.java
@@ -47,12 +47,7 @@ public class IggySourceSplit implements SourceSplit, Serializable {
      * @param startOffset the initial offset to start reading from
      * @param currentOffset the current offset (for checkpointing)
      */
-    public IggySourceSplit(
-            String streamId,
-            String topicId,
-            int partitionId,
-            long startOffset,
-            long currentOffset) {
+    public IggySourceSplit(String streamId, String topicId, int partitionId, long startOffset, long currentOffset) {
 
         if (streamId == null || streamId.isEmpty()) {
             throw new IllegalArgumentException("streamId cannot be null or empty");
@@ -86,11 +81,7 @@ public class IggySourceSplit implements SourceSplit, Serializable {
      * @param startOffset the offset to start reading from
      * @return a new source split
      */
-    public static IggySourceSplit create(
-            String streamId,
-            String topicId,
-            int partitionId,
-            long startOffset) {
+    public static IggySourceSplit create(String streamId, String topicId, int partitionId, long startOffset) {
         return new IggySourceSplit(streamId, topicId, partitionId, startOffset, startOffset);
     }
 
diff --git a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/source/IggySourceSplitEnumerator.java b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/source/IggySourceSplitEnumerator.java
index 069a4d26f..de24a2af5 100644
--- a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/source/IggySourceSplitEnumerator.java
+++ b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/source/IggySourceSplitEnumerator.java
@@ -31,14 +31,19 @@ import org.apache.iggy.topic.TopicDetails;
 
 import javax.annotation.Nullable;
 import java.io.IOException;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.Set;
 
 /**
  * Split enumerator for Iggy source.
  * Discovers partitions and assigns them to source readers.
  */
-public class IggySourceSplitEnumerator implements
-        SplitEnumerator<IggySourceSplit, IggySourceEnumeratorState> {
+public class IggySourceSplitEnumerator implements SplitEnumerator<IggySourceSplit, IggySourceEnumeratorState> {
 
     private final SplitEnumeratorContext<IggySourceSplit> context;
     private final AsyncIggyTcpClient asyncClient;
@@ -49,18 +54,18 @@ public class IggySourceSplitEnumerator implements
 
     private final Set<IggySourceSplit> assignedSplits;
     private final Set<Integer> discoveredPartitions;
-    private final Set<String> sentToReaders;  // Track splits already sent to readers
+    private final Set<String> sentToReaders; // Track splits already sent to readers
 
     /**
      * Creates a new split enumerator.
      *
-     * @param context the split enumerator context
-     * @param asyncClient the async Iggy client
-     * @param streamId the stream ID
-     * @param topicId the topic ID
+     * @param context           the split enumerator context
+     * @param asyncClient       the async Iggy client
+     * @param streamId          the stream ID
+     * @param topicId           the topic ID
      * @param consumerGroupName the consumer group name
-     * @param offsetConfig the offset configuration
-     * @param initialState the initial state (for recovery)
+     * @param offsetConfig      the offset configuration
+     * @param initialState      the initial state (for recovery)
      */
     public IggySourceSplitEnumerator(
             SplitEnumeratorContext<IggySourceSplit> context,
@@ -99,7 +104,7 @@ public class IggySourceSplitEnumerator implements
 
     /**
      * Ensures the consumer group exists, creating it if necessary.
-     *
+     * <p>
      * Note: In Iggy SDK async API, consumer group creation is not available.
      * Consumer groups must be created beforehand using the blocking HTTP client
      * or through the setup scripts. The async API only supports joining/leaving
@@ -151,9 +156,8 @@ public class IggySourceSplitEnumerator implements
             TopicId topic = parseTopicId(topicId);
 
             // Get topic details including partitions
-            Optional<TopicDetails> topicDetailsOpt = asyncClient.topics()
-                    .getTopicAsync(stream, topic)
-                    .join();
+            Optional<TopicDetails> topicDetailsOpt =
+                    asyncClient.topics().getTopicAsync(stream, topic).join();
 
             if (topicDetailsOpt.isPresent()) {
                 TopicDetails topicDetails = topicDetailsOpt.get();
@@ -161,26 +165,22 @@ public class IggySourceSplitEnumerator implements
                     for (Partition partition : topicDetails.partitions()) {
                         int partitionId = partition.id().intValue();
 
-                    // Skip if already discovered
-                    if (discoveredPartitions.contains(partitionId)) {
-                        continue;
-                    }
+                        // Skip if already discovered
+                        if (discoveredPartitions.contains(partitionId)) {
+                            continue;
+                        }
 
-                    // Determine starting offset
-                    long startOffset = determineStartOffset(partition);
+                        // Determine starting offset
+                        long startOffset = determineStartOffset(partition);
 
-                    // Create split
-                    IggySourceSplit split = IggySourceSplit.create(
-                            streamId,
-                            topicId,
-                            partitionId,
-                            startOffset);
+                        // Create split
+                        IggySourceSplit split = IggySourceSplit.create(streamId, topicId, partitionId, startOffset);
 
-                    discoveredPartitions.add(partitionId);
+                        discoveredPartitions.add(partitionId);
 
-                    // Check if this split is already assigned
-                    boolean alreadyAssigned = assignedSplits.stream()
-                            .anyMatch(s -> s.getPartitionId() == partitionId);
+                        // Check if this split is already assigned
+                        boolean alreadyAssigned =
+                                assignedSplits.stream().anyMatch(s -> s.getPartitionId() == partitionId);
 
                         if (!alreadyAssigned) {
                             assignedSplits.add(split);
@@ -192,7 +192,7 @@ public class IggySourceSplitEnumerator implements
             // Assign discovered splits to readers
             assignSplits();
 
-        } catch (Exception e) {
+        } catch (RuntimeException e) {
             throw new RuntimeException("Failed to discover partitions", e);
         }
     }
@@ -222,14 +222,12 @@ public class IggySourceSplitEnumerator implements
             int readerIndex = i % readers.size();
             int readerId = readers.get(readerIndex);
 
-            assignments.computeIfAbsent(readerId, k -> new ArrayList<>())
-                    .add(unassignedSplits.get(i));
+            assignments.computeIfAbsent(readerId, k -> new ArrayList<>()).add(unassignedSplits.get(i));
         }
 
         // Assign splits to readers and mark them as sent
         for (Map.Entry<Integer, List<IggySourceSplit>> entry : assignments.entrySet()) {
-            context.assignSplits(new SplitsAssignment<>(
-                    Map.of(entry.getKey(), entry.getValue())));
+            context.assignSplits(new SplitsAssignment<>(Map.of(entry.getKey(), entry.getValue())));
 
             // Mark these splits as sent
             for (IggySourceSplit split : entry.getValue()) {
diff --git a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/source/IggySourceSplitSerializer.java b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/source/IggySourceSplitSerializer.java
index c34d7f9b1..79e0f57c7 100644
--- a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/source/IggySourceSplitSerializer.java
+++ b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/flink/source/IggySourceSplitSerializer.java
@@ -21,7 +21,11 @@ package org.apache.iggy.connector.flink.source;
 
 import org.apache.flink.core.io.SimpleVersionedSerializer;
 
-import java.io.*;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 
 /**
@@ -39,7 +43,7 @@ public class IggySourceSplitSerializer implements SimpleVersionedSerializer<Iggy
     @Override
     public byte[] serialize(IggySourceSplit split) throws IOException {
         try (ByteArrayOutputStream baos = new ByteArrayOutputStream();
-             DataOutputStream out = new DataOutputStream(baos)) {
+                DataOutputStream out = new DataOutputStream(baos)) {
 
             // Write streamId
             byte[] streamIdBytes = split.getStreamId().getBytes(StandardCharsets.UTF_8);
@@ -72,7 +76,7 @@ public class IggySourceSplitSerializer implements SimpleVersionedSerializer<Iggy
         }
 
         try (ByteArrayInputStream bais = new ByteArrayInputStream(serialized);
-             DataInputStream in = new DataInputStream(bais)) {
+                DataInputStream in = new DataInputStream(bais)) {
 
             // Read streamId
             int streamIdLength = in.readInt();
diff --git a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/partition/PartitionInfo.java b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/partition/PartitionInfo.java
index 50e1ea8dc..5f73074ea 100644
--- a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/partition/PartitionInfo.java
+++ b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/partition/PartitionInfo.java
@@ -37,8 +37,7 @@ public final class PartitionInfo implements Serializable {
     private final long currentOffset;
     private final long endOffset;
 
-    private PartitionInfo(
-            String streamId, String topicId, int partitionId, long currentOffset, long endOffset) {
+    private PartitionInfo(String streamId, String topicId, int partitionId, long currentOffset, long endOffset) {
         this.streamId = Objects.requireNonNull(streamId, "streamId must not be null");
         this.topicId = Objects.requireNonNull(topicId, "topicId must not be null");
         this.partitionId = partitionId;
diff --git a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/serialization/JsonDeserializationSchema.java b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/serialization/JsonDeserializationSchema.java
index f8107a610..61251ddbe 100644
--- a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/serialization/JsonDeserializationSchema.java
+++ b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/serialization/JsonDeserializationSchema.java
@@ -19,8 +19,8 @@
 
 package org.apache.iggy.connector.serialization;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.SerializationFeature;
 import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
 
@@ -74,8 +74,7 @@ public class JsonDeserializationSchema<T> implements DeserializationSchema<T> {
         try {
             return getObjectMapper().readValue(data, typeClass);
         } catch (IOException e) {
-            throw new IOException(
-                    "Failed to deserialize JSON for type " + typeClass.getName(), e);
+            throw new IOException("Failed to deserialize JSON for type " + typeClass.getName(), e);
         }
     }
 
diff --git a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/serialization/JsonSerializationSchema.java b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/serialization/JsonSerializationSchema.java
index 2bf418da6..8dcdb1ed8 100644
--- a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/serialization/JsonSerializationSchema.java
+++ b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/main/java/org/apache/iggy/connector/serialization/JsonSerializationSchema.java
@@ -19,13 +19,12 @@
 
 package org.apache.iggy.connector.serialization;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.SerializationFeature;
 import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.io.IOException;
 import java.util.Optional;
@@ -39,7 +38,7 @@ import java.util.function.Function;
  */
 public class JsonSerializationSchema<T> implements SerializationSchema<T> {
 
-	private static final Logger LOG = LoggerFactory.getLogger(JsonSerializationSchema.class);
+    private static final Logger log = LoggerFactory.getLogger(JsonSerializationSchema.class);
 
     private static final long serialVersionUID = 1L;
 
@@ -62,19 +61,6 @@ public class JsonSerializationSchema<T> implements SerializationSchema<T> {
         this(createDefaultObjectMapper(), partitionKeyExtractor);
     }
 
-    /**
-     * Creates a new JSON serializer with partition key extractor.
-     * Static factory method to avoid constructor ambiguity.
-     *
-     * @param partitionKeyExtractor function to extract partition key from elements
-     * @param <T> the type to serialize
-     * @return new JsonSerializationSchema instance
-     */
-    public static <T> JsonSerializationSchema<T> withPartitionKeyExtractor(
-            Function<T, Integer> partitionKeyExtractor) {
-        return new JsonSerializationSchema<>(partitionKeyExtractor);
-    }
-
     /**
      * Creates a new JSON serializer with a custom ObjectMapper.
      *
@@ -90,9 +76,7 @@ public class JsonSerializationSchema<T> implements SerializationSchema<T> {
      * @param objectMapper the Jackson ObjectMapper to use
      * @param partitionKeyExtractor function to extract partition key from elements
      */
-    public JsonSerializationSchema(
-            ObjectMapper objectMapper,
-            Function<T, Integer> partitionKeyExtractor) {
+    public JsonSerializationSchema(ObjectMapper objectMapper, Function<T, Integer> partitionKeyExtractor) {
         if (objectMapper == null) {
             throw new IllegalArgumentException("objectMapper cannot be null");
         }
@@ -100,6 +84,18 @@ public class JsonSerializationSchema<T> implements SerializationSchema<T> {
         this.partitionKeyExtractor = partitionKeyExtractor;
     }
 
+    /**
+     * Creates a new JSON serializer with partition key extractor.
+     * Static factory method to avoid constructor ambiguity.
+     *
+     * @param partitionKeyExtractor function to extract partition key from elements
+     * @param <T> the type to serialize
+     * @return new JsonSerializationSchema instance
+     */
+    public static <T> JsonSerializationSchema<T> withPartitionKeyExtractor(Function<T, Integer> partitionKeyExtractor) {
+        return new JsonSerializationSchema<>(partitionKeyExtractor);
+    }
+
     @Override
     public byte[] serialize(T element) throws IOException {
         if (element == null) {
@@ -122,7 +118,7 @@ public class JsonSerializationSchema<T> implements SerializationSchema<T> {
                 return Optional.ofNullable(key);
             } catch (RuntimeException e) {
                 // Log and return empty if extraction fails
-				LOG.warn("Failed to extract partitionKey: {}", e.getMessage());
+                log.warn("Failed to extract partitionKey: {}", e.getMessage());
                 return Optional.empty();
             }
         }
diff --git a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/test/java/org/apache/iggy/connector/config/IggyConnectionConfigTest.java b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/test/java/org/apache/iggy/connector/config/IggyConnectionConfigTest.java
index 467070c12..a7d20cd0b 100644
--- a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/test/java/org/apache/iggy/connector/config/IggyConnectionConfigTest.java
+++ b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/test/java/org/apache/iggy/connector/config/IggyConnectionConfigTest.java
@@ -19,11 +19,12 @@
 
 package org.apache.iggy.connector.config;
 
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import org.junit.jupiter.api.Test;
 
 import java.time.Duration;
-import org.junit.jupiter.api.Test;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 class IggyConnectionConfigTest {
 
@@ -68,9 +69,9 @@ class IggyConnectionConfigTest {
     @Test
     void shouldThrowExceptionWhenServerAddressIsNull() {
         assertThatThrownBy(() -> IggyConnectionConfig.builder()
-                .username("iggy")
-                .password("iggy")
-                .build())
+                        .username("iggy")
+                        .password("iggy")
+                        .build())
                 .isInstanceOf(NullPointerException.class)
                 .hasMessageContaining("serverAddress must not be null");
     }
@@ -78,9 +79,9 @@ class IggyConnectionConfigTest {
     @Test
     void shouldThrowExceptionWhenUsernameIsNull() {
         assertThatThrownBy(() -> IggyConnectionConfig.builder()
-                .serverAddress("localhost:8080")
-                .password("iggy")
-                .build())
+                        .serverAddress("localhost:8080")
+                        .password("iggy")
+                        .build())
                 .isInstanceOf(NullPointerException.class)
                 .hasMessageContaining("username must not be null");
     }
@@ -88,9 +89,9 @@ class IggyConnectionConfigTest {
     @Test
     void shouldThrowExceptionWhenPasswordIsNull() {
         assertThatThrownBy(() -> IggyConnectionConfig.builder()
-                .serverAddress("localhost:8080")
-                .username("iggy")
-                .build())
+                        .serverAddress("localhost:8080")
+                        .username("iggy")
+                        .build())
                 .isInstanceOf(NullPointerException.class)
                 .hasMessageContaining("password must not be null");
     }
@@ -98,11 +99,11 @@ class IggyConnectionConfigTest {
     @Test
     void shouldThrowExceptionWhenConnectionTimeoutIsNull() {
         assertThatThrownBy(() -> IggyConnectionConfig.builder()
-                .serverAddress("localhost:8080")
-                .username("iggy")
-                .password("iggy")
-                .connectionTimeout(null)
-                .build())
+                        .serverAddress("localhost:8080")
+                        .username("iggy")
+                        .password("iggy")
+                        .connectionTimeout(null)
+                        .build())
                 .isInstanceOf(NullPointerException.class)
                 .hasMessageContaining("connectionTimeout must not be null");
     }
@@ -110,11 +111,11 @@ class IggyConnectionConfigTest {
     @Test
     void shouldThrowExceptionWhenRequestTimeoutIsNull() {
         assertThatThrownBy(() -> IggyConnectionConfig.builder()
-                .serverAddress("localhost:8080")
-                .username("iggy")
-                .password("iggy")
-                .requestTimeout(null)
-                .build())
+                        .serverAddress("localhost:8080")
+                        .username("iggy")
+                        .password("iggy")
+                        .requestTimeout(null)
+                        .build())
                 .isInstanceOf(NullPointerException.class)
                 .hasMessageContaining("requestTimeout must not be null");
     }
@@ -122,11 +123,11 @@ class IggyConnectionConfigTest {
     @Test
     void shouldThrowExceptionWhenRetryBackoffIsNull() {
         assertThatThrownBy(() -> IggyConnectionConfig.builder()
-                .serverAddress("localhost:8080")
-                .username("iggy")
-                .password("iggy")
-                .retryBackoff(null)
-                .build())
+                        .serverAddress("localhost:8080")
+                        .username("iggy")
+                        .password("iggy")
+                        .retryBackoff(null)
+                        .build())
                 .isInstanceOf(NullPointerException.class)
                 .hasMessageContaining("retryBackoff must not be null");
     }
@@ -134,11 +135,11 @@ class IggyConnectionConfigTest {
     @Test
     void shouldThrowExceptionWhenMaxRetriesIsNegative() {
         assertThatThrownBy(() -> IggyConnectionConfig.builder()
-                .serverAddress("localhost:8080")
-                .username("iggy")
-                .password("iggy")
-                .maxRetries(-1)
-                .build())
+                        .serverAddress("localhost:8080")
+                        .username("iggy")
+                        .password("iggy")
+                        .maxRetries(-1)
+                        .build())
                 .isInstanceOf(IllegalArgumentException.class)
                 .hasMessageContaining("maxRetries must be non-negative");
     }
diff --git a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/test/java/org/apache/iggy/connector/config/OffsetConfigTest.java b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/test/java/org/apache/iggy/connector/config/OffsetConfigTest.java
index dc2fbb9a6..5617a7869 100644
--- a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/test/java/org/apache/iggy/connector/config/OffsetConfigTest.java
+++ b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/test/java/org/apache/iggy/connector/config/OffsetConfigTest.java
@@ -19,11 +19,12 @@
 
 package org.apache.iggy.connector.config;
 
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import org.junit.jupiter.api.Test;
 
 import java.time.Duration;
-import org.junit.jupiter.api.Test;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 class OffsetConfigTest {
 
@@ -72,45 +73,35 @@ class OffsetConfigTest {
 
     @Test
     void shouldThrowExceptionWhenResetStrategyIsNull() {
-        assertThatThrownBy(() -> OffsetConfig.builder()
-                .resetStrategy(null)
-                .build())
+        assertThatThrownBy(() -> OffsetConfig.builder().resetStrategy(null).build())
                 .isInstanceOf(NullPointerException.class)
                 .hasMessageContaining("resetStrategy must not be null");
     }
 
     @Test
     void shouldThrowExceptionWhenCommitIntervalIsNull() {
-        assertThatThrownBy(() -> OffsetConfig.builder()
-                .commitInterval(null)
-                .build())
+        assertThatThrownBy(() -> OffsetConfig.builder().commitInterval(null).build())
                 .isInstanceOf(NullPointerException.class)
                 .hasMessageContaining("commitInterval must not be null");
     }
 
     @Test
     void shouldThrowExceptionWhenCommitBatchSizeIsZero() {
-        assertThatThrownBy(() -> OffsetConfig.builder()
-                .commitBatchSize(0)
-                .build())
+        assertThatThrownBy(() -> OffsetConfig.builder().commitBatchSize(0).build())
                 .isInstanceOf(IllegalArgumentException.class)
                 .hasMessageContaining("commitBatchSize must be positive");
     }
 
     @Test
     void shouldThrowExceptionWhenCommitBatchSizeIsNegative() {
-        assertThatThrownBy(() -> OffsetConfig.builder()
-                .commitBatchSize(-1)
-                .build())
+        assertThatThrownBy(() -> OffsetConfig.builder().commitBatchSize(-1).build())
                 .isInstanceOf(IllegalArgumentException.class)
                 .hasMessageContaining("commitBatchSize must be positive");
     }
 
     @Test
     void shouldAcceptMinimalCommitBatchSize() {
-        OffsetConfig config = OffsetConfig.builder()
-                .commitBatchSize(1)
-                .build();
+        OffsetConfig config = OffsetConfig.builder().commitBatchSize(1).build();
 
         assertThat(config.getCommitBatchSize()).isEqualTo(1);
     }
diff --git a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/test/java/org/apache/iggy/connector/error/ConnectorExceptionTest.java b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/test/java/org/apache/iggy/connector/error/ConnectorExceptionTest.java
index 04dcc69a2..b28ccc140 100644
--- a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/test/java/org/apache/iggy/connector/error/ConnectorExceptionTest.java
+++ b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/test/java/org/apache/iggy/connector/error/ConnectorExceptionTest.java
@@ -19,10 +19,10 @@
 
 package org.apache.iggy.connector.error;
 
-import static org.assertj.core.api.Assertions.assertThat;
-
 import org.junit.jupiter.api.Test;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
 class ConnectorExceptionTest {
 
     @Test
@@ -48,11 +48,8 @@ class ConnectorExceptionTest {
 
     @Test
     void shouldCreateExceptionWithMessageErrorCodeAndRetryable() {
-        ConnectorException exception = new ConnectorException(
-                "Connection failed",
-                ConnectorException.ErrorCode.CONNECTION_FAILED,
-                true
-        );
+        ConnectorException exception =
+                new ConnectorException("Connection failed", ConnectorException.ErrorCode.CONNECTION_FAILED, true);
 
         assertThat(exception.getMessage()).isEqualTo("Connection failed");
         assertThat(exception.getErrorCode()).isEqualTo(ConnectorException.ErrorCode.CONNECTION_FAILED);
@@ -64,11 +61,7 @@ class ConnectorExceptionTest {
     void shouldCreateExceptionWithAllParameters() {
         Throwable cause = new RuntimeException("Root cause");
         ConnectorException exception = new ConnectorException(
-                "Connection failed",
-                cause,
-                ConnectorException.ErrorCode.CONNECTION_FAILED,
-                true
-        );
+                "Connection failed", cause, ConnectorException.ErrorCode.CONNECTION_FAILED, true);
 
         assertThat(exception.getMessage()).isEqualTo("Connection failed");
         assertThat(exception.getCause()).isEqualTo(cause);
@@ -92,11 +85,8 @@ class ConnectorExceptionTest {
 
     @Test
     void shouldMarkConnectionErrorsAsRetryable() {
-        ConnectorException exception = new ConnectorException(
-                "Connection failed",
-                ConnectorException.ErrorCode.CONNECTION_FAILED,
-                true
-        );
+        ConnectorException exception =
+                new ConnectorException("Connection failed", ConnectorException.ErrorCode.CONNECTION_FAILED, true);
 
         assertThat(exception.isRetryable()).isTrue();
     }
@@ -104,43 +94,31 @@ class ConnectorExceptionTest {
     @Test
     void shouldMarkAuthenticationErrorsAsNonRetryable() {
         ConnectorException exception = new ConnectorException(
-                "Authentication failed",
-                ConnectorException.ErrorCode.AUTHENTICATION_FAILED,
-                false
-        );
+                "Authentication failed", ConnectorException.ErrorCode.AUTHENTICATION_FAILED, false);
 
         assertThat(exception.isRetryable()).isFalse();
     }
 
     @Test
     void shouldMarkSerializationErrorsAsNonRetryable() {
-        ConnectorException exception = new ConnectorException(
-                "Serialization failed",
-                ConnectorException.ErrorCode.SERIALIZATION_ERROR,
-                false
-        );
+        ConnectorException exception =
+                new ConnectorException("Serialization failed", ConnectorException.ErrorCode.SERIALIZATION_ERROR, false);
 
         assertThat(exception.isRetryable()).isFalse();
     }
 
     @Test
     void shouldMarkTimeoutErrorsAsRetryable() {
-        ConnectorException exception = new ConnectorException(
-                "Operation timed out",
-                ConnectorException.ErrorCode.TIMEOUT,
-                true
-        );
+        ConnectorException exception =
+                new ConnectorException("Operation timed out", ConnectorException.ErrorCode.TIMEOUT, true);
 
         assertThat(exception.isRetryable()).isTrue();
     }
 
     @Test
     void shouldMarkConfigurationErrorsAsNonRetryable() {
-        ConnectorException exception = new ConnectorException(
-                "Configuration error",
-                ConnectorException.ErrorCode.CONFIGURATION_ERROR,
-                false
-        );
+        ConnectorException exception =
+                new ConnectorException("Configuration error", ConnectorException.ErrorCode.CONFIGURATION_ERROR, false);
 
         assertThat(exception.isRetryable()).isFalse();
     }
diff --git a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/test/java/org/apache/iggy/connector/partition/PartitionInfoTest.java b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/test/java/org/apache/iggy/connector/partition/PartitionInfoTest.java
index 13703c503..088105a0f 100644
--- a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/test/java/org/apache/iggy/connector/partition/PartitionInfoTest.java
+++ b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/test/java/org/apache/iggy/connector/partition/PartitionInfoTest.java
@@ -19,11 +19,11 @@
 
 package org.apache.iggy.connector.partition;
 
+import org.junit.jupiter.api.Test;
+
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
-import org.junit.jupiter.api.Test;
-
 class PartitionInfoTest {
 
     @Test
diff --git a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/test/java/org/apache/iggy/connector/serialization/DeserializationSchemaTest.java b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/test/java/org/apache/iggy/connector/serialization/DeserializationSchemaTest.java
index 5f52c3de6..0aac27bb0 100644
--- a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/test/java/org/apache/iggy/connector/serialization/DeserializationSchemaTest.java
+++ b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/test/java/org/apache/iggy/connector/serialization/DeserializationSchemaTest.java
@@ -19,12 +19,13 @@
 
 package org.apache.iggy.connector.serialization;
 
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
-import org.junit.jupiter.api.Test;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 class DeserializationSchemaTest {
 
@@ -136,7 +137,8 @@ class DeserializationSchemaTest {
             @Override
             public String deserialize(byte[] data, RecordMetadata metadata) {
                 String content = new String(data, StandardCharsets.UTF_8);
-                return String.format("%s:%s:%d:%d:%s",
+                return String.format(
+                        "%s:%s:%d:%d:%s",
                         metadata.getStreamId(),
                         metadata.getTopicId(),
                         metadata.getPartitionId(),
diff --git a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/test/java/org/apache/iggy/connector/serialization/RecordMetadataTest.java b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/test/java/org/apache/iggy/connector/serialization/RecordMetadataTest.java
index 729b27186..dcacddb11 100644
--- a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/test/java/org/apache/iggy/connector/serialization/RecordMetadataTest.java
+++ b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/test/java/org/apache/iggy/connector/serialization/RecordMetadataTest.java
@@ -19,10 +19,10 @@
 
 package org.apache.iggy.connector.serialization;
 
-import static org.assertj.core.api.Assertions.assertThat;
-
 import org.junit.jupiter.api.Test;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
 class RecordMetadataTest {
 
     @Test
diff --git a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/test/java/org/apache/iggy/connector/serialization/SerializationSchemaTest.java b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/test/java/org/apache/iggy/connector/serialization/SerializationSchemaTest.java
index c9eff24bb..0b41bd16a 100644
--- a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/test/java/org/apache/iggy/connector/serialization/SerializationSchemaTest.java
+++ b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/test/java/org/apache/iggy/connector/serialization/SerializationSchemaTest.java
@@ -19,13 +19,14 @@
 
 package org.apache.iggy.connector.serialization;
 
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.util.Optional;
-import org.junit.jupiter.api.Test;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 class SerializationSchemaTest {
 
diff --git a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/test/java/org/apache/iggy/connector/serialization/TypeDescriptorTest.java b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/test/java/org/apache/iggy/connector/serialization/TypeDescriptorTest.java
index ab76c8e4f..11a6edc48 100644
--- a/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/test/java/org/apache/iggy/connector/serialization/TypeDescriptorTest.java
+++ b/foreign/java/external-processors/iggy-connector-flink/iggy-connector-library/src/test/java/org/apache/iggy/connector/serialization/TypeDescriptorTest.java
@@ -19,13 +19,14 @@
 
 package org.apache.iggy.connector.serialization;
 
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import org.junit.jupiter.api.Test;
 
 import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
 import java.util.List;
-import org.junit.jupiter.api.Test;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 class TypeDescriptorTest {
 
@@ -42,7 +43,7 @@ class TypeDescriptorTest {
         Type genericType = new ParameterizedType() {
             @Override
             public Type[] getActualTypeArguments() {
-                return new Type[]{String.class};
+                return new Type[] {String.class};
             }
 
             @Override
@@ -117,7 +118,7 @@ class TypeDescriptorTest {
         Type genericType1 = new ParameterizedType() {
             @Override
             public Type[] getActualTypeArguments() {
-                return new Type[]{String.class};
+                return new Type[] {String.class};
             }
 
             @Override
@@ -134,7 +135,7 @@ class TypeDescriptorTest {
         Type genericType2 = new ParameterizedType() {
             @Override
             public Type[] getActualTypeArguments() {
-                return new Type[]{Integer.class};
+                return new Type[] {Integer.class};
             }
 
             @Override
diff --git a/foreign/java/external-processors/iggy-connector-flink/iggy-flink-examples/src/main/java/org/apache/iggy/flink/example/MultiStreamJoinJob.java b/foreign/java/external-processors/iggy-connector-flink/iggy-flink-examples/src/main/java/org/apache/iggy/flink/example/MultiStreamJoinJob.java
index 5eabe96d9..b0de5f527 100644
--- a/foreign/java/external-processors/iggy-connector-flink/iggy-flink-examples/src/main/java/org/apache/iggy/flink/example/MultiStreamJoinJob.java
+++ b/foreign/java/external-processors/iggy-connector-flink/iggy-flink-examples/src/main/java/org/apache/iggy/flink/example/MultiStreamJoinJob.java
@@ -78,17 +78,16 @@ public class MultiStreamJoinJob {
     private static final String IGGY_PASSWORD = getEnv("IGGY_PASSWORD", "iggy");
 
     // Use numeric IDs to match docker-compose.yml setup
-    private static final String ACTIVITY_STREAM = "5";  // user-activities
-    private static final String ACTIVITY_TOPIC = "1";   // events
-    private static final String PROFILE_STREAM = "6";   // user-profiles
-    private static final String PROFILE_TOPIC = "1";    // updates
-    private static final String OUTPUT_STREAM = "7";    // enriched-activities
-    private static final String OUTPUT_TOPIC = "1";     // results
+    private static final String ACTIVITY_STREAM = "5"; // user-activities
+    private static final String ACTIVITY_TOPIC = "1"; // events
+    private static final String PROFILE_STREAM = "6"; // user-profiles
+    private static final String PROFILE_TOPIC = "1"; // updates
+    private static final String OUTPUT_STREAM = "7"; // enriched-activities
+    private static final String OUTPUT_TOPIC = "1"; // results
 
     public static void main(String[] args) throws Exception {
         // Set up Flink execution environment
-        final StreamExecutionEnvironment env =
-                StreamExecutionEnvironment.getExecutionEnvironment();
+        final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
 
         // Enable checkpointing for fault tolerance
         env.enableCheckpointing(60000); // Checkpoint every 60 seconds
@@ -103,33 +102,32 @@ public class MultiStreamJoinJob {
 
         // Read user activities from Iggy
         DataStream<UserActivity> activities = env.fromSource(
-                IggySource.<UserActivity>builder()
-                        .setConnectionConfig(connectionConfig)
-                        .setStreamId(ACTIVITY_STREAM)
-                        .setTopicId(ACTIVITY_TOPIC)
-                        .setConsumerGroup("flink-activity-enricher")
-                        .setDeserializer(new JsonDeserializationSchema<>(UserActivity.class))
-                        .setPollBatchSize(100)
-                        .build(),
-                WatermarkStrategy
-                        .<UserActivity>forBoundedOutOfOrderness(Duration.ofSeconds(10))
-                        .withTimestampAssigner((activity, timestamp) ->
-                                activity.getTimestamp().toEpochMilli()),
-                "Iggy Activity Source")
+                        IggySource.<UserActivity>builder()
+                                .setConnectionConfig(connectionConfig)
+                                .setStreamId(ACTIVITY_STREAM)
+                                .setTopicId(ACTIVITY_TOPIC)
+                                .setConsumerGroup("flink-activity-enricher")
+                                .setDeserializer(new JsonDeserializationSchema<>(UserActivity.class))
+                                .setPollBatchSize(100)
+                                .build(),
+                        WatermarkStrategy.<UserActivity>forBoundedOutOfOrderness(Duration.ofSeconds(10))
+                                .withTimestampAssigner((activity, timestamp) ->
+                                        activity.getTimestamp().toEpochMilli()),
+                        "Iggy Activity Source")
                 .returns(UserActivity.class);
 
         // Read user profiles from Iggy
         DataStream<UserProfile> profiles = env.fromSource(
-                IggySource.<UserProfile>builder()
-                        .setConnectionConfig(connectionConfig)
-                        .setStreamId(PROFILE_STREAM)
-                        .setTopicId(PROFILE_TOPIC)
-                        .setConsumerGroup("flink-profile-reader")
-                        .setDeserializer(new JsonDeserializationSchema<>(UserProfile.class))
-                        .setPollBatchSize(50)
-                        .build(),
-                WatermarkStrategy.noWatermarks(),
-                "Iggy Profile Source")
+                        IggySource.<UserProfile>builder()
+                                .setConnectionConfig(connectionConfig)
+                                .setStreamId(PROFILE_STREAM)
+                                .setTopicId(PROFILE_TOPIC)
+                                .setConsumerGroup("flink-profile-reader")
+                                .setDeserializer(new JsonDeserializationSchema<>(UserProfile.class))
+                                .setPollBatchSize(50)
+                                .build(),
+                        WatermarkStrategy.noWatermarks(),
+                        "Iggy Profile Source")
                 .returns(UserProfile.class);
 
         // Enrich activities with profile information using stateful join
@@ -140,15 +138,15 @@ public class MultiStreamJoinJob {
                 .name("Enrich Activities");
 
         // Write enriched activities back to Iggy
-        enrichedActivities.sinkTo(
-                IggySink.<EnrichedActivity>builder()
+        enrichedActivities
+                .sinkTo(IggySink.<EnrichedActivity>builder()
                         .setConnectionConfig(connectionConfig)
                         .setStreamId(OUTPUT_STREAM)
                         .setTopicId(OUTPUT_TOPIC)
                         .setSerializer(new JsonSerializationSchema<>())
                         .setBatchSize(50)
                         .setFlushInterval(Duration.ofSeconds(5))
-                        .withBalancedPartitioning()  // Use balanced partitioning instead
+                        .withBalancedPartitioning() // Use balanced partitioning instead
                         .build())
                 .name("Iggy Enriched Activity Sink");
 
@@ -182,17 +180,17 @@ public class MultiStreamJoinJob {
         }
 
         @Override
-        public void processElement1(
-                UserActivity activity,
-                Context context,
-                Collector<EnrichedActivity> out) throws Exception {
+        public void processElement1(UserActivity activity, Context context, Collector<EnrichedActivity> out)
+                throws Exception {
             // Process activity event
-            System.out.println(">>> processElement1 - Activity: userId=" + activity.getUserId() + ", type=" + activity.getActivityType());
+            System.out.println(">>> processElement1 - Activity: userId=" + activity.getUserId() + ", type="
+                    + activity.getActivityType());
             UserProfile profile = profileState.value();
 
             if (profile != null) {
                 // Profile is available, enrich and emit
-                System.out.println(">>> MATCH! Profile found for userId=" + activity.getUserId() + ", emitting enriched activity");
+                System.out.println(
+                        ">>> MATCH! Profile found for userId=" + activity.getUserId() + ", emitting enriched activity");
                 out.collect(EnrichedActivity.from(activity, profile));
             } else {
                 // Profile not yet available, buffer the activity
@@ -202,12 +200,11 @@ public class MultiStreamJoinJob {
         }
 
         @Override
-        public void processElement2(
-                UserProfile profile,
-                Context context,
-                Collector<EnrichedActivity> out) throws Exception {
+        public void processElement2(UserProfile profile, Context context, Collector<EnrichedActivity> out)
+                throws Exception {
             // Process profile update
-            System.out.println(">>> processElement2 - Profile: userId=" + profile.getUserId() + ", name=" + profile.getUserName());
+            System.out.println(
+                    ">>> processElement2 - Profile: userId=" + profile.getUserId() + ", name=" + profile.getUserName());
             profileState.update(profile);
 
             // Check if there's a pending activity for this user
diff --git a/foreign/java/external-processors/iggy-connector-flink/iggy-flink-examples/src/main/java/org/apache/iggy/flink/example/SendTestMessages.java b/foreign/java/external-processors/iggy-connector-flink/iggy-flink-examples/src/main/java/org/apache/iggy/flink/example/SendTestMessages.java
index cc0eb7e9f..5debbfd5e 100644
--- a/foreign/java/external-processors/iggy-connector-flink/iggy-flink-examples/src/main/java/org/apache/iggy/flink/example/SendTestMessages.java
+++ b/foreign/java/external-processors/iggy-connector-flink/iggy-flink-examples/src/main/java/org/apache/iggy/flink/example/SendTestMessages.java
@@ -58,12 +58,12 @@ public class SendTestMessages {
         // Send messages using stream/topic names
         System.out.println("\nSending messages to text-input/lines...");
         for (String text : messages) {
-            client.messages().sendMessages(
-                StreamId.of("text-input"),
-                TopicId.of("lines"),
-                Partitioning.balanced(),
-                List.of(Message.of(text))
-            );
+            client.messages()
+                    .sendMessages(
+                            StreamId.of("text-input"),
+                            TopicId.of("lines"),
+                            Partitioning.balanced(),
+                            List.of(Message.of(text)));
             System.out.println("✓ Sent: " + text);
         }
 
diff --git a/foreign/java/external-processors/iggy-connector-flink/iggy-flink-examples/src/main/java/org/apache/iggy/flink/example/StreamTransformJob.java b/foreign/java/external-processors/iggy-connector-flink/iggy-flink-examples/src/main/java/org/apache/iggy/flink/example/StreamTransformJob.java
index f8a692c9a..83e01c167 100644
--- a/foreign/java/external-processors/iggy-connector-flink/iggy-flink-examples/src/main/java/org/apache/iggy/flink/example/StreamTransformJob.java
+++ b/foreign/java/external-processors/iggy-connector-flink/iggy-flink-examples/src/main/java/org/apache/iggy/flink/example/StreamTransformJob.java
@@ -67,18 +67,17 @@ public class StreamTransformJob {
     private static final String IGGY_PASSWORD = getEnv("IGGY_PASSWORD", "iggy");
 
     // Stream and topic IDs (numeric)
-    private static final String INPUT_STREAM = "1";  // sensors
-    private static final String INPUT_TOPIC = "1";   // readings
+    private static final String INPUT_STREAM = "1"; // sensors
+    private static final String INPUT_TOPIC = "1"; // readings
     private static final String OUTPUT_STREAM = "2"; // alerts
-    private static final String OUTPUT_TOPIC = "1";  // critical
+    private static final String OUTPUT_TOPIC = "1"; // critical
 
     private static final double TEMP_THRESHOLD = 30.0;
     private static final double HUMIDITY_THRESHOLD = 80.0;
 
     public static void main(String[] args) throws Exception {
         // Set up Flink execution environment
-        final StreamExecutionEnvironment env =
-                StreamExecutionEnvironment.getExecutionEnvironment();
+        final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
 
         // Enable checkpointing for fault tolerance
         env.enableCheckpointing(60000); // Checkpoint every 60 seconds
@@ -101,8 +100,7 @@ public class StreamTransformJob {
                         .setDeserializer(new JsonDeserializationSchema<>(SensorReading.class))
                         .setPollBatchSize(100)
                         .build(),
-                WatermarkStrategy
-                        .<SensorReading>forBoundedOutOfOrderness(Duration.ofSeconds(10))
+                WatermarkStrategy.<SensorReading>forBoundedOutOfOrderness(Duration.ofSeconds(10))
                         .withTimestampAssigner(new TimestampExtractor()),
                 "Iggy Sensor Source",
                 TypeInformation.of(SensorReading.class));
@@ -114,22 +112,21 @@ public class StreamTransformJob {
                 .name("Generate Alerts");
 
         // Optional: Add windowed aggregation to count alerts per sensor
-        DataStream<Alert> windowedAlerts = alerts
-                .keyBy(Alert::getSensorId)
+        DataStream<Alert> windowedAlerts = alerts.keyBy(Alert::getSensorId)
                 .window(TumblingEventTimeWindows.of(Duration.ofMinutes(5)))
                 .reduce(new AlertReducer())
                 .name("Window Alerts");
 
         // Write alerts back to Iggy
-        windowedAlerts.sinkTo(
-                IggySink.<Alert>builder()
+        windowedAlerts
+                .sinkTo(IggySink.<Alert>builder()
                         .setConnectionConfig(connectionConfig)
                         .setStreamId(OUTPUT_STREAM)
                         .setTopicId(OUTPUT_TOPIC)
                         .setSerializer(new JsonSerializationSchema<>())
                         .setBatchSize(50)
                         .setFlushInterval(Duration.ofSeconds(5))
-                        .withBalancedPartitioning()  // Use balanced partitioning instead
+                        .withBalancedPartitioning() // Use balanced partitioning instead
                         .build())
                 .name("Iggy Alert Sink");
 
@@ -148,10 +145,13 @@ public class StreamTransformJob {
 
         @Override
         public boolean filter(SensorReading reading) {
-            boolean isAnomaly = reading.getTemperature() > TEMP_THRESHOLD
-                    || reading.getHumidity() > HUMIDITY_THRESHOLD;
-            logger.info("AnomalyFilter: reading={}, temp={}, humidity={}, isAnomaly={}",
-                reading.getSensorId(), reading.getTemperature(), reading.getHumidity(), isAnomaly);
+            boolean isAnomaly = reading.getTemperature() > TEMP_THRESHOLD || reading.getHumidity() > HUMIDITY_THRESHOLD;
+            logger.info(
+                    "AnomalyFilter: reading={}, temp={}, humidity={}, isAnomaly={}",
+                    reading.getSensorId(),
+                    reading.getTemperature(),
+                    reading.getHumidity(),
+                    isAnomaly);
             return isAnomaly;
         }
     }
@@ -169,24 +169,16 @@ public class StreamTransformJob {
                 alertType = "HIGH_TEMPERATURE";
                 value = reading.getTemperature();
                 message = String.format(
-                        "Temperature %.1f°C exceeds threshold %.1f°C",
-                        reading.getTemperature(), TEMP_THRESHOLD);
+                        "Temperature %.1f°C exceeds threshold %.1f°C", reading.getTemperature(), TEMP_THRESHOLD);
             } else {
                 alertType = "HIGH_HUMIDITY";
                 value = reading.getHumidity();
                 message = String.format(
-                        "Humidity %.1f%% exceeds threshold %.1f%%",
-                        reading.getHumidity(), HUMIDITY_THRESHOLD);
+                        "Humidity %.1f%% exceeds threshold %.1f%%", reading.getHumidity(), HUMIDITY_THRESHOLD);
             }
 
-            Alert alert = new Alert(
-                    reading.getSensorId(),
-                    alertType,
-                    value,
-                    message,
-                    reading.getTimestamp());
-            logger.info("AlertMapper: created alert={}, type={}, sensor={}",
-                alert, alertType, reading.getSensorId());
+            Alert alert = new Alert(reading.getSensorId(), alertType, value, message, reading.getTimestamp());
+            logger.info("AlertMapper: created alert={}, type={}, sensor={}", alert, alertType, reading.getSensorId());
             return alert;
         }
     }
@@ -197,11 +189,12 @@ public class StreamTransformJob {
         @Override
         public Alert reduce(Alert alert1, Alert alert2) {
             // Keep the latest alert in the window
-            Alert result = alert1.getTimestamp().isAfter(alert2.getTimestamp())
-                    ? alert1
-                    : alert2;
-            logger.info("AlertReducer: reducing alert1={} and alert2={}, result={}",
-                alert1.getSensorId(), alert2.getSensorId(), result.getSensorId());
+            Alert result = alert1.getTimestamp().isAfter(alert2.getTimestamp()) ? alert1 : alert2;
+            logger.info(
+                    "AlertReducer: reducing alert1={} and alert2={}, result={}",
+                    alert1.getSensorId(),
+                    alert2.getSensorId(),
+                    result.getSensorId());
             return result;
         }
     }
@@ -213,7 +206,8 @@ public class StreamTransformJob {
         }
     }
 
-    private static class PartitionKeyExtractor implements java.util.function.Function<Alert, Integer>, java.io.Serializable {
+    private static class PartitionKeyExtractor
+            implements java.util.function.Function<Alert, Integer>, java.io.Serializable {
         @Override
         public Integer apply(Alert alert) {
             return alert.getSensorId().hashCode();
diff --git a/foreign/java/external-processors/iggy-connector-flink/iggy-flink-examples/src/main/java/org/apache/iggy/flink/example/WordCountJob.java b/foreign/java/external-processors/iggy-connector-flink/iggy-flink-examples/src/main/java/org/apache/iggy/flink/example/WordCountJob.java
index 7a6efa4e9..8c3c15d19 100644
--- a/foreign/java/external-processors/iggy-connector-flink/iggy-flink-examples/src/main/java/org/apache/iggy/flink/example/WordCountJob.java
+++ b/foreign/java/external-processors/iggy-connector-flink/iggy-flink-examples/src/main/java/org/apache/iggy/flink/example/WordCountJob.java
@@ -72,8 +72,7 @@ public class WordCountJob {
 
     public static void main(String[] args) throws Exception {
         // Set up Flink execution environment
-        final StreamExecutionEnvironment env =
-                StreamExecutionEnvironment.getExecutionEnvironment();
+        final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
 
         // Enable checkpointing for fault tolerance
         env.enableCheckpointing(30000); // Checkpoint every 30 seconds
@@ -88,16 +87,16 @@ public class WordCountJob {
 
         // Read text lines from Iggy
         DataStream<String> textLines = env.fromSource(
-                IggySource.<String>builder()
-                        .setConnectionConfig(connectionConfig)
-                        .setStreamId(INPUT_STREAM)
-                        .setTopicId(INPUT_TOPIC)
-                        .setConsumerGroup("flink-word-counter")
-                        .setDeserializer(new StringDeserializationSchema())
-                        .setPollBatchSize(100)
-                        .build(),
-                WatermarkStrategy.noWatermarks(),
-                "Iggy Text Source")
+                        IggySource.<String>builder()
+                                .setConnectionConfig(connectionConfig)
+                                .setStreamId(INPUT_STREAM)
+                                .setTopicId(INPUT_TOPIC)
+                                .setConsumerGroup("flink-word-counter")
+                                .setDeserializer(new StringDeserializationSchema())
+                                .setPollBatchSize(100)
+                                .build(),
+                        WatermarkStrategy.noWatermarks(),
+                        "Iggy Text Source")
                 .returns(String.class);
 
         // Tokenize, count, and aggregate words
@@ -115,15 +114,15 @@ public class WordCountJob {
                 .name("Create WordCount");
 
         // Write word counts back to Iggy
-        wordCounts.sinkTo(
-                IggySink.<WordCount>builder()
+        wordCounts
+                .sinkTo(IggySink.<WordCount>builder()
                         .setConnectionConfig(connectionConfig)
                         .setStreamId(OUTPUT_STREAM)
                         .setTopicId(OUTPUT_TOPIC)
                         .setSerializer(new JsonSerializationSchema<>())
                         .setBatchSize(50)
                         .setFlushInterval(Duration.ofSeconds(5))
-                        .withBalancedPartitioning()  // Use balanced partitioning instead
+                        .withBalancedPartitioning() // Use balanced partitioning instead
                         .build())
                 .name("Iggy WordCount Sink");
 
@@ -138,9 +137,7 @@ public class WordCountJob {
             implements FlatMapFunction<String, org.apache.flink.api.java.tuple.Tuple2<String, Long>> {
 
         @Override
-        public void flatMap(
-                String line,
-                Collector<org.apache.flink.api.java.tuple.Tuple2<String, Long>> out) {
+        public void flatMap(String line, Collector<org.apache.flink.api.java.tuple.Tuple2<String, Long>> out) {
             if (line == null || line.trim().isEmpty()) {
                 return;
             }
diff --git a/foreign/java/external-processors/iggy-connector-flink/iggy-flink-examples/src/main/java/org/apache/iggy/flink/example/model/EnrichedActivity.java b/foreign/java/external-processors/iggy-connector-flink/iggy-flink-examples/src/main/java/org/apache/iggy/flink/example/model/EnrichedActivity.java
index 69bc570d2..ba3375b71 100644
--- a/foreign/java/external-processors/iggy-connector-flink/iggy-flink-examples/src/main/java/org/apache/iggy/flink/example/model/EnrichedActivity.java
+++ b/foreign/java/external-processors/iggy-connector-flink/iggy-flink-examples/src/main/java/org/apache/iggy/flink/example/model/EnrichedActivity.java
@@ -118,8 +118,7 @@ public class EnrichedActivity implements Serializable {
 
     @Override
     public int hashCode() {
-        return Objects.hash(userId, userName, userTier, country,
-                activityType, resourceId, timestamp);
+        return Objects.hash(userId, userName, userTier, country, activityType, resourceId, timestamp);
     }
 
     @Override
diff --git a/foreign/java/external-processors/iggy-connector-flink/iggy-flink-examples/src/main/java/org/apache/iggy/flink/example/model/WordCount.java b/foreign/java/external-processors/iggy-connector-flink/iggy-flink-examples/src/main/java/org/apache/iggy/flink/example/model/WordCount.java
index 2e0a0f91f..3104444d2 100644
--- a/foreign/java/external-processors/iggy-connector-flink/iggy-flink-examples/src/main/java/org/apache/iggy/flink/example/model/WordCount.java
+++ b/foreign/java/external-processors/iggy-connector-flink/iggy-flink-examples/src/main/java/org/apache/iggy/flink/example/model/WordCount.java
@@ -36,9 +36,7 @@ public class WordCount implements Serializable {
     private final long count;
 
     @JsonCreator
-    public WordCount(
-            @JsonProperty("word") String word,
-            @JsonProperty("count") long count) {
+    public WordCount(@JsonProperty("word") String word, @JsonProperty("count") long count) {
         this.word = word;
         this.count = count;
     }
diff --git a/foreign/java/external-processors/iggy-connector-flink/iggy-flink-examples/src/test/java/org/apache/iggy/flink/example/AsyncTcpMessagePollTest.java b/foreign/java/external-processors/iggy-connector-flink/iggy-flink-examples/src/test/java/org/apache/iggy/flink/example/AsyncTcpMessagePollTest.java
index b5ca9b5fa..0c074bf6c 100644
--- a/foreign/java/external-processors/iggy-connector-flink/iggy-flink-examples/src/test/java/org/apache/iggy/flink/example/AsyncTcpMessagePollTest.java
+++ b/foreign/java/external-processors/iggy-connector-flink/iggy-flink-examples/src/test/java/org/apache/iggy/flink/example/AsyncTcpMessagePollTest.java
@@ -27,7 +27,14 @@ import org.apache.iggy.message.Message;
 import org.apache.iggy.message.Partitioning;
 import org.apache.iggy.message.PolledMessages;
 import org.apache.iggy.message.PollingStrategy;
-import org.junit.jupiter.api.*;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.MethodOrderer;
+import org.junit.jupiter.api.Order;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.api.TestMethodOrder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -117,7 +124,9 @@ class AsyncTcpMessagePollTest {
             messages.add(Message.of(content));
         }
 
-        client.messages().sendMessagesAsync(streamId, topicId, Partitioning.balanced(), messages).get();
+        client.messages()
+                .sendMessagesAsync(streamId, topicId, Partitioning.balanced(), messages)
+                .get();
         LOG.info("Seeded {} test messages", messages.size());
     }
 
@@ -134,15 +143,16 @@ class AsyncTcpMessagePollTest {
         PollingStrategy pollingStrategy = PollingStrategy.offset(BigInteger.ZERO);
         Consumer consumer = Consumer.of(1L);
 
-        CompletableFuture<PolledMessages> pollFuture = client.messages().pollMessagesAsync(
-                streamId,
-                topicId,
-                Optional.of(1L),  // partition 1
-                consumer,
-                pollingStrategy,
-                10L,  // count
-                false  // autoCommit
-        );
+        CompletableFuture<PolledMessages> pollFuture = client.messages()
+                .pollMessagesAsync(
+                        streamId,
+                        topicId,
+                        Optional.of(1L), // partition 1
+                        consumer,
+                        pollingStrategy,
+                        10L, // count
+                        false // autoCommit
+                        );
 
         PolledMessages polledMessages = pollFuture.get();
 
@@ -171,19 +181,22 @@ class AsyncTcpMessagePollTest {
         PollingStrategy pollingStrategy = PollingStrategy.next();
         Consumer consumer = Consumer.of(2L);
 
-        CompletableFuture<PolledMessages> pollFuture = client.messages().pollMessagesAsync(
-                streamId,
-                topicId,
-                Optional.of(1L),  // partition 1
-                consumer,
-                pollingStrategy,
-                5L,  // count
-                true  // autoCommit enabled
-        );
+        CompletableFuture<PolledMessages> pollFuture = client.messages()
+                .pollMessagesAsync(
+                        streamId,
+                        topicId,
+                        Optional.of(1L), // partition 1
+                        consumer,
+                        pollingStrategy,
+                        5L, // count
+                        true // autoCommit enabled
+                        );
 
         PolledMessages polledMessages = pollFuture.get();
 
-        LOG.info("Polled {} messages using NEXT strategy", polledMessages.messages().size());
+        LOG.info(
+                "Polled {} messages using NEXT strategy",
+                polledMessages.messages().size());
         assertThat(polledMessages).isNotNull();
 
         for (Message msg : polledMessages.messages()) {
@@ -205,19 +218,21 @@ class AsyncTcpMessagePollTest {
         PollingStrategy pollingStrategy = PollingStrategy.offset(BigInteger.ZERO);
         Consumer consumer = Consumer.of(3L);
 
-        CompletableFuture<PolledMessages> pollFuture = client.messages().pollMessagesAsync(
-                streamId,
-                topicId,
-                Optional.empty(),  // all partitions
-                consumer,
-                pollingStrategy,
-                10L,
-                false
-        );
+        CompletableFuture<PolledMessages> pollFuture = client.messages()
+                .pollMessagesAsync(
+                        streamId,
+                        topicId,
+                        Optional.empty(), // all partitions
+                        consumer,
+                        pollingStrategy,
+                        10L,
+                        false);
 
         PolledMessages polledMessages = pollFuture.get();
 
-        LOG.info("Polled {} messages from all partitions", polledMessages.messages().size());
+        LOG.info(
+                "Polled {} messages from all partitions",
+                polledMessages.messages().size());
         assertThat(polledMessages).isNotNull();
     }
 
@@ -235,15 +250,9 @@ class AsyncTcpMessagePollTest {
         PollingStrategy pollingStrategy = PollingStrategy.offset(BigInteger.valueOf(specificOffset));
         Consumer consumer = Consumer.of(4L);
 
-        PolledMessages polledMessages = client.messages().pollMessagesAsync(
-                streamId,
-                topicId,
-                Optional.of(1L),
-                consumer,
-                pollingStrategy,
-                3L,
-                false
-        ).get();
+        PolledMessages polledMessages = client.messages()
+                .pollMessagesAsync(streamId, topicId, Optional.of(1L), consumer, pollingStrategy, 3L, false)
+                .get();
 
         LOG.info("Polled {} messages from offset {}", polledMessages.messages().size(), specificOffset);
 
@@ -266,26 +275,12 @@ class AsyncTcpMessagePollTest {
         Consumer consumer = Consumer.of(5L);
 
         // Poll from partition 1
-        CompletableFuture<PolledMessages> future1 = client.messages().pollMessagesAsync(
-                streamId,
-                topicId,
-                Optional.of(1L),
-                consumer,
-                strategy,
-                5L,
-                false
-        );
+        CompletableFuture<PolledMessages> future1 =
+                client.messages().pollMessagesAsync(streamId, topicId, Optional.of(1L), consumer, strategy, 5L, false);
 
         // Poll from partition 2
-        CompletableFuture<PolledMessages> future2 = client.messages().pollMessagesAsync(
-                streamId,
-                topicId,
-                Optional.of(2L),
-                consumer,
-                strategy,
-                5L,
-                false
-        );
+        CompletableFuture<PolledMessages> future2 =
+                client.messages().pollMessagesAsync(streamId, topicId, Optional.of(2L), consumer, strategy, 5L, false);
 
         // Wait for both
         CompletableFuture.allOf(future1, future2).get();
@@ -313,17 +308,13 @@ class AsyncTcpMessagePollTest {
         PollingStrategy pollingStrategy = PollingStrategy.first();
         Consumer consumer = Consumer.of(6L);
 
-        PolledMessages polledMessages = client.messages().pollMessagesAsync(
-                streamId,
-                topicId,
-                Optional.of(1L),
-                consumer,
-                pollingStrategy,
-                3L,
-                false
-        ).get();
+        PolledMessages polledMessages = client.messages()
+                .pollMessagesAsync(streamId, topicId, Optional.of(1L), consumer, pollingStrategy, 3L, false)
+                .get();
 
-        LOG.info("Polled {} messages using FIRST strategy", polledMessages.messages().size());
+        LOG.info(
+                "Polled {} messages using FIRST strategy",
+                polledMessages.messages().size());
 
         if (!polledMessages.messages().isEmpty()) {
             Message firstMessage = polledMessages.messages().get(0);
@@ -347,20 +338,17 @@ class AsyncTcpMessagePollTest {
         PollingStrategy pollingStrategy = PollingStrategy.last();
         Consumer consumer = Consumer.of(7L);
 
-        PolledMessages polledMessages = client.messages().pollMessagesAsync(
-                streamId,
-                topicId,
-                Optional.of(1L),
-                consumer,
-                pollingStrategy,
-                3L,
-                false
-        ).get();
+        PolledMessages polledMessages = client.messages()
+                .pollMessagesAsync(streamId, topicId, Optional.of(1L), consumer, pollingStrategy, 3L, false)
+                .get();
 
-        LOG.info("Polled {} messages using LAST strategy", polledMessages.messages().size());
+        LOG.info(
+                "Polled {} messages using LAST strategy",
+                polledMessages.messages().size());
 
         if (!polledMessages.messages().isEmpty()) {
-            Message lastMessage = polledMessages.messages().get(polledMessages.messages().size() - 1);
+            Message lastMessage =
+                    polledMessages.messages().get(polledMessages.messages().size() - 1);
             String payload = new String(lastMessage.payload(), StandardCharsets.UTF_8);
             LOG.info("Last message - Payload: {}", payload);
         }
@@ -384,15 +372,11 @@ class AsyncTcpMessagePollTest {
         for (int i = 0; i < maxIterations; i++) {
             PollingStrategy pollingStrategy = PollingStrategy.next();
 
-            PolledMessages polledMessages = client.messages().pollMessagesAsync(
-                    streamId,
-                    topicId,
-                    Optional.of(1L),
-                    consumer,
-                    pollingStrategy,
-                    5L,
-                    true  // autoCommit
-            ).get();
+            PolledMessages polledMessages = client.messages()
+                    .pollMessagesAsync(
+                            streamId, topicId, Optional.of(1L), consumer, pollingStrategy, 5L, true // autoCommit
+                            )
+                    .get();
 
             int messageCount = polledMessages.messages().size();
             totalMessagesPolled += messageCount;
diff --git a/foreign/java/external-processors/iggy-connector-flink/iggy-flink-examples/src/test/java/org/apache/iggy/flink/example/AsyncTcpMessageSendTest.java b/foreign/java/external-processors/iggy-connector-flink/iggy-flink-examples/src/test/java/org/apache/iggy/flink/example/AsyncTcpMessageSendTest.java
index f24650a96..e1ff36875 100644
--- a/foreign/java/external-processors/iggy-connector-flink/iggy-flink-examples/src/test/java/org/apache/iggy/flink/example/AsyncTcpMessageSendTest.java
+++ b/foreign/java/external-processors/iggy-connector-flink/iggy-flink-examples/src/test/java/org/apache/iggy/flink/example/AsyncTcpMessageSendTest.java
@@ -24,7 +24,14 @@ import org.apache.iggy.identifier.StreamId;
 import org.apache.iggy.identifier.TopicId;
 import org.apache.iggy.message.Message;
 import org.apache.iggy.message.Partitioning;
-import org.junit.jupiter.api.*;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.MethodOrderer;
+import org.junit.jupiter.api.Order;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.api.TestMethodOrder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -111,12 +118,8 @@ class AsyncTcpMessageSendTest {
         List<Message> messages = new ArrayList<>();
         messages.add(message);
 
-        CompletableFuture<Void> sendFuture = client.messages().sendMessagesAsync(
-                streamId,
-                topicId,
-                Partitioning.balanced(),
-                messages
-        );
+        CompletableFuture<Void> sendFuture =
+                client.messages().sendMessagesAsync(streamId, topicId, Partitioning.balanced(), messages);
 
         sendFuture.get();
 
@@ -141,12 +144,8 @@ class AsyncTcpMessageSendTest {
             messages.add(Message.of(content));
         }
 
-        CompletableFuture<Void> sendFuture = client.messages().sendMessagesAsync(
-                streamId,
-                topicId,
-                Partitioning.balanced(),
-                messages
-        );
+        CompletableFuture<Void> sendFuture =
+                client.messages().sendMessagesAsync(streamId, topicId, Partitioning.balanced(), messages);
         sendFuture.get();
 
         LOG.info("Successfully sent batch of {} messages", batchSize);
@@ -169,12 +168,8 @@ class AsyncTcpMessageSendTest {
         List<Message> messages = new ArrayList<>();
         messages.add(message);
 
-        CompletableFuture<Void> sendFuture = client.messages().sendMessagesAsync(
-                streamId,
-                topicId,
-                Partitioning.partitionId(targetPartition),
-                messages
-        );
+        CompletableFuture<Void> sendFuture = client.messages()
+                .sendMessagesAsync(streamId, topicId, Partitioning.partitionId(targetPartition), messages);
         sendFuture.get();
 
         LOG.info("Successfully sent message to partition {}", targetPartition);
@@ -197,12 +192,8 @@ class AsyncTcpMessageSendTest {
         messages.add(message);
 
         String messageKey = "test-key-123";
-        CompletableFuture<Void> sendFuture = client.messages().sendMessagesAsync(
-                streamId,
-                topicId,
-                Partitioning.messagesKey(messageKey),
-                messages
-        );
+        CompletableFuture<Void> sendFuture =
+                client.messages().sendMessagesAsync(streamId, topicId, Partitioning.messagesKey(messageKey), messages);
         sendFuture.get();
 
         LOG.info("Successfully sent message with key: {}", messageKey);
@@ -219,21 +210,14 @@ class AsyncTcpMessageSendTest {
         TopicId topicId = TopicId.of("lines");
 
         String jsonPayload = String.format(
-                "{\"sensor_id\":\"sensor-001\",\"temperature\":%.2f,\"timestamp\":\"%s\"}",
-                23.5,
-                Instant.now()
-        );
+                "{\"sensor_id\":\"sensor-001\",\"temperature\":%.2f,\"timestamp\":\"%s\"}", 23.5, Instant.now());
 
         Message message = Message.of(jsonPayload);
         List<Message> messages = new ArrayList<>();
         messages.add(message);
 
-        CompletableFuture<Void> sendFuture = client.messages().sendMessagesAsync(
-                streamId,
-                topicId,
-                Partitioning.balanced(),
-                messages
-        );
+        CompletableFuture<Void> sendFuture =
+                client.messages().sendMessagesAsync(streamId, topicId, Partitioning.balanced(), messages);
         sendFuture.get();
 
         LOG.info("Successfully sent JSON message: {}", jsonPayload);
@@ -258,18 +242,12 @@ class AsyncTcpMessageSendTest {
             List<Message> messages = new ArrayList<>();
             messages.add(message);
 
-            CompletableFuture<Void> future = client.messages().sendMessagesAsync(
-                    streamId,
-                    topicId,
-                    Partitioning.balanced(),
-                    messages
-            );
+            CompletableFuture<Void> future =
+                    client.messages().sendMessagesAsync(streamId, topicId, Partitioning.balanced(), messages);
             futures.add(future);
         }
 
-        CompletableFuture<Void> allFutures = CompletableFuture.allOf(
-                futures.toArray(new CompletableFuture[0])
-        );
+        CompletableFuture<Void> allFutures = CompletableFuture.allOf(futures.toArray(new CompletableFuture[0]));
         allFutures.get();
 
         LOG.info("Successfully sent {} messages in parallel", parallelRequests);
@@ -293,12 +271,8 @@ class AsyncTcpMessageSendTest {
         }
 
         long startTime = System.currentTimeMillis();
-        CompletableFuture<Void> sendFuture = client.messages().sendMessagesAsync(
-                streamId,
-                topicId,
-                Partitioning.balanced(),
-                messages
-        );
+        CompletableFuture<Void> sendFuture =
+                client.messages().sendMessagesAsync(streamId, topicId, Partitioning.balanced(), messages);
         sendFuture.get();
         long duration = System.currentTimeMillis() - startTime;
 
diff --git a/foreign/java/external-processors/iggy-connector-flink/iggy-flink-examples/src/test/java/org/apache/iggy/flink/example/SendTextDataTest.java b/foreign/java/external-processors/iggy-connector-flink/iggy-flink-examples/src/test/java/org/apache/iggy/flink/example/SendTextDataTest.java
index 313b9f14d..95d483280 100644
--- a/foreign/java/external-processors/iggy-connector-flink/iggy-flink-examples/src/test/java/org/apache/iggy/flink/example/SendTextDataTest.java
+++ b/foreign/java/external-processors/iggy-connector-flink/iggy-flink-examples/src/test/java/org/apache/iggy/flink/example/SendTextDataTest.java
@@ -24,11 +24,14 @@ import org.apache.iggy.identifier.StreamId;
 import org.apache.iggy.identifier.TopicId;
 import org.apache.iggy.message.Message;
 import org.apache.iggy.message.Partitioning;
-import org.junit.jupiter.api.*;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInstance;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.time.Instant;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -89,29 +92,25 @@ class SendTextDataTest {
         TopicId topicId = TopicId.of("lines");
 
         List<String> sampleTexts = List.of(
-            "hello world hello flink",
-            "apache flink connector for iggy",
-            "flink streaming with iggy broker",
-            "hello flink hello world",
-            "real time stream processing",
-            "apache flink word count example",
-            "iggy message broker stream",
-            "flink apache iggy connector test",
-            "hello world stream processing",
-            "apache iggy flink integration"
-        );
+                "hello world hello flink",
+                "apache flink connector for iggy",
+                "flink streaming with iggy broker",
+                "hello flink hello world",
+                "real time stream processing",
+                "apache flink word count example",
+                "iggy message broker stream",
+                "flink apache iggy connector test",
+                "hello world stream processing",
+                "apache iggy flink integration");
 
         List<Message> messages = new ArrayList<>();
         for (String text : sampleTexts) {
             messages.add(Message.of(text));
         }
 
-        client.messages().sendMessagesAsync(
-            streamId,
-            topicId,
-            Partitioning.balanced(),
-            messages
-        ).get();
+        client.messages()
+                .sendMessagesAsync(streamId, topicId, Partitioning.balanced(), messages)
+                .get();
 
         LOG.info("Successfully sent {} text lines to stream 'text-input', topic 'lines'", messages.size());
 
@@ -124,12 +123,9 @@ class SendTextDataTest {
                 batchMessages.add(Message.of(text + " batch" + batch));
             }
 
-            client.messages().sendMessagesAsync(
-                streamId,
-                topicId,
-                Partitioning.balanced(),
-                batchMessages
-            ).get();
+            client.messages()
+                    .sendMessagesAsync(streamId, topicId, Partitioning.balanced(), batchMessages)
+                    .get();
 
             LOG.info("Sent batch {} with {} messages", batch, batchMessages.size());
         }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/Iggy.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/Iggy.java
index 84b63b9fc..ac983f564 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/Iggy.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/Iggy.java
@@ -23,11 +23,9 @@ import org.apache.iggy.client.blocking.IggyClientBuilder;
 
 public final class Iggy {
 
-    private Iggy() {
-    }
+    private Iggy() {}
 
     public static IggyClientBuilder clientBuilder() {
         return new IggyClientBuilder();
     }
-
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/NonNullApi.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/NonNullApi.java
index 650c0ca9d..e3edf64a4 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/NonNullApi.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/NonNullApi.java
@@ -21,12 +21,15 @@ package org.apache.iggy;
 
 import javax.annotation.Nonnull;
 import javax.annotation.meta.TypeQualifierDefault;
-import java.lang.annotation.*;
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
 
 @Target(ElementType.PACKAGE)
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
 @Nonnull
 @TypeQualifierDefault({ElementType.METHOD, ElementType.PARAMETER})
-public @interface NonNullApi {
-}
+public @interface NonNullApi {}
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/MessagesClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/MessagesClient.java
index b4f085885..78415dc1b 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/MessagesClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/MessagesClient.java
@@ -26,6 +26,7 @@ import org.apache.iggy.message.Message;
 import org.apache.iggy.message.Partitioning;
 import org.apache.iggy.message.PolledMessages;
 import org.apache.iggy.message.PollingStrategy;
+
 import java.util.List;
 import java.util.Optional;
 import java.util.concurrent.CompletableFuture;
@@ -78,14 +79,13 @@ public interface MessagesClient {
             Long count,
             boolean autoCommit) {
         return pollMessagesAsync(
-            StreamId.of(streamId),
-            TopicId.of(topicId),
-            partitionId,
-            Consumer.of(consumerId),
-            strategy,
-            count,
-            autoCommit
-        );
+                StreamId.of(streamId),
+                TopicId.of(topicId),
+                partitionId,
+                Consumer.of(consumerId),
+                strategy,
+                count,
+                autoCommit);
     }
 
     /**
@@ -98,10 +98,7 @@ public interface MessagesClient {
      * @return CompletableFuture that will complete when messages are sent
      */
     CompletableFuture<Void> sendMessagesAsync(
-            StreamId streamId,
-            TopicId topicId,
-            Partitioning partitioning,
-            List<Message> messages);
+            StreamId streamId, TopicId topicId, Partitioning partitioning, List<Message> messages);
 
     /**
      * Asynchronously sends messages to a topic (convenience method).
@@ -113,15 +110,7 @@ public interface MessagesClient {
      * @return CompletableFuture that will complete when messages are sent
      */
     default CompletableFuture<Void> sendMessagesAsync(
-            Long streamId,
-            Long topicId,
-            Partitioning partitioning,
-            List<Message> messages) {
-        return sendMessagesAsync(
-            StreamId.of(streamId),
-            TopicId.of(topicId),
-            partitioning,
-            messages
-        );
+            Long streamId, Long topicId, Partitioning partitioning, List<Message> messages) {
+        return sendMessagesAsync(StreamId.of(streamId), TopicId.of(topicId), partitioning, messages);
     }
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/AsyncBytesDeserializer.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/AsyncBytesDeserializer.java
index a26444a16..ae3037f18 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/AsyncBytesDeserializer.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/AsyncBytesDeserializer.java
@@ -44,8 +44,7 @@ import java.util.Optional;
  */
 public final class AsyncBytesDeserializer {
 
-    private AsyncBytesDeserializer() {
-    }
+    private AsyncBytesDeserializer() {}
 
     /**
      * Reads PolledMessages from the response buffer.
@@ -74,8 +73,8 @@ public final class AsyncBytesDeserializer {
         var originTimestamp = readU64AsBigInteger(response);
         var userHeadersLength = response.readUnsignedIntLE();
         var payloadLength = response.readUnsignedIntLE();
-        var header = new MessageHeader(checksum, id, offset, timestamp, originTimestamp,
-            userHeadersLength, payloadLength);
+        var header =
+                new MessageHeader(checksum, id, offset, timestamp, originTimestamp, userHeadersLength, payloadLength);
         var payload = new byte[toInt(payloadLength)];
         response.readBytes(payload);
         // TODO: Add support for user headers.
@@ -166,7 +165,8 @@ public final class AsyncBytesDeserializer {
         var nameLength = response.readByte();
         var name = response.readCharSequence(nameLength, StandardCharsets.UTF_8).toString();
 
-        return new Topic(topicId,
+        return new Topic(
+                topicId,
                 createdAt,
                 name,
                 size.toString(),
@@ -205,7 +205,6 @@ public final class AsyncBytesDeserializer {
         var size = readU64AsBigInteger(response);
         var messagesCount = readU64AsBigInteger(response);
 
-        return new Partition(partitionId, createdAt, segmentsCount,
-                currentOffset, size.toString(), messagesCount);
+        return new Partition(partitionId, createdAt, segmentsCount, currentOffset, size.toString(), messagesCount);
     }
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/AsyncBytesSerializer.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/AsyncBytesSerializer.java
index 459ceec4c..7b1c87bf2 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/AsyncBytesSerializer.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/AsyncBytesSerializer.java
@@ -39,8 +39,7 @@ import java.util.Optional;
  */
 public final class AsyncBytesSerializer {
 
-    private AsyncBytesSerializer() {
-    }
+    private AsyncBytesSerializer() {}
 
     /**
      * Serializes a Consumer to bytes.
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/AsyncIggyTcpClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/AsyncIggyTcpClient.java
index 4c8bf92b9..b0b1d30ea 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/AsyncIggyTcpClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/AsyncIggyTcpClient.java
@@ -58,10 +58,18 @@ public class AsyncIggyTcpClient {
         this(host, port, null, null, null, null, null, null, false, Optional.empty());
     }
 
-    private AsyncIggyTcpClient(String host, int port, String username, String password,
-                               Duration connectionTimeout, Duration requestTimeout,
-                               Integer connectionPoolSize, RetryPolicy retryPolicy,
-                               boolean enableTls, Optional<File> tlsCertificate) {
+    @SuppressWarnings("checkstyle:ParameterNumber")
+    private AsyncIggyTcpClient(
+            String host,
+            int port,
+            String username,
+            String password,
+            Duration connectionTimeout,
+            Duration requestTimeout,
+            Integer connectionPoolSize,
+            RetryPolicy retryPolicy,
+            boolean enableTls,
+            Optional<File> tlsCertificate) {
         this.host = host;
         this.port = port;
         this.username = Optional.ofNullable(username);
@@ -88,7 +96,8 @@ public class AsyncIggyTcpClient {
      */
     public CompletableFuture<Void> connect() {
         connection = new AsyncTcpConnection(host, port, enableTls, tlsCertificate);
-        return connection.connect()
+        return connection
+                .connect()
                 .thenRun(() -> {
                     messagesClient = new MessagesTcpClient(connection);
                     consumerGroupsClient = new ConsumerGroupsTcpClient(connection);
@@ -99,7 +108,8 @@ public class AsyncIggyTcpClient {
                 .thenCompose(v -> {
                     // Auto-login if credentials are provided
                     if (username.isPresent() && password.isPresent()) {
-                        return usersClient.loginAsync(username.get(), password.get())
+                        return usersClient
+                                .loginAsync(username.get(), password.get())
                                 .thenApply(identity -> null);
                     }
                     return CompletableFuture.completedFuture(null);
@@ -169,7 +179,7 @@ public class AsyncIggyTcpClient {
     /**
      * Builder for creating configured AsyncIggyTcpClient instances.
      */
-    public static class Builder {
+    public static final class Builder {
         private String host = "localhost";
         private Integer port = 8090;
         private String username;
@@ -181,8 +191,7 @@ public class AsyncIggyTcpClient {
         private boolean enableTls = false;
         private File tlsTrustedCertificatePem;
 
-        private Builder() {
-        }
+        private Builder() {}
 
         /**
          * Sets the host address for the Iggy server.
@@ -319,16 +328,24 @@ public class AsyncIggyTcpClient {
             if (port == null || port <= 0) {
                 throw new IllegalArgumentException("Port must be a positive integer");
             }
-            return new AsyncIggyTcpClient(host, port, username, password,
-                    connectionTimeout, requestTimeout, connectionPoolSize, retryPolicy,
-                    enableTls, Optional.ofNullable(tlsTrustedCertificatePem));
+            return new AsyncIggyTcpClient(
+                    host,
+                    port,
+                    username,
+                    password,
+                    connectionTimeout,
+                    requestTimeout,
+                    connectionPoolSize,
+                    retryPolicy,
+                    enableTls,
+                    Optional.ofNullable(tlsTrustedCertificatePem));
         }
     }
 
     /**
      * Retry policy for client operations.
      */
-    public static class RetryPolicy {
+    public static final class RetryPolicy {
         private final int maxRetries;
         private final Duration initialDelay;
         private final Duration maxDelay;
@@ -359,7 +376,8 @@ public class AsyncIggyTcpClient {
          * @param multiplier   the multiplier for exponential backoff
          * @return a RetryPolicy with custom exponential backoff configuration
          */
-        public static RetryPolicy exponentialBackoff(int maxRetries, Duration initialDelay, Duration maxDelay, double multiplier) {
+        public static RetryPolicy exponentialBackoff(
+                int maxRetries, Duration initialDelay, Duration maxDelay, double multiplier) {
             return new RetryPolicy(maxRetries, initialDelay, maxDelay, multiplier);
         }
 
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/AsyncTcpConnection.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/AsyncTcpConnection.java
index faa1c8ba2..85550e6e3 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/AsyncTcpConnection.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/AsyncTcpConnection.java
@@ -49,7 +49,7 @@ import java.util.concurrent.atomic.AtomicLong;
  * Manages the connection lifecycle and request/response correlation.
  */
 public class AsyncTcpConnection {
-    private static final Logger logger = LoggerFactory.getLogger(AsyncTcpConnection.class);
+    private static final Logger log = LoggerFactory.getLogger(AsyncTcpConnection.class);
 
     private final String host;
     private final int port;
@@ -88,7 +88,8 @@ public class AsyncTcpConnection {
     }
 
     private void configureBootstrap() {
-        bootstrap.group(eventLoopGroup)
+        bootstrap
+                .group(eventLoopGroup)
                 .channel(NioSocketChannel.class)
                 .option(ChannelOption.TCP_NODELAY, true)
                 .option(ChannelOption.SO_KEEPALIVE, true)
@@ -109,8 +110,7 @@ public class AsyncTcpConnection {
                         // would duplicate it. This matches the blocking client implementation.
 
                         // Response handler
-                        pipeline.addLast("responseHandler",
-                                new IggyResponseHandler(pendingRequests));
+                        pipeline.addLast("responseHandler", new IggyResponseHandler(pendingRequests));
                     }
                 });
     }
@@ -138,8 +138,7 @@ public class AsyncTcpConnection {
      */
     public CompletableFuture<ByteBuf> sendAsync(int commandCode, ByteBuf payload) {
         if (channel == null || !channel.isActive()) {
-            return CompletableFuture.failedFuture(
-                    new IllegalStateException("Connection not established or closed"));
+            return CompletableFuture.failedFuture(new IllegalStateException("Connection not established or closed"));
         }
 
         // Since Iggy doesn't use request IDs, we'll just use a simple queue
@@ -155,21 +154,25 @@ public class AsyncTcpConnection {
         int framePayloadSize = 4 + payloadSize; // command (4 bytes) + payload
 
         ByteBuf frame = channel.alloc().buffer(4 + framePayloadSize);
-        frame.writeIntLE(framePayloadSize);  // Length field (includes command)
-        frame.writeIntLE(commandCode);        // Command
+        frame.writeIntLE(framePayloadSize); // Length field (includes command)
+        frame.writeIntLE(commandCode); // Command
         frame.writeBytes(payload, payload.readerIndex(), payloadSize); // Payload
 
         // Debug: print frame bytes
         byte[] frameBytes = new byte[Math.min(frame.readableBytes(), 30)];
-        if (logger.isTraceEnabled()) {
+        if (log.isTraceEnabled()) {
             frame.getBytes(0, frameBytes);
             StringBuilder hex = new StringBuilder();
             for (byte b : frameBytes) {
                 hex.append(String.format("%02x ", b));
             }
-            logger.trace("Sending frame with command: {}, payload size: {}, frame payload size (with command): {}, total frame size: {}",
-                    commandCode, payloadSize, framePayloadSize, frame.readableBytes());
-            logger.trace("Frame bytes (hex): {}", hex.toString());
+            log.trace(
+                    "Sending frame with command: {}, payload size: {}, frame payload size (with command): {}, total frame size: {}",
+                    commandCode,
+                    payloadSize,
+                    framePayloadSize,
+                    frame.readableBytes());
+            log.trace("Frame bytes (hex): {}", hex.toString());
         }
 
         payload.release();
@@ -177,11 +180,11 @@ public class AsyncTcpConnection {
         // Send the frame
         channel.writeAndFlush(frame).addListener((ChannelFutureListener) future -> {
             if (!future.isSuccess()) {
-                logger.error("Failed to send frame: {}", future.cause().getMessage());
+                log.error("Failed to send frame: {}", future.cause().getMessage());
                 pendingRequests.remove(requestId);
                 responseFuture.completeExceptionally(future.cause());
             } else {
-                logger.trace("Frame sent successfully to {}", channel.remoteAddress());
+                log.trace("Frame sent successfully to {}", channel.remoteAddress());
             }
         });
 
@@ -230,9 +233,8 @@ public class AsyncTcpConnection {
             // Since Iggy doesn't use request IDs, we process responses in order
             // Get the oldest pending request
             if (!pendingRequests.isEmpty()) {
-                Long oldestRequestId = pendingRequests.keySet().stream()
-                        .min(Long::compare)
-                        .orElse(null);
+                Long oldestRequestId =
+                        pendingRequests.keySet().stream().min(Long::compare).orElse(null);
 
                 if (oldestRequestId != null) {
                     CompletableFuture<ByteBuf> future = pendingRequests.remove(oldestRequestId);
@@ -248,8 +250,7 @@ public class AsyncTcpConnection {
                             future.completeExceptionally(
                                     new RuntimeException("Server error: " + new String(errorBytes)));
                         } else {
-                            future.completeExceptionally(
-                                    new RuntimeException("Server error with status: " + status));
+                            future.completeExceptionally(new RuntimeException("Server error with status: " + status));
                         }
                     }
                 }
@@ -259,8 +260,7 @@ public class AsyncTcpConnection {
         @Override
         public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
             // Fail all pending requests
-            pendingRequests.values().forEach(future ->
-                    future.completeExceptionally(cause));
+            pendingRequests.values().forEach(future -> future.completeExceptionally(cause));
             pendingRequests.clear();
             ctx.close();
         }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/ConsumerGroupsTcpClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/ConsumerGroupsTcpClient.java
index 6a8a67faf..06e778871 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/ConsumerGroupsTcpClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/ConsumerGroupsTcpClient.java
@@ -34,7 +34,7 @@ import java.util.concurrent.CompletableFuture;
  * Async TCP implementation of consumer groups client.
  */
 public class ConsumerGroupsTcpClient implements ConsumerGroupsClient {
-    private static final Logger logger = LoggerFactory.getLogger(ConsumerGroupsTcpClient.class);
+    private static final Logger log = LoggerFactory.getLogger(ConsumerGroupsTcpClient.class);
 
     private final AsyncTcpConnection connection;
 
@@ -55,13 +55,14 @@ public class ConsumerGroupsTcpClient implements ConsumerGroupsClient {
         // Serialize consumer group ID
         payload.writeBytes(AsyncBytesSerializer.toBytes(groupId));
 
-        logger.debug("Joining consumer group - Stream: {}, Topic: {}, Group: {}", streamId, topicId, groupId);
+        log.debug("Joining consumer group - Stream: {}, Topic: {}, Group: {}", streamId, topicId, groupId);
 
-        return connection.sendAsync(CommandCode.ConsumerGroup.JOIN.getValue(), payload)
-            .thenAccept(response -> {
-                logger.debug("Successfully joined consumer group");
-                response.release();
-            });
+        return connection
+                .sendAsync(CommandCode.ConsumerGroup.JOIN.getValue(), payload)
+                .thenAccept(response -> {
+                    log.debug("Successfully joined consumer group");
+                    response.release();
+                });
     }
 
     @Override
@@ -77,12 +78,13 @@ public class ConsumerGroupsTcpClient implements ConsumerGroupsClient {
         // Serialize consumer group ID
         payload.writeBytes(AsyncBytesSerializer.toBytes(groupId));
 
-        logger.debug("Leaving consumer group - Stream: {}, Topic: {}, Group: {}", streamId, topicId, groupId);
+        log.debug("Leaving consumer group - Stream: {}, Topic: {}, Group: {}", streamId, topicId, groupId);
 
-        return connection.sendAsync(CommandCode.ConsumerGroup.LEAVE.getValue(), payload)
-            .thenAccept(response -> {
-                logger.debug("Successfully left consumer group");
-                response.release();
-            });
+        return connection
+                .sendAsync(CommandCode.ConsumerGroup.LEAVE.getValue(), payload)
+                .thenAccept(response -> {
+                    log.debug("Successfully left consumer group");
+                    response.release();
+                });
     }
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/IggyFrameDecoder.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/IggyFrameDecoder.java
index 9c2002052..3ea104b42 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/IggyFrameDecoder.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/IggyFrameDecoder.java
@@ -32,7 +32,7 @@ import java.util.List;
  * Response format: [4-byte status LE] [4-byte length LE] [payload]
  */
 public class IggyFrameDecoder extends ByteToMessageDecoder {
-    private static final Logger logger = LoggerFactory.getLogger(IggyFrameDecoder.class);
+    private static final Logger log = LoggerFactory.getLogger(IggyFrameDecoder.class);
     private static final int HEADER_SIZE = 8; // status (4) + length (4)
 
     @Override
@@ -49,7 +49,7 @@ public class IggyFrameDecoder extends ByteToMessageDecoder {
         int status = in.readIntLE();
         int length = in.readIntLE();
 
-        logger.trace("Received response with status={}, length={}", status, length);
+        log.trace("Received response with status={}, length={}", status, length);
 
         // Check if we have the complete payload
         if (in.readableBytes() < length) {
@@ -67,7 +67,7 @@ public class IggyFrameDecoder extends ByteToMessageDecoder {
             response.writeBytes(in, length);
         }
 
-        logger.trace("Decoded complete response, forwarding to handler");
+        log.trace("Decoded complete response, forwarding to handler");
         out.add(response);
     }
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/MessagesTcpClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/MessagesTcpClient.java
index dfde40315..9e2abec50 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/MessagesTcpClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/MessagesTcpClient.java
@@ -19,10 +19,8 @@
 
 package org.apache.iggy.client.async.tcp;
 
-import io.netty.buffer.ByteBuf;
 import io.netty.buffer.Unpooled;
 import org.apache.iggy.client.async.MessagesClient;
-import org.apache.iggy.client.blocking.tcp.BytesSerializer;
 import org.apache.iggy.client.blocking.tcp.CommandCode;
 import org.apache.iggy.consumergroup.Consumer;
 import org.apache.iggy.identifier.StreamId;
@@ -81,7 +79,8 @@ public class MessagesTcpClient implements MessagesClient {
         payload.writeByte(autoCommit ? 1 : 0);
 
         // Send async request and transform response
-        return connection.sendAsync(CommandCode.Messages.POLL.getValue(), payload)
+        return connection
+                .sendAsync(CommandCode.Messages.POLL.getValue(), payload)
                 .thenApply(response -> {
                     try {
                         return AsyncBytesDeserializer.readPolledMessages(response);
@@ -93,10 +92,7 @@ public class MessagesTcpClient implements MessagesClient {
 
     @Override
     public CompletableFuture<Void> sendMessagesAsync(
-            StreamId streamId,
-            TopicId topicId,
-            Partitioning partitioning,
-            List<Message> messages) {
+            StreamId streamId, TopicId topicId, Partitioning partitioning, List<Message> messages) {
 
         // Build metadata section following the blocking client pattern
         var metadataLength = streamId.getSize() + topicId.getSize() + partitioning.getSize() + 4;
@@ -129,7 +125,8 @@ public class MessagesTcpClient implements MessagesClient {
         }
 
         // Send async request (no response data expected for send)
-        return connection.sendAsync(CommandCode.Messages.SEND.getValue(), payload)
+        return connection
+                .sendAsync(CommandCode.Messages.SEND.getValue(), payload)
                 .thenAccept(response -> {
                     // Response received, messages sent successfully
                     response.release(); // Release the buffer
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/StreamsTcpClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/StreamsTcpClient.java
index 31d6c3b19..fdd8ba01b 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/StreamsTcpClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/StreamsTcpClient.java
@@ -54,42 +54,43 @@ public class StreamsTcpClient implements StreamsClient {
 
         payload.writeBytes(nameToBytes(name));
 
-        return connection.sendAsync(CommandCode.Stream.CREATE.getValue(), payload)
-            .thenApply(response -> {
-                StreamDetails details = readStreamDetails(response);
-                response.release();
-                return details;
-            });
+        return connection
+                .sendAsync(CommandCode.Stream.CREATE.getValue(), payload)
+                .thenApply(response -> {
+                    StreamDetails details = readStreamDetails(response);
+                    response.release();
+                    return details;
+                });
     }
 
     @Override
     public CompletableFuture<Optional<StreamDetails>> getStreamAsync(StreamId streamId) {
         var payload = toBytes(streamId);
 
-        return connection.sendAsync(CommandCode.Stream.GET.getValue(), payload)
-            .thenApply(response -> {
-                Optional<StreamDetails> result;
-                if (response.isReadable()) {
-                    result = Optional.of(readStreamDetails(response));
-                } else {
-                    result = Optional.empty();
-                }
-                response.release();
-                return result;
-            });
+        return connection.sendAsync(CommandCode.Stream.GET.getValue(), payload).thenApply(response -> {
+            Optional<StreamDetails> result;
+            if (response.isReadable()) {
+                result = Optional.of(readStreamDetails(response));
+            } else {
+                result = Optional.empty();
+            }
+            response.release();
+            return result;
+        });
     }
 
     @Override
     public CompletableFuture<List<StreamBase>> getStreamsAsync() {
-        return connection.sendAsync(CommandCode.Stream.GET_ALL.getValue(), Unpooled.EMPTY_BUFFER)
-            .thenApply(response -> {
-                List<StreamBase> streams = new ArrayList<>();
-                while (response.isReadable()) {
-                    streams.add(readStreamBase(response));
-                }
-                response.release();
-                return streams;
-            });
+        return connection
+                .sendAsync(CommandCode.Stream.GET_ALL.getValue(), Unpooled.EMPTY_BUFFER)
+                .thenApply(response -> {
+                    List<StreamBase> streams = new ArrayList<>();
+                    while (response.isReadable()) {
+                        streams.add(readStreamBase(response));
+                    }
+                    response.release();
+                    return streams;
+                });
     }
 
     @Override
@@ -101,15 +102,17 @@ public class StreamsTcpClient implements StreamsClient {
         payload.writeBytes(idBytes);
         payload.writeBytes(nameToBytes(name));
 
-        return connection.sendAsync(CommandCode.Stream.UPDATE.getValue(), payload)
-            .thenAccept(response -> response.release());
+        return connection
+                .sendAsync(CommandCode.Stream.UPDATE.getValue(), payload)
+                .thenAccept(response -> response.release());
     }
 
     @Override
     public CompletableFuture<Void> deleteStreamAsync(StreamId streamId) {
         var payload = toBytes(streamId);
 
-        return connection.sendAsync(CommandCode.Stream.DELETE.getValue(), payload)
-            .thenAccept(response -> response.release());
+        return connection
+                .sendAsync(CommandCode.Stream.DELETE.getValue(), payload)
+                .thenAccept(response -> response.release());
     }
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/TopicsTcpClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/TopicsTcpClient.java
index f601e9440..5128039d2 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/TopicsTcpClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/TopicsTcpClient.java
@@ -34,7 +34,9 @@ import java.util.List;
 import java.util.Optional;
 import java.util.concurrent.CompletableFuture;
 
-import static org.apache.iggy.client.async.tcp.AsyncBytesSerializer.*;
+import static org.apache.iggy.client.async.tcp.AsyncBytesSerializer.nameToBytes;
+import static org.apache.iggy.client.async.tcp.AsyncBytesSerializer.toBytes;
+import static org.apache.iggy.client.async.tcp.AsyncBytesSerializer.toBytesAsU64;
 
 /**
  * Async TCP implementation of TopicsClient using Netty for non-blocking I/O.
@@ -53,35 +55,35 @@ public class TopicsTcpClient implements TopicsClient {
         payload.writeBytes(toBytes(streamId));
         payload.writeBytes(toBytes(topicId));
 
-        return connection.sendAsync(CommandCode.Topic.GET.getValue(), payload)
-            .thenApply(response -> {
-                try {
-                    if (response.isReadable()) {
-                        return Optional.of(AsyncBytesDeserializer.readTopicDetails(response));
-                    }
-                    return Optional.<TopicDetails>empty();
-                } finally {
-                    response.release();
+        return connection.sendAsync(CommandCode.Topic.GET.getValue(), payload).thenApply(response -> {
+            try {
+                if (response.isReadable()) {
+                    return Optional.of(AsyncBytesDeserializer.readTopicDetails(response));
                 }
-            });
+                return Optional.<TopicDetails>empty();
+            } finally {
+                response.release();
+            }
+        });
     }
 
     @Override
     public CompletableFuture<List<Topic>> getTopicsAsync(StreamId streamId) {
         var payload = toBytes(streamId);
 
-        return connection.sendAsync(CommandCode.Topic.GET_ALL.getValue(), payload)
-            .thenApply(response -> {
-                try {
-                    List<Topic> topics = new ArrayList<>();
-                    while (response.isReadable()) {
-                        topics.add(AsyncBytesDeserializer.readTopic(response));
+        return connection
+                .sendAsync(CommandCode.Topic.GET_ALL.getValue(), payload)
+                .thenApply(response -> {
+                    try {
+                        List<Topic> topics = new ArrayList<>();
+                        while (response.isReadable()) {
+                            topics.add(AsyncBytesDeserializer.readTopic(response));
+                        }
+                        return topics;
+                    } finally {
+                        response.release();
                     }
-                    return topics;
-                } finally {
-                    response.release();
-                }
-            });
+                });
     }
 
     @Override
@@ -105,14 +107,15 @@ public class TopicsTcpClient implements TopicsClient {
         payload.writeByte(replicationFactor.orElse((short) 0));
         payload.writeBytes(nameToBytes(name));
 
-        return connection.sendAsync(CommandCode.Topic.CREATE.getValue(), payload)
-            .thenApply(response -> {
-                try {
-                    return AsyncBytesDeserializer.readTopicDetails(response);
-                } finally {
-                    response.release();
-                }
-            });
+        return connection
+                .sendAsync(CommandCode.Topic.CREATE.getValue(), payload)
+                .thenApply(response -> {
+                    try {
+                        return AsyncBytesDeserializer.readTopicDetails(response);
+                    } finally {
+                        response.release();
+                    }
+                });
     }
 
     @Override
@@ -134,8 +137,9 @@ public class TopicsTcpClient implements TopicsClient {
         payload.writeByte(replicationFactor.orElse((short) 0));
         payload.writeBytes(nameToBytes(name));
 
-        return connection.sendAsync(CommandCode.Topic.UPDATE.getValue(), payload)
-            .thenAccept(response -> response.release());
+        return connection
+                .sendAsync(CommandCode.Topic.UPDATE.getValue(), payload)
+                .thenAccept(response -> response.release());
     }
 
     @Override
@@ -144,7 +148,8 @@ public class TopicsTcpClient implements TopicsClient {
         payload.writeBytes(toBytes(streamId));
         payload.writeBytes(toBytes(topicId));
 
-        return connection.sendAsync(CommandCode.Topic.DELETE.getValue(), payload)
-            .thenAccept(response -> response.release());
+        return connection
+                .sendAsync(CommandCode.Topic.DELETE.getValue(), payload)
+                .thenAccept(response -> response.release());
     }
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/UsersTcpClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/UsersTcpClient.java
index c61532ed6..00d8f31db 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/UsersTcpClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/async/tcp/UsersTcpClient.java
@@ -33,7 +33,7 @@ import java.util.concurrent.CompletableFuture;
  * Async TCP implementation of users client.
  */
 public class UsersTcpClient implements UsersClient {
-    private static final Logger logger = LoggerFactory.getLogger(UsersTcpClient.class);
+    private static final Logger log = LoggerFactory.getLogger(UsersTcpClient.class);
 
     private final AsyncTcpConnection connection;
 
@@ -57,30 +57,28 @@ public class UsersTcpClient implements UsersClient {
         payload.writeIntLE(context.length());
         payload.writeBytes(context.getBytes());
 
-        logger.debug("Logging in user: {}", username);
+        log.debug("Logging in user: {}", username);
 
-        return connection.sendAsync(CommandCode.User.LOGIN.getValue(), payload)
-            .thenApply(response -> {
-                try {
-                    // Read the user ID from response (4-byte unsigned int LE)
-                    var userId = response.readUnsignedIntLE();
-                    return new IdentityInfo(userId, Optional.empty());
-                } finally {
-                    response.release();
-                }
-            });
+        return connection.sendAsync(CommandCode.User.LOGIN.getValue(), payload).thenApply(response -> {
+            try {
+                // Read the user ID from response (4-byte unsigned int LE)
+                var userId = response.readUnsignedIntLE();
+                return new IdentityInfo(userId, Optional.empty());
+            } finally {
+                response.release();
+            }
+        });
     }
 
     @Override
     public CompletableFuture<Void> logoutAsync() {
         var payload = Unpooled.buffer(0); // Empty payload for logout
 
-        logger.debug("Logging out");
+        log.debug("Logging out");
 
-        return connection.sendAsync(CommandCode.User.LOGOUT.getValue(), payload)
-            .thenAccept(response -> {
-                response.release();
-                logger.debug("Logged out successfully");
-            });
+        return connection.sendAsync(CommandCode.User.LOGOUT.getValue(), payload).thenAccept(response -> {
+            response.release();
+            log.debug("Logged out successfully");
+        });
     }
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/ConsumerGroupsClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/ConsumerGroupsClient.java
index bd0b0b52e..bf9134431 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/ConsumerGroupsClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/ConsumerGroupsClient.java
@@ -24,6 +24,7 @@ import org.apache.iggy.consumergroup.ConsumerGroupDetails;
 import org.apache.iggy.identifier.ConsumerId;
 import org.apache.iggy.identifier.StreamId;
 import org.apache.iggy.identifier.TopicId;
+
 import java.util.List;
 import java.util.Optional;
 
@@ -64,5 +65,4 @@ public interface ConsumerGroupsClient {
     }
 
     void leaveConsumerGroup(StreamId streamId, TopicId topicId, ConsumerId groupId);
-
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/ConsumerOffsetsClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/ConsumerOffsetsClient.java
index 02a7df276..f809e25d6 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/ConsumerOffsetsClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/ConsumerOffsetsClient.java
@@ -23,21 +23,25 @@ import org.apache.iggy.consumergroup.Consumer;
 import org.apache.iggy.consumeroffset.ConsumerOffsetInfo;
 import org.apache.iggy.identifier.StreamId;
 import org.apache.iggy.identifier.TopicId;
+
 import java.math.BigInteger;
 import java.util.Optional;
 
 public interface ConsumerOffsetsClient {
 
-    default void storeConsumerOffset(Long streamId, Long topicId, Optional<Long> partitionId, Long consumerId, BigInteger offset) {
+    default void storeConsumerOffset(
+            Long streamId, Long topicId, Optional<Long> partitionId, Long consumerId, BigInteger offset) {
         storeConsumerOffset(StreamId.of(streamId), TopicId.of(topicId), partitionId, Consumer.of(consumerId), offset);
     }
 
-    void storeConsumerOffset(StreamId streamId, TopicId topicId, Optional<Long> partitionId, Consumer consumer, BigInteger offset);
+    void storeConsumerOffset(
+            StreamId streamId, TopicId topicId, Optional<Long> partitionId, Consumer consumer, BigInteger offset);
 
-    default Optional<ConsumerOffsetInfo> getConsumerOffset(Long streamId, Long topicId, Optional<Long> partitionId, Long consumerId) {
+    default Optional<ConsumerOffsetInfo> getConsumerOffset(
+            Long streamId, Long topicId, Optional<Long> partitionId, Long consumerId) {
         return getConsumerOffset(StreamId.of(streamId), TopicId.of(topicId), partitionId, Consumer.of(consumerId));
     }
 
-    Optional<ConsumerOffsetInfo> getConsumerOffset(StreamId streamId, TopicId topicId, Optional<Long> partitionId, Consumer consumer);
-
+    Optional<ConsumerOffsetInfo> getConsumerOffset(
+            StreamId streamId, TopicId topicId, Optional<Long> partitionId, Consumer consumer);
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/IggyBaseClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/IggyBaseClient.java
index 06c63bec5..b0cf1cd65 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/IggyBaseClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/IggyBaseClient.java
@@ -38,5 +38,4 @@ public interface IggyBaseClient {
     MessagesClient messages();
 
     PersonalAccessTokensClient personalAccessTokens();
-
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/IggyClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/IggyClient.java
index ee0d9a920..af62082f8 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/IggyClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/IggyClient.java
@@ -30,5 +30,4 @@ public class IggyClient {
     public IggyBaseClient getBaseClient() {
         return baseClient;
     }
-
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/IggyClientBuilder.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/IggyClientBuilder.java
index 5bf25c50b..f7393f756 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/IggyClientBuilder.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/IggyClientBuilder.java
@@ -34,5 +34,4 @@ public class IggyClientBuilder {
         }
         return new IggyClient(client);
     }
-
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/MessagesClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/MessagesClient.java
index bb48a43e1..fb6705686 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/MessagesClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/MessagesClient.java
@@ -26,22 +26,42 @@ import org.apache.iggy.message.Message;
 import org.apache.iggy.message.Partitioning;
 import org.apache.iggy.message.PolledMessages;
 import org.apache.iggy.message.PollingStrategy;
+
 import java.util.List;
 import java.util.Optional;
 
 public interface MessagesClient {
 
-    default PolledMessages pollMessages(Long streamId, Long topicId, Optional<Long> partitionId, Long consumerId, PollingStrategy strategy, Long count, boolean autoCommit) {
-        return pollMessages(StreamId.of(streamId), TopicId.of(topicId), partitionId, Consumer.of(consumerId),
-                strategy, count, autoCommit);
+    default PolledMessages pollMessages(
+            Long streamId,
+            Long topicId,
+            Optional<Long> partitionId,
+            Long consumerId,
+            PollingStrategy strategy,
+            Long count,
+            boolean autoCommit) {
+        return pollMessages(
+                StreamId.of(streamId),
+                TopicId.of(topicId),
+                partitionId,
+                Consumer.of(consumerId),
+                strategy,
+                count,
+                autoCommit);
     }
 
-    PolledMessages pollMessages(StreamId streamId, TopicId topicId, Optional<Long> partitionId, Consumer consumer, PollingStrategy strategy, Long count, boolean autoCommit);
+    PolledMessages pollMessages(
+            StreamId streamId,
+            TopicId topicId,
+            Optional<Long> partitionId,
+            Consumer consumer,
+            PollingStrategy strategy,
+            Long count,
+            boolean autoCommit);
 
     default void sendMessages(Long streamId, Long topicId, Partitioning partitioning, List<Message> messages) {
         sendMessages(StreamId.of(streamId), TopicId.of(topicId), partitioning, messages);
     }
 
     void sendMessages(StreamId streamId, TopicId topicId, Partitioning partitioning, List<Message> messages);
-
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/PartitionsClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/PartitionsClient.java
index c059056aa..89e63fa36 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/PartitionsClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/PartitionsClient.java
@@ -35,5 +35,4 @@ public interface PartitionsClient {
     }
 
     void deletePartitions(StreamId streamId, TopicId topicId, Long partitionsCount);
-
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/PersonalAccessTokensClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/PersonalAccessTokensClient.java
index 1e3706981..37768c103 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/PersonalAccessTokensClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/PersonalAccessTokensClient.java
@@ -22,6 +22,7 @@ package org.apache.iggy.client.blocking;
 import org.apache.iggy.personalaccesstoken.PersonalAccessTokenInfo;
 import org.apache.iggy.personalaccesstoken.RawPersonalAccessToken;
 import org.apache.iggy.user.IdentityInfo;
+
 import java.math.BigInteger;
 import java.util.List;
 
@@ -34,5 +35,4 @@ public interface PersonalAccessTokensClient {
     void deletePersonalAccessToken(String name);
 
     IdentityInfo loginWithPersonalAccessToken(String token);
-
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/StreamsClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/StreamsClient.java
index 3d338fb9a..8a35f01df 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/StreamsClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/StreamsClient.java
@@ -22,6 +22,7 @@ package org.apache.iggy.client.blocking;
 import org.apache.iggy.identifier.StreamId;
 import org.apache.iggy.stream.StreamBase;
 import org.apache.iggy.stream.StreamDetails;
+
 import java.util.List;
 import java.util.Optional;
 
@@ -48,5 +49,4 @@ public interface StreamsClient {
     }
 
     void deleteStream(StreamId streamId);
-
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/SystemClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/SystemClient.java
index 0370e9304..ecf29e9aa 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/SystemClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/SystemClient.java
@@ -22,6 +22,7 @@ package org.apache.iggy.client.blocking;
 import org.apache.iggy.system.ClientInfo;
 import org.apache.iggy.system.ClientInfoDetails;
 import org.apache.iggy.system.Stats;
+
 import java.util.List;
 
 public interface SystemClient {
@@ -35,5 +36,4 @@ public interface SystemClient {
     List<ClientInfo> getClients();
 
     String ping();
-
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/TopicsClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/TopicsClient.java
index 9503a5cea..18936f94f 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/TopicsClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/TopicsClient.java
@@ -24,6 +24,7 @@ import org.apache.iggy.identifier.TopicId;
 import org.apache.iggy.topic.CompressionAlgorithm;
 import org.apache.iggy.topic.Topic;
 import org.apache.iggy.topic.TopicDetails;
+
 import java.math.BigInteger;
 import java.util.List;
 import java.util.Optional;
@@ -42,14 +43,16 @@ public interface TopicsClient {
 
     List<Topic> getTopics(StreamId streamId);
 
-    default TopicDetails createTopic(Long streamId,
-                                     Long partitionsCount,
-                                     CompressionAlgorithm compressionAlgorithm,
-                                     BigInteger messageExpiry,
-                                     BigInteger maxTopicSize,
-                                     Optional<Short> replicationFactor,
-                                     String name) {
-        return createTopic(StreamId.of(streamId),
+    default TopicDetails createTopic(
+            Long streamId,
+            Long partitionsCount,
+            CompressionAlgorithm compressionAlgorithm,
+            BigInteger messageExpiry,
+            BigInteger maxTopicSize,
+            Optional<Short> replicationFactor,
+            String name) {
+        return createTopic(
+                StreamId.of(streamId),
                 partitionsCount,
                 compressionAlgorithm,
                 messageExpiry,
@@ -58,22 +61,25 @@ public interface TopicsClient {
                 name);
     }
 
-    TopicDetails createTopic(StreamId streamId,
-                             Long partitionsCount,
-                             CompressionAlgorithm compressionAlgorithm,
-                             BigInteger messageExpiry,
-                             BigInteger maxTopicSize,
-                             Optional<Short> replicationFactor,
-                             String name);
+    TopicDetails createTopic(
+            StreamId streamId,
+            Long partitionsCount,
+            CompressionAlgorithm compressionAlgorithm,
+            BigInteger messageExpiry,
+            BigInteger maxTopicSize,
+            Optional<Short> replicationFactor,
+            String name);
 
-    default void updateTopic(Long streamId,
-                             Long topicId,
-                             CompressionAlgorithm compressionAlgorithm,
-                             BigInteger messageExpiry,
-                             BigInteger maxTopicSize,
-                             Optional<Short> replicationFactor,
-                             String name) {
-        updateTopic(StreamId.of(streamId),
+    default void updateTopic(
+            Long streamId,
+            Long topicId,
+            CompressionAlgorithm compressionAlgorithm,
+            BigInteger messageExpiry,
+            BigInteger maxTopicSize,
+            Optional<Short> replicationFactor,
+            String name) {
+        updateTopic(
+                StreamId.of(streamId),
                 TopicId.of(topicId),
                 compressionAlgorithm,
                 messageExpiry,
@@ -82,18 +88,18 @@ public interface TopicsClient {
                 name);
     }
 
-    void updateTopic(StreamId streamId,
-                     TopicId topicId,
-                     CompressionAlgorithm compressionAlgorithm,
-                     BigInteger messageExpiry,
-                     BigInteger maxTopicSize,
-                     Optional<Short> replicationFactor,
-                     String name);
+    void updateTopic(
+            StreamId streamId,
+            TopicId topicId,
+            CompressionAlgorithm compressionAlgorithm,
+            BigInteger messageExpiry,
+            BigInteger maxTopicSize,
+            Optional<Short> replicationFactor,
+            String name);
 
     default void deleteTopic(Long streamId, Long topicId) {
         deleteTopic(StreamId.of(streamId), TopicId.of(topicId));
     }
 
     void deleteTopic(StreamId streamId, TopicId topicId);
-
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/UsersClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/UsersClient.java
index c4e1598a0..01d559cb5 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/UsersClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/UsersClient.java
@@ -25,6 +25,7 @@ import org.apache.iggy.user.Permissions;
 import org.apache.iggy.user.UserInfo;
 import org.apache.iggy.user.UserInfoDetails;
 import org.apache.iggy.user.UserStatus;
+
 import java.util.List;
 import java.util.Optional;
 
@@ -67,5 +68,4 @@ public interface UsersClient {
     IdentityInfo login(String username, String password);
 
     void logout();
-
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/ConsumerGroupsHttpClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/ConsumerGroupsHttpClient.java
index 2a2101417..95bd4c609 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/ConsumerGroupsHttpClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/ConsumerGroupsHttpClient.java
@@ -26,6 +26,7 @@ import org.apache.iggy.consumergroup.ConsumerGroupDetails;
 import org.apache.iggy.identifier.ConsumerId;
 import org.apache.iggy.identifier.StreamId;
 import org.apache.iggy.identifier.TopicId;
+
 import java.util.List;
 import java.util.Optional;
 
@@ -46,15 +47,13 @@ class ConsumerGroupsHttpClient implements ConsumerGroupsClient {
     @Override
     public List<ConsumerGroup> getConsumerGroups(StreamId streamId, TopicId topicId) {
         var request = httpClient.prepareGetRequest(path(streamId, topicId));
-        return httpClient.execute(request, new TypeReference<>() {
-        });
+        return httpClient.execute(request, new TypeReference<>() {});
     }
 
     @Override
     public ConsumerGroupDetails createConsumerGroup(StreamId streamId, TopicId topicId, String name) {
         var request = httpClient.preparePostRequest(path(streamId, topicId), new CreateConsumerGroup(name));
-        return httpClient.execute(request, new TypeReference<>() {
-        });
+        return httpClient.execute(request, new TypeReference<>() {});
     }
 
     @Override
@@ -77,7 +76,5 @@ class ConsumerGroupsHttpClient implements ConsumerGroupsClient {
         return "/streams/" + streamId + "/topics/" + topicId + "/consumer-groups";
     }
 
-    private record CreateConsumerGroup(String name) {
-    }
-
+    private record CreateConsumerGroup(String name) {}
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/ConsumerOffsetsHttpClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/ConsumerOffsetsHttpClient.java
index 98346cdfe..cf05dbb22 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/ConsumerOffsetsHttpClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/ConsumerOffsetsHttpClient.java
@@ -25,6 +25,7 @@ import org.apache.iggy.consumergroup.Consumer;
 import org.apache.iggy.consumeroffset.ConsumerOffsetInfo;
 import org.apache.iggy.identifier.StreamId;
 import org.apache.iggy.identifier.TopicId;
+
 import java.math.BigInteger;
 import java.util.Optional;
 
@@ -38,17 +39,21 @@ class ConsumerOffsetsHttpClient implements ConsumerOffsetsClient {
     }
 
     @Override
-    public void storeConsumerOffset(StreamId streamId, TopicId topicId, Optional<Long> partitionId, Consumer consumer, BigInteger offset) {
-        var request = httpClient.preparePutRequest(path(streamId, topicId),
-                new StoreConsumerOffset(consumer.id().toString(), partitionId, offset));
+    public void storeConsumerOffset(
+            StreamId streamId, TopicId topicId, Optional<Long> partitionId, Consumer consumer, BigInteger offset) {
+        var request = httpClient.preparePutRequest(
+                path(streamId, topicId), new StoreConsumerOffset(consumer.id().toString(), partitionId, offset));
         httpClient.execute(request);
     }
 
     @Override
-    public Optional<ConsumerOffsetInfo> getConsumerOffset(StreamId streamId, TopicId topicId, Optional<Long> partitionId, Consumer consumer) {
-        var request = httpClient.prepareGetRequest(path(streamId, topicId),
+    public Optional<ConsumerOffsetInfo> getConsumerOffset(
+            StreamId streamId, TopicId topicId, Optional<Long> partitionId, Consumer consumer) {
+        var request = httpClient.prepareGetRequest(
+                path(streamId, topicId),
                 new BasicNameValuePair("consumer_id", consumer.id().toString()),
-                new BasicNameValuePair("partition_id", partitionId.map(Object::toString).orElse(DEFAULT_PARTITION_ID)));
+                new BasicNameValuePair(
+                        "partition_id", partitionId.map(Object::toString).orElse(DEFAULT_PARTITION_ID)));
         return httpClient.executeWithOptionalResponse(request, ConsumerOffsetInfo.class);
     }
 
@@ -56,6 +61,5 @@ class ConsumerOffsetsHttpClient implements ConsumerOffsetsClient {
         return "/streams/" + streamId + "/topics/" + topicId + "/consumer-offsets";
     }
 
-    private record StoreConsumerOffset(String consumerId, Optional<Long> partitionId, BigInteger offset) {
-    }
+    private record StoreConsumerOffset(String consumerId, Optional<Long> partitionId, BigInteger offset) {}
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/IggyHttpClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/IggyHttpClient.java
index e7bd616c4..a24166c1b 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/IggyHttpClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/IggyHttpClient.java
@@ -99,5 +99,4 @@ public class IggyHttpClient implements IggyBaseClient {
     public PersonalAccessTokensClient personalAccessTokens() {
         return personalAccessTokensHttpClient;
     }
-
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/InternalHttpClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/InternalHttpClient.java
index 5f19df0e8..368d1a06d 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/InternalHttpClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/InternalHttpClient.java
@@ -29,10 +29,11 @@ import org.apache.hc.core5.http.ClassicHttpResponse;
 import org.apache.hc.core5.http.NameValuePair;
 import org.apache.hc.core5.http.io.HttpClientResponseHandler;
 import org.apache.hc.core5.http.io.support.ClassicRequestBuilder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.apache.iggy.client.blocking.http.error.IggyHttpError;
 import org.apache.iggy.client.blocking.http.error.IggyHttpException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import java.io.IOException;
 import java.util.Optional;
 
@@ -65,6 +66,13 @@ final class InternalHttpClient {
         return executeRequest(request, response -> handleTypedResponse(response, type));
     }
 
+    void execute(ClassicHttpRequest request) {
+        executeRequest(request, response -> {
+            handleErrorResponse(response);
+            return "";
+        });
+    }
+
     public <T> Optional<T> executeWithOptionalResponse(ClassicHttpRequest request, Class<T> clazz) {
         return executeWithOptionalResponse(request, objectMapper.constructType(clazz));
     }
@@ -85,13 +93,6 @@ final class InternalHttpClient {
         });
     }
 
-    void execute(ClassicHttpRequest request) {
-        executeRequest(request, response -> {
-            handleErrorResponse(response);
-            return "";
-        });
-    }
-
     private <T> T executeRequest(ClassicHttpRequest request, HttpClientResponseHandler<T> responseHandler) {
         try (var client = HttpClients.createDefault()) {
             return client.execute(request, responseHandler);
@@ -108,14 +109,12 @@ final class InternalHttpClient {
     }
 
     ClassicHttpRequest preparePostRequest(String path, Object body) {
-        var builder = ClassicRequestBuilder.post(url + path)
-                .setHeader(AUTHORIZATION, getBearerToken());
+        var builder = ClassicRequestBuilder.post(url + path).setHeader(AUTHORIZATION, getBearerToken());
         return addRequestBody(builder, body);
     }
 
     ClassicHttpRequest preparePutRequest(String path, Object body) {
-        var builder = ClassicRequestBuilder.put(url + path)
-                .setHeader(AUTHORIZATION, getBearerToken());
+        var builder = ClassicRequestBuilder.put(url + path).setHeader(AUTHORIZATION, getBearerToken());
         return addRequestBody(builder, body);
     }
 
@@ -137,7 +136,6 @@ final class InternalHttpClient {
         } catch (JsonProcessingException e) {
             throw new RuntimeException(e);
         }
-
     }
 
     private <T> T handleTypedResponse(ClassicHttpResponse response, JavaType type) throws IOException {
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/MessagesHttpClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/MessagesHttpClient.java
index 015a2d6a9..e8db08d02 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/MessagesHttpClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/MessagesHttpClient.java
@@ -28,6 +28,7 @@ import org.apache.iggy.message.Message;
 import org.apache.iggy.message.Partitioning;
 import org.apache.iggy.message.PolledMessages;
 import org.apache.iggy.message.PollingStrategy;
+
 import java.util.List;
 import java.util.Optional;
 
@@ -40,10 +41,20 @@ class MessagesHttpClient implements MessagesClient {
     }
 
     @Override
-    public PolledMessages pollMessages(StreamId streamId, TopicId topicId, Optional<Long> partitionId, Consumer consumer, PollingStrategy strategy, Long count, boolean autoCommit) {
-        var request = httpClient.prepareGetRequest(path(streamId, topicId),
+    public PolledMessages pollMessages(
+            StreamId streamId,
+            TopicId topicId,
+            Optional<Long> partitionId,
+            Consumer consumer,
+            PollingStrategy strategy,
+            Long count,
+            boolean autoCommit) {
+        var request = httpClient.prepareGetRequest(
+                path(streamId, topicId),
                 new BasicNameValuePair("consumer_id", consumer.id().toString()),
-                partitionId.map(id -> new BasicNameValuePair("partition_id", id.toString())).orElse(null),
+                partitionId
+                        .map(id -> new BasicNameValuePair("partition_id", id.toString()))
+                        .orElse(null),
                 new BasicNameValuePair("strategy_kind", strategy.kind().name()),
                 new BasicNameValuePair("strategy_value", strategy.value().toString()),
                 new BasicNameValuePair("count", count.toString()),
@@ -61,6 +72,5 @@ class MessagesHttpClient implements MessagesClient {
         return "/streams/" + streamId + "/topics/" + topicId + "/messages";
     }
 
-    private record SendMessages(Partitioning partitioning, List<Message> messages) {
-    }
+    private record SendMessages(Partitioning partitioning, List<Message> messages) {}
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/ObjectMapperFactory.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/ObjectMapperFactory.java
index eac4dcd2a..533c642b6 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/ObjectMapperFactory.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/ObjectMapperFactory.java
@@ -37,11 +37,9 @@ final class ObjectMapperFactory {
             .registerModule(new Jdk8Module())
             .setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE);
 
-    private ObjectMapperFactory() {
-    }
+    private ObjectMapperFactory() {}
 
     static ObjectMapper getInstance() {
         return INSTANCE;
     }
-
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/PartitionsHttpClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/PartitionsHttpClient.java
index 4a0057f61..8726a373c 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/PartitionsHttpClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/PartitionsHttpClient.java
@@ -37,18 +37,18 @@ class PartitionsHttpClient implements PartitionsClient {
 
     @Override
     public void createPartitions(StreamId streamId, TopicId topicId, Long partitionsCount) {
-        var request = httpClient.preparePostRequest(STREAMS + "/" + streamId + TOPICS + "/" + topicId + PARTITIONS,
-                new CreatePartitions(partitionsCount));
+        var request = httpClient.preparePostRequest(
+                STREAMS + "/" + streamId + TOPICS + "/" + topicId + PARTITIONS, new CreatePartitions(partitionsCount));
         httpClient.execute(request);
     }
 
     @Override
     public void deletePartitions(StreamId streamId, TopicId topicId, Long partitionsCount) {
-        var request = httpClient.prepareDeleteRequest(STREAMS + "/" + streamId + TOPICS + "/" + topicId + PARTITIONS,
+        var request = httpClient.prepareDeleteRequest(
+                STREAMS + "/" + streamId + TOPICS + "/" + topicId + PARTITIONS,
                 new BasicNameValuePair("partitions_count", partitionsCount.toString()));
         httpClient.execute(request);
     }
 
-    private record CreatePartitions(Long partitionsCount) {
-    }
+    private record CreatePartitions(Long partitionsCount) {}
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/PersonalAccessTokensHttpClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/PersonalAccessTokensHttpClient.java
index 94f340ed0..15a7dd993 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/PersonalAccessTokensHttpClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/PersonalAccessTokensHttpClient.java
@@ -25,6 +25,7 @@ import org.apache.iggy.personalaccesstoken.PersonalAccessTokenInfo;
 import org.apache.iggy.personalaccesstoken.RawPersonalAccessToken;
 import org.apache.iggy.user.IdentityInfo;
 import org.apache.iggy.user.TokenInfo;
+
 import java.math.BigInteger;
 import java.util.List;
 
@@ -39,17 +40,15 @@ class PersonalAccessTokensHttpClient implements PersonalAccessTokensClient {
 
     @Override
     public RawPersonalAccessToken createPersonalAccessToken(String name, BigInteger expiry) {
-        var request = httpClient.preparePostRequest(PERSONAL_ACCESS_TOKENS,
-                new CreatePersonalAccessToken(name, expiry));
-        return httpClient.execute(request, new TypeReference<>() {
-        });
+        var request =
+                httpClient.preparePostRequest(PERSONAL_ACCESS_TOKENS, new CreatePersonalAccessToken(name, expiry));
+        return httpClient.execute(request, new TypeReference<>() {});
     }
 
     @Override
     public List<PersonalAccessTokenInfo> getPersonalAccessTokens() {
         var request = httpClient.prepareGetRequest(PERSONAL_ACCESS_TOKENS);
-        return httpClient.execute(request, new TypeReference<>() {
-        });
+        return httpClient.execute(request, new TypeReference<>() {});
     }
 
     @Override
@@ -60,17 +59,14 @@ class PersonalAccessTokensHttpClient implements PersonalAccessTokensClient {
 
     @Override
     public IdentityInfo loginWithPersonalAccessToken(String token) {
-        var request = httpClient.preparePostRequest(PERSONAL_ACCESS_TOKENS + "/login",
-                new LoginWithPersonalAccessToken(token));
+        var request = httpClient.preparePostRequest(
+                PERSONAL_ACCESS_TOKENS + "/login", new LoginWithPersonalAccessToken(token));
         var response = httpClient.execute(request, IdentityInfo.class);
         httpClient.setToken(response.accessToken().map(TokenInfo::token));
         return response;
     }
 
-    record CreatePersonalAccessToken(String name, BigInteger expiry) {
-    }
-
-    record LoginWithPersonalAccessToken(String token) {
-    }
+    record CreatePersonalAccessToken(String name, BigInteger expiry) {}
 
+    record LoginWithPersonalAccessToken(String token) {}
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/StreamsHttpClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/StreamsHttpClient.java
index d5798e12e..7b38895bd 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/StreamsHttpClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/StreamsHttpClient.java
@@ -24,6 +24,7 @@ import org.apache.iggy.client.blocking.StreamsClient;
 import org.apache.iggy.identifier.StreamId;
 import org.apache.iggy.stream.StreamBase;
 import org.apache.iggy.stream.StreamDetails;
+
 import java.util.List;
 import java.util.Optional;
 
@@ -45,15 +46,13 @@ class StreamsHttpClient implements StreamsClient {
     @Override
     public List<StreamBase> getStreams() {
         var request = httpClient.prepareGetRequest(STREAMS);
-        return httpClient.execute(request, new TypeReference<>() {
-        });
+        return httpClient.execute(request, new TypeReference<>() {});
     }
 
     @Override
     public StreamDetails createStream(String name) {
         var request = httpClient.preparePostRequest(STREAMS, new CreateStream(name));
-        return httpClient.execute(request, new TypeReference<>() {
-        });
+        return httpClient.execute(request, new TypeReference<>() {});
     }
 
     @Override
@@ -68,9 +67,7 @@ class StreamsHttpClient implements StreamsClient {
         httpClient.execute(request);
     }
 
-    record CreateStream(String name) {
-    }
+    record CreateStream(String name) {}
 
-    record UpdateStream(String name) {
-    }
+    record UpdateStream(String name) {}
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/SystemHttpClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/SystemHttpClient.java
index 4da07e14e..17122ec22 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/SystemHttpClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/SystemHttpClient.java
@@ -24,6 +24,7 @@ import org.apache.iggy.client.blocking.SystemClient;
 import org.apache.iggy.system.ClientInfo;
 import org.apache.iggy.system.ClientInfoDetails;
 import org.apache.iggy.system.Stats;
+
 import java.util.List;
 
 class SystemHttpClient implements SystemClient {
@@ -57,8 +58,7 @@ class SystemHttpClient implements SystemClient {
     @Override
     public List<ClientInfo> getClients() {
         var request = httpClient.prepareGetRequest(CLIENTS);
-        return httpClient.execute(request, new TypeReference<>() {
-        });
+        return httpClient.execute(request, new TypeReference<>() {});
     }
 
     @Override
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/TopicsHttpClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/TopicsHttpClient.java
index dcdc553fc..0c91a1c2a 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/TopicsHttpClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/TopicsHttpClient.java
@@ -26,6 +26,7 @@ import org.apache.iggy.identifier.TopicId;
 import org.apache.iggy.topic.CompressionAlgorithm;
 import org.apache.iggy.topic.Topic;
 import org.apache.iggy.topic.TopicDetails;
+
 import java.math.BigInteger;
 import java.util.List;
 import java.util.Optional;
@@ -49,38 +50,36 @@ class TopicsHttpClient implements TopicsClient {
     @Override
     public List<Topic> getTopics(StreamId streamId) {
         var request = httpClient.prepareGetRequest(STREAMS + "/" + streamId + TOPICS);
-        return httpClient.execute(request, new TypeReference<>() {
-        });
+        return httpClient.execute(request, new TypeReference<>() {});
     }
 
     @Override
-    public TopicDetails createTopic(StreamId streamId,
-                                    Long partitionsCount,
-                                    CompressionAlgorithm compressionAlgorithm,
-                                    BigInteger messageExpiry,
-                                    BigInteger maxTopicSize,
-                                    Optional<Short> replicationFactor,
-                                    String name) {
-        var request = httpClient.preparePostRequest(STREAMS + "/" + streamId + TOPICS,
-                new CreateTopic(partitionsCount,
-                        compressionAlgorithm,
-                        messageExpiry,
-                        maxTopicSize,
-                        replicationFactor,
-                        name));
-        return httpClient.execute(request, new TypeReference<>() {
-        });
+    public TopicDetails createTopic(
+            StreamId streamId,
+            Long partitionsCount,
+            CompressionAlgorithm compressionAlgorithm,
+            BigInteger messageExpiry,
+            BigInteger maxTopicSize,
+            Optional<Short> replicationFactor,
+            String name) {
+        var request = httpClient.preparePostRequest(
+                STREAMS + "/" + streamId + TOPICS,
+                new CreateTopic(
+                        partitionsCount, compressionAlgorithm, messageExpiry, maxTopicSize, replicationFactor, name));
+        return httpClient.execute(request, new TypeReference<>() {});
     }
 
     @Override
-    public void updateTopic(StreamId streamId,
-                            TopicId topicId,
-                            CompressionAlgorithm compressionAlgorithm,
-                            BigInteger messageExpiry,
-                            BigInteger maxTopicSize,
-                            Optional<Short> replicationFactor,
-                            String name) {
-        var request = httpClient.preparePutRequest(STREAMS + "/" + streamId + TOPICS + "/" + topicId,
+    public void updateTopic(
+            StreamId streamId,
+            TopicId topicId,
+            CompressionAlgorithm compressionAlgorithm,
+            BigInteger messageExpiry,
+            BigInteger maxTopicSize,
+            Optional<Short> replicationFactor,
+            String name) {
+        var request = httpClient.preparePutRequest(
+                STREAMS + "/" + streamId + TOPICS + "/" + topicId,
                 new UpdateTopic(compressionAlgorithm, messageExpiry, maxTopicSize, replicationFactor, name));
         httpClient.execute(request);
     }
@@ -97,16 +96,12 @@ class TopicsHttpClient implements TopicsClient {
             BigInteger messageExpiry,
             BigInteger maxTopicSize,
             Optional<Short> replicationFactor,
-            String name
-    ) {
-    }
+            String name) {}
 
     record UpdateTopic(
             CompressionAlgorithm compressionAlgorithm,
             BigInteger messageExpiry,
             BigInteger maxTopicSize,
             Optional<Short> replicationFactor,
-            String name
-    ) {
-    }
+            String name) {}
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/UsersHttpClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/UsersHttpClient.java
index 67436f14f..b56f8bf2c 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/UsersHttpClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/UsersHttpClient.java
@@ -28,6 +28,7 @@ import org.apache.iggy.user.TokenInfo;
 import org.apache.iggy.user.UserInfo;
 import org.apache.iggy.user.UserInfoDetails;
 import org.apache.iggy.user.UserStatus;
+
 import java.util.List;
 import java.util.Optional;
 
@@ -49,15 +50,14 @@ class UsersHttpClient implements UsersClient {
     @Override
     public List<UserInfo> getUsers() {
         var request = httpClient.prepareGetRequest(USERS);
-        return httpClient.execute(request, new TypeReference<>() {
-        });
+        return httpClient.execute(request, new TypeReference<>() {});
     }
 
     @Override
-    public UserInfoDetails createUser(String username, String password, UserStatus status, Optional<Permissions> permissions) {
+    public UserInfoDetails createUser(
+            String username, String password, UserStatus status, Optional<Permissions> permissions) {
         var request = httpClient.preparePostRequest(USERS, new CreateUser(username, password, status, permissions));
-        return httpClient.execute(request, new TypeReference<>() {
-        });
+        return httpClient.execute(request, new TypeReference<>() {});
     }
 
     @Override
@@ -74,15 +74,15 @@ class UsersHttpClient implements UsersClient {
 
     @Override
     public void updatePermissions(UserId userId, Optional<Permissions> permissions) {
-        var request = httpClient.preparePutRequest(USERS + "/" + userId + "/permissions",
-                new UpdatePermissions(permissions));
+        var request =
+                httpClient.preparePutRequest(USERS + "/" + userId + "/permissions", new UpdatePermissions(permissions));
         httpClient.execute(request);
     }
 
     @Override
     public void changePassword(UserId userId, String currentPassword, String newPassword) {
-        var request = httpClient.preparePutRequest(USERS + "/" + userId + "/password",
-                new ChangePassword(currentPassword, newPassword));
+        var request = httpClient.preparePutRequest(
+                USERS + "/" + userId + "/password", new ChangePassword(currentPassword, newPassword));
         httpClient.execute(request);
     }
 
@@ -103,18 +103,13 @@ class UsersHttpClient implements UsersClient {
         httpClient.setToken(Optional.empty());
     }
 
-    record Login(String username, String password, String version, String context) {
-    }
+    record Login(String username, String password, String version, String context) {}
 
-    private record CreateUser(String username, String password, UserStatus status, Optional<Permissions> permissions) {
-    }
+    private record CreateUser(String username, String password, UserStatus status, Optional<Permissions> permissions) {}
 
-    private record UpdateUser(Optional<String> username, Optional<UserStatus> status) {
-    }
+    private record UpdateUser(Optional<String> username, Optional<UserStatus> status) {}
 
-    private record UpdatePermissions(Optional<Permissions> permissions) {
-    }
+    private record UpdatePermissions(Optional<Permissions> permissions) {}
 
-    private record ChangePassword(String currentPassword, String newPassword) {
-    }
+    private record ChangePassword(String currentPassword, String newPassword) {}
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/error/IggyHttpError.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/error/IggyHttpError.java
index d428232a6..f84e1d8f8 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/error/IggyHttpError.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/error/IggyHttpError.java
@@ -19,10 +19,4 @@
 
 package org.apache.iggy.client.blocking.http.error;
 
-public record IggyHttpError(
-        String id,
-        String code,
-        String reason,
-        String field
-) {
-}
+public record IggyHttpError(String id, String code, String reason, String field) {}
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/error/IggyHttpException.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/error/IggyHttpException.java
index 8b2ead4b5..4d6230863 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/error/IggyHttpException.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/http/error/IggyHttpException.java
@@ -30,5 +30,4 @@ public class IggyHttpException extends RuntimeException {
     public IggyHttpError getError() {
         return error;
     }
-
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/BytesDeserializer.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/BytesDeserializer.java
index 4940dfeb4..b89f6fce9 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/BytesDeserializer.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/BytesDeserializer.java
@@ -29,13 +29,6 @@ import org.apache.iggy.message.BytesMessageId;
 import org.apache.iggy.message.Message;
 import org.apache.iggy.message.MessageHeader;
 import org.apache.iggy.message.PolledMessages;
-import org.apache.iggy.user.GlobalPermissions;
-import org.apache.iggy.user.Permissions;
-import org.apache.iggy.user.StreamPermissions;
-import org.apache.iggy.user.TopicPermissions;
-import org.apache.iggy.user.UserInfo;
-import org.apache.iggy.user.UserInfoDetails;
-import org.apache.iggy.user.UserStatus;
 import org.apache.iggy.partition.Partition;
 import org.apache.iggy.personalaccesstoken.PersonalAccessTokenInfo;
 import org.apache.iggy.personalaccesstoken.RawPersonalAccessToken;
@@ -48,14 +41,25 @@ import org.apache.iggy.system.Stats;
 import org.apache.iggy.topic.CompressionAlgorithm;
 import org.apache.iggy.topic.Topic;
 import org.apache.iggy.topic.TopicDetails;
+import org.apache.iggy.user.GlobalPermissions;
+import org.apache.iggy.user.Permissions;
+import org.apache.iggy.user.StreamPermissions;
+import org.apache.iggy.user.TopicPermissions;
+import org.apache.iggy.user.UserInfo;
+import org.apache.iggy.user.UserInfoDetails;
+import org.apache.iggy.user.UserStatus;
+
 import java.math.BigInteger;
 import java.nio.charset.StandardCharsets;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
 
 final class BytesDeserializer {
 
-    private BytesDeserializer() {
-    }
+    private BytesDeserializer() {}
 
     static StreamBase readStreamBase(ByteBuf response) {
         var streamId = response.readUnsignedIntLE();
@@ -113,7 +117,8 @@ final class BytesDeserializer {
         var messagesCount = readU64AsBigInteger(response);
         var nameLength = response.readByte();
         var name = response.readCharSequence(nameLength, StandardCharsets.UTF_8).toString();
-        return new Topic(topicId,
+        return new Topic(
+                topicId,
                 createdAt,
                 name,
                 size.toString(),
@@ -181,8 +186,8 @@ final class BytesDeserializer {
         var originTimestamp = readU64AsBigInteger(response);
         var userHeadersLength = response.readUnsignedIntLE();
         var payloadLength = response.readUnsignedIntLE();
-        var header = new MessageHeader(checksum, id, offset, timestamp, originTimestamp,
-            userHeadersLength, payloadLength);
+        var header =
+                new MessageHeader(checksum, id, offset, timestamp, originTimestamp, userHeadersLength, payloadLength);
         var payload = newByteArray(payloadLength);
         response.readBytes(payload);
         // TODO: Add support for user headers.
@@ -209,15 +214,20 @@ final class BytesDeserializer {
         var clientsCount = response.readUnsignedIntLE();
         var consumerGroupsCount = response.readUnsignedIntLE();
         var hostnameLength = response.readUnsignedIntLE();
-        var hostname = response.readCharSequence(toInt(hostnameLength), StandardCharsets.UTF_8).toString();
+        var hostname = response.readCharSequence(toInt(hostnameLength), StandardCharsets.UTF_8)
+                .toString();
         var osNameLength = response.readUnsignedIntLE();
-        var osName = response.readCharSequence(toInt(osNameLength), StandardCharsets.UTF_8).toString();
+        var osName = response.readCharSequence(toInt(osNameLength), StandardCharsets.UTF_8)
+                .toString();
         var osVersionLength = response.readUnsignedIntLE();
-        var osVersion = response.readCharSequence(toInt(osVersionLength), StandardCharsets.UTF_8).toString();
+        var osVersion = response.readCharSequence(toInt(osVersionLength), StandardCharsets.UTF_8)
+                .toString();
         var kernelVersionLength = response.readUnsignedIntLE();
-        var kernelVersion = response.readCharSequence(toInt(kernelVersionLength), StandardCharsets.UTF_8).toString();
+        var kernelVersion = response.readCharSequence(toInt(kernelVersionLength), StandardCharsets.UTF_8)
+                .toString();
 
-        return new Stats(processId,
+        return new Stats(
+                processId,
                 cpuUsage,
                 totalCpuUsage,
                 memoryUsage.toString(),
@@ -264,7 +274,8 @@ final class BytesDeserializer {
             transportString = "Quic";
         }
         var addressLength = response.readUnsignedIntLE();
-        var address = response.readCharSequence(toInt(addressLength), StandardCharsets.UTF_8).toString();
+        var address = response.readCharSequence(toInt(addressLength), StandardCharsets.UTF_8)
+                .toString();
         var consumerGroupsCount = response.readUnsignedIntLE();
         return new ClientInfo(clientId, userIdOptional, address, transportString, consumerGroupsCount);
     }
@@ -314,13 +325,8 @@ final class BytesDeserializer {
             var topicPermissions = readTopicPermissions(response);
             topicPermissionsMap.put(topicId, topicPermissions);
         }
-        return new StreamPermissions(manageStream,
-                readStream,
-                manageTopics,
-                readTopics,
-                pollMessages,
-                sendMessages,
-                topicPermissionsMap);
+        return new StreamPermissions(
+                manageStream, readStream, manageTopics, readTopics, pollMessages, sendMessages, topicPermissionsMap);
     }
 
     static TopicPermissions readTopicPermissions(ByteBuf response) {
@@ -342,7 +348,8 @@ final class BytesDeserializer {
         var readTopics = response.readBoolean();
         var pollMessages = response.readBoolean();
         var sendMessages = response.readBoolean();
-        return new GlobalPermissions(manageServers,
+        return new GlobalPermissions(
+                manageServers,
                 readServers,
                 manageUsers,
                 readUsers,
@@ -360,13 +367,15 @@ final class BytesDeserializer {
         var statusCode = response.readByte();
         var status = UserStatus.fromCode(statusCode);
         var usernameLength = response.readByte();
-        var username = response.readCharSequence(usernameLength, StandardCharsets.UTF_8).toString();
+        var username = response.readCharSequence(usernameLength, StandardCharsets.UTF_8)
+                .toString();
         return new UserInfo(userId, createdAt, status, username);
     }
 
     static RawPersonalAccessToken readRawPersonalAccessToken(ByteBuf response) {
         var tokenLength = response.readByte();
-        var token = response.readCharSequence(tokenLength, StandardCharsets.UTF_8).toString();
+        var token =
+                response.readCharSequence(tokenLength, StandardCharsets.UTF_8).toString();
         return new RawPersonalAccessToken(token);
     }
 
@@ -399,5 +408,4 @@ final class BytesDeserializer {
     private static byte[] newByteArray(Long size) {
         return new byte[size.intValue()];
     }
-
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/BytesSerializer.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/BytesSerializer.java
index da84133d6..f95c0a622 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/BytesSerializer.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/BytesSerializer.java
@@ -33,14 +33,14 @@ import org.apache.iggy.user.GlobalPermissions;
 import org.apache.iggy.user.Permissions;
 import org.apache.iggy.user.StreamPermissions;
 import org.apache.iggy.user.TopicPermissions;
+
 import java.math.BigInteger;
 import java.util.Map;
 import java.util.Optional;
 
 public final class BytesSerializer {
 
-    private BytesSerializer() {
-    }
+    private BytesSerializer() {}
 
     static ByteBuf toBytes(Consumer consumer) {
         ByteBuf buffer = Unpooled.buffer();
@@ -67,13 +67,6 @@ public final class BytesSerializer {
         }
     }
 
-    static ByteBuf nameToBytes(String name) {
-        ByteBuf buffer = Unpooled.buffer(1 + name.length());
-        buffer.writeByte(name.length());
-        buffer.writeBytes(name.getBytes());
-        return buffer;
-    }
-
     static ByteBuf toBytes(Partitioning partitioning) {
         ByteBuf buffer = Unpooled.buffer(2 + partitioning.value().length);
         buffer.writeByte(partitioning.kind().asCode());
@@ -144,7 +137,8 @@ public final class BytesSerializer {
         if (permissions.streams().isEmpty()) {
             buffer.writeByte(0);
         } else {
-            for (Map.Entry<Long, StreamPermissions> entry : permissions.streams().entrySet()) {
+            for (Map.Entry<Long, StreamPermissions> entry :
+                    permissions.streams().entrySet()) {
                 buffer.writeByte(1);
                 buffer.writeIntLE(entry.getKey().intValue());
                 buffer.writeBytes(toBytes(entry.getValue()));
@@ -202,6 +196,13 @@ public final class BytesSerializer {
         return buffer;
     }
 
+    static ByteBuf nameToBytes(String name) {
+        ByteBuf buffer = Unpooled.buffer(1 + name.length());
+        buffer.writeByte(name.length());
+        buffer.writeBytes(name.getBytes());
+        return buffer;
+    }
+
     static ByteBuf toBytesAsU64(BigInteger value) {
         if (value.signum() == -1) {
             throw new IllegalArgumentException("Negative value cannot be serialized to unsigned 64: " + value);
@@ -235,5 +236,4 @@ public final class BytesSerializer {
         }
         return buffer;
     }
-
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/CommandCode.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/CommandCode.java
index b62635cda..5f7d6b525 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/CommandCode.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/CommandCode.java
@@ -21,172 +21,172 @@ package org.apache.iggy.client.blocking.tcp;
 
 public interface CommandCode {
 
-  int getValue();
+    int getValue();
 
-  enum System implements CommandCode {
-    PING(1),
-    GET_STATS(10),
-    GET_ME(20),
-    GET_CLIENT(21),
-    GET_ALL_CLIENTS(22);
+    enum System implements CommandCode {
+        PING(1),
+        GET_STATS(10),
+        GET_ME(20),
+        GET_CLIENT(21),
+        GET_ALL_CLIENTS(22);
 
-    private final int value;
+        private final int value;
 
-    System(int value) {
-      this.value = value;
-    }
+        System(int value) {
+            this.value = value;
+        }
 
-    @Override
-    public int getValue() {
-      return value;
-    }
-  }
-
-  enum User implements CommandCode {
-    GET(31),
-    GET_ALL(32),
-    CREATE(33),
-    DELETE(34),
-    UPDATE(35),
-    UPDATE_PERMISSIONS(36),
-    CHANGE_PASSWORD(37),
-    LOGIN(38),
-    LOGOUT(39);
-
-    private final int value;
-
-    User(int value) {
-      this.value = value;
+        @Override
+        public int getValue() {
+            return value;
+        }
     }
 
-    @Override
-    public int getValue() {
-      return value;
-    }
-  }
+    enum User implements CommandCode {
+        GET(31),
+        GET_ALL(32),
+        CREATE(33),
+        DELETE(34),
+        UPDATE(35),
+        UPDATE_PERMISSIONS(36),
+        CHANGE_PASSWORD(37),
+        LOGIN(38),
+        LOGOUT(39);
 
-  enum PersonalAccessToken implements CommandCode {
-    GET_ALL(41),
-    CREATE(42),
-    DELETE(43),
-    LOGIN(44);
+        private final int value;
 
-    private final int value;
+        User(int value) {
+            this.value = value;
+        }
 
-    PersonalAccessToken(int value) {
-      this.value = value;
+        @Override
+        public int getValue() {
+            return value;
+        }
     }
 
-    @Override
-    public int getValue() {
-      return value;
-    }
-  }
+    enum PersonalAccessToken implements CommandCode {
+        GET_ALL(41),
+        CREATE(42),
+        DELETE(43),
+        LOGIN(44);
 
-  enum Messages implements CommandCode {
-    POLL(100),
-    SEND(101);
+        private final int value;
 
-    private final int value;
+        PersonalAccessToken(int value) {
+            this.value = value;
+        }
 
-    Messages(int value) {
-      this.value = value;
+        @Override
+        public int getValue() {
+            return value;
+        }
     }
 
-    @Override
-    public int getValue() {
-      return value;
-    }
-  }
+    enum Messages implements CommandCode {
+        POLL(100),
+        SEND(101);
 
-  enum ConsumerOffset implements CommandCode {
-    GET(120),
-    STORE(121);
+        private final int value;
 
-    private final int value;
+        Messages(int value) {
+            this.value = value;
+        }
 
-    ConsumerOffset(int value) {
-      this.value = value;
+        @Override
+        public int getValue() {
+            return value;
+        }
     }
 
-    @Override
-    public int getValue() {
-      return value;
-    }
-  }
+    enum ConsumerOffset implements CommandCode {
+        GET(120),
+        STORE(121);
 
-  enum Stream implements CommandCode {
-    GET(200),
-    GET_ALL(201),
-    CREATE(202),
-    DELETE(203),
-    UPDATE(204);
+        private final int value;
 
-    private final int value;
+        ConsumerOffset(int value) {
+            this.value = value;
+        }
 
-    Stream(int value) {
-      this.value = value;
+        @Override
+        public int getValue() {
+            return value;
+        }
     }
 
-    @Override
-    public int getValue() {
-      return value;
-    }
-  }
+    enum Stream implements CommandCode {
+        GET(200),
+        GET_ALL(201),
+        CREATE(202),
+        DELETE(203),
+        UPDATE(204);
 
-  enum Topic implements CommandCode {
-    GET(300),
-    GET_ALL(301),
-    CREATE(302),
-    DELETE(303),
-    UPDATE(304),
-    PURGE(305);
+        private final int value;
 
-    private final int value;
+        Stream(int value) {
+            this.value = value;
+        }
 
-    Topic(int value) {
-      this.value = value;
+        @Override
+        public int getValue() {
+            return value;
+        }
     }
 
-    @Override
-    public int getValue() {
-      return value;
-    }
-  }
+    enum Topic implements CommandCode {
+        GET(300),
+        GET_ALL(301),
+        CREATE(302),
+        DELETE(303),
+        UPDATE(304),
+        PURGE(305);
 
-  enum Partition implements CommandCode {
-    CREATE(402),
-    DELETE(403);
+        private final int value;
 
-    private final int value;
+        Topic(int value) {
+            this.value = value;
+        }
 
-    Partition(int value) {
-      this.value = value;
+        @Override
+        public int getValue() {
+            return value;
+        }
     }
 
-    @Override
-    public int getValue() {
-      return value;
-    }
-  }
+    enum Partition implements CommandCode {
+        CREATE(402),
+        DELETE(403);
 
-  enum ConsumerGroup implements CommandCode {
-    GET(600),
-    GET_ALL(601),
-    CREATE(602),
-    DELETE(603),
-    JOIN(604),
-    LEAVE(605);
+        private final int value;
 
-    private final int value;
+        Partition(int value) {
+            this.value = value;
+        }
 
-    ConsumerGroup(int value) {
-      this.value = value;
+        @Override
+        public int getValue() {
+            return value;
+        }
     }
 
-    @Override
-    public int getValue() {
-      return value;
+    enum ConsumerGroup implements CommandCode {
+        GET(600),
+        GET_ALL(601),
+        CREATE(602),
+        DELETE(603),
+        JOIN(604),
+        LEAVE(605);
+
+        private final int value;
+
+        ConsumerGroup(int value) {
+            this.value = value;
+        }
+
+        @Override
+        public int getValue() {
+            return value;
+        }
     }
-  }
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/ConsumerGroupsTcpClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/ConsumerGroupsTcpClient.java
index 2d9dbcc02..c95143c04 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/ConsumerGroupsTcpClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/ConsumerGroupsTcpClient.java
@@ -27,9 +27,11 @@ import org.apache.iggy.consumergroup.ConsumerGroupDetails;
 import org.apache.iggy.identifier.ConsumerId;
 import org.apache.iggy.identifier.StreamId;
 import org.apache.iggy.identifier.TopicId;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
+
 import static org.apache.iggy.client.blocking.tcp.BytesDeserializer.readConsumerGroup;
 import static org.apache.iggy.client.blocking.tcp.BytesDeserializer.readConsumerGroupDetails;
 import static org.apache.iggy.client.blocking.tcp.BytesSerializer.nameToBytes;
@@ -106,5 +108,4 @@ class ConsumerGroupsTcpClient implements ConsumerGroupsClient {
 
         tcpClient.send(CommandCode.ConsumerGroup.LEAVE, payload);
     }
-
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/ConsumerOffsetTcpClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/ConsumerOffsetTcpClient.java
index b1648a7ea..8d524a049 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/ConsumerOffsetTcpClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/ConsumerOffsetTcpClient.java
@@ -24,8 +24,10 @@ import org.apache.iggy.consumergroup.Consumer;
 import org.apache.iggy.consumeroffset.ConsumerOffsetInfo;
 import org.apache.iggy.identifier.StreamId;
 import org.apache.iggy.identifier.TopicId;
+
 import java.math.BigInteger;
 import java.util.Optional;
+
 import static org.apache.iggy.client.blocking.tcp.BytesDeserializer.readConsumerOffsetInfo;
 import static org.apache.iggy.client.blocking.tcp.BytesSerializer.toBytes;
 import static org.apache.iggy.client.blocking.tcp.BytesSerializer.toBytesAsU64;
@@ -39,7 +41,8 @@ class ConsumerOffsetTcpClient implements ConsumerOffsetsClient {
     }
 
     @Override
-    public void storeConsumerOffset(StreamId streamId, TopicId topicId, Optional<Long> partitionId, Consumer consumer, BigInteger offset) {
+    public void storeConsumerOffset(
+            StreamId streamId, TopicId topicId, Optional<Long> partitionId, Consumer consumer, BigInteger offset) {
         var payload = toBytes(consumer);
         payload.writeBytes(toBytes(streamId));
         payload.writeBytes(toBytes(topicId));
@@ -50,7 +53,8 @@ class ConsumerOffsetTcpClient implements ConsumerOffsetsClient {
     }
 
     @Override
-    public Optional<ConsumerOffsetInfo> getConsumerOffset(StreamId streamId, TopicId topicId, Optional<Long> partitionId, Consumer consumer) {
+    public Optional<ConsumerOffsetInfo> getConsumerOffset(
+            StreamId streamId, TopicId topicId, Optional<Long> partitionId, Consumer consumer) {
         var payload = toBytes(consumer);
         payload.writeBytes(toBytes(streamId));
         payload.writeBytes(toBytes(topicId));
@@ -62,5 +66,4 @@ class ConsumerOffsetTcpClient implements ConsumerOffsetsClient {
         }
         return Optional.empty();
     }
-
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/IggyTcpClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/IggyTcpClient.java
index ed39ad945..6d47d039b 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/IggyTcpClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/IggyTcpClient.java
@@ -61,10 +61,18 @@ public class IggyTcpClient implements IggyBaseClient {
         this(host, port, null, null, null, null, null, null, false, Optional.empty());
     }
 
-    private IggyTcpClient(String host, Integer port, String username, String password,
-                          Duration connectionTimeout, Duration requestTimeout,
-                          Integer connectionPoolSize, RetryPolicy retryPolicy,
-                          boolean enableTls, Optional<File> tlsCertificate) {
+    @SuppressWarnings("checkstyle:ParameterNumber")
+    private IggyTcpClient(
+            String host,
+            Integer port,
+            String username,
+            String password,
+            Duration connectionTimeout,
+            Duration requestTimeout,
+            Integer connectionPoolSize,
+            RetryPolicy retryPolicy,
+            boolean enableTls,
+            Optional<File> tlsCertificate) {
         this.host = host;
         this.port = port;
         this.username = Optional.ofNullable(username);
@@ -151,7 +159,7 @@ public class IggyTcpClient implements IggyBaseClient {
     /**
      * Builder for creating configured IggyTcpClient instances.
      */
-    public static class Builder {
+    public static final class Builder {
         private String host = "localhost";
         private Integer port = 8090;
         private String username;
@@ -163,8 +171,7 @@ public class IggyTcpClient implements IggyBaseClient {
         private boolean enableTls = false;
         private File tlsCertificate;
 
-        private Builder() {
-        }
+        private Builder() {}
 
         /**
          * Sets the host address for the Iggy server.
@@ -300,17 +307,24 @@ public class IggyTcpClient implements IggyBaseClient {
             if (port == null || port <= 0) {
                 throw new IllegalArgumentException("Port must be a positive integer");
             }
-            boolean enableTls = this.enableTls;
-            return new IggyTcpClient(host, port, username, password,
-                    connectionTimeout, requestTimeout, connectionPoolSize, retryPolicy,
-                    enableTls, Optional.ofNullable(tlsCertificate));
+            return new IggyTcpClient(
+                    host,
+                    port,
+                    username,
+                    password,
+                    connectionTimeout,
+                    requestTimeout,
+                    connectionPoolSize,
+                    retryPolicy,
+                    this.enableTls,
+                    Optional.ofNullable(tlsCertificate));
         }
     }
 
     /**
      * Retry policy for client operations.
      */
-    public static class RetryPolicy {
+    public static final class RetryPolicy {
         private final int maxRetries;
         private final Duration initialDelay;
         private final Duration maxDelay;
@@ -341,7 +355,8 @@ public class IggyTcpClient implements IggyBaseClient {
          * @param multiplier   the multiplier for exponential backoff
          * @return a RetryPolicy with custom exponential backoff configuration
          */
-        public static RetryPolicy exponentialBackoff(int maxRetries, Duration initialDelay, Duration maxDelay, double multiplier) {
+        public static RetryPolicy exponentialBackoff(
+                int maxRetries, Duration initialDelay, Duration maxDelay, double multiplier) {
             return new RetryPolicy(maxRetries, initialDelay, maxDelay, multiplier);
         }
 
@@ -381,5 +396,4 @@ public class IggyTcpClient implements IggyBaseClient {
             return multiplier;
         }
     }
-
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/InternalTcpClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/InternalTcpClient.java
index d01190047..db7462d0c 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/InternalTcpClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/InternalTcpClient.java
@@ -139,7 +139,5 @@ final class InternalTcpClient {
         }
     }
 
-    record IggyResponse(long status, int length, ByteBuf payload) {
-    }
-
+    record IggyResponse(long status, int length, ByteBuf payload) {}
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/MessagesTcpClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/MessagesTcpClient.java
index b9657ecc1..9e3d1010a 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/MessagesTcpClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/MessagesTcpClient.java
@@ -20,7 +20,6 @@
 package org.apache.iggy.client.blocking.tcp;
 
 import io.netty.buffer.Unpooled;
-import org.apache.iggy.client.async.tcp.AsyncBytesSerializer;
 import org.apache.iggy.client.blocking.MessagesClient;
 import org.apache.iggy.consumergroup.Consumer;
 import org.apache.iggy.identifier.StreamId;
@@ -29,8 +28,10 @@ import org.apache.iggy.message.Message;
 import org.apache.iggy.message.Partitioning;
 import org.apache.iggy.message.PolledMessages;
 import org.apache.iggy.message.PollingStrategy;
+
 import java.util.List;
 import java.util.Optional;
+
 import static org.apache.iggy.client.blocking.tcp.BytesSerializer.toBytes;
 
 class MessagesTcpClient implements MessagesClient {
@@ -42,7 +43,14 @@ class MessagesTcpClient implements MessagesClient {
     }
 
     @Override
-    public PolledMessages pollMessages(StreamId streamId, TopicId topicId, Optional<Long> partitionId, Consumer consumer, PollingStrategy strategy, Long count, boolean autoCommit) {
+    public PolledMessages pollMessages(
+            StreamId streamId,
+            TopicId topicId,
+            Optional<Long> partitionId,
+            Consumer consumer,
+            PollingStrategy strategy,
+            Long count,
+            boolean autoCommit) {
         var payload = toBytes(consumer);
         payload.writeBytes(toBytes(streamId));
         payload.writeBytes(toBytes(topicId));
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/PartitionsTcpClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/PartitionsTcpClient.java
index e0874c488..1fa634ad6 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/PartitionsTcpClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/PartitionsTcpClient.java
@@ -22,6 +22,7 @@ package org.apache.iggy.client.blocking.tcp;
 import org.apache.iggy.client.blocking.PartitionsClient;
 import org.apache.iggy.identifier.StreamId;
 import org.apache.iggy.identifier.TopicId;
+
 import static org.apache.iggy.client.blocking.tcp.BytesSerializer.toBytes;
 
 class PartitionsTcpClient implements PartitionsClient {
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/PersonalAccessTokensTcpClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/PersonalAccessTokensTcpClient.java
index bdb5cccfc..a21843acb 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/PersonalAccessTokensTcpClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/PersonalAccessTokensTcpClient.java
@@ -24,10 +24,12 @@ import org.apache.iggy.client.blocking.PersonalAccessTokensClient;
 import org.apache.iggy.personalaccesstoken.PersonalAccessTokenInfo;
 import org.apache.iggy.personalaccesstoken.RawPersonalAccessToken;
 import org.apache.iggy.user.IdentityInfo;
+
 import java.math.BigInteger;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
+
 import static org.apache.iggy.client.blocking.tcp.BytesDeserializer.readPersonalAccessTokenInfo;
 import static org.apache.iggy.client.blocking.tcp.BytesDeserializer.readRawPersonalAccessToken;
 import static org.apache.iggy.client.blocking.tcp.BytesSerializer.nameToBytes;
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/StreamsTcpClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/StreamsTcpClient.java
index 7ce8cfa3e..b9a5ee107 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/StreamsTcpClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/StreamsTcpClient.java
@@ -25,9 +25,11 @@ import org.apache.iggy.client.blocking.StreamsClient;
 import org.apache.iggy.identifier.StreamId;
 import org.apache.iggy.stream.StreamBase;
 import org.apache.iggy.stream.StreamDetails;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
+
 import static org.apache.iggy.client.blocking.tcp.BytesDeserializer.readStreamBase;
 import static org.apache.iggy.client.blocking.tcp.BytesDeserializer.readStreamDetails;
 import static org.apache.iggy.client.blocking.tcp.BytesSerializer.nameToBytes;
@@ -87,5 +89,4 @@ class StreamsTcpClient implements StreamsClient {
         var payload = toBytes(streamId);
         tcpClient.send(CommandCode.Stream.DELETE, payload);
     }
-
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/SystemTcpClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/SystemTcpClient.java
index 17920ea27..631f40e7f 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/SystemTcpClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/SystemTcpClient.java
@@ -24,9 +24,13 @@ import org.apache.iggy.client.blocking.SystemClient;
 import org.apache.iggy.system.ClientInfo;
 import org.apache.iggy.system.ClientInfoDetails;
 import org.apache.iggy.system.Stats;
+
 import java.util.ArrayList;
 import java.util.List;
-import static org.apache.iggy.client.blocking.tcp.BytesDeserializer.*;
+
+import static org.apache.iggy.client.blocking.tcp.BytesDeserializer.readClientInfo;
+import static org.apache.iggy.client.blocking.tcp.BytesDeserializer.readClientInfoDetails;
+import static org.apache.iggy.client.blocking.tcp.BytesDeserializer.readStats;
 
 class SystemTcpClient implements SystemClient {
 
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/TopicsTcpClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/TopicsTcpClient.java
index c3e6da8fe..01e7e8667 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/TopicsTcpClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/TopicsTcpClient.java
@@ -26,13 +26,17 @@ import org.apache.iggy.identifier.TopicId;
 import org.apache.iggy.topic.CompressionAlgorithm;
 import org.apache.iggy.topic.Topic;
 import org.apache.iggy.topic.TopicDetails;
+
 import java.math.BigInteger;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
+
 import static org.apache.iggy.client.blocking.tcp.BytesDeserializer.readTopic;
 import static org.apache.iggy.client.blocking.tcp.BytesDeserializer.readTopicDetails;
-import static org.apache.iggy.client.blocking.tcp.BytesSerializer.*;
+import static org.apache.iggy.client.blocking.tcp.BytesSerializer.nameToBytes;
+import static org.apache.iggy.client.blocking.tcp.BytesSerializer.toBytes;
+import static org.apache.iggy.client.blocking.tcp.BytesSerializer.toBytesAsU64;
 
 class TopicsTcpClient implements TopicsClient {
 
@@ -65,7 +69,14 @@ class TopicsTcpClient implements TopicsClient {
     }
 
     @Override
-    public TopicDetails createTopic(StreamId streamId, Long partitionsCount, CompressionAlgorithm compressionAlgorithm, BigInteger messageExpiry, BigInteger maxTopicSize, Optional<Short> replicationFactor, String name) {
+    public TopicDetails createTopic(
+            StreamId streamId,
+            Long partitionsCount,
+            CompressionAlgorithm compressionAlgorithm,
+            BigInteger messageExpiry,
+            BigInteger maxTopicSize,
+            Optional<Short> replicationFactor,
+            String name) {
         var streamIdBytes = toBytes(streamId);
         var payload = Unpooled.buffer(23 + streamIdBytes.readableBytes() + name.length());
 
@@ -82,13 +93,14 @@ class TopicsTcpClient implements TopicsClient {
     }
 
     @Override
-    public void updateTopic(StreamId streamId,
-                            TopicId topicId,
-                            CompressionAlgorithm compressionAlgorithm,
-                            BigInteger messageExpiry,
-                            BigInteger maxTopicSize,
-                            Optional<Short> replicationFactor,
-                            String name) {
+    public void updateTopic(
+            StreamId streamId,
+            TopicId topicId,
+            CompressionAlgorithm compressionAlgorithm,
+            BigInteger messageExpiry,
+            BigInteger maxTopicSize,
+            Optional<Short> replicationFactor,
+            String name) {
         var payload = Unpooled.buffer();
         payload.writeBytes(toBytes(streamId));
         payload.writeBytes(toBytes(topicId));
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/UsersTcpClient.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/UsersTcpClient.java
index 2bff56c44..f8954f100 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/UsersTcpClient.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/client/blocking/tcp/UsersTcpClient.java
@@ -27,9 +27,11 @@ import org.apache.iggy.user.Permissions;
 import org.apache.iggy.user.UserInfo;
 import org.apache.iggy.user.UserInfoDetails;
 import org.apache.iggy.user.UserStatus;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
+
 import static org.apache.iggy.client.blocking.tcp.BytesDeserializer.readUserInfoDetails;
 import static org.apache.iggy.client.blocking.tcp.BytesSerializer.nameToBytes;
 import static org.apache.iggy.client.blocking.tcp.BytesSerializer.toBytes;
@@ -63,17 +65,20 @@ class UsersTcpClient implements UsersClient {
     }
 
     @Override
-    public UserInfoDetails createUser(String username, String password, UserStatus status, Optional<Permissions> permissions) {
+    public UserInfoDetails createUser(
+            String username, String password, UserStatus status, Optional<Permissions> permissions) {
         var payload = Unpooled.buffer();
         payload.writeBytes(nameToBytes(username));
         payload.writeBytes(nameToBytes(password));
         payload.writeByte(status.asCode());
-        permissions.ifPresentOrElse(perms -> {
-            payload.writeByte(1);
-            var permissionBytes = toBytes(perms);
-            payload.writeIntLE(permissionBytes.readableBytes());
-            payload.writeBytes(permissionBytes);
-        }, () -> payload.writeByte(0));
+        permissions.ifPresentOrElse(
+                perms -> {
+                    payload.writeByte(1);
+                    var permissionBytes = toBytes(perms);
+                    payload.writeIntLE(permissionBytes.readableBytes());
+                    payload.writeBytes(permissionBytes);
+                },
+                () -> payload.writeByte(0));
 
         var response = tcpClient.send(CommandCode.User.CREATE, payload);
         return readUserInfoDetails(response);
@@ -88,14 +93,18 @@ class UsersTcpClient implements UsersClient {
     @Override
     public void updateUser(UserId userId, Optional<String> usernameOptional, Optional<UserStatus> statusOptional) {
         var payload = toBytes(userId);
-        usernameOptional.ifPresentOrElse((username) -> {
-            payload.writeByte(1);
-            payload.writeBytes(nameToBytes(username));
-        }, () -> payload.writeByte(0));
-        statusOptional.ifPresentOrElse((status) -> {
-            payload.writeByte(1);
-            payload.writeByte(status.asCode());
-        }, () -> payload.writeByte(0));
+        usernameOptional.ifPresentOrElse(
+                (username) -> {
+                    payload.writeByte(1);
+                    payload.writeBytes(nameToBytes(username));
+                },
+                () -> payload.writeByte(0));
+        statusOptional.ifPresentOrElse(
+                (status) -> {
+                    payload.writeByte(1);
+                    payload.writeByte(status.asCode());
+                },
+                () -> payload.writeByte(0));
 
         tcpClient.send(CommandCode.User.UPDATE, payload);
     }
@@ -104,12 +113,14 @@ class UsersTcpClient implements UsersClient {
     public void updatePermissions(UserId userId, Optional<Permissions> permissionsOptional) {
         var payload = toBytes(userId);
 
-        permissionsOptional.ifPresentOrElse(permissions -> {
-            payload.writeByte(1);
-            var permissionBytes = toBytes(permissions);
-            payload.writeIntLE(permissionBytes.readableBytes());
-            payload.writeBytes(permissionBytes);
-        }, () -> payload.writeByte(0));
+        permissionsOptional.ifPresentOrElse(
+                permissions -> {
+                    payload.writeByte(1);
+                    var permissionBytes = toBytes(permissions);
+                    payload.writeIntLE(permissionBytes.readableBytes());
+                    payload.writeBytes(permissionBytes);
+                },
+                () -> payload.writeByte(0));
 
         tcpClient.send(CommandCode.User.UPDATE_PERMISSIONS, payload);
     }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/consumergroup/Consumer.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/consumergroup/Consumer.java
index b0c13055e..9195952ae 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/consumergroup/Consumer.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/consumergroup/Consumer.java
@@ -52,6 +52,5 @@ public record Consumer(Kind kind, ConsumerId id) {
         public int asCode() {
             return code;
         }
-
     }
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/consumergroup/ConsumerGroup.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/consumergroup/ConsumerGroup.java
index 2daed8600..b3ba9bb88 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/consumergroup/ConsumerGroup.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/consumergroup/ConsumerGroup.java
@@ -19,10 +19,4 @@
 
 package org.apache.iggy.consumergroup;
 
-public record ConsumerGroup(
-        Long id,
-        String name,
-        Long partitionsCount,
-        Long membersCount
-) {
-}
+public record ConsumerGroup(Long id, String name, Long partitionsCount, Long membersCount) {}
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/consumergroup/ConsumerGroupDetails.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/consumergroup/ConsumerGroupDetails.java
index 529e56b3b..c3452d745 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/consumergroup/ConsumerGroupDetails.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/consumergroup/ConsumerGroupDetails.java
@@ -22,14 +22,10 @@ package org.apache.iggy.consumergroup;
 import java.util.List;
 
 public record ConsumerGroupDetails(
-        Long id,
-        String name,
-        Long partitionsCount,
-        Long membersCount,
-        List<ConsumerGroupMember> members
-) {
+        Long id, String name, Long partitionsCount, Long membersCount, List<ConsumerGroupMember> members) {
     public ConsumerGroupDetails(ConsumerGroup consumerGroup, List<ConsumerGroupMember> members) {
-        this(consumerGroup.id(),
+        this(
+                consumerGroup.id(),
                 consumerGroup.name(),
                 consumerGroup.partitionsCount(),
                 consumerGroup.membersCount(),
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/consumergroup/ConsumerGroupMember.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/consumergroup/ConsumerGroupMember.java
index b1b07c2a0..9e3b86b0a 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/consumergroup/ConsumerGroupMember.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/consumergroup/ConsumerGroupMember.java
@@ -21,9 +21,4 @@ package org.apache.iggy.consumergroup;
 
 import java.util.List;
 
-public record ConsumerGroupMember(
-        Long id,
-        Long partitionsCount,
-        List<Long> partitions
-) {
-}
+public record ConsumerGroupMember(Long id, Long partitionsCount, List<Long> partitions) {}
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/consumeroffset/ConsumerOffsetInfo.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/consumeroffset/ConsumerOffsetInfo.java
index 32e498b1e..efb18a54d 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/consumeroffset/ConsumerOffsetInfo.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/consumeroffset/ConsumerOffsetInfo.java
@@ -21,9 +21,4 @@ package org.apache.iggy.consumeroffset;
 
 import java.math.BigInteger;
 
-public record ConsumerOffsetInfo(
-        Long partitionId,
-        BigInteger currentOffset,
-        BigInteger storedOffset
-) {
-}
+public record ConsumerOffsetInfo(Long partitionId, BigInteger currentOffset, BigInteger storedOffset) {}
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/identifier/ConsumerId.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/identifier/ConsumerId.java
index 1857c09da..c899a268e 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/identifier/ConsumerId.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/identifier/ConsumerId.java
@@ -21,7 +21,7 @@ package org.apache.iggy.identifier;
 
 import javax.annotation.Nullable;
 
-public class ConsumerId extends Identifier {
+public final class ConsumerId extends Identifier {
 
     private ConsumerId(@Nullable String name, @Nullable Long id) {
         super(name, id);
@@ -34,5 +34,4 @@ public class ConsumerId extends Identifier {
     public static ConsumerId of(Long id) {
         return new ConsumerId(null, id);
     }
-
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/identifier/Identifier.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/identifier/Identifier.java
index a1b6367ec..ac5c31b14 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/identifier/Identifier.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/identifier/Identifier.java
@@ -20,6 +20,7 @@
 package org.apache.iggy.identifier;
 
 import org.apache.commons.lang3.StringUtils;
+
 import javax.annotation.Nullable;
 
 public abstract class Identifier {
@@ -75,6 +76,4 @@ public abstract class Identifier {
             return 2 + name.length();
         }
     }
-
 }
-
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/identifier/StreamId.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/identifier/StreamId.java
index 6bf2d6cf4..169b0f60f 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/identifier/StreamId.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/identifier/StreamId.java
@@ -21,7 +21,7 @@ package org.apache.iggy.identifier;
 
 import javax.annotation.Nullable;
 
-public class StreamId extends Identifier {
+public final class StreamId extends Identifier {
 
     private StreamId(@Nullable String name, @Nullable Long id) {
         super(name, id);
@@ -34,5 +34,4 @@ public class StreamId extends Identifier {
     public static StreamId of(Long id) {
         return new StreamId(null, id);
     }
-
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/identifier/TopicId.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/identifier/TopicId.java
index 2f2b0d4ca..079286418 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/identifier/TopicId.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/identifier/TopicId.java
@@ -21,7 +21,7 @@ package org.apache.iggy.identifier;
 
 import javax.annotation.Nullable;
 
-public class TopicId extends Identifier {
+public final class TopicId extends Identifier {
 
     private TopicId(@Nullable String name, @Nullable Long id) {
         super(name, id);
@@ -34,5 +34,4 @@ public class TopicId extends Identifier {
     public static TopicId of(Long id) {
         return new TopicId(null, id);
     }
-
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/identifier/UserId.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/identifier/UserId.java
index f3511b8a7..0ec8f544f 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/identifier/UserId.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/identifier/UserId.java
@@ -21,7 +21,7 @@ package org.apache.iggy.identifier;
 
 import javax.annotation.Nullable;
 
-public class UserId extends Identifier {
+public final class UserId extends Identifier {
 
     private UserId(@Nullable String name, @Nullable Long id) {
         super(name, id);
@@ -34,5 +34,4 @@ public class UserId extends Identifier {
     public static UserId of(Long id) {
         return new UserId(null, id);
     }
-
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/BigIntegerMessageId.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/BigIntegerMessageId.java
index d4399b906..8e1b16691 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/BigIntegerMessageId.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/BigIntegerMessageId.java
@@ -21,6 +21,7 @@ package org.apache.iggy.message;
 
 import io.netty.buffer.ByteBuf;
 import org.apache.iggy.client.blocking.tcp.BytesSerializer;
+
 import java.math.BigInteger;
 
 public class BigIntegerMessageId implements MessageId {
@@ -49,5 +50,4 @@ public class BigIntegerMessageId implements MessageId {
     public String toString() {
         return value.toString();
     }
-
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/BytesMessageId.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/BytesMessageId.java
index 0067be9ba..f1e737c46 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/BytesMessageId.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/BytesMessageId.java
@@ -21,6 +21,7 @@ package org.apache.iggy.message;
 
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.Unpooled;
+
 import java.math.BigInteger;
 import java.util.Arrays;
 
@@ -49,5 +50,4 @@ public class BytesMessageId implements MessageId {
     public String toString() {
         return Arrays.toString(value);
     }
-
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/HeaderValue.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/HeaderValue.java
index f7435d887..3714dd27e 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/HeaderValue.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/HeaderValue.java
@@ -19,5 +19,4 @@
 
 package org.apache.iggy.message;
 
-public record HeaderValue(HeaderKind kind, String value) {
-}
+public record HeaderValue(HeaderKind kind, String value) {}
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/Message.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/Message.java
index 9c069445f..3f69ebcf8 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/Message.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/Message.java
@@ -23,16 +23,17 @@ import java.math.BigInteger;
 import java.util.Map;
 import java.util.Optional;
 
-public record Message(
-        MessageHeader header,
-        byte[] payload,
-        Optional<Map<String, HeaderValue>> userHeaders
-) {
+public record Message(MessageHeader header, byte[] payload, Optional<Map<String, HeaderValue>> userHeaders) {
 
     public static Message of(String payload) {
         final byte[] payloadBytes = payload.getBytes();
-        final MessageHeader msgHeader = new MessageHeader(BigInteger.ZERO, MessageId.serverGenerated(),
-                BigInteger.ZERO, BigInteger.ZERO, BigInteger.ZERO, 0L,
+        final MessageHeader msgHeader = new MessageHeader(
+                BigInteger.ZERO,
+                MessageId.serverGenerated(),
+                BigInteger.ZERO,
+                BigInteger.ZERO,
+                BigInteger.ZERO,
+                0L,
                 (long) payloadBytes.length);
         return new Message(msgHeader, payloadBytes, Optional.empty());
     }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/MessageHeader.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/MessageHeader.java
index 9f4583d76..a0867988f 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/MessageHeader.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/MessageHeader.java
@@ -22,14 +22,13 @@ package org.apache.iggy.message;
 import java.math.BigInteger;
 
 public record MessageHeader(
-    BigInteger checksum,
-    MessageId id,
-    BigInteger offset,
-    BigInteger timestamp,
-    BigInteger originTimestamp,
-    Long userHeadersLength,
-    Long payloadLength
-) {
+        BigInteger checksum,
+        MessageId id,
+        BigInteger offset,
+        BigInteger timestamp,
+        BigInteger originTimestamp,
+        Long userHeadersLength,
+        Long payloadLength) {
 
-  public static final int SIZE = 8 + 16 + 8 + 8 + 8 + 4 + 4;
+    public static final int SIZE = 8 + 16 + 8 + 8 + 8 + 4 + 4;
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/MessageId.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/MessageId.java
index babfb1605..fafcf49e5 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/MessageId.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/MessageId.java
@@ -22,6 +22,7 @@ package org.apache.iggy.message;
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonValue;
 import io.netty.buffer.ByteBuf;
+
 import java.math.BigInteger;
 
 public interface MessageId {
@@ -39,5 +40,4 @@ public interface MessageId {
     BigInteger toBigInteger();
 
     ByteBuf toBytes();
-
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/Partitioning.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/Partitioning.java
index 452c0a08e..424fc78c3 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/Partitioning.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/Partitioning.java
@@ -20,15 +20,13 @@
 package org.apache.iggy.message;
 
 import org.apache.commons.lang3.ArrayUtils;
+
 import java.nio.ByteBuffer;
 
-public record Partitioning(
-        PartitioningKind kind,
-        byte[] value
-) {
+public record Partitioning(PartitioningKind kind, byte[] value) {
 
     public static Partitioning balanced() {
-        return new Partitioning(PartitioningKind.Balanced, new byte[]{});
+        return new Partitioning(PartitioningKind.Balanced, new byte[] {});
     }
 
     public static Partitioning partitionId(Long id) {
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/PolledMessages.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/PolledMessages.java
index bb037fe95..2b219cd06 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/PolledMessages.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/PolledMessages.java
@@ -22,10 +22,4 @@ package org.apache.iggy.message;
 import java.math.BigInteger;
 import java.util.List;
 
-public record PolledMessages(
-        Long partitionId,
-        BigInteger currentOffset,
-        Long count,
-        List<Message> messages
-) {
-}
+public record PolledMessages(Long partitionId, BigInteger currentOffset, Long count, List<Message> messages) {}
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/PollingStrategy.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/PollingStrategy.java
index 53cf67f6a..5965e1deb 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/PollingStrategy.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/PollingStrategy.java
@@ -42,5 +42,4 @@ public record PollingStrategy(PollingKind kind, BigInteger value) {
     public static PollingStrategy next() {
         return new PollingStrategy(PollingKind.Next, BigInteger.ZERO);
     }
-
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/UuidMessageId.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/UuidMessageId.java
index d88074390..30bbf0bdc 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/UuidMessageId.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/message/UuidMessageId.java
@@ -21,6 +21,7 @@ package org.apache.iggy.message;
 
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.Unpooled;
+
 import java.math.BigInteger;
 import java.nio.ByteBuffer;
 import java.util.UUID;
@@ -52,5 +53,4 @@ public class UuidMessageId implements MessageId {
     public String toString() {
         return value.toString();
     }
-
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/partition/Partition.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/partition/Partition.java
index 502875852..a9af268a3 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/partition/Partition.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/partition/Partition.java
@@ -27,6 +27,4 @@ public record Partition(
         Long segmentsCount,
         BigInteger currentOffset,
         String size,
-        BigInteger messagesCount
-) {
-}
+        BigInteger messagesCount) {}
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/personalaccesstoken/PersonalAccessTokenInfo.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/personalaccesstoken/PersonalAccessTokenInfo.java
index 99d0e4854..26bf18dc0 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/personalaccesstoken/PersonalAccessTokenInfo.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/personalaccesstoken/PersonalAccessTokenInfo.java
@@ -22,5 +22,4 @@ package org.apache.iggy.personalaccesstoken;
 import java.math.BigInteger;
 import java.util.Optional;
 
-public record PersonalAccessTokenInfo(String name, Optional<BigInteger> expiryAt) {
-}
+public record PersonalAccessTokenInfo(String name, Optional<BigInteger> expiryAt) {}
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/personalaccesstoken/RawPersonalAccessToken.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/personalaccesstoken/RawPersonalAccessToken.java
index a1aa82e4f..4cf0ba31a 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/personalaccesstoken/RawPersonalAccessToken.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/personalaccesstoken/RawPersonalAccessToken.java
@@ -19,5 +19,4 @@
 
 package org.apache.iggy.personalaccesstoken;
 
-public record RawPersonalAccessToken(String token) {
-}
+public record RawPersonalAccessToken(String token) {}
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/stream/StreamBase.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/stream/StreamBase.java
index e6bb9c021..4efc17f35 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/stream/StreamBase.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/stream/StreamBase.java
@@ -22,11 +22,4 @@ package org.apache.iggy.stream;
 import java.math.BigInteger;
 
 public record StreamBase(
-        Long id,
-        BigInteger createdAt,
-        String name,
-        String size,
-        BigInteger messagesCount,
-        Long topicsCount
-) {
-}
+        Long id, BigInteger createdAt, String name, String size, BigInteger messagesCount, Long topicsCount) {}
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/stream/StreamDetails.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/stream/StreamDetails.java
index 6222e8e91..732ec499b 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/stream/StreamDetails.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/stream/StreamDetails.java
@@ -20,6 +20,7 @@
 package org.apache.iggy.stream;
 
 import org.apache.iggy.topic.Topic;
+
 import java.math.BigInteger;
 import java.util.List;
 
@@ -30,8 +31,7 @@ public record StreamDetails(
         String size,
         BigInteger messagesCount,
         Long topicsCount,
-        List<Topic> topics
-) {
+        List<Topic> topics) {
     public StreamDetails(StreamBase base, List<Topic> topics) {
         this(base.id(), base.createdAt(), base.name(), base.size(), base.messagesCount(), base.topicsCount(), topics);
     }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/system/ClientInfo.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/system/ClientInfo.java
index 6e78aadaa..bd2a9f582 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/system/ClientInfo.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/system/ClientInfo.java
@@ -22,10 +22,4 @@ package org.apache.iggy.system;
 import java.util.Optional;
 
 public record ClientInfo(
-        Long clientId,
-        Optional<Long> userId,
-        String address,
-        String transport,
-        Long consumerGroupsCount
-) {
-}
+        Long clientId, Optional<Long> userId, String address, String transport, Long consumerGroupsCount) {}
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/system/ClientInfoDetails.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/system/ClientInfoDetails.java
index 1078d7c15..f87b69d70 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/system/ClientInfoDetails.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/system/ClientInfoDetails.java
@@ -29,9 +29,14 @@ public record ClientInfoDetails(
         String address,
         String transport,
         Long consumerGroupsCount,
-        List<ConsumerGroupInfo> consumerGroups
-) {
+        List<ConsumerGroupInfo> consumerGroups) {
     public ClientInfoDetails(ClientInfo clientInfo, ArrayList<ConsumerGroupInfo> consumerGroups) {
-        this(clientInfo.clientId(), clientInfo.userId(), clientInfo.address(), clientInfo.transport(), clientInfo.consumerGroupsCount(), consumerGroups);
+        this(
+                clientInfo.clientId(),
+                clientInfo.userId(),
+                clientInfo.address(),
+                clientInfo.transport(),
+                clientInfo.consumerGroupsCount(),
+                consumerGroups);
     }
 }
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/system/ConsumerGroupInfo.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/system/ConsumerGroupInfo.java
index c7f189625..5e4f00136 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/system/ConsumerGroupInfo.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/system/ConsumerGroupInfo.java
@@ -19,9 +19,4 @@
 
 package org.apache.iggy.system;
 
-public record ConsumerGroupInfo(
-        Long streamId,
-        Long topicId,
-        Long consumerGroupId
-) {
-}
+public record ConsumerGroupInfo(Long streamId, Long topicId, Long consumerGroupId) {}
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/system/Stats.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/system/Stats.java
index 4811f08f3..906e37c9d 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/system/Stats.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/system/Stats.java
@@ -43,6 +43,4 @@ public record Stats(
         String hostname,
         String osName,
         String osVersion,
-        String kernelVersion
-) {
-}
+        String kernelVersion) {}
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/topic/Topic.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/topic/Topic.java
index 3a79a93e2..f6a1ef7cf 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/topic/Topic.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/topic/Topic.java
@@ -31,6 +31,4 @@ public record Topic(
         BigInteger maxTopicSize,
         Short replicationFactor,
         BigInteger messagesCount,
-        Long partitionsCount
-) {
-}
+        Long partitionsCount) {}
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/topic/TopicDetails.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/topic/TopicDetails.java
index 87eb53c13..1ab20ef68 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/topic/TopicDetails.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/topic/TopicDetails.java
@@ -20,6 +20,7 @@
 package org.apache.iggy.topic;
 
 import org.apache.iggy.partition.Partition;
+
 import java.math.BigInteger;
 import java.util.List;
 
@@ -34,10 +35,10 @@ public record TopicDetails(
         Short replicationFactor,
         BigInteger messagesCount,
         Long partitionsCount,
-        List<Partition> partitions
-) {
+        List<Partition> partitions) {
     public TopicDetails(Topic topic, List<Partition> partitions) {
-        this(topic.id(),
+        this(
+                topic.id(),
                 topic.createdAt(),
                 topic.name(),
                 topic.size(),
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/user/GlobalPermissions.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/user/GlobalPermissions.java
index bfb24c619..b59efc21f 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/user/GlobalPermissions.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/user/GlobalPermissions.java
@@ -29,6 +29,4 @@ public record GlobalPermissions(
         boolean manageTopics,
         boolean readTopics,
         boolean pollMessages,
-        boolean sendMessages
-) {
-}
+        boolean sendMessages) {}
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/user/IdentityInfo.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/user/IdentityInfo.java
index fa6a2c8c2..fd5e786e0 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/user/IdentityInfo.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/user/IdentityInfo.java
@@ -21,5 +21,4 @@ package org.apache.iggy.user;
 
 import java.util.Optional;
 
-public record IdentityInfo(Long userId, Optional<TokenInfo> accessToken) {
-}
+public record IdentityInfo(Long userId, Optional<TokenInfo> accessToken) {}
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/user/Permissions.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/user/Permissions.java
index 3cfe9608c..4fc72e9f8 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/user/Permissions.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/user/Permissions.java
@@ -21,11 +21,8 @@ package org.apache.iggy.user;
 
 import com.fasterxml.jackson.annotation.JsonSetter;
 import com.fasterxml.jackson.annotation.Nulls;
+
 import java.util.Map;
 
 public record Permissions(
-        GlobalPermissions global,
-        @JsonSetter(nulls = Nulls.AS_EMPTY)
-        Map<Long, StreamPermissions> streams
-) {
-}
+        GlobalPermissions global, @JsonSetter(nulls = Nulls.AS_EMPTY) Map<Long, StreamPermissions> streams) {}
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/user/StreamPermissions.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/user/StreamPermissions.java
index 18de93a44..1b64e9ada 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/user/StreamPermissions.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/user/StreamPermissions.java
@@ -21,6 +21,7 @@ package org.apache.iggy.user;
 
 import com.fasterxml.jackson.annotation.JsonSetter;
 import com.fasterxml.jackson.annotation.Nulls;
+
 import java.util.Map;
 
 public record StreamPermissions(
@@ -30,7 +31,4 @@ public record StreamPermissions(
         boolean readTopics,
         boolean pollMessages,
         boolean sendMessages,
-        @JsonSetter(nulls = Nulls.AS_EMPTY)
-        Map<Long, TopicPermissions> topics
-) {
-}
+        @JsonSetter(nulls = Nulls.AS_EMPTY) Map<Long, TopicPermissions> topics) {}
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/user/TokenInfo.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/user/TokenInfo.java
index 21dc22f4d..2979b3fa8 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/user/TokenInfo.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/user/TokenInfo.java
@@ -21,5 +21,4 @@ package org.apache.iggy.user;
 
 import java.math.BigInteger;
 
-public record TokenInfo(String token, BigInteger expiry) {
-}
+public record TokenInfo(String token, BigInteger expiry) {}
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/user/TopicPermissions.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/user/TopicPermissions.java
index f28d4be9f..abb712da3 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/user/TopicPermissions.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/user/TopicPermissions.java
@@ -19,10 +19,4 @@
 
 package org.apache.iggy.user;
 
-public record TopicPermissions(
-        boolean manageTopic,
-        boolean readTopic,
-        boolean pollMessages,
-        boolean sendMessages
-) {
-}
+public record TopicPermissions(boolean manageTopic, boolean readTopic, boolean pollMessages, boolean sendMessages) {}
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/user/UserInfo.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/user/UserInfo.java
index 14979ee18..484fd8a1c 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/user/UserInfo.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/user/UserInfo.java
@@ -21,10 +21,4 @@ package org.apache.iggy.user;
 
 import java.math.BigInteger;
 
-public record UserInfo(
-        Long id,
-        BigInteger createdAt,
-        UserStatus status,
-        String username
-) {
-}
+public record UserInfo(Long id, BigInteger createdAt, UserStatus status, String username) {}
diff --git a/foreign/java/java-sdk/src/main/java/org/apache/iggy/user/UserInfoDetails.java b/foreign/java/java-sdk/src/main/java/org/apache/iggy/user/UserInfoDetails.java
index a59c0c23e..f1f5e19f3 100644
--- a/foreign/java/java-sdk/src/main/java/org/apache/iggy/user/UserInfoDetails.java
+++ b/foreign/java/java-sdk/src/main/java/org/apache/iggy/user/UserInfoDetails.java
@@ -23,12 +23,7 @@ import java.math.BigInteger;
 import java.util.Optional;
 
 public record UserInfoDetails(
-        Long id,
-        BigInteger createdAt,
-        UserStatus status,
-        String username,
-        Optional<Permissions> permissions
-) {
+        Long id, BigInteger createdAt, UserStatus status, String username, Optional<Permissions> permissions) {
     public UserInfoDetails(UserInfo userInfo, Optional<Permissions> permissions) {
         this(userInfo.id(), userInfo.createdAt(), userInfo.status(), userInfo.username(), permissions);
     }
diff --git a/foreign/java/java-sdk/src/test/java/org/apache/iggy/IggyTest.java b/foreign/java/java-sdk/src/test/java/org/apache/iggy/IggyTest.java
index a3c001ae7..f1b3fb197 100644
--- a/foreign/java/java-sdk/src/test/java/org/apache/iggy/IggyTest.java
+++ b/foreign/java/java-sdk/src/test/java/org/apache/iggy/IggyTest.java
@@ -19,8 +19,9 @@
 
 package org.apache.iggy;
 
-import org.junit.jupiter.api.Test;
 import org.apache.iggy.client.blocking.http.IggyHttpClient;
+import org.junit.jupiter.api.Test;
+
 import static org.assertj.core.api.Assertions.assertThat;
 
 class IggyTest {
@@ -29,11 +30,8 @@ class IggyTest {
     void test() {
         var baseClient = new IggyHttpClient("http://localhost:8080");
 
-        var client = Iggy.clientBuilder()
-                .withBaseClient(baseClient)
-                .build();
+        var client = Iggy.clientBuilder().withBaseClient(baseClient).build();
 
         assertThat(client).isNotNull();
     }
-
 }
diff --git a/foreign/java/java-sdk/src/test/java/org/apache/iggy/TestConstants.java b/foreign/java/java-sdk/src/test/java/org/apache/iggy/TestConstants.java
index 0cb6a6b37..1c31c9adb 100644
--- a/foreign/java/java-sdk/src/test/java/org/apache/iggy/TestConstants.java
+++ b/foreign/java/java-sdk/src/test/java/org/apache/iggy/TestConstants.java
@@ -24,10 +24,8 @@ import org.apache.iggy.identifier.TopicId;
 
 public final class TestConstants {
 
-    private TestConstants() {
-    }
+    private TestConstants() {}
 
     public static final StreamId STREAM_NAME = StreamId.of("test-stream");
     public static final TopicId TOPIC_NAME = TopicId.of("test-topic");
-
 }
diff --git a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/async/AsyncClientIntegrationTest.java b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/async/AsyncClientIntegrationTest.java
index 537da95c4..931b4b629 100644
--- a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/async/AsyncClientIntegrationTest.java
+++ b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/async/AsyncClientIntegrationTest.java
@@ -27,7 +27,12 @@ import org.apache.iggy.message.Message;
 import org.apache.iggy.message.Partitioning;
 import org.apache.iggy.message.PollingStrategy;
 import org.apache.iggy.topic.CompressionAlgorithm;
-import org.junit.jupiter.api.*;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.MethodOrderer;
+import org.junit.jupiter.api.Order;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestMethodOrder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -40,7 +45,6 @@ import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.TimeUnit;
 
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 /**
  * Integration test for the complete async client flow.
@@ -83,8 +87,7 @@ class AsyncClientIntegrationTest {
 
         try {
             // Clean up test stream if it exists
-            client.streams().deleteStreamAsync(StreamId.of(TEST_STREAM))
-                    .get(5, TimeUnit.SECONDS);
+            client.streams().deleteStreamAsync(StreamId.of(TEST_STREAM)).get(5, TimeUnit.SECONDS);
             logger.info("Deleted test stream: {}", TEST_STREAM);
         } catch (Exception e) {
             // Stream may not exist, which is fine
@@ -103,9 +106,7 @@ class AsyncClientIntegrationTest {
     public void testCreateStream() throws Exception {
         logger.info("Testing stream creation");
 
-        var streamDetails = client.streams()
-                .createStreamAsync(TEST_STREAM)
-                .get(5, TimeUnit.SECONDS);
+        var streamDetails = client.streams().createStreamAsync(TEST_STREAM).get(5, TimeUnit.SECONDS);
 
         assertThat(streamDetails).isNotNull();
         assertThat(streamDetails.name()).isEqualTo(TEST_STREAM);
@@ -117,9 +118,8 @@ class AsyncClientIntegrationTest {
     public void testGetStream() throws Exception {
         logger.info("Testing stream retrieval");
 
-        var streamOpt = client.streams()
-                .getStreamAsync(StreamId.of(TEST_STREAM))
-                .get(5, TimeUnit.SECONDS);
+        var streamOpt =
+                client.streams().getStreamAsync(StreamId.of(TEST_STREAM)).get(5, TimeUnit.SECONDS);
 
         assertThat(streamOpt).isPresent();
         assertThat(streamOpt.get().name()).isEqualTo(TEST_STREAM);
@@ -139,15 +139,16 @@ class AsyncClientIntegrationTest {
                         BigInteger.ZERO,
                         BigInteger.ZERO,
                         Optional.empty(),
-                        TEST_TOPIC
-                )
+                        TEST_TOPIC)
                 .get(5, TimeUnit.SECONDS);
 
         assertThat(topicDetails).isNotNull();
         assertThat(topicDetails.name()).isEqualTo(TEST_TOPIC);
         assertThat(topicDetails.partitionsCount()).isEqualTo(2);
-        logger.info("Successfully created topic: {} with {} partitions",
-                topicDetails.name(), topicDetails.partitionsCount());
+        logger.info(
+                "Successfully created topic: {} with {} partitions",
+                topicDetails.name(),
+                topicDetails.partitionsCount());
     }
 
     @Test
@@ -156,10 +157,7 @@ class AsyncClientIntegrationTest {
         logger.info("Testing topic retrieval");
 
         var topicOpt = client.topics()
-                .getTopicAsync(
-                        StreamId.of(TEST_STREAM),
-                        TopicId.of(TEST_TOPIC)
-                )
+                .getTopicAsync(StreamId.of(TEST_STREAM), TopicId.of(TEST_TOPIC))
                 .get(5, TimeUnit.SECONDS);
 
         assertThat(topicOpt).isPresent();
@@ -184,8 +182,7 @@ class AsyncClientIntegrationTest {
                         StreamId.of(TEST_STREAM),
                         TopicId.of(TEST_TOPIC),
                         Partitioning.partitionId(PARTITION_ID),
-                        messages
-                )
+                        messages)
                 .get(5, TimeUnit.SECONDS);
 
         logger.info("Successfully sent {} messages", messages.size());
@@ -206,15 +203,16 @@ class AsyncClientIntegrationTest {
                         consumer, // Use valid consumer instead of null
                         PollingStrategy.offset(BigInteger.ZERO),
                         10L,
-                        false
-                )
+                        false)
                 .get(5, TimeUnit.SECONDS);
 
         assertThat(polledMessages).isNotNull();
         assertThat(polledMessages.partitionId()).isEqualTo(PARTITION_ID);
         assertThat(polledMessages.messages()).isNotEmpty();
-        logger.info("Successfully polled {} messages from partition {}",
-                polledMessages.messages().size(), polledMessages.partitionId());
+        logger.info(
+                "Successfully polled {} messages from partition {}",
+                polledMessages.messages().size(),
+                polledMessages.partitionId());
 
         // Verify message content
         for (var message : polledMessages.messages()) {
@@ -248,14 +246,12 @@ class AsyncClientIntegrationTest {
                             StreamId.of(TEST_STREAM),
                             TopicId.of(TEST_TOPIC),
                             Partitioning.partitionId(PARTITION_ID),
-                            batchMessages
-                    );
+                            batchMessages);
             sendFutures.add(future);
         }
 
         // Wait for all sends to complete
-        CompletableFuture.allOf(sendFutures.toArray(new CompletableFuture[0]))
-                .get(10, TimeUnit.SECONDS);
+        CompletableFuture.allOf(sendFutures.toArray(new CompletableFuture[0])).get(10, TimeUnit.SECONDS);
 
         logger.info("Successfully sent {} messages in batches", messageCount);
 
@@ -268,8 +264,7 @@ class AsyncClientIntegrationTest {
                         null,
                         PollingStrategy.offset(BigInteger.ZERO),
                         (long) messageCount + 10, // Poll all messages sent
-                        false
-                )
+                        false)
                 .get(5, TimeUnit.SECONDS);
 
         assertThat(polledMessages).isNotNull();
@@ -293,21 +288,18 @@ class AsyncClientIntegrationTest {
                         BigInteger.valueOf(3600000000L), // 1 hour message expiry
                         BigInteger.valueOf(1073741824L), // 1GB max size
                         Optional.empty(),
-                        TEST_TOPIC
-                )
+                        TEST_TOPIC)
                 .get(5, TimeUnit.SECONDS);
 
         // Verify the update
         var updatedTopic = client.topics()
-                .getTopicAsync(
-                        StreamId.of(TEST_STREAM),
-                        TopicId.of(TEST_TOPIC)
-                )
+                .getTopicAsync(StreamId.of(TEST_STREAM), TopicId.of(TEST_TOPIC))
                 .get(5, TimeUnit.SECONDS);
 
         assertThat(updatedTopic).isPresent();
         assertThat(updatedTopic.get().compressionAlgorithm()).isEqualTo(CompressionAlgorithm.Gzip);
-        logger.info("Successfully updated topic with compression: {}",
+        logger.info(
+                "Successfully updated topic with compression: {}",
                 updatedTopic.get().compressionAlgorithm());
     }
 
@@ -328,24 +320,17 @@ class AsyncClientIntegrationTest {
                         BigInteger.ZERO,
                         BigInteger.ZERO,
                         Optional.empty(),
-                        tempTopic
-                )
+                        tempTopic)
                 .get(5, TimeUnit.SECONDS);
 
         // Delete the topic
         client.topics()
-                .deleteTopicAsync(
-                        StreamId.of(TEST_STREAM),
-                        TopicId.of(tempTopic)
-                )
+                .deleteTopicAsync(StreamId.of(TEST_STREAM), TopicId.of(tempTopic))
                 .get(5, TimeUnit.SECONDS);
 
         // Verify deletion
         var deletedTopic = client.topics()
-                .getTopicAsync(
-                        StreamId.of(TEST_STREAM),
-                        TopicId.of(tempTopic)
-                )
+                .getTopicAsync(StreamId.of(TEST_STREAM), TopicId.of(tempTopic))
                 .get(5, TimeUnit.SECONDS);
 
         assertThat(deletedTopic).isNotPresent();
@@ -367,20 +352,19 @@ class AsyncClientIntegrationTest {
         for (int i = 0; i < 5; i++) {
             final int threadNum = i;
             var future = CompletableFuture.supplyAsync(() -> {
-                List<Message> messages = new ArrayList<>();
-                for (int j = 0; j < 20; j++) {
-                    String content = String.format("Thread %d - Message %d", threadNum, j);
-                    messages.add(Message.of(content));
-                }
-                return messages;
-            }).thenCompose(messages ->
-                    client.messages().sendMessagesAsync(
-                            StreamId.of(TEST_STREAM),
-                            TopicId.of(TEST_TOPIC),
-                            Partitioning.partitionId(PARTITION_ID),
-                            messages
-                    )
-            );
+                        List<Message> messages = new ArrayList<>();
+                        for (int j = 0; j < 20; j++) {
+                            String content = String.format("Thread %d - Message %d", threadNum, j);
+                            messages.add(Message.of(content));
+                        }
+                        return messages;
+                    })
+                    .thenCompose(messages -> client.messages()
+                            .sendMessagesAsync(
+                                    StreamId.of(TEST_STREAM),
+                                    TopicId.of(TEST_TOPIC),
+                                    Partitioning.partitionId(PARTITION_ID),
+                                    messages));
             operations.add(future);
         }
 
@@ -394,14 +378,12 @@ class AsyncClientIntegrationTest {
                             null,
                             PollingStrategy.last(),
                             10L,
-                            false
-                    );
+                            false);
             operations.add(future);
         }
 
         // Wait for all operations to complete
-        CompletableFuture.allOf(operations.toArray(new CompletableFuture[0]))
-                .get(15, TimeUnit.SECONDS);
+        CompletableFuture.allOf(operations.toArray(new CompletableFuture[0])).get(15, TimeUnit.SECONDS);
 
         logger.info("Successfully completed {} concurrent operations", operations.size());
     }
diff --git a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/async/AsyncPollMessageTest.java b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/async/AsyncPollMessageTest.java
index d03ecd660..743c86d8a 100644
--- a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/async/AsyncPollMessageTest.java
+++ b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/async/AsyncPollMessageTest.java
@@ -27,7 +27,14 @@ import org.apache.iggy.message.Message;
 import org.apache.iggy.message.Partitioning;
 import org.apache.iggy.message.PollingStrategy;
 import org.apache.iggy.topic.CompressionAlgorithm;
-import org.junit.jupiter.api.*;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.MethodOrderer;
+import org.junit.jupiter.api.Order;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestMethodOrder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -102,20 +109,20 @@ public class AsyncPollMessageTest {
 
         // Create unique stream for this test run
         TEST_STREAM = "poll-test-stream-" + UUID.randomUUID();
-        var stream = client.streams().createStreamAsync(TEST_STREAM)
-                .get(5, TimeUnit.SECONDS);
+        var stream = client.streams().createStreamAsync(TEST_STREAM).get(5, TimeUnit.SECONDS);
         logger.info("Created test stream: {}", stream.name());
 
         // Create topic with 2 partitions
-        var topic = client.topics().createTopicAsync(
-                StreamId.of(TEST_STREAM),
-                2L,
-                CompressionAlgorithm.None,
-                BigInteger.ZERO,
-                BigInteger.ZERO,
-                Optional.empty(),
-                TEST_TOPIC
-        ).get(5, TimeUnit.SECONDS);
+        var topic = client.topics()
+                .createTopicAsync(
+                        StreamId.of(TEST_STREAM),
+                        2L,
+                        CompressionAlgorithm.None,
+                        BigInteger.ZERO,
+                        BigInteger.ZERO,
+                        Optional.empty(),
+                        TEST_TOPIC)
+                .get(5, TimeUnit.SECONDS);
         logger.info("Created test topic: {} with {} partitions", topic.name(), topic.partitionsCount());
 
         // Send test messages to both partitions
@@ -125,12 +132,13 @@ public class AsyncPollMessageTest {
                     .mapToObj(i -> Message.of(String.format("Message %d for partition %d", i, partNum)))
                     .toList();
 
-            client.messages().sendMessagesAsync(
-                    StreamId.of(TEST_STREAM),
-                    TopicId.of(TEST_TOPIC),
-                    Partitioning.partitionId((long) partition),
-                    messages
-            ).get(5, TimeUnit.SECONDS);
+            client.messages()
+                    .sendMessagesAsync(
+                            StreamId.of(TEST_STREAM),
+                            TopicId.of(TEST_TOPIC),
+                            Partitioning.partitionId((long) partition),
+                            messages)
+                    .get(5, TimeUnit.SECONDS);
 
             logger.info("Sent {} messages to partition {}", MESSAGE_COUNT, partition);
         }
@@ -142,8 +150,7 @@ public class AsyncPollMessageTest {
 
         // Delete stream (cascades to topics and consumer groups)
         try {
-            client.streams().deleteStreamAsync(StreamId.of(TEST_STREAM))
-                    .get(5, TimeUnit.SECONDS);
+            client.streams().deleteStreamAsync(StreamId.of(TEST_STREAM)).get(5, TimeUnit.SECONDS);
             logger.info("Deleted test stream: {}", TEST_STREAM);
         } catch (Exception e) {
             logger.warn("Failed to delete test stream: {}", e.getMessage());
@@ -164,16 +171,18 @@ public class AsyncPollMessageTest {
 
         // This test demonstrates the issue: server doesn't respond to null consumer
         assertThatThrownBy(() -> {
-            client.messages().pollMessagesAsync(
-                    StreamId.of(TEST_STREAM),
-                    TopicId.of(TEST_TOPIC),
-                    Optional.of(PARTITION_ID),
-                    null, // NULL consumer causes server to not respond
-                    PollingStrategy.offset(BigInteger.ZERO),
-                    10L,
-                    false
-            ).get(3, TimeUnit.SECONDS);
-        }).isInstanceOf(TimeoutException.class);
+                    client.messages()
+                            .pollMessagesAsync(
+                                    StreamId.of(TEST_STREAM),
+                                    TopicId.of(TEST_TOPIC),
+                                    Optional.of(PARTITION_ID),
+                                    null, // NULL consumer causes server to not respond
+                                    PollingStrategy.offset(BigInteger.ZERO),
+                                    10L,
+                                    false)
+                            .get(3, TimeUnit.SECONDS);
+                })
+                .isInstanceOf(TimeoutException.class);
 
         logger.info("CONFIRMED: Null consumer causes timeout (server doesn't respond)");
     }
@@ -188,19 +197,21 @@ public class AsyncPollMessageTest {
         var largeIdConsumer = Consumer.of(99999L);
 
         try {
-            var polledMessages = client.messages().pollMessagesAsync(
-                    StreamId.of(TEST_STREAM),
-                    TopicId.of(TEST_TOPIC),
-                    Optional.of(PARTITION_ID),
-                    largeIdConsumer,
-                    PollingStrategy.offset(BigInteger.ZERO),
-                    10L,
-                    false
-            ).get(5, TimeUnit.SECONDS);
+            var polledMessages = client.messages()
+                    .pollMessagesAsync(
+                            StreamId.of(TEST_STREAM),
+                            TopicId.of(TEST_TOPIC),
+                            Optional.of(PARTITION_ID),
+                            largeIdConsumer,
+                            PollingStrategy.offset(BigInteger.ZERO),
+                            10L,
+                            false)
+                    .get(5, TimeUnit.SECONDS);
 
             // Server accepts any valid consumer ID format
             assertThat(polledMessages).isNotNull();
-            logger.info("Server accepted consumer ID 99999 and returned {} messages",
+            logger.info(
+                    "Server accepted consumer ID 99999 and returned {} messages",
                     polledMessages.messages().size());
         } catch (ExecutionException e) {
             logger.info("Consumer ID 99999 was rejected: {}", e.getCause().getMessage());
@@ -217,26 +228,27 @@ public class AsyncPollMessageTest {
         var consumer = Consumer.of(1L);
 
         try {
-            var polledMessages = client.messages().pollMessagesAsync(
-                    StreamId.of(TEST_STREAM),
-                    TopicId.of(TEST_TOPIC),
-                    Optional.of(PARTITION_ID),
-                    consumer,
-                    PollingStrategy.offset(BigInteger.ZERO),
-                    5L,
-                    false
-            ).get(5, TimeUnit.SECONDS);
+            var polledMessages = client.messages()
+                    .pollMessagesAsync(
+                            StreamId.of(TEST_STREAM),
+                            TopicId.of(TEST_TOPIC),
+                            Optional.of(PARTITION_ID),
+                            consumer,
+                            PollingStrategy.offset(BigInteger.ZERO),
+                            5L,
+                            false)
+                    .get(5, TimeUnit.SECONDS);
 
             assertThat(polledMessages).isNotNull();
-            logger.info("Successfully polled {} messages with consumer ID 1",
+            logger.info(
+                    "Successfully polled {} messages with consumer ID 1",
                     polledMessages.messages().size());
 
             // Log message content
-            polledMessages.messages().forEach(msg ->
-                    logger.info("  - Message: {}", new String(msg.payload()))
-            );
+            polledMessages.messages().forEach(msg -> logger.info("  - Message: {}", new String(msg.payload())));
         } catch (ExecutionException e) {
-            logger.info("Polling with consumer ID 1 failed (expected if consumer doesn't exist): {}",
+            logger.info(
+                    "Polling with consumer ID 1 failed (expected if consumer doesn't exist): {}",
                     e.getCause().getMessage());
             // This is expected if the consumer doesn't exist in the system
         }
@@ -252,22 +264,25 @@ public class AsyncPollMessageTest {
             // Try polling with a session consumer
             var sessionConsumer = Consumer.of(0L);
 
-            var polledMessages = client.messages().pollMessagesAsync(
-                    StreamId.of(TEST_STREAM),
-                    TopicId.of(TEST_TOPIC),
-                    Optional.of(PARTITION_ID),
-                    sessionConsumer,
-                    PollingStrategy.offset(BigInteger.ZERO),
-                    5L,
-                    false
-            ).get(5, TimeUnit.SECONDS);
+            var polledMessages = client.messages()
+                    .pollMessagesAsync(
+                            StreamId.of(TEST_STREAM),
+                            TopicId.of(TEST_TOPIC),
+                            Optional.of(PARTITION_ID),
+                            sessionConsumer,
+                            PollingStrategy.offset(BigInteger.ZERO),
+                            5L,
+                            false)
+                    .get(5, TimeUnit.SECONDS);
 
             assertThat(polledMessages).isNotNull();
-            logger.info("Successfully polled {} messages with session consumer",
+            logger.info(
+                    "Successfully polled {} messages with session consumer",
                     polledMessages.messages().size());
 
         } catch (ExecutionException e) {
-            logger.info("Direct partition access failed (may require consumer group): {}",
+            logger.info(
+                    "Direct partition access failed (may require consumer group): {}",
                     e.getCause().getMessage());
             // This is expected behavior if server requires consumer group membership
         }
@@ -284,16 +299,19 @@ public class AsyncPollMessageTest {
         // Test 1: Poll from beginning
         logger.info("  Testing FIRST strategy");
         try {
-            var firstMessages = client.messages().pollMessagesAsync(
-                    StreamId.of(TEST_STREAM),
-                    TopicId.of(TEST_TOPIC),
-                    Optional.of(1L),
-                    consumer,
-                    PollingStrategy.first(),
-                    3L,
-                    false
-            ).get(5, TimeUnit.SECONDS);
-            logger.info("    Polled {} messages from beginning", firstMessages.messages().size());
+            var firstMessages = client.messages()
+                    .pollMessagesAsync(
+                            StreamId.of(TEST_STREAM),
+                            TopicId.of(TEST_TOPIC),
+                            Optional.of(1L),
+                            consumer,
+                            PollingStrategy.first(),
+                            3L,
+                            false)
+                    .get(5, TimeUnit.SECONDS);
+            logger.info(
+                    "    Polled {} messages from beginning",
+                    firstMessages.messages().size());
         } catch (Exception e) {
             logger.info("    FIRST strategy failed: {}", e.getMessage());
         }
@@ -301,16 +319,19 @@ public class AsyncPollMessageTest {
         // Test 2: Poll from specific offset
         logger.info("  Testing OFFSET strategy");
         try {
-            var offsetMessages = client.messages().pollMessagesAsync(
-                    StreamId.of(TEST_STREAM),
-                    TopicId.of(TEST_TOPIC),
-                    Optional.of(1L),
-                    consumer,
-                    PollingStrategy.offset(BigInteger.valueOf(5)),
-                    3L,
-                    false
-            ).get(5, TimeUnit.SECONDS);
-            logger.info("    Polled {} messages from offset 5", offsetMessages.messages().size());
+            var offsetMessages = client.messages()
+                    .pollMessagesAsync(
+                            StreamId.of(TEST_STREAM),
+                            TopicId.of(TEST_TOPIC),
+                            Optional.of(1L),
+                            consumer,
+                            PollingStrategy.offset(BigInteger.valueOf(5)),
+                            3L,
+                            false)
+                    .get(5, TimeUnit.SECONDS);
+            logger.info(
+                    "    Polled {} messages from offset 5",
+                    offsetMessages.messages().size());
         } catch (Exception e) {
             logger.info("    OFFSET strategy failed: {}", e.getMessage());
         }
@@ -318,15 +339,16 @@ public class AsyncPollMessageTest {
         // Test 3: Poll latest messages
         logger.info("  Testing LAST strategy");
         try {
-            var lastMessages = client.messages().pollMessagesAsync(
-                    StreamId.of(TEST_STREAM),
-                    TopicId.of(TEST_TOPIC),
-                    Optional.of(1L),
-                    consumer,
-                    PollingStrategy.last(),
-                    1L,
-                    false
-            ).get(5, TimeUnit.SECONDS);
+            var lastMessages = client.messages()
+                    .pollMessagesAsync(
+                            StreamId.of(TEST_STREAM),
+                            TopicId.of(TEST_TOPIC),
+                            Optional.of(1L),
+                            consumer,
+                            PollingStrategy.last(),
+                            1L,
+                            false)
+                    .get(5, TimeUnit.SECONDS);
             logger.info("    Polled {} latest messages", lastMessages.messages().size());
         } catch (Exception e) {
             logger.info("    LAST strategy failed: {}", e.getMessage());
diff --git a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/async/tcp/AsyncIggyTcpClientBuilderTest.java b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/async/tcp/AsyncIggyTcpClientBuilderTest.java
index 76fe97cdd..ea116bdf4 100644
--- a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/async/tcp/AsyncIggyTcpClientBuilderTest.java
+++ b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/async/tcp/AsyncIggyTcpClientBuilderTest.java
@@ -19,13 +19,17 @@
 
 package org.apache.iggy.client.async.tcp;
 
-import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.Test;
+
 import java.time.Duration;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.TimeUnit;
 
-import static org.junit.jupiter.api.Assertions.*;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 /**
  * Integration tests for AsyncIggyTcpClient builder pattern.
@@ -48,10 +52,7 @@ class AsyncIggyTcpClientBuilderTest {
     @Test
     void shouldCreateClientWithBuilder() throws Exception {
         // Given: Builder with basic configuration
-        client = AsyncIggyTcpClient.builder()
-                .host(HOST)
-                .port(PORT)
-                .build();
+        client = AsyncIggyTcpClient.builder().host(HOST).port(PORT).build();
 
         // When: Connect to server
         client.connect().get(5, TimeUnit.SECONDS);
@@ -205,9 +206,8 @@ class AsyncIggyTcpClientBuilderTest {
     @Test
     void shouldThrowExceptionForEmptyHost() {
         // Given: Builder with empty host
-        AsyncIggyTcpClient.Builder builder = AsyncIggyTcpClient.builder()
-                .host("")
-                .port(PORT);
+        AsyncIggyTcpClient.Builder builder =
+                AsyncIggyTcpClient.builder().host("").port(PORT);
 
         // When/Then: Building should throw IllegalArgumentException
         assertThrows(IllegalArgumentException.class, builder::build);
@@ -216,9 +216,8 @@ class AsyncIggyTcpClientBuilderTest {
     @Test
     void shouldThrowExceptionForNullHost() {
         // Given: Builder with null host
-        AsyncIggyTcpClient.Builder builder = AsyncIggyTcpClient.builder()
-                .host(null)
-                .port(PORT);
+        AsyncIggyTcpClient.Builder builder =
+                AsyncIggyTcpClient.builder().host(null).port(PORT);
 
         // When/Then: Building should throw IllegalArgumentException
         assertThrows(IllegalArgumentException.class, builder::build);
@@ -227,9 +226,8 @@ class AsyncIggyTcpClientBuilderTest {
     @Test
     void shouldThrowExceptionForInvalidPort() {
         // Given: Builder with invalid port
-        AsyncIggyTcpClient.Builder builder = AsyncIggyTcpClient.builder()
-                .host(HOST)
-                .port(-1);
+        AsyncIggyTcpClient.Builder builder =
+                AsyncIggyTcpClient.builder().host(HOST).port(-1);
 
         // When/Then: Building should throw IllegalArgumentException
         assertThrows(IllegalArgumentException.class, builder::build);
@@ -238,9 +236,8 @@ class AsyncIggyTcpClientBuilderTest {
     @Test
     void shouldThrowExceptionForZeroPort() {
         // Given: Builder with zero port
-        AsyncIggyTcpClient.Builder builder = AsyncIggyTcpClient.builder()
-                .host(HOST)
-                .port(0);
+        AsyncIggyTcpClient.Builder builder =
+                AsyncIggyTcpClient.builder().host(HOST).port(0);
 
         // When/Then: Building should throw IllegalArgumentException
         assertThrows(IllegalArgumentException.class, builder::build);
diff --git a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/ConsumerGroupsClientBaseTest.java b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/ConsumerGroupsClientBaseTest.java
index 7dd1a24f4..00e5e1eb2 100644
--- a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/ConsumerGroupsClientBaseTest.java
+++ b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/ConsumerGroupsClientBaseTest.java
@@ -19,11 +19,12 @@
 
 package org.apache.iggy.client.blocking;
 
+import org.apache.iggy.consumergroup.ConsumerGroup;
 import org.apache.iggy.consumergroup.ConsumerGroupDetails;
+import org.apache.iggy.identifier.ConsumerId;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
-import org.apache.iggy.consumergroup.ConsumerGroup;
-import org.apache.iggy.identifier.ConsumerId;
+
 import static org.apache.iggy.TestConstants.STREAM_NAME;
 import static org.apache.iggy.TestConstants.TOPIC_NAME;
 import static org.assertj.core.api.Assertions.assertThat;
@@ -48,12 +49,10 @@ public abstract class ConsumerGroupsClientBaseTest extends IntegrationTest {
         String consumerGroupName = "consumer-group-42";
         ConsumerGroupDetails consumerGroup = createConsumerGroup(consumerGroupName);
 
-        var consumerGroupById = consumerGroupsClient.getConsumerGroup(STREAM_NAME,
-                TOPIC_NAME,
-                ConsumerId.of(consumerGroup.id()));
-        var consumerGroupByName = consumerGroupsClient.getConsumerGroup(STREAM_NAME,
-                TOPIC_NAME,
-                ConsumerId.of(consumerGroupName));
+        var consumerGroupById =
+                consumerGroupsClient.getConsumerGroup(STREAM_NAME, TOPIC_NAME, ConsumerId.of(consumerGroup.id()));
+        var consumerGroupByName =
+                consumerGroupsClient.getConsumerGroup(STREAM_NAME, TOPIC_NAME, ConsumerId.of(consumerGroupName));
 
         // then
         assertThat(consumerGroupById).isPresent();
@@ -65,11 +64,12 @@ public abstract class ConsumerGroupsClientBaseTest extends IntegrationTest {
         consumerGroupsClient.deleteConsumerGroup(STREAM_NAME, TOPIC_NAME, ConsumerId.of(consumerGroup.id()));
 
         // then
-        assertThat(consumerGroupsClient.getConsumerGroups(STREAM_NAME, TOPIC_NAME)).isEmpty();
-        assertThat(consumerGroupsClient.getConsumerGroup(STREAM_NAME, TOPIC_NAME, ConsumerId.of(consumerGroup.id()))).isEmpty();
+        assertThat(consumerGroupsClient.getConsumerGroups(STREAM_NAME, TOPIC_NAME))
+                .isEmpty();
+        assertThat(consumerGroupsClient.getConsumerGroup(STREAM_NAME, TOPIC_NAME, ConsumerId.of(consumerGroup.id())))
+                .isEmpty();
     }
 
-
     @Test
     void shouldDeleteConsumerGroupByName() {
         // given
@@ -83,7 +83,8 @@ public abstract class ConsumerGroupsClientBaseTest extends IntegrationTest {
         consumerGroupsClient.deleteConsumerGroup(STREAM_NAME, TOPIC_NAME, ConsumerId.of(groupName));
 
         // then
-        assertThat(consumerGroupsClient.getConsumerGroups(STREAM_NAME, TOPIC_NAME)).isEmpty();
+        assertThat(consumerGroupsClient.getConsumerGroups(STREAM_NAME, TOPIC_NAME))
+                .isEmpty();
     }
 
     @Test
@@ -108,5 +109,4 @@ public abstract class ConsumerGroupsClientBaseTest extends IntegrationTest {
     private ConsumerGroupDetails createConsumerGroup(String groupName) {
         return consumerGroupsClient.createConsumerGroup(STREAM_NAME, TOPIC_NAME, groupName);
     }
-
 }
diff --git a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/ConsumerOffsetsClientBaseTest.java b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/ConsumerOffsetsClientBaseTest.java
index c2817aee5..f80fc763a 100644
--- a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/ConsumerOffsetsClientBaseTest.java
+++ b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/ConsumerOffsetsClientBaseTest.java
@@ -19,12 +19,14 @@
 
 package org.apache.iggy.client.blocking;
 
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
 import org.apache.iggy.consumergroup.Consumer;
 import org.apache.iggy.identifier.ConsumerId;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
 import java.math.BigInteger;
 import java.util.Optional;
+
 import static org.apache.iggy.TestConstants.STREAM_NAME;
 import static org.apache.iggy.TestConstants.TOPIC_NAME;
 import static org.assertj.core.api.Assertions.assertThat;
@@ -45,18 +47,11 @@ public abstract class ConsumerOffsetsClientBaseTest extends IntegrationTest {
     void shouldGetConsumerOffset() {
         // when
         var consumer = new Consumer(Consumer.Kind.Consumer, ConsumerId.of(1223L));
-        consumerOffsetsClient.storeConsumerOffset(STREAM_NAME,
-                TOPIC_NAME,
-                Optional.empty(),
-                consumer,
-                BigInteger.ZERO);
-        var consumerOffset = consumerOffsetsClient.getConsumerOffset(STREAM_NAME,
-                TOPIC_NAME,
-                Optional.of(0L),
-                consumer);
+        consumerOffsetsClient.storeConsumerOffset(STREAM_NAME, TOPIC_NAME, Optional.empty(), consumer, BigInteger.ZERO);
+        var consumerOffset =
+                consumerOffsetsClient.getConsumerOffset(STREAM_NAME, TOPIC_NAME, Optional.of(0L), consumer);
 
         // then
         assertThat(consumerOffset).isPresent();
     }
-
 }
diff --git a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/IntegrationTest.java b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/IntegrationTest.java
index 14864ec3d..8e47d8b4a 100644
--- a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/IntegrationTest.java
+++ b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/IntegrationTest.java
@@ -20,19 +20,21 @@
 package org.apache.iggy.client.blocking;
 
 import org.apache.iggy.stream.StreamDetails;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.AfterEach;
+import org.apache.iggy.topic.CompressionAlgorithm;
 import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.testcontainers.containers.GenericContainer;
 import org.testcontainers.junit.jupiter.Testcontainers;
 import org.testcontainers.utility.DockerImageName;
-import org.apache.iggy.topic.CompressionAlgorithm;
+
 import java.math.BigInteger;
-import java.util.List;
 import java.util.ArrayList;
+import java.util.List;
+
 import static java.util.Optional.empty;
 import static org.apache.iggy.TestConstants.STREAM_NAME;
 import static org.apache.iggy.TestConstants.TOPIC_NAME;
@@ -125,7 +127,7 @@ public abstract class IntegrationTest {
         }
     }
 
-    abstract protected IggyBaseClient getClient();
+    protected abstract IggyBaseClient getClient();
 
     protected void setUpStream() {
         StreamDetails stream = client.streams().createStream(STREAM_NAME.getName());
@@ -135,7 +137,8 @@ public abstract class IntegrationTest {
     protected void setUpStreamAndTopic() {
         setUpStream();
         client.topics()
-                .createTopic(STREAM_NAME,
+                .createTopic(
+                        STREAM_NAME,
                         1L,
                         CompressionAlgorithm.None,
                         BigInteger.ZERO,
@@ -161,5 +164,4 @@ public abstract class IntegrationTest {
             createdUserIds.add(userId);
         }
     }
-
 }
diff --git a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/MessagesClientBaseTest.java b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/MessagesClientBaseTest.java
index 6281967e1..feacaacbf 100644
--- a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/MessagesClientBaseTest.java
+++ b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/MessagesClientBaseTest.java
@@ -26,8 +26,10 @@ import org.apache.iggy.message.PollingKind;
 import org.apache.iggy.message.PollingStrategy;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+
 import java.math.BigInteger;
 import java.util.List;
+
 import static java.util.Optional.empty;
 import static org.apache.iggy.TestConstants.STREAM_NAME;
 import static org.apache.iggy.TestConstants.TOPIC_NAME;
@@ -53,8 +55,14 @@ public abstract class MessagesClientBaseTest extends IntegrationTest {
         String text = "message from java sdk";
         messagesClient.sendMessages(STREAM_NAME, TOPIC_NAME, Partitioning.partitionId(0L), List.of(Message.of(text)));
 
-        var polledMessages = messagesClient.pollMessages(STREAM_NAME, TOPIC_NAME, empty(), Consumer.of(0L),
-                new PollingStrategy(PollingKind.Last, BigInteger.TEN), 10L, false);
+        var polledMessages = messagesClient.pollMessages(
+                STREAM_NAME,
+                TOPIC_NAME,
+                empty(),
+                Consumer.of(0L),
+                new PollingStrategy(PollingKind.Last, BigInteger.TEN),
+                10L,
+                false);
 
         // then
         assertThat(polledMessages.messages()).hasSize(1);
@@ -69,8 +77,14 @@ public abstract class MessagesClientBaseTest extends IntegrationTest {
         String text = "message from java sdk";
         messagesClient.sendMessages(STREAM_NAME, TOPIC_NAME, Partitioning.balanced(), List.of(Message.of(text)));
 
-        var polledMessages = messagesClient.pollMessages(STREAM_NAME, TOPIC_NAME, empty(), Consumer.of(0L),
-                new PollingStrategy(PollingKind.Last, BigInteger.TEN), 10L, false);
+        var polledMessages = messagesClient.pollMessages(
+                STREAM_NAME,
+                TOPIC_NAME,
+                empty(),
+                Consumer.of(0L),
+                new PollingStrategy(PollingKind.Last, BigInteger.TEN),
+                10L,
+                false);
 
         // then
         assertThat(polledMessages.messages()).hasSize(1);
@@ -83,12 +97,18 @@ public abstract class MessagesClientBaseTest extends IntegrationTest {
 
         // when
         String text = "message from java sdk";
-        messagesClient.sendMessages(STREAM_NAME, TOPIC_NAME, Partitioning.messagesKey("test-key"), List.of(Message.of(text)));
-        var polledMessages = messagesClient.pollMessages(STREAM_NAME, TOPIC_NAME, empty(), Consumer.of(0L),
-                new PollingStrategy(PollingKind.Last, BigInteger.TEN), 10L, false);
+        messagesClient.sendMessages(
+                STREAM_NAME, TOPIC_NAME, Partitioning.messagesKey("test-key"), List.of(Message.of(text)));
+        var polledMessages = messagesClient.pollMessages(
+                STREAM_NAME,
+                TOPIC_NAME,
+                empty(),
+                Consumer.of(0L),
+                new PollingStrategy(PollingKind.Last, BigInteger.TEN),
+                10L,
+                false);
 
         // then
         assertThat(polledMessages.messages()).hasSize(1);
     }
-
 }
diff --git a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/PartitionsClientBaseTest.java b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/PartitionsClientBaseTest.java
index 67ec3bddb..ea8409880 100644
--- a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/PartitionsClientBaseTest.java
+++ b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/PartitionsClientBaseTest.java
@@ -19,9 +19,10 @@
 
 package org.apache.iggy.client.blocking;
 
+import org.apache.iggy.topic.TopicDetails;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
-import org.apache.iggy.topic.TopicDetails;
+
 import static org.apache.iggy.TestConstants.STREAM_NAME;
 import static org.apache.iggy.TestConstants.TOPIC_NAME;
 import static org.assertj.core.api.Assertions.assertThat;
@@ -40,7 +41,6 @@ public abstract class PartitionsClientBaseTest extends IntegrationTest {
         setUpStreamAndTopic();
     }
 
-
     @Test
     void shouldCreateAndDeletePartitions() {
         // given
@@ -60,5 +60,4 @@ public abstract class PartitionsClientBaseTest extends IntegrationTest {
         topic = topicsClient.getTopic(STREAM_NAME, TOPIC_NAME).get();
         assertThat(topic.partitionsCount()).isEqualTo(1L);
     }
-
 }
diff --git a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/PersonalAccessTokensBaseTest.java b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/PersonalAccessTokensBaseTest.java
index 28687f0e2..188efd46b 100644
--- a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/PersonalAccessTokensBaseTest.java
+++ b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/PersonalAccessTokensBaseTest.java
@@ -19,10 +19,12 @@
 
 package org.apache.iggy.client.blocking;
 
+import org.apache.iggy.user.IdentityInfo;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
-import org.apache.iggy.user.IdentityInfo;
+
 import java.math.BigInteger;
+
 import static org.assertj.core.api.Assertions.assertThat;
 
 public abstract class PersonalAccessTokensBaseTest extends IntegrationTest {
@@ -49,8 +51,8 @@ public abstract class PersonalAccessTokensBaseTest extends IntegrationTest {
     @Test
     void shouldManagePersonalAccessTokens() {
         // when
-        var createdToken = personalAccessTokensClient.createPersonalAccessToken("new-token",
-                BigInteger.valueOf(50_000));
+        var createdToken =
+                personalAccessTokensClient.createPersonalAccessToken("new-token", BigInteger.valueOf(50_000));
 
         // then
         assertThat(createdToken).isNotNull();
@@ -73,8 +75,8 @@ public abstract class PersonalAccessTokensBaseTest extends IntegrationTest {
     @Test
     void shouldCreateAndLogInWithPersonalAccessToken() {
         // given
-        var createdToken = personalAccessTokensClient.createPersonalAccessToken("new-token",
-                BigInteger.valueOf(50_000));
+        var createdToken =
+                personalAccessTokensClient.createPersonalAccessToken("new-token", BigInteger.valueOf(50_000));
         client.users().logout();
 
         // when
@@ -92,5 +94,4 @@ public abstract class PersonalAccessTokensBaseTest extends IntegrationTest {
         // cleanup
         personalAccessTokensClient.deletePersonalAccessToken("new-token");
     }
-
 }
diff --git a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/StreamClientBaseTest.java b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/StreamClientBaseTest.java
index ee7bdef27..b2be6d3c1 100644
--- a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/StreamClientBaseTest.java
+++ b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/StreamClientBaseTest.java
@@ -19,9 +19,9 @@
 
 package org.apache.iggy.client.blocking;
 
-import org.apache.iggy.stream.StreamDetails;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+
 import static org.assertj.core.api.Assertions.assertThat;
 
 public abstract class StreamClientBaseTest extends IntegrationTest {
diff --git a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/SystemClientBaseTest.java b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/SystemClientBaseTest.java
index b5ea00869..00fc53de0 100644
--- a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/SystemClientBaseTest.java
+++ b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/SystemClientBaseTest.java
@@ -21,6 +21,7 @@ package org.apache.iggy.client.blocking;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+
 import static org.assertj.core.api.Assertions.assertThat;
 
 public abstract class SystemClientBaseTest extends IntegrationTest {
@@ -42,5 +43,4 @@ public abstract class SystemClientBaseTest extends IntegrationTest {
         // then
         assertThat(stats).isNotNull();
     }
-
 }
diff --git a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/TopicsClientBaseTest.java b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/TopicsClientBaseTest.java
index c7f68ba19..80ea9914e 100644
--- a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/TopicsClientBaseTest.java
+++ b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/TopicsClientBaseTest.java
@@ -19,11 +19,13 @@
 
 package org.apache.iggy.client.blocking;
 
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
 import org.apache.iggy.identifier.TopicId;
 import org.apache.iggy.topic.CompressionAlgorithm;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
 import java.math.BigInteger;
+
 import static java.util.Optional.empty;
 import static org.apache.iggy.TestConstants.STREAM_NAME;
 import static org.assertj.core.api.Assertions.assertThat;
@@ -43,13 +45,8 @@ public abstract class TopicsClientBaseTest extends IntegrationTest {
     @Test
     void shouldCreateAndDeleteTopic() {
         // when
-        var topicDetails = topicsClient.createTopic(STREAM_NAME,
-                1L,
-                CompressionAlgorithm.None,
-                BigInteger.ZERO,
-                BigInteger.ZERO,
-                empty(),
-                "test-topic");
+        var topicDetails = topicsClient.createTopic(
+                STREAM_NAME, 1L, CompressionAlgorithm.None, BigInteger.ZERO, BigInteger.ZERO, empty(), "test-topic");
         var topicId = TopicId.of("test-topic");
         var topicOptional = topicsClient.getTopic(STREAM_NAME, topicId);
 
@@ -68,16 +65,12 @@ public abstract class TopicsClientBaseTest extends IntegrationTest {
     @Test
     void shouldUpdateTopic() {
         // given
-        var topic = topicsClient.createTopic(STREAM_NAME,
-                1L,
-                CompressionAlgorithm.None,
-                BigInteger.ZERO,
-                BigInteger.ZERO,
-                empty(),
-                "test-topic");
+        var topic = topicsClient.createTopic(
+                STREAM_NAME, 1L, CompressionAlgorithm.None, BigInteger.ZERO, BigInteger.ZERO, empty(), "test-topic");
 
         // when
-        topicsClient.updateTopic(STREAM_NAME,
+        topicsClient.updateTopic(
+                STREAM_NAME,
                 TopicId.of(topic.id()),
                 CompressionAlgorithm.None,
                 BigInteger.valueOf(5000),
@@ -86,7 +79,8 @@ public abstract class TopicsClientBaseTest extends IntegrationTest {
                 "new-name");
 
         // then
-        var updatedTopic = topicsClient.getTopic(STREAM_NAME, TopicId.of(topic.id())).get();
+        var updatedTopic =
+                topicsClient.getTopic(STREAM_NAME, TopicId.of(topic.id())).get();
         assertThat(updatedTopic.name()).isEqualTo("new-name");
         assertThat(updatedTopic.messageExpiry()).isEqualTo(BigInteger.valueOf(5000));
     }
@@ -99,5 +93,4 @@ public abstract class TopicsClientBaseTest extends IntegrationTest {
         // then
         assertThat(topic).isEmpty();
     }
-
 }
diff --git a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/UsersClientBaseTest.java b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/UsersClientBaseTest.java
index b1117e0d4..95f376cb1 100644
--- a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/UsersClientBaseTest.java
+++ b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/UsersClientBaseTest.java
@@ -28,9 +28,11 @@ import org.apache.iggy.user.UserStatus;
 import org.jetbrains.annotations.NotNull;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+
 import java.util.Collections;
 import java.util.List;
 import java.util.Optional;
+
 import static org.assertj.core.api.Assertions.assertThat;
 
 public abstract class UsersClientBaseTest extends IntegrationTest {
@@ -70,7 +72,8 @@ public abstract class UsersClientBaseTest extends IntegrationTest {
         login();
 
         // when
-        var createdUser = usersClient.createUser("test",
+        var createdUser = usersClient.createUser(
+                "test",
                 "test",
                 UserStatus.Active,
                 Optional.of(new Permissions(createGlobalPermissions(true), Collections.emptyMap())));
@@ -78,8 +81,12 @@ public abstract class UsersClientBaseTest extends IntegrationTest {
 
         // then
         assertThat(createdUser).isNotNull();
-        assertThat(createdUser.permissions().map(Permissions::global).map(
-            GlobalPermissions::manageServers).orElse(false)).isTrue();
+        assertThat(createdUser
+                        .permissions()
+                        .map(Permissions::global)
+                        .map(GlobalPermissions::manageServers)
+                        .orElse(false))
+                .isTrue();
 
         // when
         List<UserInfo> users = usersClient.getUsers();
@@ -120,16 +127,19 @@ public abstract class UsersClientBaseTest extends IntegrationTest {
         trackUser(user.id());
 
         // when
-        usersClient.updatePermissions(user.id(), Optional.of(new Permissions(createGlobalPermissions(false), Collections.emptyMap())));
+        usersClient.updatePermissions(
+                user.id(), Optional.of(new Permissions(createGlobalPermissions(false), Collections.emptyMap())));
 
         // then
         var updatedUser = usersClient.getUser(user.id());
         assertThat(updatedUser).isPresent();
-        assertThat(updatedUser.get()
-                .permissions()
-                .map(Permissions::global)
-                .map(GlobalPermissions::manageServers)
-                .orElse(true)).isFalse();
+        assertThat(updatedUser
+                        .get()
+                        .permissions()
+                        .map(Permissions::global)
+                        .map(GlobalPermissions::manageServers)
+                        .orElse(true))
+                .isFalse();
     }
 
     @Test
@@ -164,5 +174,4 @@ public abstract class UsersClientBaseTest extends IntegrationTest {
     private static @NotNull GlobalPermissions createGlobalPermissions(boolean manageServers) {
         return new GlobalPermissions(manageServers, false, false, false, false, false, false, false, false, false);
     }
-
 }
diff --git a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/ConsumerGroupsHttpClientTest.java b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/ConsumerGroupsHttpClientTest.java
index ae6fccdea..538f3d913 100644
--- a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/ConsumerGroupsHttpClientTest.java
+++ b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/ConsumerGroupsHttpClientTest.java
@@ -28,5 +28,4 @@ class ConsumerGroupsHttpClientTest extends ConsumerGroupsClientBaseTest {
     protected IggyBaseClient getClient() {
         return HttpClientFactory.create(iggyServer);
     }
-
 }
diff --git a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/ConsumerOffsetsHttpClientTest.java b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/ConsumerOffsetsHttpClientTest.java
index b310e4dc9..deec22dc6 100644
--- a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/ConsumerOffsetsHttpClientTest.java
+++ b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/ConsumerOffsetsHttpClientTest.java
@@ -28,5 +28,4 @@ class ConsumerOffsetsHttpClientTest extends ConsumerOffsetsClientBaseTest {
     protected IggyBaseClient getClient() {
         return HttpClientFactory.create(iggyServer);
     }
-
 }
diff --git a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/HttpClientFactory.java b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/HttpClientFactory.java
index 5fb2434ad..7e63edc58 100644
--- a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/HttpClientFactory.java
+++ b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/HttpClientFactory.java
@@ -20,6 +20,7 @@
 package org.apache.iggy.client.blocking.http;
 
 import org.testcontainers.containers.GenericContainer;
+
 import static org.apache.iggy.client.blocking.IntegrationTest.HTTP_PORT;
 
 class HttpClientFactory {
@@ -33,5 +34,4 @@ class HttpClientFactory {
         Integer port = iggyServer.getMappedPort(HTTP_PORT);
         return new IggyHttpClient("http://" + address + ":" + port);
     }
-
 }
diff --git a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/MessagesHttpClientTest.java b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/MessagesHttpClientTest.java
index 8019cb60c..5e4521e5a 100644
--- a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/MessagesHttpClientTest.java
+++ b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/MessagesHttpClientTest.java
@@ -28,5 +28,4 @@ class MessagesHttpClientTest extends MessagesClientBaseTest {
     protected IggyBaseClient getClient() {
         return HttpClientFactory.create(iggyServer);
     }
-
 }
diff --git a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/PartitionsHttpClientTest.java b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/PartitionsHttpClientTest.java
index 36e43e629..9330eac25 100644
--- a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/PartitionsHttpClientTest.java
+++ b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/PartitionsHttpClientTest.java
@@ -28,5 +28,4 @@ class PartitionsHttpClientTest extends PartitionsClientBaseTest {
     protected IggyBaseClient getClient() {
         return HttpClientFactory.create(iggyServer);
     }
-
 }
diff --git a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/PersonalAccessTokensHttpClientTest.java b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/PersonalAccessTokensHttpClientTest.java
index 85a8b6866..6ea9c085b 100644
--- a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/PersonalAccessTokensHttpClientTest.java
+++ b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/PersonalAccessTokensHttpClientTest.java
@@ -28,5 +28,4 @@ class PersonalAccessTokensHttpClientTest extends PersonalAccessTokensBaseTest {
     protected IggyBaseClient getClient() {
         return HttpClientFactory.create(iggyServer);
     }
-
 }
diff --git a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/StreamHttpClientTest.java b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/StreamHttpClientTest.java
index 3ee87132e..0368d2664 100644
--- a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/StreamHttpClientTest.java
+++ b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/StreamHttpClientTest.java
@@ -28,5 +28,4 @@ class StreamHttpClientTest extends StreamClientBaseTest {
     protected IggyBaseClient getClient() {
         return HttpClientFactory.create(iggyServer);
     }
-
 }
diff --git a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/SystemHttpClientTest.java b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/SystemHttpClientTest.java
index ee0836e03..4e8610428 100644
--- a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/SystemHttpClientTest.java
+++ b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/SystemHttpClientTest.java
@@ -28,5 +28,4 @@ class SystemHttpClientTest extends SystemClientBaseTest {
     protected IggyBaseClient getClient() {
         return HttpClientFactory.create(iggyServer);
     }
-
 }
diff --git a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/TopicsHttpClientTest.java b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/TopicsHttpClientTest.java
index d7389b702..603c4499c 100644
--- a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/TopicsHttpClientTest.java
+++ b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/TopicsHttpClientTest.java
@@ -28,5 +28,4 @@ class TopicsHttpClientTest extends TopicsClientBaseTest {
     protected IggyBaseClient getClient() {
         return HttpClientFactory.create(iggyServer);
     }
-
 }
diff --git a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/UsersHttpClientTest.java b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/UsersHttpClientTest.java
index d5e86c79b..92bc68735 100644
--- a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/UsersHttpClientTest.java
+++ b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/http/UsersHttpClientTest.java
@@ -19,9 +19,10 @@
 
 package org.apache.iggy.client.blocking.http;
 
-import org.junit.jupiter.api.Test;
 import org.apache.iggy.client.blocking.IggyBaseClient;
 import org.apache.iggy.client.blocking.UsersClientBaseTest;
+import org.junit.jupiter.api.Test;
+
 import static org.assertj.core.api.Assertions.assertThat;
 
 class UsersHttpClientTest extends UsersClientBaseTest {
@@ -31,7 +32,6 @@ class UsersHttpClientTest extends UsersClientBaseTest {
         return HttpClientFactory.create(iggyServer);
     }
 
-
     @Test
     void shouldGetTokens() {
         // when
@@ -42,5 +42,4 @@ class UsersHttpClientTest extends UsersClientBaseTest {
         assertThat(identityInfo.accessToken()).isPresent();
         assertThat(identityInfo.accessToken().get().token()).isNotBlank();
     }
-
 }
diff --git a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/BytesSerializerTest.java b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/BytesSerializerTest.java
index d6e4883f5..b864e1cc6 100644
--- a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/BytesSerializerTest.java
+++ b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/BytesSerializerTest.java
@@ -23,8 +23,10 @@ import io.netty.buffer.ByteBuf;
 import io.netty.buffer.Unpooled;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
+
 import java.math.BigInteger;
 import java.util.Arrays;
+
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
@@ -67,10 +69,8 @@ class BytesSerializerTest {
             var value = BigInteger.valueOf(-1);
 
             // when & then
-            assertThatThrownBy(() -> BytesSerializer.toBytesAsU64(value))
-                    .isInstanceOf(IllegalArgumentException.class);
+            assertThatThrownBy(() -> BytesSerializer.toBytesAsU64(value)).isInstanceOf(IllegalArgumentException.class);
         }
-
     }
 
     @Nested
@@ -91,7 +91,6 @@ class BytesSerializerTest {
             assertThat(bytesAsU128).isEqualByComparingTo(Unpooled.wrappedBuffer(maxU128, 1, 16));
         }
 
-
         @Test
         void shouldSerializeZero() {
             // given
@@ -112,9 +111,7 @@ class BytesSerializerTest {
             var value = BigInteger.valueOf(-1);
 
             // when & then
-            assertThatThrownBy(() -> BytesSerializer.toBytesAsU128(value))
-                    .isInstanceOf(IllegalArgumentException.class);
+            assertThatThrownBy(() -> BytesSerializer.toBytesAsU128(value)).isInstanceOf(IllegalArgumentException.class);
         }
     }
-
 }
diff --git a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/ConsumerGroupsTcpClientTest.java b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/ConsumerGroupsTcpClientTest.java
index 15c262efa..e9c458177 100644
--- a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/ConsumerGroupsTcpClientTest.java
+++ b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/ConsumerGroupsTcpClientTest.java
@@ -19,10 +19,11 @@
 
 package org.apache.iggy.client.blocking.tcp;
 
-import org.apache.iggy.identifier.ConsumerId;
-import org.junit.jupiter.api.Test;
 import org.apache.iggy.client.blocking.ConsumerGroupsClientBaseTest;
 import org.apache.iggy.client.blocking.IggyBaseClient;
+import org.apache.iggy.identifier.ConsumerId;
+import org.junit.jupiter.api.Test;
+
 import static org.apache.iggy.TestConstants.STREAM_NAME;
 import static org.apache.iggy.TestConstants.TOPIC_NAME;
 import static org.assertj.core.api.Assertions.assertThat;
@@ -38,24 +39,25 @@ class ConsumerGroupsTcpClientTest extends ConsumerGroupsClientBaseTest {
     void shouldJoinAndLeaveConsumerGroup() {
         // given
         setUpStreamAndTopic();
-        var group = consumerGroupsClient.createConsumerGroup(STREAM_NAME,
-                TOPIC_NAME,
-                "consumer-group-42");
+        var group = consumerGroupsClient.createConsumerGroup(STREAM_NAME, TOPIC_NAME, "consumer-group-42");
         ConsumerId groupId = ConsumerId.of(group.id());
 
         // when
         consumerGroupsClient.joinConsumerGroup(STREAM_NAME, TOPIC_NAME, groupId);
 
         // then
-        group = consumerGroupsClient.getConsumerGroup(STREAM_NAME, TOPIC_NAME, groupId).get();
+        group = consumerGroupsClient
+                .getConsumerGroup(STREAM_NAME, TOPIC_NAME, groupId)
+                .get();
         assertThat(group.membersCount()).isEqualTo(1);
 
         // when
         consumerGroupsClient.leaveConsumerGroup(STREAM_NAME, TOPIC_NAME, groupId);
 
         // then
-        group = consumerGroupsClient.getConsumerGroup(STREAM_NAME, TOPIC_NAME, groupId).get();
+        group = consumerGroupsClient
+                .getConsumerGroup(STREAM_NAME, TOPIC_NAME, groupId)
+                .get();
         assertThat(group.membersCount()).isEqualTo(0);
     }
-
 }
diff --git a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/ConsumerOffsetsTcpClientTest.java b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/ConsumerOffsetsTcpClientTest.java
index bc1406d80..4676ed555 100644
--- a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/ConsumerOffsetsTcpClientTest.java
+++ b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/ConsumerOffsetsTcpClientTest.java
@@ -28,5 +28,4 @@ class ConsumerOffsetsTcpClientTest extends ConsumerOffsetsClientBaseTest {
     protected IggyBaseClient getClient() {
         return TcpClientFactory.create(iggyServer);
     }
-
 }
diff --git a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/IggyTcpClientBuilderTest.java b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/IggyTcpClientBuilderTest.java
index ac47a1bd8..6f7955fd3 100644
--- a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/IggyTcpClientBuilderTest.java
+++ b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/IggyTcpClientBuilderTest.java
@@ -19,14 +19,16 @@
 
 package org.apache.iggy.client.blocking.tcp;
 
-import org.apache.iggy.client.blocking.IntegrationTest;
 import org.apache.iggy.client.blocking.IggyBaseClient;
+import org.apache.iggy.client.blocking.IntegrationTest;
 import org.apache.iggy.system.ClientInfo;
 import org.junit.jupiter.api.Test;
+
 import java.time.Duration;
 import java.util.List;
 
-import static org.junit.jupiter.api.Assertions.*;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
 /**
  * Integration tests for IggyTcpClient builder pattern.
@@ -42,10 +44,8 @@ class IggyTcpClientBuilderTest extends IntegrationTest {
     @Test
     void shouldCreateClientWithBuilder() {
         // Given: Builder with basic configuration
-        IggyTcpClient client = IggyTcpClient.builder()
-                .host("127.0.0.1")
-                .port(TCP_PORT)
-                .build();
+        IggyTcpClient client =
+                IggyTcpClient.builder().host("127.0.0.1").port(TCP_PORT).build();
 
         // When: Login to verify connection
         client.users().login("iggy", "iggy");
@@ -174,9 +174,8 @@ class IggyTcpClientBuilderTest extends IntegrationTest {
     @Test
     void shouldUseDefaultValues() {
         // Given: Builder with only required fields (should use defaults)
-        IggyTcpClient client = IggyTcpClient.builder()
-                .credentials("iggy", "iggy")
-                .build(); // Uses default host=localhost, port=8090
+        IggyTcpClient client =
+                IggyTcpClient.builder().credentials("iggy", "iggy").build(); // Uses default host=localhost, port=8090
 
         // When: Perform an operation
         // Then: Should succeed
@@ -187,9 +186,7 @@ class IggyTcpClientBuilderTest extends IntegrationTest {
     @Test
     void shouldThrowExceptionForEmptyHost() {
         // Given: Builder with empty host
-        IggyTcpClient.Builder builder = IggyTcpClient.builder()
-                .host("")
-                .port(TCP_PORT);
+        IggyTcpClient.Builder builder = IggyTcpClient.builder().host("").port(TCP_PORT);
 
         // When/Then: Building should throw IllegalArgumentException
         assertThrows(IllegalArgumentException.class, builder::build);
@@ -198,9 +195,7 @@ class IggyTcpClientBuilderTest extends IntegrationTest {
     @Test
     void shouldThrowExceptionForNullHost() {
         // Given: Builder with null host
-        IggyTcpClient.Builder builder = IggyTcpClient.builder()
-                .host(null)
-                .port(TCP_PORT);
+        IggyTcpClient.Builder builder = IggyTcpClient.builder().host(null).port(TCP_PORT);
 
         // When/Then: Building should throw IllegalArgumentException
         assertThrows(IllegalArgumentException.class, builder::build);
@@ -209,9 +204,8 @@ class IggyTcpClientBuilderTest extends IntegrationTest {
     @Test
     void shouldThrowExceptionForInvalidPort() {
         // Given: Builder with invalid port
-        IggyTcpClient.Builder builder = IggyTcpClient.builder()
-                .host("127.0.0.1")
-                .port(-1);
+        IggyTcpClient.Builder builder =
+                IggyTcpClient.builder().host("127.0.0.1").port(-1);
 
         // When/Then: Building should throw IllegalArgumentException
         assertThrows(IllegalArgumentException.class, builder::build);
@@ -220,9 +214,8 @@ class IggyTcpClientBuilderTest extends IntegrationTest {
     @Test
     void shouldThrowExceptionForZeroPort() {
         // Given: Builder with zero port
-        IggyTcpClient.Builder builder = IggyTcpClient.builder()
-                .host("127.0.0.1")
-                .port(0);
+        IggyTcpClient.Builder builder =
+                IggyTcpClient.builder().host("127.0.0.1").port(0);
 
         // When/Then: Building should throw IllegalArgumentException
         assertThrows(IllegalArgumentException.class, builder::build);
diff --git a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/MessagesTcpClientTest.java b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/MessagesTcpClientTest.java
index 9157376b1..7b14f24c0 100644
--- a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/MessagesTcpClientTest.java
+++ b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/MessagesTcpClientTest.java
@@ -28,5 +28,4 @@ class MessagesTcpClientTest extends MessagesClientBaseTest {
     protected IggyBaseClient getClient() {
         return TcpClientFactory.create(iggyServer);
     }
-
 }
diff --git a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/PartitionsTcpClientTest.java b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/PartitionsTcpClientTest.java
index 8200e006a..763754ddb 100644
--- a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/PartitionsTcpClientTest.java
+++ b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/PartitionsTcpClientTest.java
@@ -28,5 +28,4 @@ class PartitionsTcpClientTest extends PartitionsClientBaseTest {
     protected IggyBaseClient getClient() {
         return TcpClientFactory.create(iggyServer);
     }
-
 }
diff --git a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/PersonalAccessTokensTcpClientTest.java b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/PersonalAccessTokensTcpClientTest.java
index 8a83adddb..c40857c5d 100644
--- a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/PersonalAccessTokensTcpClientTest.java
+++ b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/PersonalAccessTokensTcpClientTest.java
@@ -28,5 +28,4 @@ class PersonalAccessTokensTcpClientTest extends PersonalAccessTokensBaseTest {
     protected IggyBaseClient getClient() {
         return TcpClientFactory.create(iggyServer);
     }
-
 }
diff --git a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/StreamTcpClientTest.java b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/StreamTcpClientTest.java
index 7a13050c9..ac490c088 100644
--- a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/StreamTcpClientTest.java
+++ b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/StreamTcpClientTest.java
@@ -28,5 +28,4 @@ class StreamTcpClientTest extends StreamClientBaseTest {
     protected IggyBaseClient getClient() {
         return TcpClientFactory.create(iggyServer);
     }
-
 }
diff --git a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/SystemTcpClientTest.java b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/SystemTcpClientTest.java
index e3384cbb2..e752a48c0 100644
--- a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/SystemTcpClientTest.java
+++ b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/SystemTcpClientTest.java
@@ -19,12 +19,14 @@
 
 package org.apache.iggy.client.blocking.tcp;
 
-import org.junit.jupiter.api.Test;
 import org.apache.iggy.client.blocking.IggyBaseClient;
 import org.apache.iggy.client.blocking.SystemClientBaseTest;
 import org.apache.iggy.system.ClientInfo;
 import org.apache.iggy.system.ClientInfoDetails;
+import org.junit.jupiter.api.Test;
+
 import java.util.List;
+
 import static org.assertj.core.api.Assertions.assertThat;
 
 class SystemTcpClientTest extends SystemClientBaseTest {
diff --git a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/TcpClientFactory.java b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/TcpClientFactory.java
index ef22bcd93..5fa470783 100644
--- a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/TcpClientFactory.java
+++ b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/TcpClientFactory.java
@@ -20,6 +20,7 @@
 package org.apache.iggy.client.blocking.tcp;
 
 import org.testcontainers.containers.GenericContainer;
+
 import static org.apache.iggy.client.blocking.IntegrationTest.TCP_PORT;
 
 class TcpClientFactory {
@@ -33,5 +34,4 @@ class TcpClientFactory {
         Integer port = iggyServer.getMappedPort(TCP_PORT);
         return new IggyTcpClient(address, port);
     }
-
 }
diff --git a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/TopicsTcpClientTest.java b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/TopicsTcpClientTest.java
index 2193f3e87..926fb9782 100644
--- a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/TopicsTcpClientTest.java
+++ b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/TopicsTcpClientTest.java
@@ -28,5 +28,4 @@ class TopicsTcpClientTest extends TopicsClientBaseTest {
     protected IggyBaseClient getClient() {
         return TcpClientFactory.create(iggyServer);
     }
-
 }
diff --git a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/UsersTcpClientTest.java b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/UsersTcpClientTest.java
index 00a45fbb4..5066b0eb8 100644
--- a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/UsersTcpClientTest.java
+++ b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/blocking/tcp/UsersTcpClientTest.java
@@ -19,10 +19,10 @@
 
 package org.apache.iggy.client.blocking.tcp;
 
-import org.junit.jupiter.api.BeforeEach;
 import org.apache.iggy.client.blocking.IggyBaseClient;
 import org.apache.iggy.client.blocking.UsersClient;
 import org.apache.iggy.client.blocking.UsersClientBaseTest;
+import org.junit.jupiter.api.BeforeEach;
 
 class UsersTcpClientTest extends UsersClientBaseTest {
 
@@ -37,5 +37,4 @@ class UsersTcpClientTest extends UsersClientBaseTest {
     void beforeEach() {
         usersClient = client.users();
     }
-
 }