WebBeansのステレオタイプ


ってこういうことかな?

	@Retention(RetentionPolicy.RUNTIME)
	@Target( { ElementType.TYPE })
	public @interface Test1 {
	}

	@Retention(RetentionPolicy.RUNTIME)
	@Target( { ElementType.TYPE })
	public @interface Test2 {
	}


っていうアノテーションがあるとして、

それを親に持つ以下のようなアノテーションを準備する。

@Compositeで親にアノテーションの親も読むように指定しとくと。

	@Retention(RetentionPolicy.RUNTIME)
	@Target( { ElementType.TYPE })
	@Composite
	@Test1
	@Test2
	public @interface Test1And2 {
	}


アノテーションがつけられているクラスは以下みたいなかんじ。

	@Test1And2
	public class Hoge {
	}


これで意味的には@Test1と@Test2がつけられているのと

等価になるって感じなんかなあ?



ちょっと気にしなくちゃいけない点は

・同様のアノテーションが複数指定できない点(循環を何かしらの方法で防ぐ必要がある)

・上のようなマーカー的なアノテーションの使い方だとよいけど、

 値を渡すようなアノテーションを上位に持つと少し使いにくい点


があるかなあ。ちょうど個人的に2週間前くらいにいろいろ試していたので

そこそこタイムリーでした。WebBeansはどうするつもりなんだろうか。

WebBeansのステレオタイプ、ちょっと調べてみようかな。

でも仕様書ってもうあるんでしたっけ???


(追記)

あった。EADだけど。

みてみた。EADにはなんか記述が見つけられなかったので、

こっちみてみた。


アノテーションを親に指定していくだけでそれらも意味的に

含まれるような感じみたい。

	public
	@Secure
	@Transactional
	@RequestScoped
	@ComponentType
	@Retention(RUNTIME)
	@Target({TYPE, METHOD})
	@interface Action {}


なるほどー。でもまだ議論中だ、みたいなことが書かれていますね。