All Downloads are FREE. Search and download functionalities are using the official Maven repository.

nablarch.integration.redisstore.lettuce.LettuceRedisClientProvider Maven / Gradle / Ivy

The newest version!
package nablarch.integration.redisstore.lettuce;


import nablarch.core.repository.di.ComponentFactory;
import nablarch.core.repository.di.ContainerProcessException;

import java.util.List;
import java.util.stream.Collectors;

/**
 * {@link LettuceRedisClient} のインスタンスを提供するクラス。
 * 

* このクラスは、 {@link #setClientList(List)} で設定されたリストの中から、 * {@link LettuceRedisClient#getType()} が返した値と {@link #setClientType(String)} で設定された値が * 一致するインスタンスを検索し、最初に該当したインスタンスを {@link #createObject()} の結果として返す。 *

* @author Tanaka Tomoyuki */ public class LettuceRedisClientProvider implements ComponentFactory { private String clientType; private List clientList; @Override public LettuceRedisClient createObject() { if (clientType == null) { throw new ContainerProcessException("clientType must not be null."); } if (clientList == null) { throw new ContainerProcessException("clientList must not be null."); } return clientList.stream() .filter(client -> client.getType().equals(clientType)) .findFirst() .orElseThrow(this::createNoClientMatchesException); } /** * 該当する {@link LettuceRedisClient} が見つからなかったときの例外を構築する。 * @return 構築した例外 */ private ContainerProcessException createNoClientMatchesException() { String clientTypes = clientList.stream() .map(LettuceRedisClient::getType) .collect(Collectors.joining(", ", "[", "]")); String message = String.format("No client matches. clientType=%s, clientList=%s", clientType, clientTypes); return new ContainerProcessException(message); } /** * 使用する {@link LettuceRedisClient} の実装を識別する値。 * @param clientType {@link LettuceRedisClient} の実装を識別する値 */ public void setClientType(String clientType) { this.clientType = clientType; } /** * 候補となる {@link LettuceRedisClient} インスタンスのリストを設定する。 * @param clientList {@link LettuceRedisClient} のリスト */ public void setClientList(List clientList) { this.clientList = clientList; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy