[server-application:77] Re: WebWork
Masataka Kurihara
kurihara @ seasar.org
2005年 11月 23日 (水) 14:42:36 JST
栗原です。
別件社内圧力もあって、WEBミドルの設計をはじめました。
いいものができるかわからないし、本当に作るかもわかりませ
んし、ましてやGusukuに採用できるかという点でもどうか、で
す。。。結構面白いですけどね。
作るのであれば、オープンソースソフトウェアとして作りたいと
思いますが、Seasarプロダクトにチャレンジするかは微妙。ファ
ウンデーションはS2JSFおよびTeedaでAll in One構想を推
進してますので。
今は仮組みでcom.gluegent.ikushipe.*でやってます。今、
名づけました。ikushipe=イクシペ、はアイヌ語で「柱」つまりは
Strutsです(笑。本当に作ったうえ、いいものになってきたら
Gusukuに採用してもらえるよう、お見せします。そうしたら
ファウンデーション入りさせてもらって、沖縄名に改名します。
コンセプトはまだ荒削りですが。。。
public interface ActionPage<T extends PageModel> {
@Target({ METHOD })
public @interface BeforeRender { }
@Target({ METHOD })
public @interface Action { String value() default ""; }
String getPageName();
PageController getPageController();
DIContainer getDIContainer();
void setPageModel(T pageModel);
T getPageModel();
}
というようなページのインターフェイスがあって、
@PageBinding("/index.html")
public abstract class IndexPage
implements ActionPage<IndexModel> {
@BeforeRender
public void prepare() {
IndexModel model = getPageModel();
model.clearErrorMessages();
}
@Action("login")
public void doLogin() {
IndexModel model = getPageModel();
PageController controller = getPageController();
DIContainer container = getDIContainer();
UserManager manager = container.getComponent(UserManager.class);
if(manager.login(model.getUserName(), model.getPassword())) {
ActionPage page = controller.findActionPage("NextPage");
controller.stackPage(page);
} else {
model.addErrorMessage("invalid username-password");
}
}
}
こういう抽象クラスを実装するとOKな感じ。未実装メソッドはJavassistもしくは
Antタスクでコードジェネレーションして自動に補わせようと考えています。
TapestryとStrutsとXWork、JSFからいろいろアイディアをパクってます。
-------------------------------------
特定非営利活動法人Seasarファウンデーション
代表理事 栗原 傑享(くりはら まさたか)
Mail: kurihara @ seasar.org
URL: http://www.seasar.org
-------------------------------------
server-application メーリングリストの案内