Skip to content

Project modules

Kostya edited this page Apr 8, 2022 · 2 revisions

Описание модулей

Основное отличие EasyDonate4J 2.0 от старых версий - Модульность.
Такая система предоставляет разработчику выбор среди наборов имплементаций сервисов для работы с JSON и HTTP протоколом.

В размещённых ниже таблицах Вы можете изучить предназначение каждого такого модуля в проекте.
В колонке Artifact ID размещены тэги artifactId соответствующих зависимостей, которые Вы и будете подключать к Вашему проекту, если он построен на базе конфигурации Maven. Для тэга groupId всегда используется ru.easydonate.easydonate4j, а актуальную версию для всех модулей Вы можете увидеть в самом низу страницы.

Соответственно, при использовании Gradle Вам достаточно будет указать groupId, artifactId и версию через :.
Я думаю, Вы прекрасно знаете, как подключаются зависимости в используемом Вами инструменте сборки :)

ВАЖНО! Примеры конфигураций зависимостей ниже не обновляются, потому в них может быть указана не самая последняя версия модулей.
Обновляйтесь до последней версии, ориентируясь по эмблеме с актуальной версией ниже этого сообщения.

mavenReleaseImg

Реализации API платформы

Модули из списка ниже предоставляют набор классов и интерфейсов для работы с данными API EasyDonate.
Если Вы хотите работать с определённым API, Вам необходимо в первую очередь подключить соответствующий модуль.

Название API Artifact ID Предназначение
API v3 api-v3 Содержит SDK для работы с API платформы версии 3.
Позволяет получать информацию о магазине и подключённых плагинах.
Callback API callback-api Предоставляет инструменты для работы с Callback API на стороне сервера:
Систему событий, их слушателей, а также инструменты проверки подписей.

Пример подключения зависимости в Maven:

<dependency>
    <groupId>ru.easydonate.easydonate4j</groupId>
    <artifactId>api-v3</artifactId>
    <version>2.0.6</version>
</dependency>

Реализации HTTP Client Service

Данный сервис используется для работы с HTTP протоколом, т.е., непосредственно, для отправки запросов на API сервер.
Выбирайте подходящий модуль под Ваше рабочее окружение.

Например, если Вы разрабатываете Bukkit плагин на базе EasyDonate4J, то оптимальным вариантом для Вас будет сервис на базе JDK Legacy.
Он основан на встроенном в JDK 8 инструментарии и едва ли добавит веса Вашему плагину.

Сервис Artifact ID Версия Java Зависимости Описание
Apache apache-http-client Java 8+ HTTP Client 5
(Apache)
Сервис на базе клиента от Apache.
JDK Legacy jdk-legacy-http-client Java 8+ Очень лёгкий и совместимый сервис на базе встроенного в JDK инструментария.
JDK Modern jdk-modern-http-client Java 11+ Сервис на базе нового встроенного HTTP Client API из Java 9.
Okhttp3 okhttp3-http-client Java 8+ Okhttp (Squareup) Сервис на базе API от OkHttp 3.

Пример подключения зависимости в Maven:

<dependency>
    <groupId>ru.easydonate.easydonate4j</groupId>
    <artifactId>jdk-legacy-http-client</artifactId>
    <version>2.0.6</version>
</dependency>

Важно! Не забудьте зарегистрировать выбранный Вами сервис в рабочем окружении SDK!

Пример регистрации выбранного сервиса:

ApacheHttpClientService.registerIfNotRegisteredYet();      // Apache 
JDKLegacyHttpClientService.registerIfNotRegisteredYet();   // JDK Legacy
JDKModernHttpClientService.registerIfNotRegisteredYet();   // JDK Modern
OkHttpClientService.registerIfNotRegisteredYet();          // OkHttp3

Реализации JSON Serialization Service

Данный сервис используется для десериализации Java моделей из ответов от API сервера.
Именно он и преобразует JSON ответы в нужные модели, с которыми Вы далее работаете.

Как и в случае с предыдущим сервисом, для Bukkit плагина рекомендую Вам использовать сервис на базе GSON.
В дополнение к этому, Вы можете исключить зависимость этого модуля от GSON, поскольку эта библиотека уже вшита в ядро сервера игры.

НО! На старых версиях (ниже 1.12) эта библиотека в ядре отсутствует.
Поэтому Вам желательно оставить шейдинг GSON в JAR Вашего плагина для совместимости со старыми версиями.
Просто используйте relocation из shade плагина для подмены пакета GSON в этом случае, как показано здесь.

Сервис Artifact ID Версия Java Зависимости Описание
GSON gson-json-provider Java 8+ GSON (Google) Имплементации моделек на базе GSON.
Отлично подходит для Bukkit плагинов.
Jackson jackson-json-provider Java 8+ Jackson
(FasterXML)
Имплементации моделек на базе Jackson.
Несколько быстрее и удобнее GSON, но толстоват.

Пример подключения зависимости в Maven:

<dependency>
    <groupId>ru.easydonate.easydonate4j</groupId>
    <artifactId>gson-json-provider</artifactId>
    <version>2.0.6</version>
    <!-- Исключение зависимости GSON при условии, -->
    <!-- что она предоставляется ядром сервера -->
    <exclusions>
        <exclusion>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
        </exclusion>
    </exclusions>
</dependency>

Важно! Не забудьте зарегистрировать выбранный Вами сервис в рабочем окружении SDK!

Пример регистрации выбранного сервиса:

GsonSerializationService.registerIfNotRegisteredYet();      // GSON 
JacksonSerializationService.registerIfNotRegisteredYet();   // Jackson

Пример конфигурации зависимостей для плагина

Ниже представлен пример конфигурации проекта на базе Maven (pom.xml) для Bukkit плагина.

<properties>
    <!-- EasyDonate4J version -->
    <easydonate4j.version>2.0.6</easydonate4j.version>
</properties>

<dependencies>
    <!-- EasyDonate4J - API v3 -->
    <dependency>
        <groupId>ru.easydonate.easydonate4j</groupId>
        <artifactId>api-v3</artifactId>
        <version>${easydonate4j.version}</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>ru.easydonate.easydonate4j</groupId>
        <artifactId>gson-json-provider</artifactId>
        <version>${easydonate4j.version}</version>
        <scope>compile</scope>
        <exclusions>
            <exclusion>
                <groupId>com.google.code.gson</groupId>
                <artifactId>gson</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>ru.easydonate.easydonate4j</groupId>
        <artifactId>jdk-legacy-http-client</artifactId>
        <version>${easydonate4j.version}</version>
        <scope>compile</scope>
    </dependency>
</dependencies>

Конечно, подключить модули - ещё недостаточно.
Вам необходимо также зарегистрировать их в Вашем рабочем окружении:

public final class MyAwesomePlugin extends JavaPlugin {

    @Override
    public void onEnable() {
        // TODO primary #onEnable() logic
        
        // EasyDonate4J modules registration
        GsonSerializationService.registerIfNotRegisteredYet();
        JDKLegacyHttpClientService.registerIfNotRegisteredYet();

        // TODO EasyDonate4J client instance initialization
    }

}
Clone this wiki locally