|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Object | +--org.apache.struts.util.PropertyUtils
JavaのリフレクションAPIを使って、Javaオブジェクトの一般的なプロパティの
ゲッター、セッター操作を容易にするためのユーティリティメソッド群です。
このクラスのコードのほとんどは、元々BeanUtilsに含まれていましたが、
含まれるコードが大量になったために分割されました。
一般に、これらのメソッドを使って、検査、更新されるオブジェクトは
JavaBeans仕様(Version 1.0.1)に記述されている、プロパティのセッター、
ゲッターメソッドの命名の取り決めに従うことが期待されます。
データ型の変換は行われず、登録されたPropertyEditorクラスは
利用されませんが、
登録済みのクラス自身にアクセスする便利な方法が含まれています。
このクラスのために、bean中の特定のプロパティ値を参照するための3つのフォーマットが (以下のカッコの中に示した識別文字列によって)定義されています。
name) -
指定されたname は、
特定のJavaBeanの個々のプロパティを識別します。
標準のJavaBeansインストロペクションによって、
実際のゲッターやセッターメソッドの名前が決定されます。
ですから(BeanInfoクラスで継承されていないかぎり)、
"xyz"という名前のプロパティは getXyz()という名前のゲッターメソッドや 、
(booleanのプロパティについてのみ)isXyz()、
setXyz()という名前のセッターメソッドを持ちます。name1.name2.name3) -
最初の名前要素は、上のような単純な参照として、
プロパティのゲッターを選択するのに使われます。
このプロパティで返されたオブジェクトが次に調べられ、
同じやり方で、name2という名前のプロパティのゲッターが使われ、
これが繰り返されます。
最終的に取得、更新されるプロパティの値は、最後の名前要素によって識別されます。name[index]) -
基礎となるプロパティの値は配列だと想定されます。
あるいは、このJavaBeanはインデックスされたプロパティのゲッター、セッターメソッド
を持つと想定されます。
配列の適当な(0からの相対)エントリーが選択されます。name1.name2[index].name3) -
ネスト、インデックス参照を複合した様々な形もサポートされます。
| フィールドの概要 | |
private static int |
debug
推奨されていません。 このコンポーネントのデバッグ詳細レベル。 |
private static FastHashMap |
descriptorsCache
推奨されていません。 既にインストロスペクトしたPropertyDescriptor配列のキャッシュ。 |
static char |
INDEXED_DELIM
推奨されていません。 0からの相対で表される配列要素の添字の前につけるデミリタ。 |
static char |
INDEXED_DELIM2
推奨されていません。 0からの相対で表される配列要素の添字の後ろにつけるデミリタ。 |
static char |
NESTED_DELIM
推奨されていません。 ネストした参照のコンポーネントを分割するデミリタ。 |
| コンストラクタの概要 | |
PropertyUtils()
推奨されていません。 |
|
| メソッドの概要 | |
static void |
copyProperties(java.lang.Object dest,
java.lang.Object orig)
推奨されていません。 名前が同じすべてのプロパティについて "origin"のbeanから"destination"のbeanへプロパティの値をコピーします ( BeanInfoクラスによって、実際のゲッター、セッターメソッドが
カスタマイズされている場合でも)。
|
static java.util.Map |
describe(java.lang.Object bean)
推奨されていません。 指定したbeanの提供する読み込みメソッドについて、 すべてのプロパティの集合を返します。 |
private static java.lang.reflect.Method |
getAccessibleMethod(java.lang.reflect.Method method)
推奨されていません。 指定したメソッドを実装するアクセス可能なメソッドを返します (メソッドはリフレクションによって実行可能です)。 |
private static java.lang.reflect.Method |
getAccessibleMethodFromInterfaceNest(java.lang.Class clazz,
java.lang.String methodName,
java.lang.Class[] parameterTypes)
推奨されていません。 指定したメソッドを実装するアクセス可能なメソッドを返します (メソッドはリフレクションによって実行可能です)。 |
static int |
getDebug()
推奨されていません。 |
static java.lang.Object |
getIndexedProperty(java.lang.Object bean,
java.lang.String name)
推奨されていません。 指定したbeanの指定したインデックス付きプロパティの値を返します。 |
static java.lang.Object |
getIndexedProperty(java.lang.Object bean,
java.lang.String name,
int index)
推奨されていません。 指定したbeanの指定したインデックス付きプロパティの値を返します。 |
static java.lang.Object |
getNestedProperty(java.lang.Object bean,
java.lang.String name)
推奨されていません。 指定したbeanの、 指定した名前の(おそらくネストした)プロパティの値を返します。 |
static java.lang.Object |
getProperty(java.lang.Object bean,
java.lang.String name)
推奨されていません。 全てのプロパティ参照フォーマットに対する、 指定したbeanの指定したプロパティの値を返します。 |
static java.beans.PropertyDescriptor |
getPropertyDescriptor(java.lang.Object bean,
java.lang.String name)
推奨されていません。 指定したbeanの指定したプロパティについての、 プロパティディスクリプタを取得します。 |
static java.beans.PropertyDescriptor[] |
getPropertyDescriptors(java.lang.Object bean)
推奨されていません。 指定したbeanのプロパティディスクリプタを取得します。 |
static java.lang.Class |
getPropertyEditorClass(java.lang.Object bean,
java.lang.String name)
推奨されていません。 (もしあれば)プロパティに登録されている プロパティエディタクラスを表すJavaクラスを返します。 |
static java.lang.Class |
getPropertyType(java.lang.Object bean,
java.lang.String name)
推奨されていません。 指定したプロパティのプロパティの型を表すJavaクラスを返します。 |
static java.lang.reflect.Method |
getReadMethod(java.beans.PropertyDescriptor descriptor)
推奨されていません。 このプロパティに対するアクセス可能なゲッターメソッドを返します。 |
static java.lang.Object |
getSimpleProperty(java.lang.Object bean,
java.lang.String name)
推奨されていません。 指定したbeanの指定した単純なプロパティの値を返します。 |
static java.lang.reflect.Method |
getWriteMethod(java.beans.PropertyDescriptor descriptor)
推奨されていません。 このプロパティに対する アクセス可能なプロパティのセッターメソッドを返します。 |
static void |
setDebug(int newDebug)
推奨されていません。 |
static void |
setIndexedProperty(java.lang.Object bean,
java.lang.String name,
int index,
java.lang.Object value)
推奨されていません。 指定したbeanの指定したインデックスのプロパティに値をセットします。 |
static void |
setIndexedProperty(java.lang.Object bean,
java.lang.String name,
java.lang.Object value)
推奨されていません。 指定したbeanの指定したインデックスされたプロパティの値を セットします。 |
static void |
setNestedProperty(java.lang.Object bean,
java.lang.String name,
java.lang.Object value)
推奨されていません。 指定したbeanに対して、 指定した名前の(おそらくネストした)プロパティに値をセットします。 |
static void |
setProperty(java.lang.Object bean,
java.lang.String name,
java.lang.Object value)
推奨されていません。 全てのプロパティ参照フォーマットに対する、 指定したbeanの指定したプロパティの値をセットします。 |
static void |
setSimpleProperty(java.lang.Object bean,
java.lang.String name,
java.lang.Object value)
推奨されていません。 指定したbeanの指定した単純な名前のプロパティに値をセットします。 |
| クラス java.lang.Object から継承したメソッド |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| フィールドの詳細 |
public static final char INDEXED_DELIM
public static final char INDEXED_DELIM2
public static final char NESTED_DELIM
private static int debug
private static FastHashMap descriptorsCache
| コンストラクタの詳細 |
public PropertyUtils()
| メソッドの詳細 |
public static int getDebug()
public static void setDebug(int newDebug)
public static void copyProperties(java.lang.Object dest,
java.lang.Object orig)
throws java.lang.IllegalAccessException,
java.lang.reflect.InvocationTargetException,
java.lang.NoSuchMethodException
BeanInfoクラスによって、実際のゲッター、セッターメソッドが
カスタマイズされている場合でも)。
実際のプロパティの値の変換は行われません。
コピー元のbeanから取得される値は、
コピー先のbeanの型に代入可能であることが期待されます。
dest - プロパティの値を更新するコピー先のbeanorig - プロパティの値を取得するコピー元のbean
java.lang.IllegalAccessException - 呼び出し元がプロパティの
アクセサメソッドへのアクセス権を持たない場合
java.lang.IllegalArgumentException - destかorig
引数がnullの場合
java.lang.reflect.InvocationTargetException - プロパティのアクセサメソッドが
例外を送出した場合
java.lang.NoSuchMethodException - このプロパティのアクセサメソッドが
見つからない場合
public static java.util.Map describe(java.lang.Object bean)
throws java.lang.IllegalAccessException,
java.lang.reflect.InvocationTargetException,
java.lang.NoSuchMethodException
getReadMethod()がnull以外を返すプロパティ) 。
bean - プロパティが展開されるbean
java.lang.IllegalAccessException - 呼び出し元がプロパティの
アクセサメソッドへのアクセス権を持たない場合
java.lang.IllegalArgumentException - beanがnullの場合
java.lang.reflect.InvocationTargetException - プロパティのアクセサメソッドが
例外を送出した場合
java.lang.NoSuchMethodException - このプロパティのアクセサメソッドが
見つからない場合
public static java.lang.Object getIndexedProperty(java.lang.Object bean,
java.lang.String name)
throws java.lang.IllegalAccessException,
java.lang.reflect.InvocationTargetException,
java.lang.NoSuchMethodException
IllegalArgumentExceptionがスローされます。
bean - 取得するプロパティをもつbeanname - 取得するプロパティの値をpropertyname[index]
の形式で指定します。
java.lang.IllegalAccessException - 呼び出し元がプロパティの
アクセサメソッドへのアクセス権を持たない場合
java.lang.IllegalArgumentException - beanかname
がnullの場合
java.lang.reflect.InvocationTargetException - プロパティのアクセサメソッドが
例外を送出した場合
java.lang.NoSuchMethodException - このプロパティのアクセサメソッドが
見つからない場合
public static java.lang.Object getIndexedProperty(java.lang.Object bean,
java.lang.String name,
int index)
throws java.lang.IllegalAccessException,
java.lang.reflect.InvocationTargetException,
java.lang.NoSuchMethodException
bean - 取得するプロパティをもつbeanname - 取得するプロパティの単純な名前index - 取得するプロパティの値のインデックス
java.lang.IllegalAccessException - 呼び出し元がプロパティの
アクセサメソッドへのアクセス権を持たない場合
java.lang.IllegalArgumentException - beanかname
がnullの場合
java.lang.reflect.InvocationTargetException - プロパティのアクセサメソッドが
例外を送出した場合
java.lang.NoSuchMethodException - このプロパティのアクセサメソッドが
見つからない場合
public static java.lang.Object getNestedProperty(java.lang.Object bean,
java.lang.String name)
throws java.lang.IllegalAccessException,
java.lang.reflect.InvocationTargetException,
java.lang.NoSuchMethodException
bean - 取得するプロパティをもつbeanname - 取得するプロパティのおそらくネストした名前
java.lang.IllegalAccessException - 呼び出し元がプロパティの
アクセサメソッドへのアクセス権を持たない場合
java.lang.IllegalArgumentException - beanかname
がnullの場合
java.lang.reflect.InvocationTargetException - プロパティのアクセサメソッドが
例外を送出した場合
java.lang.NoSuchMethodException - このプロパティのアクセサメソッドが
見つからない場合
public static java.lang.Object getProperty(java.lang.Object bean,
java.lang.String name)
throws java.lang.IllegalAccessException,
java.lang.reflect.InvocationTargetException,
java.lang.NoSuchMethodException
bean - プロパティの抽出を行うbeanの名前name - 存在するインデックス、あるいはネストされた、
抽出するプロパテイーの名前
java.lang.IllegalAccessException - 呼び出し元がプロパティの
アクセサメソッドへのアクセス権を持たない場合
java.lang.IllegalArgumentException - beanかname
がnullの場合
java.lang.reflect.InvocationTargetException - プロパティのアクセサメソッドが
例外を送出した場合
java.lang.NoSuchMethodException - このプロパティのアクセサメソッドが
見つからない場合
public static java.beans.PropertyDescriptor getPropertyDescriptor(java.lang.Object bean,
java.lang.String name)
throws java.lang.IllegalAccessException,
java.lang.reflect.InvocationTargetException,
java.lang.NoSuchMethodException
nullを返した場合は、ディスクリプタは存在しません。
このメソッドはこのクラスの他のメソッドと同じ方法で、
インデックスやネストされたプロパティの参照を解決します。
最後の(あるいは単一の)名前要素が指されていることが期待され、
最後に解決されたプロパティ自身のディスクリプタが返されます。
bean - 要求するプロパティディスクリプタに対するbeanname - 要求するプロパティディスクリプタに対する
おそらくインデックスかつ/あるいはネストしたプロパティの名前
java.lang.IllegalAccessException - 呼び出し元がプロパティの
アクセサメソッドへのアクセス権を持たない場合
java.lang.IllegalArgumentException - beanかname
がnullの場合
java.lang.reflect.InvocationTargetException - プロパティのアクセサメソッドが
例外を送出した場合
java.lang.NoSuchMethodException - このプロパティのアクセサメソッドが
見つからない場合public static java.beans.PropertyDescriptor[] getPropertyDescriptors(java.lang.Object bean)
bean - ディスクリプタを要求するプロパティを持つbean
java.lang.IllegalArgumentException - beanがnullの場合
public static java.lang.Class getPropertyEditorClass(java.lang.Object bean,
java.lang.String name)
throws java.lang.IllegalAccessException,
java.lang.reflect.InvocationTargetException,
java.lang.NoSuchMethodException
getPropertyDescriptor()で使われている
名前解決ルールに従います。
最後の名前要素が指されている場合、基本となるプロパティクラスの
プロパティエディタが返されます。
プロパティが存在しない場合や、
登録されたプロパティエディタクラスが存在しない場合、
nullが返されることに注意してください。
この戻り値はあいまいなので、
他の方法で、プロパティ自身の存在を決定するべきです。
bean - 要求するプロパティディスクリプタをもつbeanname - 要求するプロパティディスクリプタについての、
おそらくインデックス、かつ/あるいはネストしたプロパティの名前
java.lang.IllegalAccessException - 呼び出し元がプロパティの
アクセサメソッドへのアクセス権を持たない場合
java.lang.IllegalArgumentException - beanかname
がnullの場合
java.lang.reflect.InvocationTargetException - プロパティのアクセサメソッドが
例外を送出した場合
java.lang.NoSuchMethodException - このプロパティのアクセサメソッドが
見つからない場合
public static java.lang.Class getPropertyType(java.lang.Object bean,
java.lang.String name)
throws java.lang.IllegalAccessException,
java.lang.reflect.InvocationTargetException,
java.lang.NoSuchMethodException
nullが返されます。このメソッドは、
getPropertyDescriptor()と同じ名前解決ルールに従います。
名前参照の最後の要素が指されている場合、
プロパティ自身の方が返されます。
最後(あるいは単一の)要素が指定した名前のプロパティを持たない場合、
nullが返されます。
bean - 要求するプロパティディスクリプタを持つbeanname - 要求するプロパティディスクリプタを持つプロパティ
のインデックスかネストした名前
java.lang.IllegalAccessException - 呼び出し元がプロパティの
アクセサメソッドへのアクセス権を持たない場合
java.lang.IllegalArgumentException - beanかname
がnullの場合
java.lang.reflect.InvocationTargetException - プロパティのアクセサメソッドが
例外を送出した場合
java.lang.NoSuchMethodException - このプロパティのアクセサメソッドが
見つからない場合public static java.lang.reflect.Method getReadMethod(java.beans.PropertyDescriptor descriptor)
nullを返します。
descriptor - ゲッターを返すプロパティディスクリプタ
public static java.lang.Object getSimpleProperty(java.lang.Object bean,
java.lang.String name)
throws java.lang.IllegalAccessException,
java.lang.reflect.InvocationTargetException,
java.lang.NoSuchMethodException
bean - 取得するプロパティを持つbeanname - 取得するプロパティの名前
java.lang.IllegalAccessException - 呼び出し元がプロパティの
アクセサメソッドへのアクセス権を持たない場合
java.lang.IllegalArgumentException - beanかname
がnullの場合
java.lang.reflect.InvocationTargetException - プロパティのアクセサメソッドが
例外を送出した場合
java.lang.NoSuchMethodException - このプロパティのアクセサメソッドが
見つからない場合public static java.lang.reflect.Method getWriteMethod(java.beans.PropertyDescriptor descriptor)
nullを返します。
descriptor - セッターを返すプロパティディスクリプタ
public static void setIndexedProperty(java.lang.Object bean,
java.lang.String name,
java.lang.Object value)
throws java.lang.IllegalAccessException,
java.lang.reflect.InvocationTargetException,
java.lang.NoSuchMethodException
IllegalArgumentExceptionがスローされます。
bean - 更新するプロパティを持つbeanname - 値を更新するプロパティの名前を
propertyname[index]の形で指定value - 指定したプロパティ要素にセットする値
java.lang.IllegalAccessException - 呼び出し元がプロパティの
アクセサメソッドへのアクセス権を持たない場合
java.lang.IllegalArgumentException - beanかname
がnullの場合
java.lang.reflect.InvocationTargetException - プロパティのアクセサメソッドが
例外を送出した場合
java.lang.NoSuchMethodException - このプロパティのアクセサメソッドが
見つからない場合
public static void setIndexedProperty(java.lang.Object bean,
java.lang.String name,
int index,
java.lang.Object value)
throws java.lang.IllegalAccessException,
java.lang.reflect.InvocationTargetException,
java.lang.NoSuchMethodException
bean - セットするプロパティを持つbeanname - セットするプロパティの単純な名前index - 値をセットするプロパティのインデックスvalue - インデックスされたプロパティ要素にセットする値
java.lang.IllegalAccessException - 呼び出し元がプロパティの
アクセサメソッドへのアクセス権を持たない場合
java.lang.IllegalArgumentException - beanかname
がnullの場合
java.lang.reflect.InvocationTargetException - プロパティのアクセサメソッドが
例外を送出した場合
java.lang.NoSuchMethodException - このプロパティのアクセサメソッドが
見つからない場合
public static void setNestedProperty(java.lang.Object bean,
java.lang.String name,
java.lang.Object value)
throws java.lang.IllegalAccessException,
java.lang.reflect.InvocationTargetException,
java.lang.NoSuchMethodException
bean - 更新するプロパティをもつbeanname - 更新するプロパティの存在するネストした名前value - プロパティにセットする値
java.lang.IllegalAccessException - 呼び出し元がプロパティの
アクセサメソッドへのアクセス権を持たない場合
java.lang.IllegalArgumentException - beanかname
がnullの場合
java.lang.reflect.InvocationTargetException - プロパティのアクセサメソッドが
例外を送出した場合
java.lang.NoSuchMethodException - このプロパティのアクセサメソッドが
見つからない場合
public static void setProperty(java.lang.Object bean,
java.lang.String name,
java.lang.Object value)
throws java.lang.IllegalAccessException,
java.lang.reflect.InvocationTargetException,
java.lang.NoSuchMethodException
bean - 更新するプロパティをもつbeanname - 更新するプロパティのインデックス、あるいはネストした
存在する名前value - セットするプロパティの値
java.lang.IllegalAccessException - 呼び出し元がプロパティの
アクセサメソッドへのアクセス権を持たない場合
java.lang.IllegalArgumentException - beanかname
がnullの場合
java.lang.reflect.InvocationTargetException - プロパティのアクセサメソッドが
例外を送出した場合
java.lang.NoSuchMethodException - このプロパティのアクセサメソッドが
見つからない場合
public static void setSimpleProperty(java.lang.Object bean,
java.lang.String name,
java.lang.Object value)
throws java.lang.IllegalAccessException,
java.lang.reflect.InvocationTargetException,
java.lang.NoSuchMethodException
bean - プロパティを更新するbeanname - 更新するプロパティの名前value - プロパティにセットする値
java.lang.IllegalAccessException - 呼び出し元がプロパティの
アクセサメソッドへのアクセス権を持たない場合
java.lang.IllegalArgumentException - beanかname
がnullの場合
java.lang.reflect.InvocationTargetException - プロパティのアクセサメソッドが
例外を送出した場合
java.lang.NoSuchMethodException - このプロパティのアクセサメソッドが
見つからない場合private static java.lang.reflect.Method getAccessibleMethod(java.lang.reflect.Method method)
nullを返します。
method - 呼び出したいメソッド
private static java.lang.reflect.Method getAccessibleMethodFromInterfaceNest(java.lang.Class clazz,
java.lang.String methodName,
java.lang.Class[] parameterTypes)
nullを返します。
clazz - インターフェイスをチェックする親クラスmethodName - 呼び出したいメソッドの名前parameterTypes - パラメータ型指定
|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||