S-JIS[2023-12-09]

Tsubakuro ServiceClient

TsurugiTsubakuro(Java通信ライブラリー)のServiceClientのメモ。


概要

Tsubakuro 1.1.0(Tsurugi 1.0.0-BETA2)で、ServiceClientというマーカーインターフェースが追加された。

TsubakuroにはSqlClientKvsClient等の様々なサービスのクライアントがあるが、それらのインターフェースがServiceClientを継承している。

SqlClientの例

@ServiceMessageVersion(
        service = SqlClient.SERVICE_SYMBOLIC_ID,
        major = SqlClient.SERVICE_MESSAGE_VERSION_MAJOR,
        minor = SqlClient.SERVICE_MESSAGE_VERSION_MINOR)
public interface SqlClient extends ServerResource, ServiceClient {
〜
}

ServiceClientを継承したクライアントには、ServiceMessageVersionアノテーションが付いている。
これはそのサービスのService Message Version(SMV)を表している。

例えばTsubakuro 1.1.0のSqlClientの場合、service="sql", major=1, minor=0である。(「sql-1.0」を意味している)


ServiceClientCollector

ServiceClientCollectorは、依存ライブラリー内にある全てのサービスクライアントを取得する為のクラス。

import java.util.List;

import com.tsurugidb.tsubakuro.client.ServiceClient;
import com.tsurugidb.tsubakuro.client.ServiceClientCollector;
    List<? extends Class<? extends ServiceClient>> list = ServiceClientCollector.collect(false);
    for (var clazz : list) {
        System.out.println(clazz);
    }

↓実行例(Tsubakuro 1.1.0)

interface com.tsurugidb.tsubakuro.auth.AuthClient
interface com.tsurugidb.tsubakuro.datastore.DatastoreClient
interface com.tsurugidb.tsubakuro.sql.SqlClient

※AuthClient, DatastoreClient, SqlClientはtsubakuro-sessionの中に入っている


findServiceMessageVersion

ServiceClientCollectorには、サービスクライアントクラスのService Message Version(SMV)の文字列を取得するメソッドが用意されている。

    List<? extends Class<? extends ServiceClient>> list = ServiceClientCollector.collect(false);
    for (var clazz : list) {
        Optional<String> smv = ServiceClientCollector.findServiceMessageVersion(clazz);
        System.out.printf("%s: %s%n", clazz.getSimpleName(), smv.orElse("null"));
    }

↓実行例(Tsubakuro 1.1.0)

AuthClient: auth-0.0
DatastoreClient: datastore-0.0
SqlClient: sql-1.0

ServiceMessageVersionアノテーションが付いていないクラスを指定した場合、Optional.emptyが返る


Tsubakuroへ戻る / Tsurugiへ戻る / 技術メモへ戻る
メールの送信先:ひしだま