[Seasar][Uruma]Urumaで登録するコンポーネントのインスタンスメモ。

ActionもSINGLETONなのね。

org.seasar.uruma.rcp.autoregister.UrumaAppAutoRegisterBuilder

    /**
     * {@link UrumaAppAutoRegister} のための {@link ComponentDef} オブジェクトを生成します。<br />
     * 
     * @param refClassName
     *            リファレンスクラス名称
     * @param basePackage
     *            ベースパッケージ名
     * @return {@link UrumaAppAutoRegister}{@link ComponentDef} オブジェクト
     * @throws ClassNotFoundException
     */
    public static ComponentDef build(final String refClassName,
            final String basePackage) throws ClassNotFoundException {
        AnnotationHandler handler = AnnotationHandlerFactory
                .getAnnotationHandler();
        ComponentDef cd = handler.createComponentDef(
                UrumaAppAutoRegister.class, InstanceDefFactory.SINGLETON,
                AutoBindingDefFactory.AUTO, false);
        
        cd.addPropertyDef(new PropertyDefImpl("instanceDef",
                InstanceDefFactory.PROTOTYPE));
        cd.addInitMethodDef(ctreateAddReferenceClassDef(refClassName));
        cd.addInitMethodDef(createAddClassPatternDef(basePackage, ".*Action"));
        cd.addInitMethodDef(createAddClassPatternDef(basePackage,
                ".*ContentProvider"));
        cd.addInitMethodDef(createAddClassPatternDef(basePackage,
                ".*LabelProvider"));
        cd.addInitMethodDef(createAddClassPatternDef(basePackage, ".*Sorter"));
        
        handler.appendInitMethod(cd);
        handler.appendDestroyMethod(cd);
        handler.appendAspect(cd);
        handler.appendInterType(cd);
        handler.appendDI(cd);

        return cd;
    }