Lucy 0.5.2-gaをリリースしました.

LucyとLucy拡張機能をリリースしました.

今回のリリースの目玉は、設定ファイルなどに書いたコンポーネント定義をモックとしてテスト時に置き換える機能です.
設定ファイルにコンポーネント定義書いちゃうと、なかなか置き換えしにくいのでこの機能をつけました.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE lucy-config PUBLIC "-//LUCY//DTD LUCY//EN" "http://www.lucy.org/dtd/lucy-config.dtd">
<lucy-config>

	<component class="lucy.examples.example9.impl.MessageSenderImpl" instance="singleton">
		<inject method="inject">header</inject>
	</component>

	<component name="header" class="lucy.examples.example9.impl.HeaderImpl" instance="singleton" />
</lucy-config>


で、このheaderという名前のついたコンポーネントを置き換えたいとします.
こんな感じで置き換えます.
ひとつ制約があって、コンポーネントの取得が始まってしまうと、もう置き換え不可能なので
それ以前に置き換える感じ.TestCaseのsetupメソッドとかが、置き換えするポイントとしては適切でしょう.

public class Main {

	public static void main(String[] args) {
		Lucy lucy = LucyBootstrap.init("lucy/examples/example9/example9.xml");
		try {
			/**
			 * Before get component, you can swap component for testing purpose.
			 */
			lucy.pretend("header", PretendHeader.class);

			/**
			 * Testing component for Header is using.
			 */
			MessageSender sender = lucy.get(MessageSender.class);
			sender.send("hogehoge");
		} finally {
			lucy.destroy();
		}
	}
}


まだブラッシュアップは必要ですが、こんな感じで設定ファイルの一部だけコンポーネントを置き換えることが出来ます.
サンプルは下記ので試せます


以下リリース詳細。

Lucy 0.5.2-ga

新機能

  1. Lucyで、プログラムからコンポーネント定義を差し替えるAPIを提供する
  2. Lucyでプロパティファイルの中身をインジェクトできる機能を提供する

バグフィックス

  1. Lucy AOPで、aspectタグを複数書いたときに後者が無視される

Lucy-ext 0.5.2-ga

新機能

  1. T2で作ったRequest/Session/Applicationのスコープ拡張を移植する

バグフィックス

  1. Scope機能でキャストで失敗する