Package nablarch.core.beans
Class BeanUtil
java.lang.Object
nablarch.core.beans.BeanUtil
JavaBeansに関する操作をまとめたユーティリティクラス。
- Author:
- kawasima, tajima
-
Method Summary
Modifier and TypeMethodDescriptionstatic <T> void
copy
(Class<? extends T> beanClass, T bean, Map<String, ?> map, CopyOptions copyOptions) Map
からBeanインスタンスへコピーを行う。 生成済みのインスタンスにコピーを行う点以外は、createAndCopy(Class, Map, CopyOptions)
と同じ動作である。static <SRC,
DEST> DEST copy
(SRC srcBean, DEST destBean) BeanからBeanに値をコピーする。static <SRC,
DEST> DEST copy
(SRC srcBean, DEST destBean, CopyOptions copyOptions) BeanからBeanに値をコピーする。static <SRC,
DEST> DEST copyExcludes
(SRC srcBean, DEST destBean, String... excludes) BeanからBeanに、指定されたプロパティ以外をコピーする。static <SRC,
DEST> DEST copyExcludesNull
(SRC srcBean, DEST destBean) BeanからBeanに値をコピーする。ただしnullのプロパティはコピーしない。static <SRC,
DEST> DEST copyIncludes
(SRC srcBean, DEST destBean, String... includes) BeanからBeanに、指定されたプロパティをコピーする。protected static <SRC,
DEST> DEST copyInner
(SRC srcBean, DEST destBean, CopyOptions copyOptions) BeanからBeanに値をコピーする。static <T> T
createAndCopy
(Class<T> beanClass, Object srcBean) Java Beansからプロパティをコピーして、別のBeanを作成する。static <T> T
createAndCopy
(Class<T> beanClass, Object srcBean, CopyOptions copyOptions) Java Beansからプロパティをコピーして、別のBeanを作成する。static <T> T
createAndCopy
(Class<T> beanClass, Map<String, ?> map) Map
からBeanを生成する。static <T> T
createAndCopy
(Class<T> beanClass, Map<String, ?> map, CopyOptions copyOptions) Map
からBeanを生成する。static <T> T
createAndCopyExcludes
(Class<T> beanClass, Object srcBean, String... excludes) Java Beansから指定されたプロパティ以外をコピーして、別のBeanを作成する。static <T> T
createAndCopyExcludes
(Class<T> beanClass, Map<String, ?> map, String... excludes) Map
から指定されたプロパティ以外をコピーしてBeanを生成する。static <T> T
createAndCopyIncludes
(Class<T> beanClass, Object srcBean, String... includes) Java Beansから指定されたプロパティをコピーして、別のBeanを作成する。static <T> T
createAndCopyIncludes
(Class<T> beanClass, Map<String, ?> map, String... includes) Map
から、指定したプロパティのみをコピーしたBeanを生成する。createMapAndCopy
(SRC srcBean) BeanからMapにプロパティの値をコピーする。createMapAndCopy
(SRC srcBean, CopyOptions copyOptions) BeanからMapにプロパティの値をコピーする。createMapAndCopyExcludes
(SRC srcBean, String... excludeProperties) BeanからMapにプロパティの値をコピーする。createMapAndCopyIncludes
(SRC srcBean, String... includesProperties) BeanからMapに指定されたプロパティの値をコピーする。static Object
getProperty
(Object bean, String propertyName) 指定したオブジェクトから、特定のプロパティの値を取得する。static Object
getProperty
(Object bean, String propertyName, Class<?> type) 指定したオブジェクトのプロパティの値を、指定した型に変換して取得する。static PropertyDescriptor
getPropertyDescriptor
(Class<?> beanClass, String propertyName) 指定したクラスから、特定のプロパティのPropertyDescriptor
を取得する。static PropertyDescriptor[]
getPropertyDescriptors
(Class<?> beanClass) 指定したクラスに属する全てのプロパティのPropertyDescriptor
を取得する。 ただし、classプロパティは取得対象外となる。static void
setProperty
(Object bean, String propertyName, Object propertyValue) 指定したオブジェクトのプロパティに値を登録する。
-
Method Details
-
getPropertyDescriptors
指定したクラスに属する全てのプロパティのPropertyDescriptor
を取得する。 ただし、classプロパティは取得対象外となる。- Parameters:
beanClass
- プロパティを取得したいクラス- Returns:
- PropertyDescriptor[] 全てのプロパティの
PropertyDescriptor
- Throws:
BeansException
- プロパティの取得に失敗した場合。
-
getPropertyDescriptor
指定したクラスから、特定のプロパティのPropertyDescriptor
を取得する。- Parameters:
beanClass
- プロパティを取得したいクラスpropertyName
- 取得したいプロパティ名- Returns:
- PropertyDescriptor 取得したプロパティ
- Throws:
BeansException
-propertyName
に対応するプロパティが定義されていない場合。
-
getProperty
指定したオブジェクトから、特定のプロパティの値を取得する。propertyName
には、bean
のトップレベル要素のみ指定可能である。// ----------サンプルで使用するBean---------- public class SampleBean { private String stringProp; private List<String> listProp; private String[] arrayProp; private NestedBean nestedBean; // setter及びgetterは省略 } public class NestedBean { private String nestedStringProp; // setter及びgetterは省略 } // ----------実装例---------- // 問題のないコード1 String stringProp = BeanUtil.getProperty(sampleBean, "stringProp"); // 問題のないコード2 String stringProp = BeanUtil.getProperty(sampleBean.nestedBean, "nestedStringProp"); // 以下のコードは動作しない String nestedStringProp = BeanUtil.getProperty(sampleBean, "nestedBean.nestedStringProp");
- Parameters:
bean
- プロパティの値を取得したいBeanオブジェクトpropertyName
- 取得したいプロパティ名- Returns:
- Object オブジェクトから取得したプロパティの値
- Throws:
BeansException
-propertyName
に対応するプロパティが定義されていない場合。
-
getProperty
指定したオブジェクトのプロパティの値を、指定した型に変換して取得する。 型変換の仕様はConversionUtil
を参照。propertyName
の指定方法についてはgetProperty(Object, String)
を参照。- Parameters:
bean
- プロパティの値を取得したいBeanオブジェクトpropertyName
- 取得したいプロパティの名称type
- 変換したい型 (nullを指定した場合は変換を行わず、プロパティの値をそのまま返す。)- Returns:
- Object 取得したプロパティを
type
に変換したオブジェクト - Throws:
BeansException
-propertyName
に対応するプロパティが定義されていない場合。
-
setProperty
指定したオブジェクトのプロパティに値を登録する。 対象のプロパティにsetterが定義されていない場合はなにもしない。propertyValue
がnullの場合は、例外の送出やログ出力は行わずに、対象プロパティの値はnullになる。 プロパティの指定方法
propertyName
にはプロパティ名を指定する。 List型・配列型のプロパティでは、"プロパティ名[インデックス]"という形式で要素番号を指定して値を登録できる。 ネストしたプロパティを指定することも可能である。ネストの深さに制限はない。 ネストの親となるプロパティがnullである場合は、デフォルトコンストラクタを起動し インスタンスを生成してから値を格納する。 実装例
// ----------サンプルで使用するBean---------- public class SampleBean { private String stringProp; private List<String> listProp; private String[] arrayProp; private NestedBean nestedBean; // setter及びgetterは省略 } public class NestedBean { private String nestedStringProp; // setter及びgetterは省略 } // ----------実装例---------- SampleBean sampleBean = new SampleBean(); // stringPropプロパティに"value"を登録 BeanUtil.setProperty(sampleBean,"stringProp", "value"); // stringPropプロパティにnullを登録。stringPropはnullとなる BeanUtil.setProperty(sampleBean,"stringProp", null); // listPropPropプロパティの要素番号0の位置に"list_value"を登録 BeanUtil.setProperty(sampleBean,"listProp[0]", "list_value"); // 配列型のプロパティの要素番号0の位置に"array_value"を登録 // 十分な要素数が自動で確保される BeanUtil.setProperty(sampleBean, "arrayProp[0]", "array_value"); // nestedBeanプロパティのnestedStringPropプロパティに"nested_value"を登録 BeanUtil.setProperty(sampleBean, "nestedBean.nestedStringProp", "nested_value");
- Parameters:
bean
- 値を登録したいBeanオブジェクトpropertyName
- 値を登録したいプロパティ名propertyValue
- 登録したい値- Throws:
BeansException
-propertyName
に対応するプロパティが定義されていない場合- List型・配列型以外のプロパティに、"プロパティ名[インデックス]"という形式で指定した場合
- ネストの親となるプロパティのインスタンス生成に失敗した場合
-
createAndCopy
Map
からBeanを生成する。map
がnullである場合は、デフォルトコンストラクタでbeanClass
を生成して返却する。map
にvalueがnullのエントリがある場合、対応するプロパティの値はnullとなる。 対象のプロパティにsetterが定義されていない場合はなにもしない。 プロパティの指定方法
map
に格納するエントリのキー値には、値を登録したいプロパティ名を指定する。 List型・配列型のプロパティでは、"プロパティ名[インデックス]"という形式で要素番号を指定して値を登録できる。 ネストしたプロパティを指定することも可能である。ネストの深さに制限はない。 ネストの親となるプロパティがnullである場合は、インスタンスを生成してから値を登録する。 実装例
// ----------サンプルで使用するBean---------- public class SampleBean { private String stringProp; private List<String> listProp; private String[] arrayProp; private NestedBean nestedBean; // setter及びgetterは省略 } public class NestedBean { private String nestedStringProp; // setter及びgetterは省略 } // ----------実装例---------- // 格納したいプロパティ名をkeyに、値をvalueにもつMapを作成する Map<String,Object> map = new HashMap(); // String型のプロパティに"value"を登録 map.put("stringProp", "value"); // stringPropプロパティにnullを登録。stringPropはnullとなる。 map.put("stringProp", null); // List型のプロパティの要素番号0の位置に"list_value"を登録 map.put("listProp[0]", "list_value"); // 配列型のプロパティの要素番号0の位置に"array_value"を登録 // 十分な要素数が自動で確保される map.put("arrayProp[0]", "array_value"); // ネストしたオブジェクトのプロパティに"nested_value"を登録 map.put("nestedBean.nestedStringProp", "nested_value"); SampleBean sampleBean = BeanUtil.createAndCopy(SampleBean.class,map);
- Type Parameters:
T
- 型引数- Parameters:
beanClass
- 生成したいBeanクラスmap
- JavaBeansのプロパティ名をエントリーのキー プロパティの値をエントリーの値とするMapcopyOptions
- コピーの設定- Returns:
- プロパティに値が登録されたBeanオブジェクト
- Throws:
BeansException
-beanClass
にデフォルトコンストラクタが定義されていない場合や、beanClass
のコンストラクタ実行時に問題が発生した場合。
-
copy
public static <T> void copy(Class<? extends T> beanClass, T bean, Map<String, ?> map, CopyOptions copyOptions) Map
からBeanインスタンスへコピーを行う。 生成済みのインスタンスにコピーを行う点以外は、createAndCopy(Class, Map, CopyOptions)
と同じ動作である。- Type Parameters:
T
- 型引数- Parameters:
beanClass
- 移送先BeanのClassbean
- 移送先Beanインスタンスmap
- 移送元のMap JavaBeansのプロパティ名をエントリーのキー プロパティの値をエントリーの値とするMapcopyOptions
- コピーの設定
-
createAndCopy
Map
からBeanを生成する。内部的には空の
CopyOptions
を渡してcreateAndCopy(Class, Map, CopyOptions)
を呼び出している。- Type Parameters:
T
- 型引数- Parameters:
beanClass
- 生成したいBeanクラスmap
- JavaBeansのプロパティ名をエントリーのキー プロパティの値をエントリーの値とするMap- Returns:
- プロパティに値が登録されたBeanオブジェクト
- Throws:
BeansException
-beanClass
にデフォルトコンストラクタが定義されていない場合や、beanClass
のコンストラクタ実行時に問題が発生した場合。
-
createAndCopyIncludes
public static <T> T createAndCopyIncludes(Class<T> beanClass, Map<String, ?> map, String... includes) Map
から、指定したプロパティのみをコピーしたBeanを生成する。map
がnullである場合は、デフォルトコンストラクタでbeanClass
を生成して返却する。map
でvalueがnullであるプロパティの値はnullになる。例外の送出やログ出力は行わない。 対象のプロパティにsetterが定義されていない場合はなにもしない。 プロパティの指定方法についてはcreateAndCopy(Class, Map)
を参照。- Type Parameters:
T
- 型引数- Parameters:
beanClass
- 生成したいBeanクラスmap
- JavaBeansのプロパティ名をエントリーのキー プロパティの値をエントリーの値とするMapincludes
- コピー対象のプロパティ名- Returns:
- Beanオブジェクト
- Throws:
BeansException
-beanClass
にデフォルトコンストラクタが定義されていない場合や、beanClass
のコンストラクタ実行時に問題が発生した場合。
-
createAndCopyExcludes
public static <T> T createAndCopyExcludes(Class<T> beanClass, Map<String, ?> map, String... excludes) Map
から指定されたプロパティ以外をコピーしてBeanを生成する。map
がnullである場合は、デフォルトコンストラクタでbeanClass
を生成して返却する。map
でvalueがnullであるプロパティの値はnullになる。例外の送出やログ出力は行わない。 対象のプロパティにsetterが定義されていない場合はなにもしない。 プロパティの指定方法についてはcreateAndCopy(Class, Map)
を参照。- Type Parameters:
T
- 型引数- Parameters:
beanClass
- 生成したいBeanクラスmap
- JavaBeansのプロパティ名をエントリーのキー プロパティの値をエントリーの値とするMapexcludes
- コピー対象外のプロパティ名- Returns:
- プロパティに値が登録されたBeanオブジェクト
- Throws:
BeansException
-beanClass
にデフォルトコンストラクタが定義されていない場合や、beanClass
のコンストラクタ実行時に問題が発生した場合。
-
createAndCopy
Java Beansからプロパティをコピーして、別のBeanを作成する。srcBean
がnullである場合、デフォルトコンストラクタでbeanClass
を生成して返却する。- Type Parameters:
T
- 型引数- Parameters:
beanClass
- コピー先のBeanクラスsrcBean
- コピー元のBean- Returns:
- コピーされたBeanオブジェクト
- Throws:
BeansException
-beanClass
にデフォルトコンストラクタが定義されていない場合や、beanClass
のコンストラクタの実行中に問題が発生した場合。
-
createAndCopy
Java Beansからプロパティをコピーして、別のBeanを作成する。srcBean
がnullである場合、デフォルトコンストラクタでbeanClass
を生成して返却する。- Type Parameters:
T
- 型引数- Parameters:
beanClass
- コピー先のBeanクラスsrcBean
- コピー元のBeancopyOptions
- コピーの設定- Returns:
- コピーされたBeanオブジェクト
- Throws:
BeansException
-beanClass
にデフォルトコンストラクタが定義されていない場合や、beanClass
のコンストラクタの実行中に問題が発生した場合。
-
createAndCopyIncludes
Java Beansから指定されたプロパティをコピーして、別のBeanを作成する。srcBean
がnullである場合、デフォルトコンストラクタでbeanClass
を生成して返却する。- Type Parameters:
T
- 型引数- Parameters:
beanClass
- コピー先のBeanクラスsrcBean
- コピー元のBeanincludes
- コピー対象のプロパティ名- Returns:
- コピーされたBeanオブジェクト
- Throws:
BeansException
-beanClass
にデフォルトコンストラクタが定義されていない場合や、beanClass
のデフォルトコンストラクタの実行中に問題が発生した場合。
-
createAndCopyExcludes
Java Beansから指定されたプロパティ以外をコピーして、別のBeanを作成する。srcBean
がnullである場合、デフォルトコンストラクタでbeanClass
を生成して返却する。 プロパティのコピーはsrcBean
に定義されたプロパティをベースに実行される。srcBean
に存在し、beanClass
に存在しないプロパティはコピーされない。- Type Parameters:
T
- 型引数- Parameters:
beanClass
- コピー先のBeanクラスsrcBean
- コピー元のBeanexcludes
- コピー対象外のプロパティ名- Returns:
- プロパティに値がコピーされたBeanオブジェクト
- Throws:
BeansException
-beanClass
のデフォルトコンストラクタの実行中に問題が発生した場合や、beanClass
のプロパティのデフォルトコンストラクタの実行中に問題が発生した場合。
-
copyInner
BeanからBeanに値をコピーする。 内部で共通的に使用されるメソッド。- Type Parameters:
SRC
- コピー元のBeanの型DEST
- コピー先のBeanの型- Parameters:
srcBean
- コピー元のBeanオブジェクトdestBean
- コピー先のBeanオブジェクトcopyOptions
- コピーの設定- Returns:
- コピー先のBeanオブジェクト
-
copy
public static <SRC,DEST> DEST copy(SRC srcBean, DEST destBean) BeanからBeanに値をコピーする。 プロパティのコピーはsrcBean
に定義されたプロパティをベースに実行される。srcBean
に存在し、destBean
に存在しないプロパティはコピーされない。- Type Parameters:
SRC
- コピー元のBeanの型DEST
- コピー先のBeanの型- Parameters:
srcBean
- コピー元のBeanオブジェクトdestBean
- コピー先のBeanオブジェクト- Returns:
- コピー先のBeanオブジェクト
- Throws:
BeansException
-destBean
のプロパティのインスタンス生成に失敗した場合
-
copy
BeanからBeanに値をコピーする。 プロパティのコピーはsrcBean
に定義されたプロパティをベースに実行される。srcBean
に存在し、destBean
に存在しないプロパティはコピーされない。- Type Parameters:
SRC
- コピー元のBeanの型DEST
- コピー先のBeanの型- Parameters:
srcBean
- コピー元のBeanオブジェクトdestBean
- コピー先のBeanオブジェクトcopyOptions
- コピーの設定- Returns:
- コピー先のBeanオブジェクト
- Throws:
BeansException
-destBean
のプロパティのインスタンス生成に失敗した場合
-
copyExcludesNull
public static <SRC,DEST> DEST copyExcludesNull(SRC srcBean, DEST destBean) BeanからBeanに値をコピーする。ただしnullのプロパティはコピーしない。 プロパティのコピーはsrcBean
に定義されたプロパティをベースに実行される。srcBean
に存在し、destBean
に存在しないプロパティはコピーされない。- Type Parameters:
SRC
- コピー元Beanの型DEST
- コピー先のBeanの型- Parameters:
srcBean
- コピー元のBeanオブジェクトdestBean
- コピー先のBeanオブジェクト- Returns:
- コピー先のBeanオブジェクト
- Throws:
BeansException
-destBean
のプロパティのインスタンス生成に失敗した場合
-
copyIncludes
BeanからBeanに、指定されたプロパティをコピーする。 プロパティのコピーはsrcBean
に定義されたプロパティをベースに実行される。srcBean
に存在し、destBean
に存在しないプロパティはコピーされない。includes
には、srcBean
のトップレベル要素のみ指定可能である。 それ以外を指定した場合はコピーされない。// aaa.bbbはコピーされない SampleBean copiedSampleBean = BeanUtil.createAndCopyIncludes(SampleBean.class, sampleBean, "aaa.bbb");
- Type Parameters:
SRC
- コピー元Beanの型DEST
- コピー先のBeanの型- Parameters:
srcBean
- コピー元のBeanオブジェクトdestBean
- コピー先のBeanオブジェクトincludes
- コピー対象のプロパティ名- Returns:
- コピー先のBeanオブジェクト
- Throws:
BeansException
-destBean
のプロパティのインスタンス生成に失敗した場合
-
copyExcludes
BeanからBeanに、指定されたプロパティ以外をコピーする。 プロパティのコピーはsrcBean
に定義されたプロパティをベースに実行される。srcBean
に存在し、destBean
に存在しないプロパティはコピーされない。- Type Parameters:
SRC
- コピー元Beanの型DEST
- コピー先のBeanの型- Parameters:
srcBean
- コピー元のBeanオブジェクトdestBean
- コピー先のBeanオブジェクトexcludes
- コピー対象外のプロパティ名- Returns:
- コピー先のBeanオブジェクト
- Throws:
BeansException
-destBean
のプロパティのインスタンス生成に失敗した場合
-
createMapAndCopy
BeanからMapにプロパティの値をコピーする。Mapのキーはプロパティ名で、値はプロパティ値となる。 値の型変換は行わず、Beanのプロパティの値を単純にMapの値に設定する。 BeanがBeanを持つ構造の場合、Mapのキー値は「.」で連結された値となる。
- Type Parameters:
SRC
- Beanの型- Parameters:
srcBean
- BeancopyOptions
- コピーの設定- Returns:
- BeanのプロパティをコピーしたMap
-
createMapAndCopy
BeanからMapにプロパティの値をコピーする。内部的には空の
CopyOptions
を渡してcreateMapAndCopy(Object, CopyOptions)
を呼び出している。- Type Parameters:
SRC
- Beanの型- Parameters:
srcBean
- Bean- Returns:
- BeanのプロパティをコピーしたMap
-
createMapAndCopyExcludes
public static <SRC> Map<String,Object> createMapAndCopyExcludes(SRC srcBean, String... excludeProperties) BeanからMapにプロパティの値をコピーする。Mapのキーはプロパティ名で、値はプロパティ値となる。 値の型変換は行わず、Beanのプロパティの値を単純にMapの値に設定する。 BeanがBeanを持つ構造の場合、Mapのキー値は「.」で連結された値となる。
除外対象のプロパティ名が指定された場合は、そのプロパティがコピー対象から除外される。
- Type Parameters:
SRC
- Beanの型- Parameters:
srcBean
- BeanexcludeProperties
- 除外対象のプロパティ名- Returns:
- BeanのプロパティをコピーしたMap
-
createMapAndCopyIncludes
public static <SRC> Map<String,Object> createMapAndCopyIncludes(SRC srcBean, String... includesProperties) BeanからMapに指定されたプロパティの値をコピーする。Mapのキーはプロパティ名で、値はプロパティ値となる。 値の型変換は行わず、Beanのプロパティの値を単純にMapの値に設定する。 BeanがBeanを持つ構造の場合、Mapのキー値は「.」で連結された値となる。
コピー対象のプロパティ名として指定できるのは、トップ階層のBeanのプロパティ名となる。 このため、階層構造で子階層のBeanがinclude指定されていた場合、子階層のBeanのプロパティは全てコピーされる。
- Type Parameters:
SRC
- Beanの型- Parameters:
srcBean
- BeanincludesProperties
- コピー対象のプロパティ名のリスト- Returns:
- BeanのプロパティをコピーしたMap
-