Package com.alibaba.citrus.service.moduleloader

Examples of com.alibaba.citrus.service.moduleloader.Module


        names = moduleLoaderService.getModuleNames("screen");
        assertArrayEquals(new String[] { "app2.FirstScreen", "app2.ThirdScreen" },
                          names.toArray(new String[names.size()]));

        // modules
        Module module = moduleLoaderService.getModule("action", "/app2/firstAction");

        assertNotNull(module);
        assertEquals(ActionEventAdapter.class, module.getClass());

        module = moduleLoaderService.getModule(" screen ", "app2.ThirdScreen");

        assertNotNull(module);
        assertEquals(DataBindingAdapter.class, module.getClass());
    }
View Full Code Here


        names = moduleLoaderService.getModuleNames("screen");
        assertArrayEquals(new String[] { "app2.FirstScreen", "app2.SecondScreen" },
                          names.toArray(new String[names.size()]));

        // modules
        Module module = moduleLoaderService.getModule("action", "/app2/secondAction");

        assertNotNull(module);
        assertEquals(ActionEventAdapter.class, module.getClass());

        module = moduleLoaderService.getModule(" screen ", "app2.FirstScreen");

        assertNotNull(module);
        assertEquals(DataBindingAdapter.class, module.getClass());
    }
View Full Code Here

        // 如果设置了template,则默认打开layout
        rundata.setLayoutEnabled(true);

        try {
            Module module = moduleLoaderService.getModuleQuiet(SCREEN_MODULE, moduleName);

            // 当指定了templateName时,可以没有的screen module,而单单渲染模板。
            // 这样就实现了page-driven,即先写模板,必要时再写一个module class与之对应。
            if (module != null) {
                module.execute();
            } else {
                if (isScreenModuleRequired()) {
                    throw new ModuleNotFoundException("Could not find screen module: " + moduleName);
                }
            }
View Full Code Here

        // 如果设置了template,则默认打开layout
        rundata.setLayoutEnabled(true);

        try {
            Module module = finder.getScreenModule();

            // 当指定了templateName时,可以没有的screen module,而单单渲染模板。
            // 这样就实现了page-driven,即先写模板,必要时再写一个module class与之对应。
            if (module != null) {
                // 将event传入screen。
                ScreenEventUtil.setEventName(rundata.getRequest(), finder.event);

                try {

                    if (module instanceof ModuleReturningValue) {
                        return ((ModuleReturningValue) module).executeAndReturn();
                    } else {
                        module.execute();
                    }
                } finally {
                    ScreenEventUtil.setEventName(rundata.getRequest(), null);
                }
            } else {
View Full Code Here

        public Module getScreenModule() throws ModuleLoaderException {
            // 从target中取得screen module名称
            moduleName = getModuleName(target);

            Module module = moduleLoaderService.getModuleQuiet(SCREEN_MODULE, moduleName);

            if (module != null) {
                return module;
            }
View Full Code Here

            } else {
                moduleName = mappingRuleService.getMappedName(CONTROL_MODULE_NO_TEMPLATE, target);
            }

            // 执行control module
            Module controlModule;

            if (templateName == null) {
                // templateName未指定时,必须有module,如没有则抛出ModuleNotFoundException
                controlModule = moduleLoaderService.getModule(CONTROL_MODULE, moduleName);
            } else {
                // 当指定了templateName时,可以没有的control module,而单单渲染模板。
                // 这样就实现了page-driven,即先写模板,必要时再写一个module class与之对应。
                controlModule = moduleLoaderService.getModuleQuiet(CONTROL_MODULE, moduleName);
            }

            if (log.isTraceEnabled()) {
                if (templateName != null) {
                    log.trace("Rendering control: template=" + templateName + ", control=" + moduleName);
                } else {
                    log.trace("Rendering control without template: control=" + moduleName);
                }
            }

            // 设置参数
            this.bufferedRequestContext.pushBuffer();

            try {
                controlParameterStack.addFirst(new ControlParameters()); // 支持control的嵌套

                TurbineRunDataInternal rundata = (TurbineRunDataInternal) TurbineUtil.getTurbineRunData(this.request);
                Context contextForControl = createContextForControl(params, componentName);

                rundata.pushContext(contextForControl, templateName);

                try {
                    if (controlModule != null) {
                        controlModule.execute();
                    }

                    // Control module可以通过注入ControlParameters接口来修改template。
                    String templateOverriden = rundata.getControlTemplate();
View Full Code Here

        return names;
    }

    public Module getModule(String moduleType, String moduleName)
            throws ModuleLoaderException, ModuleNotFoundException {
        Module module = getModuleQuiet(moduleType, moduleName);

        if (module == null) {
            throw new ModuleNotFoundException("Module not found: type=" + moduleType + ", name=" + moduleName);
        }
View Full Code Here

        moduleType = moduleKey.getModuleType();
        moduleName = moduleKey.getModuleName();

        // 先检查cache
        if (cacheEnabled) {
            Module module = moduleCache.get(moduleKey);

            if (module != null) {
                return module;
            }
        }

        // 从factory中装载
        Object moduleObject = null;
        Module module = null;

        for (ModuleFactory factory : factories) {
            moduleObject = factory.getModule(moduleType, moduleName);

            if (moduleObject != null) {
View Full Code Here

        // 如果设置了template,则默认打开layout
        rundata.setLayoutEnabled(true);

        try {
            Module module = finder.getScreenModule();

            // 当指定了templateName时,可以没有的screen module,而单单渲染模板。
            // 这样就实现了page-driven,即先写模板,必要时再写一个module class与之对应。
            if (module != null) {
                // 将event传入screen。
                ScreenEventUtil.setEventName(rundata.getRequest(), finder.event);

                try {

                    if (module instanceof ModuleReturningValue) {
                        return ((ModuleReturningValue) module).executeAndReturn();
                    } else {
                        module.execute();
                    }
                } finally {
                    ScreenEventUtil.setEventName(rundata.getRequest(), null);
                }
            } else {
View Full Code Here

        public Module getScreenModule() throws ModuleLoaderException {
            // 从target中取得screen module名称
            moduleName = getModuleName(target);

            Module module = moduleLoaderService.getModuleQuiet(SCREEN_MODULE, moduleName);

            if (module != null) {
                return module;
            }
View Full Code Here

TOP

Related Classes of com.alibaba.citrus.service.moduleloader.Module

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.