7.19. 汎用ユーティリティ

本フレームワークで提供している、汎用的に利用できるユーティリティクラスを以下に示す。

クラス名 モジュール名 概要
DateUtil nablarch-core 日付に関する機能を提供する
FileUtil nablarch-core ファイルの取り扱いに関する機能を提供する
ObjectUtil nablarch-core オブジェクトの取り扱いに関する機能を提供する
StringUtil nablarch-core 文字列に関する機能を提供する
BeanUtil nablarch-core-beans Java Beansクラスに関する機能を提供する。プロパティを扱う際の型変換ルールについては BeanUtilの型変換ルール を参照。
Base64Util nablarch-fw Base64エンコーディングに関する機能を提供する
BinaryUtil nablarch-fw-web-extension バイナリに関する機能を提供する

7.19.1. BeanUtilの型変換ルール

BeanUtil では、Java BeansオブジェクトやMapオブジェクトから 別のJava Beansオブジェクトにデータ移行する際にプロパティの型変換を行っている。

なお、MapオブジェクトからJava Beansオブジェクトにデータ移行する場合、 Mapオブジェクトのキーに . が含まれていればそのプロパティをネストオブジェクトとして扱う。

型変換ルールについては、 nablarch.core.beans.converter パッケージ配下に配置されている Converter 実装クラスをそれぞれ参照すること。

重要

デフォルトで提供する型変換ルールでは、精度の小さい型への変換を行った場合(例えばLongからIntegerへの変換)で、変換先の精度を超えるような値を指定しても正常に処理を終了する。 このため、BeanUtilを使用してコピーを行う際には、コピーする値がシステムで許容されているかどうかを 入力値のチェック によって事前に検証しておく必要がある。 検証を行わなかった場合、不正な値がシステムに取り込まれ障害の原因となる可能性がある。

7.19.1.1. 型変換ルールを追加する

型変換ルールを追加するには、以下の手順が必要となる。

  1. 必要に応じて以下のインタフェースを実装し型変換処理を実現する。
  1. ConversionManager の実装クラスを作成する。 今回は標準の型変換ルールに追加でルールを設定するため、 ConversionManager をプロパティとして持つ、 ConversionManager の実装クラスを作成する。
public class SampleConversionManager implements ConversionManager {

  private ConversionManager delegateManager;

  @Override
  public Map<Class<?>, Converter<?>> getConverters() {
      Map<Class<?>, Converter<?>> converters = new HashMap<Class<?>, Converter<?>>();

      // 標準のコンバータ
      converters.putAll(delegateManager.getConverters());

      // 今回作成したコンバータ
      converters.put(BigInteger.class, new CustomConverter());

      return Collections.unmodifiableMap(converters);
  }

  @Override
  public List<ExtensionConverter<?>> getExtensionConvertor() {
      final List<ExtensionConverter<?>> extensionConverters =
          new ArrayList<ExtensionConverter<?>>(delegateManager.getExtensionConvertor());
      extensionConverters.add(new CustomExtensionConverter());
      return extensionConverters;
  }

  public void setDelegateManager(ConversionManager delegateManager) {
      this.delegateManager = delegateManager;
  }
}
  1. コンポーネント設定ファイルに、 ConversionManager の実装クラスを設定する。

    ポイント
    • コンポーネント名は conversionManager とすること。
    <component name="conversionManager" class="sample.SampleConversionManager">
      <property name="delegateManager">
        <component class="nablarch.core.beans.BasicConversionManager" />
      </property>
    </component>