org.seasar.util.beans.impl
クラス BeanDescImpl

java.lang.Object
  上位を拡張 org.seasar.util.beans.impl.BeanDescImpl
すべての実装されたインタフェース:
BeanDesc

public class BeanDescImpl
extends Object
implements BeanDesc

BeanDescの実装クラスです。

作成者:
higa

フィールドの概要
protected  Class<?> beanClass
          Beanのクラス
protected  List<ConstructorDesc> constructorDescs
          ConstructorDescの配列
protected static Object[] EMPTY_ARGS
          空のオブジェクト配列
protected static Class<?>[] EMPTY_PARAM_TYPES
          空のクラス配列
protected  ArrayMap<String,FieldDesc> fieldDescCache
          フィールド名からFieldDescImplへのマップ
protected  Set<String> invalidPropertyNames
          不正なプロパティ名のセット
protected  Map<String,MethodDesc[]> methodDescsCache
          メソッド名からMethodDesc配列へのマップ
protected  CaseInsensitiveMap<PropertyDesc> propertyDescCache
          プロパティ名からPropertyDescへのマップ
protected  Map<TypeVariable<?>,Type> typeVariables
          型引数と型変数のマップ
 
コンストラクタの概要
BeanDescImpl(Class<?> beanClass)
          BeanDescImplを作成します。
 
メソッドの概要
protected  void addFieldDescs(Class<?> clazz)
          クラスまたはインターフェースに定義されたフィールドを追加します。
protected  void addPropertyDesc(PropertyDescImpl propertyDesc)
          PropertyDescを追加します.
protected static boolean adjustNumber(Class<?>[] paramTypes, Object[] args, int index)
          指定された位置の引数型が数値の場合、引数を適合するように変換します。
protected static ParameterizedClassDesc createParameterizedClassDesc(Type type, Map<TypeVariable<?>,Type> map)
          Typeを表現するParameterizedClassDescを作成して返します。
protected  ConstructorDesc findSuitableConstructorDesc(Object... args)
          引数に適合するConstructorDescを返します。
protected  ConstructorDesc findSuitableConstructorDescAdjustNumber(Object... args)
          引数に適合するConstructorDescを返します。
protected  MethodDesc findSuitableMethod(MethodDesc[] methodDescs, Object[] args)
          引数に適合するMethodDescを返します。
protected  MethodDesc findSuitableMethodDescAdjustNumber(MethodDesc[] methodDescs, Object[] args)
          引数に適合するMethodDescを返します。
<T> Class<T>
getBeanClass()
          Beanのクラスを返します。
 ConstructorDesc getConstructorDesc(Class<?>... paramTypes)
          引数の型に応じたConstructorDescを返します。
 ConstructorDesc getConstructorDesc(int index)
          ConstructorDescを返します。
 Iterable<ConstructorDesc> getConstructorDescs()
          ConstructorDescIterableを返します。
 int getConstructorDescSize()
          ConstructorDescの数を返します。
 FieldDesc getFieldDesc(int index)
          FieldDescを返します。
 FieldDesc getFieldDesc(String fieldName)
          FieldDescを返します。
 Iterable<FieldDesc> getFieldDescs()
          FieldDescIterableを返します。
 int getFieldDescSize()
          FieldDescの数を返します。
 MethodDesc getMethodDesc(String methodName, Class<?>... paramTypes)
          引数の型に応じたMethodDescを返します。
 MethodDesc getMethodDescNoException(String methodName, Class<?>... paramTypes)
          引数の型に応じたMethodDescを返します。
 MethodDesc[] getMethodDescs(String methodName)
          MethodDescの配列を返します。
 String[] getMethodNames()
          メソッド名の配列を返します。
 PropertyDesc getPropertyDesc(int index)
          PropertyDescを返します。
 PropertyDesc getPropertyDesc(String propertyName)
          PropertyDescを返します。
protected  PropertyDesc getPropertyDescNoException(String propertyName)
          PropertyDescを返します。
 Iterable<PropertyDesc> getPropertyDescs()
          PropertyDescIterableを返します。
 int getPropertyDescSize()
          PropertyDescの数を返します。
 ConstructorDesc getSuitableConstructorDesc(Object... args)
          引数に適合するConstructorDescを返します。
 MethodDesc getSuitableMethodDesc(String methodName, Object... args)
          引数に適合するMethodDescを返します。
 Map<TypeVariable<?>,Type> getTypeVariables()
          型変数から型引数へのマップを返します。
 boolean hasFieldDesc(String fieldName)
          FieldDescを持っているかどうかを返します。
 boolean hasMethodDesc(String methodName)
          MethodDescがあるかどうか返します。
 boolean hasPropertyDesc(String propertyName)
          PropertyDescを持っているかどうかを返します。
protected  boolean isSuitable(Class<?>[] paramTypes, Object[] args, boolean adjustNumber)
          引数が引数型に適合するかチェックします。
<T> T
newInstance(Object... args)
          新しいインスタンスを作成します。
protected  void setupConstructorDescs()
          コンストラクタを準備します。
protected  void setupFieldDescs()
          フィールドを準備します。
protected  void setupFieldDescsByInterface(Class<?> interfaceClass)
          インターフェースに定義されたフィールドを準備します。
protected  void setupMethodDescs()
          メソッドを準備します。
protected  void setupPropertyDescs()
          PropertyDescを準備します。
protected  void setupReadMethod(Method readMethod, String propertyName)
          getterメソッドを準備します。
protected  void setupWriteMethod(Method writeMethod, String propertyName)
          setterメソッドを準備します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

EMPTY_ARGS

protected static final Object[] EMPTY_ARGS
空のオブジェクト配列


EMPTY_PARAM_TYPES

protected static final Class<?>[] EMPTY_PARAM_TYPES
空のクラス配列


beanClass

protected final Class<?> beanClass
Beanのクラス


typeVariables

protected final Map<TypeVariable<?>,Type> typeVariables
型引数と型変数のマップ


propertyDescCache

protected final CaseInsensitiveMap<PropertyDesc> propertyDescCache
プロパティ名からPropertyDescへのマップ


fieldDescCache

protected final ArrayMap<String,FieldDesc> fieldDescCache
フィールド名からFieldDescImplへのマップ


constructorDescs

protected final List<ConstructorDesc> constructorDescs
ConstructorDescの配列


methodDescsCache

protected final Map<String,MethodDesc[]> methodDescsCache
メソッド名からMethodDesc配列へのマップ


invalidPropertyNames

protected final Set<String> invalidPropertyNames
不正なプロパティ名のセット

コンストラクタの詳細

BeanDescImpl

public BeanDescImpl(Class<?> beanClass)
BeanDescImplを作成します。

パラメータ:
beanClass - ビーンのクラス。nullであってはいけません
メソッドの詳細

getBeanClass

public <T> Class<T> getBeanClass()
インタフェース BeanDesc の記述:
Beanのクラスを返します。

定義:
インタフェース BeanDesc 内の getBeanClass
型パラメータ:
T - Beanのクラス
戻り値:
Beanのクラス

getTypeVariables

public Map<TypeVariable<?>,Type> getTypeVariables()
インタフェース BeanDesc の記述:
型変数から型引数へのマップを返します。

定義:
インタフェース BeanDesc 内の getTypeVariables
戻り値:
型変数から型引数へのマップ

hasPropertyDesc

public boolean hasPropertyDesc(String propertyName)
インタフェース BeanDesc の記述:
PropertyDescを持っているかどうかを返します。

定義:
インタフェース BeanDesc 内の hasPropertyDesc
パラメータ:
propertyName - プロパティ名。nullや空文字列であってはいけません
戻り値:
PropertyDescを持っているかどうか

getPropertyDesc

public PropertyDesc getPropertyDesc(String propertyName)
                             throws PropertyNotFoundRuntimeException
インタフェース BeanDesc の記述:
PropertyDescを返します。

定義:
インタフェース BeanDesc 内の getPropertyDesc
パラメータ:
propertyName - プロパティ名。nullや空文字列であってはいけません
戻り値:
PropertyDesc
例外:
PropertyNotFoundRuntimeException

getPropertyDesc

public PropertyDesc getPropertyDesc(int index)
インタフェース BeanDesc の記述:
PropertyDescを返します。

定義:
インタフェース BeanDesc 内の getPropertyDesc
パラメータ:
index - PropertyDescのインデックス
戻り値:
PropertyDesc

getPropertyDescSize

public int getPropertyDescSize()
インタフェース BeanDesc の記述:
PropertyDescの数を返します。

定義:
インタフェース BeanDesc 内の getPropertyDescSize
戻り値:
PropertyDescの数

getPropertyDescs

public Iterable<PropertyDesc> getPropertyDescs()
インタフェース BeanDesc の記述:
PropertyDescIterableを返します。

定義:
インタフェース BeanDesc 内の getPropertyDescs
戻り値:
PropertyDescIterable

hasFieldDesc

public boolean hasFieldDesc(String fieldName)
インタフェース BeanDesc の記述:
FieldDescを持っているかどうかを返します。

定義:
インタフェース BeanDesc 内の hasFieldDesc
パラメータ:
fieldName - フィールド名。nullや空文字列であってはいけません
戻り値:
FieldDescを持っているかどうか

getFieldDesc

public FieldDesc getFieldDesc(String fieldName)
インタフェース BeanDesc の記述:
FieldDescを返します。

定義:
インタフェース BeanDesc 内の getFieldDesc
パラメータ:
fieldName - フィールド名。nullや空文字列であってはいけません
戻り値:
FieldDesc

getFieldDesc

public FieldDesc getFieldDesc(int index)
インタフェース BeanDesc の記述:
FieldDescを返します。

定義:
インタフェース BeanDesc 内の getFieldDesc
パラメータ:
index - FieldDescのインデックス
戻り値:
FieldDesc

getFieldDescSize

public int getFieldDescSize()
インタフェース BeanDesc の記述:
FieldDescの数を返します。

定義:
インタフェース BeanDesc 内の getFieldDescSize
戻り値:
FieldDescの数

getFieldDescs

public Iterable<FieldDesc> getFieldDescs()
インタフェース BeanDesc の記述:
FieldDescIterableを返します。

定義:
インタフェース BeanDesc 内の getFieldDescs
戻り値:
FieldDescIterable

newInstance

public <T> T newInstance(Object... args)
インタフェース BeanDesc の記述:
新しいインスタンスを作成します。

定義:
インタフェース BeanDesc 内の newInstance
型パラメータ:
T - Beanクラスの型
パラメータ:
args - コンストラクタに渡す引数の並び
戻り値:
新しいインスタンス

getConstructorDesc

public ConstructorDesc getConstructorDesc(Class<?>... paramTypes)
インタフェース BeanDesc の記述:
引数の型に応じたConstructorDescを返します。

定義:
インタフェース BeanDesc 内の getConstructorDesc
パラメータ:
paramTypes - コンストラクタに渡す引数型の並び
戻り値:
引数の型に応じたConstructorDesc

getSuitableConstructorDesc

public ConstructorDesc getSuitableConstructorDesc(Object... args)
インタフェース BeanDesc の記述:
引数に適合するConstructorDescを返します。

定義:
インタフェース BeanDesc 内の getSuitableConstructorDesc
パラメータ:
args - コンストラクタに渡す引数の並び
戻り値:
引数に適合するConstructor

getConstructorDesc

public ConstructorDesc getConstructorDesc(int index)
インタフェース BeanDesc の記述:
ConstructorDescを返します。

定義:
インタフェース BeanDesc 内の getConstructorDesc
パラメータ:
index - ConstructorDescのインデックス
戻り値:
ConstructorDesc

getConstructorDescSize

public int getConstructorDescSize()
インタフェース BeanDesc の記述:
ConstructorDescの数を返します。

定義:
インタフェース BeanDesc 内の getConstructorDescSize
戻り値:
ConstructorDescの数

getConstructorDescs

public Iterable<ConstructorDesc> getConstructorDescs()
インタフェース BeanDesc の記述:
ConstructorDescIterableを返します。

定義:
インタフェース BeanDesc 内の getConstructorDescs
戻り値:
ConstructorDescIterable

getMethodDesc

public MethodDesc getMethodDesc(String methodName,
                                Class<?>... paramTypes)
インタフェース BeanDesc の記述:
引数の型に応じたMethodDescを返します。

定義:
インタフェース BeanDesc 内の getMethodDesc
パラメータ:
methodName - メソッド名。nullや空文字列であってはいけません
paramTypes - メソッドの引数型の並び
戻り値:
引数の型に応じたMethodDesc メソッド

getMethodDescNoException

public MethodDesc getMethodDescNoException(String methodName,
                                           Class<?>... paramTypes)
インタフェース BeanDesc の記述:
引数の型に応じたMethodDescを返します。見つからない場合は、nullを返します。

定義:
インタフェース BeanDesc 内の getMethodDescNoException
パラメータ:
methodName - メソッド名。nullや空文字列であってはいけません
paramTypes - メソッドの引数型の並び
戻り値:
引数の型に応じたMethodDesc

getSuitableMethodDesc

public MethodDesc getSuitableMethodDesc(String methodName,
                                        Object... args)
インタフェース BeanDesc の記述:
引数に適合するMethodDescを返します。

定義:
インタフェース BeanDesc 内の getSuitableMethodDesc
パラメータ:
methodName - メソッド名。nullや空文字列であってはいけません
args - メソッドの引数の並び
戻り値:
引数に適合するMethodDesc メソッド

getMethodDescs

public MethodDesc[] getMethodDescs(String methodName)
インタフェース BeanDesc の記述:
MethodDescの配列を返します。

定義:
インタフェース BeanDesc 内の getMethodDescs
パラメータ:
methodName - メソッド名。nullや空文字列であってはいけません
戻り値:
MethodDescの配列

hasMethodDesc

public boolean hasMethodDesc(String methodName)
インタフェース BeanDesc の記述:
MethodDescがあるかどうか返します。

定義:
インタフェース BeanDesc 内の hasMethodDesc
パラメータ:
methodName - メソッド名。nullや空文字列であってはいけません
戻り値:
MethodDescがあるかどうか

getMethodNames

public String[] getMethodNames()
インタフェース BeanDesc の記述:
メソッド名の配列を返します。

定義:
インタフェース BeanDesc 内の getMethodNames
戻り値:
メソッド名の配列

getPropertyDescNoException

protected PropertyDesc getPropertyDescNoException(String propertyName)
PropertyDescを返します。

パラメータ:
propertyName - プロパティ名
戻り値:
PropertyDesc。プロパティが存在しない場合はnull

findSuitableConstructorDesc

protected ConstructorDesc findSuitableConstructorDesc(Object... args)
引数に適合するConstructorDescを返します。

パラメータ:
args - コンストラクタ引数の並び
戻り値:
引数に適合するConstructorDesc。存在しない場合はnull

findSuitableConstructorDescAdjustNumber

protected ConstructorDesc findSuitableConstructorDescAdjustNumber(Object... args)
引数に適合するConstructorDescを返します。

引数の型が数値の場合、引数を数値に変換することが出来れば適合するとみなします。

パラメータ:
args - コンストラクタ引数の並び
戻り値:
引数に適合するConstructorDesc。存在しない場合はnull

findSuitableMethod

protected MethodDesc findSuitableMethod(MethodDesc[] methodDescs,
                                        Object[] args)
引数に適合するMethodDescを返します。

パラメータ:
methodDescs - メソッドの配列
args - メソッド引数の並び
戻り値:
引数に適合するMethodDesc。存在しない場合はnull

findSuitableMethodDescAdjustNumber

protected MethodDesc findSuitableMethodDescAdjustNumber(MethodDesc[] methodDescs,
                                                        Object[] args)
引数に適合するMethodDescを返します。

引数の型が数値の場合、引数を数値に変換することが出来れば適合するとみなします。

パラメータ:
methodDescs - メソッドの配列
args - メソッド引数の並び
戻り値:
引数に適合するMethodDesc。存在しない場合はnull

isSuitable

protected boolean isSuitable(Class<?>[] paramTypes,
                             Object[] args,
                             boolean adjustNumber)
引数が引数型に適合するかチェックします。

パラメータ:
paramTypes - 引数型の並び
args - 引数の並び
adjustNumber - 引数型が数値型の場合に引数を適合するように変換する場合はtrue
戻り値:
引数が引数型に適合する場合はtrue

adjustNumber

protected static boolean adjustNumber(Class<?>[] paramTypes,
                                      Object[] args,
                                      int index)
指定された位置の引数型が数値の場合、引数を適合するように変換します。

パラメータ:
paramTypes - 引数型の並び
args - 引数の並び
index - 操作対象となる引数のインデックス
戻り値:
引数を適合するように変換した場合はtrue

setupPropertyDescs

protected void setupPropertyDescs()
PropertyDescを準備します。


setupReadMethod

protected void setupReadMethod(Method readMethod,
                               String propertyName)
getterメソッドを準備します。

パラメータ:
readMethod - getterメソッド
propertyName - プロパティ名

setupWriteMethod

protected void setupWriteMethod(Method writeMethod,
                                String propertyName)
setterメソッドを準備します。

パラメータ:
writeMethod - setterメソッド
propertyName - プロパティ名

addPropertyDesc

protected void addPropertyDesc(PropertyDescImpl propertyDesc)
PropertyDescを追加します.

パラメータ:
propertyDesc - PropertyDesc

setupConstructorDescs

protected void setupConstructorDescs()
コンストラクタを準備します。


setupMethodDescs

protected void setupMethodDescs()
メソッドを準備します。


setupFieldDescs

protected void setupFieldDescs()
フィールドを準備します。


setupFieldDescsByInterface

protected void setupFieldDescsByInterface(Class<?> interfaceClass)
インターフェースに定義されたフィールドを準備します。

パラメータ:
interfaceClass - 対象のインターフェース

addFieldDescs

protected void addFieldDescs(Class<?> clazz)
クラスまたはインターフェースに定義されたフィールドを追加します。

パラメータ:
clazz - 対象のクラスまたはインターフェース

createParameterizedClassDesc

protected static ParameterizedClassDesc createParameterizedClassDesc(Type type,
                                                                     Map<TypeVariable<?>,Type> map)
Typeを表現するParameterizedClassDescを作成して返します。

パラメータ:
type - 型
map - パラメータ化された型が持つ型変数をキー、型引数を値とするMap
戻り値:
型を表現するParameterizedClassDesc


Copyright © 2010-2012 The Seasar Foundation. All Rights Reserved.