From e0f70138c1f5042b7817246ad3a5f01d809f7f71 Mon Sep 17 00:00:00 2001 From: Andrea Cavalli Date: Fri, 22 Oct 2021 12:54:28 +0200 Subject: [PATCH] Code cleanup --- .editorconfig | 14 +-- README.md | 108 +++++++++++------- .../it.tdlight.example/AdvancedExample.java | 6 +- .../main/java/it.tdlight.example/Example.java | 22 +--- example/src/main/resources/log4j2.xml | 30 ++--- jitpack.yml | 4 +- .../tdlight/common/utils/LibraryVersion.java | 2 + .../tdlight/common/utils/LibraryVersion.java | 2 + .../client/AuthenticationDataImpl.java | 1 + .../client/AuthorizationStateReadyGetMe.java | 2 - ...ionStateWaitAuthenticationDataHandler.java | 20 ++-- .../AuthorizationStateWaitCodeHandler.java | 9 +- ...rizationStateWaitEncryptionKeyHandler.java | 6 - .../client/AuthorizationStateWaitForExit.java | 1 - ...ateWaitOtherDeviceConfirmationHandler.java | 9 +- ...AuthorizationStateWaitPasswordHandler.java | 9 +- ...orizationStateWaitRegistrationHandler.java | 10 +- ...zationStateWaitTdlibParametersHandler.java | 3 - .../it/tdlight/client/CommandHandler.java | 1 - .../it/tdlight/client/CommandsHandler.java | 23 ++-- .../ConsoleInteractiveAuthenticationData.java | 13 ++- .../tdlight/client/GenericResultHandler.java | 2 - .../tdlight/client/GenericUpdateHandler.java | 1 - .../it/tdlight/client/InputParameter.java | 7 +- .../it/tdlight/client/ParameterInfoCode.java | 1 + .../client/ParameterInfoTermsOfService.java | 1 + .../client/ScannerClientInteraction.java | 23 +++- .../tdlight/client/SimpleTelegramClient.java | 53 +++++---- .../java/it/tdlight/client/TDLibSettings.java | 3 +- .../java/it/tdlight/client/TelegramError.java | 1 - .../tdlight/common/ClientEventsHandler.java | 2 - .../java/it/tdlight/common/EventsHandler.java | 2 - src/main/java/it/tdlight/common/Init.java | 1 - src/main/java/it/tdlight/common/Log.java | 2 +- src/main/java/it/tdlight/common/Response.java | 55 +++++---- .../java/it/tdlight/common/SignalType.java | 4 +- .../it/tdlight/common/TelegramClient.java | 3 +- .../it/tdlight/common/UpdatesHandler.java | 1 - .../it/tdlight/common/internal/Handler.java | 1 + .../common/internal/InternalClient.java | 19 +-- .../internal/InternalClientManager.java | 28 +++-- .../internal/InternalReactiveClient.java | 13 ++- .../tdlight/common/internal/MultiHandler.java | 1 + .../common/internal/NativeClientAccess.java | 2 +- .../common/internal/ResponseReceiver.java | 38 +++--- .../tdlight/common/utils/CantLoadLibrary.java | 21 ++-- .../it/tdlight/common/utils/LoadLibrary.java | 2 +- .../tdlight/common/utils/SpinWaitSupport.java | 3 - .../java/it/tdlight/tdlib/ClientManager.java | 2 +- .../it/tdlight/tdlight/ClientManager.java | 2 +- .../it/tdlight/tdnative/NativeClient.java | 7 +- .../java/it/tdlight/tdnative/NativeLog.java | 1 - 52 files changed, 306 insertions(+), 291 deletions(-) diff --git a/.editorconfig b/.editorconfig index 46e93ad..7e7a1bc 100644 --- a/.editorconfig +++ b/.editorconfig @@ -13,7 +13,7 @@ ij_formatter_off_tag = @formatter:off ij_formatter_on_tag = @formatter:on ij_formatter_tags_enabled = false ij_smart_tabs = false -ij_visual_guides = 100,120 +ij_visual_guides = 100, 120 ij_wrap_on_typing = false [.editorconfig] @@ -56,22 +56,22 @@ ij_shell_use_unix_line_separator = true [{*.htm,*.html,*.ng,*.sht,*.shtm,*.shtml}] ij_visual_guides = none -ij_html_add_new_line_before_tags = body,div,p,form,h1,h2,h3 +ij_html_add_new_line_before_tags = body, div, p, form, h1, h2, h3 ij_html_align_attributes = true ij_html_align_text = false ij_html_attribute_wrap = normal ij_html_block_comment_at_first_column = true ij_html_do_not_align_children_of_min_lines = 0 -ij_html_do_not_break_if_inline_tags = title,h1,h2,h3,h4,h5,h6,p -ij_html_do_not_indent_children_of_tags = html,body,thead,tbody,tfoot +ij_html_do_not_break_if_inline_tags = title, h1, h2, h3, h4, h5, h6, p +ij_html_do_not_indent_children_of_tags = html, body, thead, tbody, tfoot ij_html_enforce_quotes = false -ij_html_inline_tags = a,abbr,acronym,b,basefont,bdo,big,br,cite,cite,code,dfn,em,font,i,img,input,kbd,label,q,s,samp,select,small,span,strike,strong,sub,sup,textarea,tt,u,var +ij_html_inline_tags = a, abbr, acronym, b, basefont, bdo, big, br, cite, cite, code, dfn, em, font, i, img, input, kbd, label, q, s, samp, select, small, span, strike, strong, sub, sup, textarea, tt, u, var ij_html_keep_blank_lines = 2 ij_html_keep_indents_on_empty_lines = false ij_html_keep_line_breaks = true ij_html_keep_line_breaks_in_text = true ij_html_keep_whitespaces = false -ij_html_keep_whitespaces_inside = span,pre,textarea +ij_html_keep_whitespaces_inside = span, pre, textarea ij_html_line_comment_at_first_column = true ij_html_new_line_after_last_attribute = never ij_html_new_line_before_first_attribute = never @@ -182,7 +182,7 @@ ij_java_for_statement_wrap = normal ij_java_generate_final_locals = false ij_java_generate_final_parameters = false ij_java_if_brace_force = if_multiline -ij_java_imports_layout = $*,|,* +ij_java_imports_layout = $*, |, * ij_java_indent_case_from_switch = true ij_java_insert_inner_class_imports = true ij_java_insert_override_annotation = true diff --git a/README.md b/README.md index 991a9c7..e8e79eb 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ **Operating systems**: Linux, Windows, MacOS **CPU architectures**: + - i386/x86 (Linux, Windows) - amd64/x86_64 (Linux, Windows, OSX) - armhf/armv7 (Linux) @@ -30,7 +31,9 @@ **Required libraries for Linux: OpenSSL and zlib** ### Install OpenSSL on macOS -You must install `openssl@1.1` using the brew package manager , then link openssl to `/usr/local/opt/openssl` + +You must install `openssl@1.1` using the brew package manager , then link openssl +to `/usr/local/opt/openssl` If you don't know how to do this, type the following commands in your terminal: @@ -40,63 +43,75 @@ ln -sf /usr/local/Cellar/openssl@1.1/1.1.1l /usr/local/opt/openssl ``` ## 📚 How to use the library + ### Setting up the library using Maven + If you are using Maven, edit your `pom.xml` file as below: + ```xml + - - - - - mchv - MCHV Apache Maven Packages - https://mvn.mchv.eu/repository/mchv/ - - - + - + + + mchv + MCHV Apache Maven Packages + https://mvn.mchv.eu/repository/mchv/ + - - - it.tdlight - tdlight-java - VERSION - - - it.tdlight - tdlight-natives-linux-amd64 - NATIVES_VERSION - - - - + + + + + + + it.tdlight + tdlight-java + VERSION + + + it.tdlight + tdlight-natives-linux-amd64 + NATIVES_VERSION + + + + ``` -Replace `VERSION` with the latest release version, you can find it [here](https://github.com/tdlight-team/tdlight-java/releases). -Replace `NATIVES_VERSION` with the latest native version. -Make sure that you are using the correct natives version for the release that you are using. +Replace `VERSION` with the latest release version, you can find +it [here](https://github.com/tdlight-team/tdlight-java/releases). + +Replace `NATIVES_VERSION` with the latest native version. Make sure that you are using the correct natives version for +the release that you are using. ## Setting up the library using Gradle + If you are using Gradle, add the following lines into your `build.gradle` file + ```groovy repositories { - maven { url "https://mvn.mchv.eu/repository/mchv/" } + maven { url "https://mvn.mchv.eu/repository/mchv/" } } dependencies { - implementation 'it.tdlight:tdlight-java:LATEST_VERSION' - implementation 'it.tdlight:tdlight-natives-linux-amd64:NATIVES_VERSION' - // Include other native versions that you want, for example for windows, osx, ... + implementation 'it.tdlight:tdlight-java:LATEST_VERSION' + implementation 'it.tdlight:tdlight-natives-linux-amd64:NATIVES_VERSION' + // Include other native versions that you want, for example for windows, osx, ... } ``` -Replace `VERSION` with the latest release version, you can find it [here](https://github.com/tdlight-team/tdlight-java/releases). -Replace `NATIVES_VERSION` with the latest native version. -Make sure that you are using the correct natives version for the release that you are using. +Replace `VERSION` with the latest release version, you can find +it [here](https://github.com/tdlight-team/tdlight-java/releases). + +Replace `NATIVES_VERSION` with the latest native version. Make sure that you are using the correct natives version for +the release that you are using. ## ⚒ Native dependencies + To use TDLight Java you need to include one or more native dependencies: + - `tdlight-natives-linux-amd64` - `tdlight-natives-linux-aarch64` - `tdlight-natives-linux-x86` @@ -107,26 +122,37 @@ To use TDLight Java you need to include one or more native dependencies: - `tdlight-natives-osx-amd64` ## Usage -An example on how to use TDLight Java can be found here: [Example.java](https://github.com/tdlight-team/tdlight-java/blob/master/example/src/main/java/it.tdlight.example/Example.java) + +An example on how to use TDLight Java can be found +here: [Example.java](https://github.com/tdlight-team/tdlight-java/blob/master/example/src/main/java/it.tdlight.example/Example.java) ### Advanced usage -If you want to disable the automatic runtime shutdown hook, you should set the property `it.tdlight.enableShutdownHooks` to `false` + +If you want to disable the automatic runtime shutdown hook, you should set the property `it.tdlight.enableShutdownHooks` +to `false` ### TDLight methods documentation + [TdApi JavaDoc](https://tdlight-team.github.io/tdlight-docs) ### TDLight extended features -TDLight has some extended features compared to TDLib, that you can see on the [TDLight official repository](https://github.com/tdlight-team/tdlight#tdlight-extra-features). + +TDLight has some extended features compared to TDLib, that you can see on +the [TDLight official repository](https://github.com/tdlight-team/tdlight#tdlight-extra-features). ## About + ### **License** + TDLight is licensed by Andrea Cavalli under the terms of the GNU Lesser General Public License 3 ### **Libraries licenses** -JTDLib is licensed by Ernesto Castellotti under the terms of the GNU Lesser General Public License 3 +JTDLib is licensed by Ernesto Castellotti under the terms of the GNU Lesser General Public +License 3 -TDLib is licensed by Aliaksei Levin and Arseny Smirnov under the terms of the Boost Software License +TDLib is licensed by Aliaksei Levin and Arseny Smirnov under the terms of the +Boost Software License OpenSSL is licensed under the terms of Apache License v2 diff --git a/example/src/main/java/it.tdlight.example/AdvancedExample.java b/example/src/main/java/it.tdlight.example/AdvancedExample.java index 0efb164..94bcf26 100644 --- a/example/src/main/java/it.tdlight.example/AdvancedExample.java +++ b/example/src/main/java/it.tdlight.example/AdvancedExample.java @@ -1,16 +1,16 @@ package it.tdlight.example; -import it.tdlight.common.TelegramClient; -import it.tdlight.tdlight.ClientManager; import it.tdlight.common.Init; +import it.tdlight.common.TelegramClient; import it.tdlight.common.utils.CantLoadLibrary; - import it.tdlight.jni.TdApi; +import it.tdlight.tdlight.ClientManager; /** * This is an advanced example that uses directly the native client without using the SimpleClient implementation */ public class AdvancedExample { + public static void main(String[] args) throws CantLoadLibrary { // Initialize TDLight native libraries Init.start(); diff --git a/example/src/main/java/it.tdlight.example/Example.java b/example/src/main/java/it.tdlight.example/Example.java index 54da464..de65e45 100644 --- a/example/src/main/java/it.tdlight.example/Example.java +++ b/example/src/main/java/it.tdlight.example/Example.java @@ -1,16 +1,11 @@ package it.tdlight.example; import it.tdlight.client.APIToken; -import it.tdlight.client.Authenticable; import it.tdlight.client.AuthenticationData; import it.tdlight.client.CommandHandler; -import it.tdlight.client.Result; import it.tdlight.client.SimpleTelegramClient; import it.tdlight.client.TDLibSettings; -import it.tdlight.common.ExceptionHandler; import it.tdlight.common.Init; -import it.tdlight.common.ResultHandler; -import it.tdlight.common.TelegramClient; import it.tdlight.common.utils.CantLoadLibrary; import it.tdlight.jni.TdApi; import it.tdlight.jni.TdApi.AuthorizationState; @@ -21,24 +16,11 @@ import it.tdlight.jni.TdApi.MessageSenderUser; import it.tdlight.jni.TdApi.MessageText; import it.tdlight.jni.TdApi.UpdateAuthorizationState; import it.tdlight.jni.TdApi.UpdateNewMessage; -import it.tdlight.tdlight.ClientManager; -import java.io.BufferedReader; -import java.io.IOError; -import java.io.IOException; -import java.io.InputStreamReader; -import java.util.NavigableSet; -import java.util.TreeSet; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; -import java.util.concurrent.locks.Condition; -import java.util.concurrent.locks.Lock; -import java.util.concurrent.locks.ReentrantLock; /** * Example class for TDLight Java - * - * The documentation of the TDLight functions can be found here: - * https://tdlight-team.github.io/tdlight-docs + *

+ * The documentation of the TDLight functions can be found here: https://tdlight-team.github.io/tdlight-docs */ public final class Example { diff --git a/example/src/main/resources/log4j2.xml b/example/src/main/resources/log4j2.xml index b1e9580..41eb542 100644 --- a/example/src/main/resources/log4j2.xml +++ b/example/src/main/resources/log4j2.xml @@ -1,20 +1,20 @@ - - - - + status="INFO"> + + + + - - - - - - + + + + + + diff --git a/jitpack.yml b/jitpack.yml index b07ccf7..0484e18 100644 --- a/jitpack.yml +++ b/jitpack.yml @@ -1,4 +1,4 @@ jdk: - - openjdk11 + - openjdk11 before_install: - - cd tdlight + - cd tdlight diff --git a/src/main/java-templates-tdlib/it/tdlight/common/utils/LibraryVersion.java b/src/main/java-templates-tdlib/it/tdlight/common/utils/LibraryVersion.java index bd0f927..5869bcf 100644 --- a/src/main/java-templates-tdlib/it/tdlight/common/utils/LibraryVersion.java +++ b/src/main/java-templates-tdlib/it/tdlight/common/utils/LibraryVersion.java @@ -1,5 +1,7 @@ package it.tdlight.common.utils; + public final class LibraryVersion { + public static final String VERSION = "${project.version}"; public static final String NATIVES_VERSION = "4.0.${nativesRevisionNumber}${nativesRevisionSuffix}"; public static final String IMPLEMENTATION_NAME = "tdlib"; diff --git a/src/main/java-templates-tdlight/it/tdlight/common/utils/LibraryVersion.java b/src/main/java-templates-tdlight/it/tdlight/common/utils/LibraryVersion.java index 32def79..b4e456a 100644 --- a/src/main/java-templates-tdlight/it/tdlight/common/utils/LibraryVersion.java +++ b/src/main/java-templates-tdlight/it/tdlight/common/utils/LibraryVersion.java @@ -1,5 +1,7 @@ package it.tdlight.common.utils; + public final class LibraryVersion { + public static final String VERSION = "${project.version}"; public static final String NATIVES_VERSION = "4.0.${nativesRevisionNumber}${nativesRevisionSuffix}"; public static final String IMPLEMENTATION_NAME = "tdlight"; diff --git a/src/main/java/it/tdlight/client/AuthenticationDataImpl.java b/src/main/java/it/tdlight/client/AuthenticationDataImpl.java index c6cc6d7..5484a80 100644 --- a/src/main/java/it/tdlight/client/AuthenticationDataImpl.java +++ b/src/main/java/it/tdlight/client/AuthenticationDataImpl.java @@ -4,6 +4,7 @@ import java.util.Objects; @SuppressWarnings("unused") final class AuthenticationDataImpl implements AuthenticationData { + private final Long userPhoneNumber; private final String botToken; diff --git a/src/main/java/it/tdlight/client/AuthorizationStateReadyGetMe.java b/src/main/java/it/tdlight/client/AuthorizationStateReadyGetMe.java index f7e304a..3046566 100644 --- a/src/main/java/it/tdlight/client/AuthorizationStateReadyGetMe.java +++ b/src/main/java/it/tdlight/client/AuthorizationStateReadyGetMe.java @@ -1,9 +1,7 @@ package it.tdlight.client; import it.tdlight.common.TelegramClient; -import it.tdlight.jni.TdApi; import it.tdlight.jni.TdApi.AuthorizationStateReady; -import it.tdlight.jni.TdApi.Error; import it.tdlight.jni.TdApi.GetMe; import it.tdlight.jni.TdApi.UpdateAuthorizationState; import it.tdlight.jni.TdApi.User; diff --git a/src/main/java/it/tdlight/client/AuthorizationStateWaitAuthenticationDataHandler.java b/src/main/java/it/tdlight/client/AuthorizationStateWaitAuthenticationDataHandler.java index 87f7747..3ac17ea 100644 --- a/src/main/java/it/tdlight/client/AuthorizationStateWaitAuthenticationDataHandler.java +++ b/src/main/java/it/tdlight/client/AuthorizationStateWaitAuthenticationDataHandler.java @@ -1,18 +1,12 @@ package it.tdlight.client; - import it.tdlight.common.ExceptionHandler; - import it.tdlight.common.TelegramClient; - import it.tdlight.common.utils.ScannerUtils; - import it.tdlight.jni.TdApi; - import it.tdlight.jni.TdApi.AuthorizationStateWaitEncryptionKey; - import it.tdlight.jni.TdApi.AuthorizationStateWaitPhoneNumber; - import it.tdlight.jni.TdApi.CheckDatabaseEncryptionKey; - import it.tdlight.jni.TdApi.Error; - import it.tdlight.jni.TdApi.PhoneNumberAuthenticationSettings; - import it.tdlight.jni.TdApi.SetAuthenticationPhoneNumber; - import it.tdlight.jni.TdApi.UpdateAuthorizationState; - import org.slf4j.Logger; - import org.slf4j.LoggerFactory; +import it.tdlight.common.ExceptionHandler; +import it.tdlight.common.TelegramClient; +import it.tdlight.jni.TdApi; +import it.tdlight.jni.TdApi.AuthorizationStateWaitPhoneNumber; +import it.tdlight.jni.TdApi.PhoneNumberAuthenticationSettings; +import it.tdlight.jni.TdApi.SetAuthenticationPhoneNumber; +import it.tdlight.jni.TdApi.UpdateAuthorizationState; final class AuthorizationStateWaitAuthenticationDataHandler implements GenericUpdateHandler { diff --git a/src/main/java/it/tdlight/client/AuthorizationStateWaitCodeHandler.java b/src/main/java/it/tdlight/client/AuthorizationStateWaitCodeHandler.java index 323bfca..f81086f 100644 --- a/src/main/java/it/tdlight/client/AuthorizationStateWaitCodeHandler.java +++ b/src/main/java/it/tdlight/client/AuthorizationStateWaitCodeHandler.java @@ -2,15 +2,9 @@ package it.tdlight.client; import it.tdlight.common.ExceptionHandler; import it.tdlight.common.TelegramClient; -import it.tdlight.jni.TdApi; import it.tdlight.jni.TdApi.AuthorizationStateWaitCode; -import it.tdlight.jni.TdApi.AuthorizationStateWaitOtherDeviceConfirmation; import it.tdlight.jni.TdApi.CheckAuthenticationCode; -import it.tdlight.jni.TdApi.Error; -import it.tdlight.jni.TdApi.Function; import it.tdlight.jni.TdApi.UpdateAuthorizationState; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; final class AuthorizationStateWaitCodeHandler implements GenericUpdateHandler { @@ -29,8 +23,7 @@ final class AuthorizationStateWaitCodeHandler implements GenericUpdateHandler { diff --git a/src/main/java/it/tdlight/client/AuthorizationStateWaitForExit.java b/src/main/java/it/tdlight/client/AuthorizationStateWaitForExit.java index 22a540d..fd6fef3 100644 --- a/src/main/java/it/tdlight/client/AuthorizationStateWaitForExit.java +++ b/src/main/java/it/tdlight/client/AuthorizationStateWaitForExit.java @@ -1,6 +1,5 @@ package it.tdlight.client; -import it.tdlight.common.TelegramClient; import it.tdlight.jni.TdApi; import it.tdlight.jni.TdApi.AuthorizationStateClosed; import it.tdlight.jni.TdApi.UpdateAuthorizationState; diff --git a/src/main/java/it/tdlight/client/AuthorizationStateWaitOtherDeviceConfirmationHandler.java b/src/main/java/it/tdlight/client/AuthorizationStateWaitOtherDeviceConfirmationHandler.java index b30c64f..c305fdf 100644 --- a/src/main/java/it/tdlight/client/AuthorizationStateWaitOtherDeviceConfirmationHandler.java +++ b/src/main/java/it/tdlight/client/AuthorizationStateWaitOtherDeviceConfirmationHandler.java @@ -1,12 +1,10 @@ package it.tdlight.client; -import it.tdlight.common.ExceptionHandler; -import it.tdlight.common.TelegramClient; import it.tdlight.jni.TdApi.AuthorizationStateWaitOtherDeviceConfirmation; import it.tdlight.jni.TdApi.UpdateAuthorizationState; -final class AuthorizationStateWaitOtherDeviceConfirmationHandler - implements GenericUpdateHandler { +final class AuthorizationStateWaitOtherDeviceConfirmationHandler implements + GenericUpdateHandler { private final ClientInteraction clientInteraction; @@ -17,8 +15,7 @@ final class AuthorizationStateWaitOtherDeviceConfirmationHandler @Override public void onUpdate(UpdateAuthorizationState update) { if (update.authorizationState.getConstructor() == AuthorizationStateWaitOtherDeviceConfirmation.CONSTRUCTOR) { - AuthorizationStateWaitOtherDeviceConfirmation authorizationState = - (AuthorizationStateWaitOtherDeviceConfirmation) update.authorizationState; + AuthorizationStateWaitOtherDeviceConfirmation authorizationState = (AuthorizationStateWaitOtherDeviceConfirmation) update.authorizationState; ParameterInfo parameterInfo = new ParameterInfoNotifyLink(authorizationState.link); clientInteraction.onParameterRequest(InputParameter.NOTIFY_LINK, parameterInfo); } diff --git a/src/main/java/it/tdlight/client/AuthorizationStateWaitPasswordHandler.java b/src/main/java/it/tdlight/client/AuthorizationStateWaitPasswordHandler.java index 150ec6a..a8599b4 100644 --- a/src/main/java/it/tdlight/client/AuthorizationStateWaitPasswordHandler.java +++ b/src/main/java/it/tdlight/client/AuthorizationStateWaitPasswordHandler.java @@ -2,15 +2,9 @@ package it.tdlight.client; import it.tdlight.common.ExceptionHandler; import it.tdlight.common.TelegramClient; -import it.tdlight.jni.TdApi.AuthorizationStateWaitCode; import it.tdlight.jni.TdApi.AuthorizationStateWaitPassword; -import it.tdlight.jni.TdApi.CheckAuthenticationCode; import it.tdlight.jni.TdApi.CheckAuthenticationPassword; -import it.tdlight.jni.TdApi.Error; -import it.tdlight.jni.TdApi.Function; import it.tdlight.jni.TdApi.UpdateAuthorizationState; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; final class AuthorizationStateWaitPasswordHandler implements GenericUpdateHandler { @@ -29,8 +23,7 @@ final class AuthorizationStateWaitPasswordHandler implements GenericUpdateHandle @Override public void onUpdate(UpdateAuthorizationState update) { if (update.authorizationState.getConstructor() == AuthorizationStateWaitPassword.CONSTRUCTOR) { - AuthorizationStateWaitPassword authorizationState = - (AuthorizationStateWaitPassword) update.authorizationState; + AuthorizationStateWaitPassword authorizationState = (AuthorizationStateWaitPassword) update.authorizationState; ParameterInfo parameterInfo = new ParameterInfoPasswordHint(authorizationState.passwordHint, authorizationState.hasRecoveryEmailAddress, authorizationState.recoveryEmailAddressPattern diff --git a/src/main/java/it/tdlight/client/AuthorizationStateWaitRegistrationHandler.java b/src/main/java/it/tdlight/client/AuthorizationStateWaitRegistrationHandler.java index 2391f80..e75ece9 100644 --- a/src/main/java/it/tdlight/client/AuthorizationStateWaitRegistrationHandler.java +++ b/src/main/java/it/tdlight/client/AuthorizationStateWaitRegistrationHandler.java @@ -4,11 +4,8 @@ import it.tdlight.common.ExceptionHandler; import it.tdlight.common.TelegramClient; import it.tdlight.jni.TdApi; import it.tdlight.jni.TdApi.AuthorizationStateWaitRegistration; -import it.tdlight.jni.TdApi.Error; import it.tdlight.jni.TdApi.RegisterUser; import it.tdlight.jni.TdApi.UpdateAuthorizationState; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; final class AuthorizationStateWaitRegistrationHandler implements GenericUpdateHandler { @@ -27,9 +24,10 @@ final class AuthorizationStateWaitRegistrationHandler implements GenericUpdateHa @Override public void onUpdate(UpdateAuthorizationState update) { if (update.authorizationState.getConstructor() == AuthorizationStateWaitRegistration.CONSTRUCTOR) { - TdApi.AuthorizationStateWaitRegistration authorizationState = - (TdApi.AuthorizationStateWaitRegistration) update.authorizationState; - clientInteraction.onParameterRequest(InputParameter.TERMS_OF_SERVICE, new ParameterInfoTermsOfService(authorizationState.termsOfService)); + TdApi.AuthorizationStateWaitRegistration authorizationState = (TdApi.AuthorizationStateWaitRegistration) update.authorizationState; + clientInteraction.onParameterRequest(InputParameter.TERMS_OF_SERVICE, + new ParameterInfoTermsOfService(authorizationState.termsOfService) + ); String firstName = clientInteraction.onParameterRequest(InputParameter.ASK_FIRST_NAME, new EmptyParameterInfo()); String lastName = clientInteraction.onParameterRequest(InputParameter.ASK_LAST_NAME, new EmptyParameterInfo()); if (firstName == null || firstName.isEmpty()) { diff --git a/src/main/java/it/tdlight/client/AuthorizationStateWaitTdlibParametersHandler.java b/src/main/java/it/tdlight/client/AuthorizationStateWaitTdlibParametersHandler.java index cd44927..7c31bbc 100644 --- a/src/main/java/it/tdlight/client/AuthorizationStateWaitTdlibParametersHandler.java +++ b/src/main/java/it/tdlight/client/AuthorizationStateWaitTdlibParametersHandler.java @@ -3,12 +3,9 @@ package it.tdlight.client; import it.tdlight.common.ExceptionHandler; import it.tdlight.common.TelegramClient; import it.tdlight.jni.TdApi.AuthorizationStateWaitTdlibParameters; -import it.tdlight.jni.TdApi.Error; import it.tdlight.jni.TdApi.SetTdlibParameters; import it.tdlight.jni.TdApi.TdlibParameters; import it.tdlight.jni.TdApi.UpdateAuthorizationState; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; final class AuthorizationStateWaitTdlibParametersHandler implements GenericUpdateHandler { diff --git a/src/main/java/it/tdlight/client/CommandHandler.java b/src/main/java/it/tdlight/client/CommandHandler.java index bea6140..080bc4b 100644 --- a/src/main/java/it/tdlight/client/CommandHandler.java +++ b/src/main/java/it/tdlight/client/CommandHandler.java @@ -2,7 +2,6 @@ package it.tdlight.client; import it.tdlight.jni.TdApi; import it.tdlight.jni.TdApi.Chat; -import it.tdlight.jni.TdApi.User; public interface CommandHandler { diff --git a/src/main/java/it/tdlight/client/CommandsHandler.java b/src/main/java/it/tdlight/client/CommandsHandler.java index 2ae7d54..be42c14 100644 --- a/src/main/java/it/tdlight/client/CommandsHandler.java +++ b/src/main/java/it/tdlight/client/CommandsHandler.java @@ -3,7 +3,6 @@ package it.tdlight.client; import it.tdlight.common.TelegramClient; import it.tdlight.jni.TdApi; import it.tdlight.jni.TdApi.Chat; -import it.tdlight.jni.TdApi.Error; import it.tdlight.jni.TdApi.Message; import it.tdlight.jni.TdApi.MessageText; import it.tdlight.jni.TdApi.UpdateNewMessage; @@ -36,15 +35,14 @@ final class CommandsHandler implements GenericUpdateHandler { public void onUpdate(UpdateNewMessage update) { if (update.getConstructor() == UpdateNewMessage.CONSTRUCTOR) { Message message = update.message; - if (message.forwardInfo == null && !message.isChannelPost - && (message.authorSignature == null || message.authorSignature.isEmpty()) - && message.content.getConstructor() == MessageText.CONSTRUCTOR) { + if (message.forwardInfo == null && !message.isChannelPost && (message.authorSignature == null + || message.authorSignature.isEmpty()) && message.content.getConstructor() == MessageText.CONSTRUCTOR) { MessageText messageText = (MessageText) message.content; String text = messageText.text.text; if (text.startsWith("/")) { String[] parts = text.split(" ", 2); if (parts.length == 1) { - parts = new String[] {parts[0], ""}; + parts = new String[]{parts[0], ""}; } if (parts.length == 2) { String currentUnsplittedCommandName = parts[0].substring(1); @@ -71,15 +69,12 @@ final class CommandsHandler implements GenericUpdateHandler { Set handlers = commandHandlers.getOrDefault(currentCommandName, Collections.emptySet()); for (CommandHandler handler : handlers) { - client.send(new TdApi.GetChat(message.chatId), - response -> { - if (response.getConstructor() == Error.CONSTRUCTOR) { - throw new TelegramError((Error) response); - } - handler.onCommand((Chat) response, message.sender, arguments); - }, - error -> logger.warn("Error when handling the command {}", commandName, error) - ); + client.send(new TdApi.GetChat(message.chatId), response -> { + if (response.getConstructor() == Error.CONSTRUCTOR) { + throw new TelegramError((Error) response); + } + handler.onCommand((Chat) response, message.sender, arguments); + }, error -> logger.warn("Error when handling the command {}", commandName, error)); } } } diff --git a/src/main/java/it/tdlight/client/ConsoleInteractiveAuthenticationData.java b/src/main/java/it/tdlight/client/ConsoleInteractiveAuthenticationData.java index f5de61b..e4b8b02 100644 --- a/src/main/java/it/tdlight/client/ConsoleInteractiveAuthenticationData.java +++ b/src/main/java/it/tdlight/client/ConsoleInteractiveAuthenticationData.java @@ -2,7 +2,6 @@ package it.tdlight.client; import it.tdlight.common.utils.ScannerUtils; import java.util.Locale; -import java.util.stream.Collector; final class ConsoleInteractiveAuthenticationData implements AuthenticationData { @@ -57,10 +56,14 @@ final class ConsoleInteractiveAuthenticationData implements AuthenticationData { } private void initializeIfNeeded() { - if (initialized) return; + if (initialized) { + return; + } synchronized (LOCK) { - if (initialized) return; + if (initialized) { + return; + } String choice; @@ -68,7 +71,9 @@ final class ConsoleInteractiveAuthenticationData implements AuthenticationData { String mode; do { choice = ScannerUtils - .askParameter("login", "Do you want to login using a bot [token], a [phone] number, or a [qr] code? [token/phone/qr]") + .askParameter("login", + "Do you want to login using a bot [token], a [phone] number, or a [qr] code? [token/phone/qr]" + ) .trim() .toLowerCase(Locale.ROOT); switch (choice) { diff --git a/src/main/java/it/tdlight/client/GenericResultHandler.java b/src/main/java/it/tdlight/client/GenericResultHandler.java index 6d2f31d..7520cc9 100644 --- a/src/main/java/it/tdlight/client/GenericResultHandler.java +++ b/src/main/java/it/tdlight/client/GenericResultHandler.java @@ -1,8 +1,6 @@ package it.tdlight.client; import it.tdlight.jni.TdApi; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * Interface for incoming responses from TDLib. diff --git a/src/main/java/it/tdlight/client/GenericUpdateHandler.java b/src/main/java/it/tdlight/client/GenericUpdateHandler.java index 79506bf..b99e0d6 100644 --- a/src/main/java/it/tdlight/client/GenericUpdateHandler.java +++ b/src/main/java/it/tdlight/client/GenericUpdateHandler.java @@ -1,6 +1,5 @@ package it.tdlight.client; -import it.tdlight.jni.TdApi.Object; import it.tdlight.jni.TdApi.Update; /** diff --git a/src/main/java/it/tdlight/client/InputParameter.java b/src/main/java/it/tdlight/client/InputParameter.java index a5690d7..1ed8b9b 100644 --- a/src/main/java/it/tdlight/client/InputParameter.java +++ b/src/main/java/it/tdlight/client/InputParameter.java @@ -1,10 +1,5 @@ package it.tdlight.client; public enum InputParameter { - ASK_FIRST_NAME, - ASK_LAST_NAME, - ASK_CODE, - ASK_PASSWORD, - NOTIFY_LINK, - TERMS_OF_SERVICE + ASK_FIRST_NAME, ASK_LAST_NAME, ASK_CODE, ASK_PASSWORD, NOTIFY_LINK, TERMS_OF_SERVICE } diff --git a/src/main/java/it/tdlight/client/ParameterInfoCode.java b/src/main/java/it/tdlight/client/ParameterInfoCode.java index 60b8970..dd7a4d6 100644 --- a/src/main/java/it/tdlight/client/ParameterInfoCode.java +++ b/src/main/java/it/tdlight/client/ParameterInfoCode.java @@ -5,6 +5,7 @@ import java.util.Objects; import java.util.StringJoiner; public final class ParameterInfoCode implements ParameterInfo { + private final String phoneNumber; private final AuthenticationCodeType nextType; private final int timeout; diff --git a/src/main/java/it/tdlight/client/ParameterInfoTermsOfService.java b/src/main/java/it/tdlight/client/ParameterInfoTermsOfService.java index bcea013..b744bd3 100644 --- a/src/main/java/it/tdlight/client/ParameterInfoTermsOfService.java +++ b/src/main/java/it/tdlight/client/ParameterInfoTermsOfService.java @@ -5,6 +5,7 @@ import java.util.Objects; import java.util.StringJoiner; public final class ParameterInfoTermsOfService implements ParameterInfo { + private final TermsOfService termsOfService; public ParameterInfoTermsOfService(TermsOfService termsOfService) { diff --git a/src/main/java/it/tdlight/client/ScannerClientInteraction.java b/src/main/java/it/tdlight/client/ScannerClientInteraction.java index 2380518..3806aaa 100644 --- a/src/main/java/it/tdlight/client/ScannerClientInteraction.java +++ b/src/main/java/it/tdlight/client/ScannerClientInteraction.java @@ -33,16 +33,27 @@ final class ScannerClientInteraction implements ClientInteraction { String question; boolean trim = false; switch (parameter) { - case ASK_FIRST_NAME: question = "Enter first name"; trim = true; break; - case ASK_LAST_NAME: question = "Enter last name"; trim = true; break; + case ASK_FIRST_NAME: + question = "Enter first name"; + trim = true; + break; + case ASK_LAST_NAME: + question = "Enter last name"; + trim = true; + break; case ASK_CODE: question = "Enter authentication code"; ParameterInfoCode codeInfo = ((ParameterInfoCode) parameterInfo); question += "\n\tPhone number: " + codeInfo.getPhoneNumber(); question += "\n\tTimeout: " + codeInfo.getTimeout() + " seconds"; - question += "\n\tCode type: " + codeInfo.getType().getClass().getSimpleName().replace("AuthenticationCodeType", ""); + question += + "\n\tCode type: " + codeInfo.getType().getClass().getSimpleName().replace("AuthenticationCodeType", ""); if (codeInfo.getNextType() != null) { - question += "\n\tNext code type: " + codeInfo.getNextType().getClass().getSimpleName().replace("AuthenticationCodeType", ""); + question += "\n\tNext code type: " + codeInfo + .getNextType() + .getClass() + .getSimpleName() + .replace("AuthenticationCodeType", ""); } trim = true; break; @@ -82,7 +93,9 @@ final class ScannerClientInteraction implements ClientInteraction { return ""; } break; - default: question = parameter.toString(); break; + default: + question = parameter.toString(); + break; } String result = ScannerUtils.askParameter(who, question); if (trim) { diff --git a/src/main/java/it/tdlight/client/SimpleTelegramClient.java b/src/main/java/it/tdlight/client/SimpleTelegramClient.java index aab7d51..2821dea 100644 --- a/src/main/java/it/tdlight/client/SimpleTelegramClient.java +++ b/src/main/java/it/tdlight/client/SimpleTelegramClient.java @@ -10,7 +10,6 @@ import it.tdlight.common.internal.CommonClientManager; import it.tdlight.common.utils.CantLoadLibrary; import it.tdlight.common.utils.LibraryVersion; import it.tdlight.jni.TdApi; -import it.tdlight.jni.TdApi.Error; import it.tdlight.jni.TdApi.Function; import it.tdlight.jni.TdApi.User; import java.io.IOException; @@ -49,13 +48,12 @@ public final class SimpleTelegramClient implements Authenticable { private AuthenticationData authenticationData; private final Map> commandHandlers = new ConcurrentHashMap<>(); - private final Set> updateHandlers - = new ConcurrentHashMap, Object>() - .keySet(new Object()); - private final Set updateExceptionHandlers = new ConcurrentHashMap() - .keySet(new Object()); - private final Set defaultExceptionHandlers = new ConcurrentHashMap() - .keySet(new Object()); + private final Set> updateHandlers = new ConcurrentHashMap, Object>().keySet( + new Object()); + private final Set updateExceptionHandlers = new ConcurrentHashMap().keySet( + new Object()); + private final Set defaultExceptionHandlers = new ConcurrentHashMap().keySet( + new Object()); private final CountDownLatch closed = new CountDownLatch(1); @@ -63,23 +61,35 @@ public final class SimpleTelegramClient implements Authenticable { this.client = CommonClientManager.create(LibraryVersion.IMPLEMENTATION_NAME); this.settings = settings; this.addUpdateHandler(TdApi.UpdateAuthorizationState.class, - new AuthorizationStateWaitTdlibParametersHandler(client, settings, this::handleDefaultException)); + new AuthorizationStateWaitTdlibParametersHandler(client, settings, this::handleDefaultException) + ); this.addUpdateHandler(TdApi.UpdateAuthorizationState.class, - new AuthorizationStateWaitEncryptionKeyHandler(client, this::handleDefaultException)); + new AuthorizationStateWaitEncryptionKeyHandler(client, this::handleDefaultException) + ); this.addUpdateHandler(TdApi.UpdateAuthorizationState.class, - new AuthorizationStateWaitAuthenticationDataHandler(client, this, - this::handleDefaultException)); + new AuthorizationStateWaitAuthenticationDataHandler(client, this, this::handleDefaultException) + ); this.addUpdateHandler(TdApi.UpdateAuthorizationState.class, - new AuthorizationStateWaitRegistrationHandler(client, new SimpleTelegramClientInteraction(), - this::handleDefaultException)); + new AuthorizationStateWaitRegistrationHandler(client, + new SimpleTelegramClientInteraction(), + this::handleDefaultException + ) + ); this.addUpdateHandler(TdApi.UpdateAuthorizationState.class, - new AuthorizationStateWaitPasswordHandler(client, new SimpleTelegramClientInteraction(), - this::handleDefaultException)); + new AuthorizationStateWaitPasswordHandler(client, + new SimpleTelegramClientInteraction(), + this::handleDefaultException + ) + ); this.addUpdateHandler(TdApi.UpdateAuthorizationState.class, - new AuthorizationStateWaitOtherDeviceConfirmationHandler(new SimpleTelegramClientInteraction())); + new AuthorizationStateWaitOtherDeviceConfirmationHandler(new SimpleTelegramClientInteraction()) + ); this.addUpdateHandler(TdApi.UpdateAuthorizationState.class, - new AuthorizationStateWaitCodeHandler(client, new SimpleTelegramClientInteraction(), - this::handleDefaultException)); + new AuthorizationStateWaitCodeHandler(client, + new SimpleTelegramClientInteraction(), + this::handleDefaultException + ) + ); this.addUpdateHandler(TdApi.UpdateAuthorizationState.class, new AuthorizationStateWaitForExit(this.closed)); AtomicReference me = new AtomicReference<>(); this.addUpdateHandler(TdApi.UpdateAuthorizationState.class, new AuthorizationStateReadyGetMe(client, me)); @@ -133,8 +143,9 @@ public final class SimpleTelegramClient implements Authenticable { } public void addCommandHandler(String commandName, CommandHandler handler) { - Set handlers = this.commandHandlers - .computeIfAbsent(commandName, k -> new ConcurrentHashMap().keySet(new Object())); + Set handlers = this.commandHandlers.computeIfAbsent(commandName, + k -> new ConcurrentHashMap().keySet(new Object()) + ); handlers.add(handler); } diff --git a/src/main/java/it/tdlight/client/TDLibSettings.java b/src/main/java/it/tdlight/client/TDLibSettings.java index f3f1736..fe10ad8 100644 --- a/src/main/java/it/tdlight/client/TDLibSettings.java +++ b/src/main/java/it/tdlight/client/TDLibSettings.java @@ -209,7 +209,8 @@ public final class TDLibSettings { downloadedFilesDirectoryPath, fileDatabaseEnabled, chatInfoDatabaseEnabled, - messageDatabaseEnabled, apiToken, + messageDatabaseEnabled, + apiToken, systemLanguageCode, deviceModel, systemVersion, diff --git a/src/main/java/it/tdlight/client/TelegramError.java b/src/main/java/it/tdlight/client/TelegramError.java index af32313..a92f6aa 100644 --- a/src/main/java/it/tdlight/client/TelegramError.java +++ b/src/main/java/it/tdlight/client/TelegramError.java @@ -3,7 +3,6 @@ package it.tdlight.client; import it.tdlight.jni.TdApi; import it.tdlight.jni.TdApi.Error; import java.util.Objects; -import java.util.StringJoiner; public final class TelegramError extends RuntimeException { diff --git a/src/main/java/it/tdlight/common/ClientEventsHandler.java b/src/main/java/it/tdlight/common/ClientEventsHandler.java index 5eb6503..2baf3ea 100644 --- a/src/main/java/it/tdlight/common/ClientEventsHandler.java +++ b/src/main/java/it/tdlight/common/ClientEventsHandler.java @@ -1,7 +1,5 @@ package it.tdlight.common; -import it.tdlight.jni.TdApi.Object; - public interface ClientEventsHandler { int getClientId(); diff --git a/src/main/java/it/tdlight/common/EventsHandler.java b/src/main/java/it/tdlight/common/EventsHandler.java index 970959b..27b2d0d 100644 --- a/src/main/java/it/tdlight/common/EventsHandler.java +++ b/src/main/java/it/tdlight/common/EventsHandler.java @@ -1,7 +1,5 @@ package it.tdlight.common; -import it.tdlight.jni.TdApi.Object; - public interface EventsHandler { void handleClientEvents(int clientId, diff --git a/src/main/java/it/tdlight/common/Init.java b/src/main/java/it/tdlight/common/Init.java index e8684d3..5d8b745 100644 --- a/src/main/java/it/tdlight/common/Init.java +++ b/src/main/java/it/tdlight/common/Init.java @@ -19,7 +19,6 @@ package it.tdlight.common; import it.tdlight.common.utils.CantLoadLibrary; import it.tdlight.common.utils.LoadLibrary; -import it.tdlight.common.utils.Os; /** * Init class to successfully initialize Tdlib diff --git a/src/main/java/it/tdlight/common/Log.java b/src/main/java/it/tdlight/common/Log.java index cd07fa4..b4fdf3a 100644 --- a/src/main/java/it/tdlight/common/Log.java +++ b/src/main/java/it/tdlight/common/Log.java @@ -1,7 +1,7 @@ package it.tdlight.common; -import it.tdlight.tdnative.NativeLog; import it.tdlight.jni.TdApi; +import it.tdlight.tdnative.NativeLog; import java.util.function.Consumer; /** diff --git a/src/main/java/it/tdlight/common/Response.java b/src/main/java/it/tdlight/common/Response.java index 33c7436..797be73 100644 --- a/src/main/java/it/tdlight/common/Response.java +++ b/src/main/java/it/tdlight/common/Response.java @@ -26,34 +26,39 @@ import java.util.StringJoiner; */ @SuppressWarnings("unused") public final class Response { - private final long id; - private final TdApi.Object object; - /** - * Creates a response with eventId and object, do not create answers explicitly! you must receive the reply through a client. - * @param id TDLib request identifier, which corresponds to the response or 0 for incoming updates from TDLib. - * @param object TDLib API object representing a response to a TDLib request or an incoming update. - */ - public Response(long id, TdApi.Object object) { - this.id = id; - this.object = object; - } + private final long id; + private final TdApi.Object object; - /** - * Get TDLib request identifier. - * @return TDLib request identifier, which corresponds to the response or 0 for incoming updates from TDLib. - */ - public long getId() { - return this.id; - } + /** + * Creates a response with eventId and object, do not create answers explicitly! you must receive the reply through a + * client. + * + * @param id TDLib request identifier, which corresponds to the response or 0 for incoming updates from TDLib. + * @param object TDLib API object representing a response to a TDLib request or an incoming update. + */ + public Response(long id, TdApi.Object object) { + this.id = id; + this.object = object; + } - /** - * Get TDLib API object. - * @return TDLib API object representing a response to a TDLib request or an incoming update. - */ - public TdApi.Object getObject() { - return this.object; - } + /** + * Get TDLib request identifier. + * + * @return TDLib request identifier, which corresponds to the response or 0 for incoming updates from TDLib. + */ + public long getId() { + return this.id; + } + + /** + * Get TDLib API object. + * + * @return TDLib API object representing a response to a TDLib request or an incoming update. + */ + public TdApi.Object getObject() { + return this.object; + } @Override public boolean equals(Object o) { diff --git a/src/main/java/it/tdlight/common/SignalType.java b/src/main/java/it/tdlight/common/SignalType.java index 348b0c3..bead002 100644 --- a/src/main/java/it/tdlight/common/SignalType.java +++ b/src/main/java/it/tdlight/common/SignalType.java @@ -1,7 +1,5 @@ package it.tdlight.common; public enum SignalType { - UPDATE, - EXCEPTION, - CLOSE + UPDATE, EXCEPTION, CLOSE } diff --git a/src/main/java/it/tdlight/common/TelegramClient.java b/src/main/java/it/tdlight/common/TelegramClient.java index 9e8e261..7677383 100644 --- a/src/main/java/it/tdlight/common/TelegramClient.java +++ b/src/main/java/it/tdlight/common/TelegramClient.java @@ -41,7 +41,8 @@ public interface TelegramClient { * resultHandler. If it is null, then defaultExceptionHandler will be called. * @throws NullPointerException if query is null. */ - void send(TdApi.Function query, ResultHandler resultHandler, + void send(TdApi.Function query, + ResultHandler resultHandler, ExceptionHandler exceptionHandler); /** diff --git a/src/main/java/it/tdlight/common/UpdatesHandler.java b/src/main/java/it/tdlight/common/UpdatesHandler.java index 7d47ad5..8a089d2 100644 --- a/src/main/java/it/tdlight/common/UpdatesHandler.java +++ b/src/main/java/it/tdlight/common/UpdatesHandler.java @@ -1,6 +1,5 @@ package it.tdlight.common; -import it.tdlight.jni.TdApi.Object; import java.util.List; /** diff --git a/src/main/java/it/tdlight/common/internal/Handler.java b/src/main/java/it/tdlight/common/internal/Handler.java index 8a8e03a..476a620 100644 --- a/src/main/java/it/tdlight/common/internal/Handler.java +++ b/src/main/java/it/tdlight/common/internal/Handler.java @@ -5,6 +5,7 @@ import it.tdlight.common.ResultHandler; import it.tdlight.jni.TdApi; public final class Handler { + private final ResultHandler resultHandler; private final ExceptionHandler exceptionHandler; diff --git a/src/main/java/it/tdlight/common/internal/InternalClient.java b/src/main/java/it/tdlight/common/internal/InternalClient.java index 7978185..1eba1bf 100644 --- a/src/main/java/it/tdlight/common/internal/InternalClient.java +++ b/src/main/java/it/tdlight/common/internal/InternalClient.java @@ -6,7 +6,6 @@ import it.tdlight.common.ResultHandler; import it.tdlight.common.TelegramClient; import it.tdlight.common.UpdatesHandler; import it.tdlight.jni.TdApi; -import it.tdlight.jni.TdApi.Error; import it.tdlight.jni.TdApi.Function; import it.unimi.dsi.fastutil.longs.LongArrayList; import it.unimi.dsi.fastutil.objects.ObjectArrayList; @@ -46,8 +45,7 @@ public final class InternalClient implements ClientEventsHandler, TelegramClient } @Override - public void handleEvents(boolean isClosed, long[] eventIds, TdApi.Object[] events, - int arrayOffset, int arrayLength) { + public void handleEvents(boolean isClosed, long[] eventIds, TdApi.Object[] events, int arrayOffset, int arrayLength) { if (updatesHandler != null) { LongArrayList idsToFilter = new LongArrayList(eventIds); ObjectArrayList eventsToFilter = new ObjectArrayList<>(events); @@ -115,7 +113,9 @@ public final class InternalClient implements ClientEventsHandler, TelegramClient */ private void handleEvent(long eventId, TdApi.Object event) { logger.trace(TG_MARKER, "Received response {}: {}", eventId, event); - if (updatesHandler != null || updateHandler == null) throw new IllegalStateException(); + if (updatesHandler != null || updateHandler == null) { + throw new IllegalStateException(); + } Handler handler = eventId == 0 ? updateHandler : handlers.remove(eventId); handleResponse(eventId, event, handler); } @@ -127,7 +127,8 @@ public final class InternalClient implements ClientEventsHandler, TelegramClient if (exceptionHandler != null) { try { exceptionHandler.onException(cause); - } catch (Throwable ignored) {} + } catch (Throwable ignored) { + } } } @@ -152,7 +153,9 @@ public final class InternalClient implements ClientEventsHandler, TelegramClient } private void createAndRegisterClient() { - if (clientId != null) throw new UnsupportedOperationException("Can't initialize the same client twice!"); + if (clientId != null) { + throw new UnsupportedOperationException("Can't initialize the same client twice!"); + } clientId = NativeClientAccess.create(); clientManager.registerClient(clientId, this); logger.info(TG_MARKER, "Registered new client {}", clientId); @@ -162,7 +165,8 @@ public final class InternalClient implements ClientEventsHandler, TelegramClient } @Override - public void send(Function query, ResultHandler resultHandler, + public void send(Function query, + ResultHandler resultHandler, ExceptionHandler exceptionHandler) { logger.trace(TG_MARKER, "Trying to send {}", query); if (isClosedAndMaybeThrow(query)) { @@ -202,7 +206,6 @@ public final class InternalClient implements ClientEventsHandler, TelegramClient } /** - * * @param function function used to check if the check will be enforced or not. Can be null * @return true if closed */ diff --git a/src/main/java/it/tdlight/common/internal/InternalClientManager.java b/src/main/java/it/tdlight/common/internal/InternalClientManager.java index 4006fda..cb46231 100644 --- a/src/main/java/it/tdlight/common/internal/InternalClientManager.java +++ b/src/main/java/it/tdlight/common/internal/InternalClientManager.java @@ -39,7 +39,6 @@ public final class InternalClientManager implements AutoCloseable { } /** - * * @return true if started as a result of this call */ public boolean startIfNeeded() { @@ -73,22 +72,30 @@ public final class InternalClientManager implements AutoCloseable { return clientManager; } - private void handleClientEvents(int clientId, boolean isClosed, long[] clientEventIds, TdApi.Object[] clientEvents, - int arrayOffset, int arrayLength) { + private void handleClientEvents(int clientId, + boolean isClosed, + long[] clientEventIds, + TdApi.Object[] clientEvents, + int arrayOffset, + int arrayLength) { ClientEventsHandler handler = registeredClientEventHandlers.get(clientId); if (handler != null) { - handler.handleEvents(isClosed, clientEventIds, clientEvents, arrayOffset, arrayLength); + handler.handleEvents(isClosed, clientEventIds, clientEvents, arrayOffset, arrayLength); } else { - java.util.List droppedEvents - = getEffectivelyDroppedEvents(clientEventIds, clientEvents, arrayOffset, arrayLength); + java.util.List droppedEvents = getEffectivelyDroppedEvents(clientEventIds, + clientEvents, + arrayOffset, + arrayLength + ); if (!droppedEvents.isEmpty()) { logger.error("Unknown client id \"{}\"! {} events have been dropped!", clientId, droppedEvents.size()); for (DroppedEvent droppedEvent : droppedEvents) { logger.error("The following event, with id \"{}\", has been dropped: {}", droppedEvent.id, - droppedEvent.event); + droppedEvent.event + ); } } } @@ -103,8 +110,10 @@ public final class InternalClientManager implements AutoCloseable { /** * Get only events that have been dropped, ignoring synthetic errors related to the closure of a client */ - private List getEffectivelyDroppedEvents(long[] clientEventIds, TdApi.Object[] clientEvents, - int arrayOffset, int arrayLength) { + private List getEffectivelyDroppedEvents(long[] clientEventIds, + TdApi.Object[] clientEvents, + int arrayOffset, + int arrayLength) { java.util.List droppedEvents = new ArrayList<>(arrayLength); for (int i = arrayOffset; i < arrayOffset + arrayLength; i++) { long id = clientEventIds[i]; @@ -155,6 +164,7 @@ public final class InternalClientManager implements AutoCloseable { } private static final class DroppedEvent { + private final long id; private final TdApi.Object event; diff --git a/src/main/java/it/tdlight/common/internal/InternalReactiveClient.java b/src/main/java/it/tdlight/common/internal/InternalReactiveClient.java index 9fe7bdf..bc5cf8a 100644 --- a/src/main/java/it/tdlight/common/internal/InternalReactiveClient.java +++ b/src/main/java/it/tdlight/common/internal/InternalReactiveClient.java @@ -2,8 +2,8 @@ package it.tdlight.common.internal; import it.tdlight.common.ClientEventsHandler; import it.tdlight.common.ExceptionHandler; -import it.tdlight.common.Signal; import it.tdlight.common.ReactiveTelegramClient; +import it.tdlight.common.Signal; import it.tdlight.common.SignalListener; import it.tdlight.jni.TdApi; import it.tdlight.jni.TdApi.Error; @@ -20,7 +20,6 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicReference; import org.reactivestreams.Publisher; -import org.reactivestreams.Subscriber; import org.reactivestreams.Subscription; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -60,8 +59,7 @@ public final class InternalReactiveClient implements ClientEventsHandler, Reacti } @Override - public void handleEvents(boolean isClosed, long[] eventIds, TdApi.Object[] events, - int arrayOffset, int arrayLength) { + public void handleEvents(boolean isClosed, long[] eventIds, TdApi.Object[] events, int arrayOffset, int arrayLength) { for (int i = arrayOffset; i < arrayOffset + arrayLength; i++) { handleEvent(eventIds[i], events[i]); } @@ -127,8 +125,11 @@ public final class InternalReactiveClient implements ClientEventsHandler, Reacti } } if (timedOutHandlers.remove(eventId)) { - logger.trace(TG_MARKER, "Received event id \"{}\", but the event has been dropped because it" - + "timed out some time ago! {}", eventId, event); + logger.trace(TG_MARKER, + "Received event id \"{}\", but the event has been dropped because it" + "timed out some time ago! {}", + eventId, + event + ); } else { logger.error(TG_MARKER, "Unknown event id \"{}\", the event has been dropped! {}", eventId, event); } diff --git a/src/main/java/it/tdlight/common/internal/MultiHandler.java b/src/main/java/it/tdlight/common/internal/MultiHandler.java index 56aa123..550925c 100644 --- a/src/main/java/it/tdlight/common/internal/MultiHandler.java +++ b/src/main/java/it/tdlight/common/internal/MultiHandler.java @@ -4,6 +4,7 @@ import it.tdlight.common.ExceptionHandler; import it.tdlight.common.UpdatesHandler; public final class MultiHandler { + private final UpdatesHandler updatesHandler; private final ExceptionHandler exceptionHandler; diff --git a/src/main/java/it/tdlight/common/internal/NativeClientAccess.java b/src/main/java/it/tdlight/common/internal/NativeClientAccess.java index 9eb0dd6..e00521c 100644 --- a/src/main/java/it/tdlight/common/internal/NativeClientAccess.java +++ b/src/main/java/it/tdlight/common/internal/NativeClientAccess.java @@ -1,8 +1,8 @@ package it.tdlight.common.internal; -import it.tdlight.tdnative.NativeClient; import it.tdlight.jni.TdApi; import it.tdlight.jni.TdApi.Function; +import it.tdlight.tdnative.NativeClient; final class NativeClientAccess extends NativeClient { diff --git a/src/main/java/it/tdlight/common/internal/ResponseReceiver.java b/src/main/java/it/tdlight/common/internal/ResponseReceiver.java index c0a55de..b86f0b7 100644 --- a/src/main/java/it/tdlight/common/internal/ResponseReceiver.java +++ b/src/main/java/it/tdlight/common/internal/ResponseReceiver.java @@ -23,6 +23,7 @@ public final class ResponseReceiver extends Thread implements AutoCloseable { )); private static final int MAX_EVENTS = 100; private static final int[] originalSortingSource = new int[MAX_EVENTS]; + static { for (int i = 0; i < originalSortingSource.length; i++) { originalSortingSource[i] = i; @@ -44,8 +45,7 @@ public final class ResponseReceiver extends Thread implements AutoCloseable { private int clientEventsLastUsedLength = 0; private final CountDownLatch closeWait = new CountDownLatch(1); - private final Set registeredClients - = new ConcurrentHashMap().keySet(new java.lang.Object()); + private final Set registeredClients = new ConcurrentHashMap().keySet(new java.lang.Object()); public ResponseReceiver(EventsHandler eventsHandler) { @@ -72,8 +72,8 @@ public final class ResponseReceiver extends Thread implements AutoCloseable { int[] sortIndex; try { boolean interrupted; - while (!(interrupted = Thread.interrupted()) - && ((!closeCalled.get() && !jvmShutdown.get()) || !registeredClients.isEmpty())) { + while (!(interrupted = Thread.interrupted()) && ((!closeCalled.get() && !jvmShutdown.get()) + || !registeredClients.isEmpty())) { int resultsCount = NativeClientAccess.receive(clientIds, eventIds, events, 2.0 /*seconds*/); if (resultsCount <= 0) { @@ -101,8 +101,7 @@ public final class ResponseReceiver extends Thread implements AutoCloseable { if (clientEventIds[j] == 0 && clientEvents[j].getConstructor() == TdApi.UpdateAuthorizationState.CONSTRUCTOR) { - TdApi.AuthorizationState authorizationState - = ((TdApi.UpdateAuthorizationState) clientEvents[j]).authorizationState; + TdApi.AuthorizationState authorizationState = ((TdApi.UpdateAuthorizationState) clientEvents[j]).authorizationState; if (authorizationState.getConstructor() == TdApi.AuthorizationStateClosed.CONSTRUCTOR) { lastClientClosed = true; closedClients.add(clientId); @@ -111,8 +110,13 @@ public final class ResponseReceiver extends Thread implements AutoCloseable { } cleanClientEventsArray(lastClientIdEventsCount); - eventsHandler.handleClientEvents(clientId, lastClientClosed, clientEventIds, clientEvents, - 0, lastClientIdEventsCount); + eventsHandler.handleClientEvents(clientId, + lastClientClosed, + clientEventIds, + clientEvents, + 0, + lastClientIdEventsCount + ); } if (i < resultsCount) { @@ -146,7 +150,8 @@ public final class ResponseReceiver extends Thread implements AutoCloseable { } Set clientIds = eventsList.stream().map(e -> e.clientId).collect(Collectors.toSet()); for (int clientId : clientIds) { - List clientEventsList = eventsList.stream() + List clientEventsList = eventsList + .stream() .filter(e -> e.clientId == clientId) .collect(Collectors.toList()); boolean closed = false; @@ -156,8 +161,7 @@ public final class ResponseReceiver extends Thread implements AutoCloseable { clientEvents[i] = e.event; if (e.eventId == 0 && e.event.getConstructor() == TdApi.UpdateAuthorizationState.CONSTRUCTOR) { - TdApi.AuthorizationState authorizationState - = ((TdApi.UpdateAuthorizationState) e.event).authorizationState; + TdApi.AuthorizationState authorizationState = ((TdApi.UpdateAuthorizationState) e.event).authorizationState; if (authorizationState.getConstructor() == TdApi.AuthorizationStateClosed.CONSTRUCTOR) { closed = true; closedClients.add(clientId); @@ -165,8 +169,13 @@ public final class ResponseReceiver extends Thread implements AutoCloseable { } } cleanClientEventsArray(clientEventsList.size()); - eventsHandler.handleClientEvents(clientId, closed, clientEventIds, clientEvents, - 0, clientEventsList.size()); + eventsHandler.handleClientEvents(clientId, + closed, + clientEventIds, + clientEvents, + 0, + clientEventsList.size() + ); } } @@ -206,7 +215,8 @@ public final class ResponseReceiver extends Thread implements AutoCloseable { @SuppressWarnings("SameParameterValue") private int[] generateSortIndex(int from, int to, int[] data) { int[] sortedIndices = Arrays.copyOfRange(originalSortingSource, from, to); - it.unimi.dsi.fastutil.Arrays.mergeSort(from, to, + it.unimi.dsi.fastutil.Arrays.mergeSort(from, + to, (o1, o2) -> Integer.compare(data[sortedIndices[o1]], data[sortedIndices[o2]]), new IntSwapper(sortedIndices) ); diff --git a/src/main/java/it/tdlight/common/utils/CantLoadLibrary.java b/src/main/java/it/tdlight/common/utils/CantLoadLibrary.java index 82d0585..85d4a4e 100644 --- a/src/main/java/it/tdlight/common/utils/CantLoadLibrary.java +++ b/src/main/java/it/tdlight/common/utils/CantLoadLibrary.java @@ -17,28 +17,27 @@ package it.tdlight.common.utils; -import java.io.IOException; - /** * An exception that is thrown when the LoadLibrary class fails to load the library. */ public final class CantLoadLibrary extends Exception { - /** - * Creates a new CantLoadLibrary exception. - */ - CantLoadLibrary() { - super("Init failed when loading TDLib native libraries, execution can't continue"); - } + + /** + * Creates a new CantLoadLibrary exception. + */ + CantLoadLibrary() { + super("Init failed when loading TDLib native libraries, execution can't continue"); + } public CantLoadLibrary(String message) { - super(message); + super(message); } public CantLoadLibrary(String message, Exception cause) { - super(message, cause); + super(message, cause); } public CantLoadLibrary(Exception cause) { - super(cause); + super(cause); } } diff --git a/src/main/java/it/tdlight/common/utils/LoadLibrary.java b/src/main/java/it/tdlight/common/utils/LoadLibrary.java index 8cca184..027681f 100644 --- a/src/main/java/it/tdlight/common/utils/LoadLibrary.java +++ b/src/main/java/it/tdlight/common/utils/LoadLibrary.java @@ -19,13 +19,13 @@ package it.tdlight.common.utils; import java.io.IOException; import java.io.InputStream; +import java.lang.reflect.InvocationTargetException; import java.nio.ByteOrder; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; -import java.lang.reflect.InvocationTargetException; /** * The class to load the libraries needed to run Tdlib diff --git a/src/main/java/it/tdlight/common/utils/SpinWaitSupport.java b/src/main/java/it/tdlight/common/utils/SpinWaitSupport.java index ff8e501..be6a548 100644 --- a/src/main/java/it/tdlight/common/utils/SpinWaitSupport.java +++ b/src/main/java/it/tdlight/common/utils/SpinWaitSupport.java @@ -1,8 +1,5 @@ package it.tdlight.common.utils; -import java.lang.invoke.MethodHandle; -import java.lang.invoke.MethodHandles; -import java.lang.invoke.MethodType; import java.util.concurrent.locks.LockSupport; public class SpinWaitSupport { diff --git a/src/main/java/it/tdlight/tdlib/ClientManager.java b/src/main/java/it/tdlight/tdlib/ClientManager.java index 4a843c5..e882aa0 100644 --- a/src/main/java/it/tdlight/tdlib/ClientManager.java +++ b/src/main/java/it/tdlight/tdlib/ClientManager.java @@ -1,8 +1,8 @@ package it.tdlight.tdlib; -import it.tdlight.common.internal.CommonClientManager; import it.tdlight.common.ReactiveTelegramClient; import it.tdlight.common.TelegramClient; +import it.tdlight.common.internal.CommonClientManager; /** * Interface for interaction with TDLib. diff --git a/src/main/java/it/tdlight/tdlight/ClientManager.java b/src/main/java/it/tdlight/tdlight/ClientManager.java index ba2d46f..7485410 100644 --- a/src/main/java/it/tdlight/tdlight/ClientManager.java +++ b/src/main/java/it/tdlight/tdlight/ClientManager.java @@ -1,8 +1,8 @@ package it.tdlight.tdlight; -import it.tdlight.common.internal.CommonClientManager; import it.tdlight.common.ReactiveTelegramClient; import it.tdlight.common.TelegramClient; +import it.tdlight.common.internal.CommonClientManager; /** * Interface for interaction with TDLight. diff --git a/src/main/java/it/tdlight/tdnative/NativeClient.java b/src/main/java/it/tdlight/tdnative/NativeClient.java index 4d13ebb..5342dd1 100644 --- a/src/main/java/it/tdlight/tdnative/NativeClient.java +++ b/src/main/java/it/tdlight/tdnative/NativeClient.java @@ -6,10 +6,13 @@ public class NativeClient { protected static native int createNativeClient(); - protected static native void nativeClientSend(int nativeClientId, long eventId, + protected static native void nativeClientSend(int nativeClientId, + long eventId, TdApi.Function function); - protected static native int nativeClientReceive(int[] clientIds, long[] eventIds, TdApi.Object[] events, + protected static native int nativeClientReceive(int[] clientIds, + long[] eventIds, + TdApi.Object[] events, double timeout); protected static native TdApi.Object nativeClientExecute(TdApi.Function function); diff --git a/src/main/java/it/tdlight/tdnative/NativeLog.java b/src/main/java/it/tdlight/tdnative/NativeLog.java index 94c5ac6..aaba3d8 100644 --- a/src/main/java/it/tdlight/tdnative/NativeLog.java +++ b/src/main/java/it/tdlight/tdnative/NativeLog.java @@ -1,7 +1,6 @@ package it.tdlight.tdnative; import it.tdlight.jni.TdApi; -import java.util.Objects; import java.util.function.Consumer; /**