アノテーション対応
定数アノテーションの、しかもBINDINGアノテーションだけですが対応してみました。自動バインディング対象のコンポーネントがない場合のエラーや警告は次のようにしています。
- bindingType=must
- エラー
- bindingType=should
- 警告
- bindingType=may
- 何も出さない
- bindingType=none
- 何も出さない
- 自動バインディング対象外
- プロパティ名が指定されているとき
- エラー
- 不正なbindingType
- エラー
AutoRegisterで出ていたnullがセットされますという警告が、これで表示されなくなるはずです。
実装方法は悩んだのですが、IRttiPropertyDescriptor#getAdaptorを使ってアノテーションを取得できるようにしました。たとえば
IRtti rtti = (IRtti) component.getAdaptor(IRtti.class); IRttiPropertyDescriptor propDesc = rtti.getProperty("hoge"); IBindingAnnotation ba = (IBindingAnnotation) propDesc.getAdaptor(IBindingAnnotation.class);
という感じです。見たところRTTIとdiconモデルは分離されているようなので、diconモデルからRTTIを取得しようとしたときだけアノテーションをサポートしたRTTIでラップするという形にしました。