アノテーション対応

定数アノテーションの、しかも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でラップするという形にしました。