Search in sources :

Example 16 with Ioc

use of org.nutz.ioc.Ioc in project nutz by nutzam.

the class PlugsTest method test_get_plugin_from_ioc.

@Test
public void test_get_plugin_from_ioc() {
    Ioc ioc = new NutIoc(new JsonLoader("org/nutz/plugin/plugin.js"));
    PluginManager<Log> manager = new IocPluginManager<Log>(ioc, "pluB", "pluA", "pluC");
    assertNotNull(manager.get());
    assertTrue(manager.get() instanceof SystemLogAdapter);
    ioc.depose();
}
Also used : NutIoc(org.nutz.ioc.impl.NutIoc) Log(org.nutz.log.Log) SystemLogAdapter(org.nutz.log.impl.SystemLogAdapter) JsonLoader(org.nutz.ioc.loader.json.JsonLoader) Ioc(org.nutz.ioc.Ioc) NutIoc(org.nutz.ioc.impl.NutIoc) Test(org.junit.Test)

Example 17 with Ioc

use of org.nutz.ioc.Ioc in project nutz by nutzam.

the class ModuleProcessor method process.

public void process(ActionContext ac) throws Throwable {
    RequestIocContext reqContext = null;
    try {
        if (null != moduleObj) {
            ac.setModule(moduleObj);
        } else {
            Ioc ioc = ac.getIoc();
            Object obj;
            /*
                 * 如果 Ioc 容器实现了高级接口,那么会为当前请求设置上下文对象
                 */
            if (NutSessionListener.isSessionScopeEnable && ioc instanceof Ioc2) {
                reqContext = new RequestIocContext(ac.getRequest());
                HttpSession sess = Mvcs.getHttpSession(false);
                IocContext myContext = null;
                // 如果容器可以创建 Session ...
                if (null != sess) {
                    SessionIocContext sessionContext = new SessionIocContext(sess);
                    myContext = new ComboContext(reqContext, sessionContext);
                } else // 如果容器禁止了 Session ...
                {
                    myContext = reqContext;
                }
                Mvcs.setIocContext(myContext);
                obj = ((Ioc2) ioc).get(moduleType, injectName, myContext);
            } else
                /*
                 * 否则,则仅仅简单的从容器获取
                 */
                obj = ioc.get(moduleType, injectName);
            ac.setModule(obj);
        }
        ac.setMethod(method);
        // if (log.isDebugEnabled()) //打印实际执行的Method信息
        // log.debugf("Handle URL[%s] by Method[%s]",ac.getPath(),method);
        doNext(ac);
    } finally {
        if (reqContext != null)
            try {
                reqContext.depose();
            } catch (Throwable e) {
                if (log.isDebugEnabled())
                    log.debug("ReqContext depose fail?!", e);
            }
    }
}
Also used : ComboContext(org.nutz.ioc.impl.ComboContext) SessionIocContext(org.nutz.mvc.ioc.SessionIocContext) RequestIocContext(org.nutz.mvc.ioc.RequestIocContext) IocContext(org.nutz.ioc.IocContext) SessionIocContext(org.nutz.mvc.ioc.SessionIocContext) HttpSession(javax.servlet.http.HttpSession) Ioc2(org.nutz.ioc.Ioc2) Ioc(org.nutz.ioc.Ioc) RequestIocContext(org.nutz.mvc.ioc.RequestIocContext)

Example 18 with Ioc

use of org.nutz.ioc.Ioc in project nutz by nutzam.

the class Nutzs method getIoc.

public static Ioc getIoc(String key) {
    Ioc nut = nuts.get(key);
    if (null == nut) {
        synchronized (Nutzs.class) {
            nut = nuts.get(key);
            try {
                if (null == nut) {
                    nut = new NutIoc(new JsonLoader(key));
                    nuts.put(key, nut);
                }
            } catch (Exception e) {
                throw Lang.wrapThrow(e);
            }
        }
    }
    return nut;
}
Also used : NutIoc(org.nutz.ioc.impl.NutIoc) JsonLoader(org.nutz.ioc.loader.json.JsonLoader) Ioc(org.nutz.ioc.Ioc) NutIoc(org.nutz.ioc.impl.NutIoc)

Example 19 with Ioc

use of org.nutz.ioc.Ioc in project nutz by nutzam.

the class Nutzs method depose.

public static void depose() {
    for (Ioc ioc : nuts.values()) ioc.depose();
    nuts.clear();
    nuts = null;
}
Also used : Ioc(org.nutz.ioc.Ioc) NutIoc(org.nutz.ioc.impl.NutIoc)

Example 20 with Ioc

use of org.nutz.ioc.Ioc in project nutz by nutzam.

the class NutLoading method depose.

public void depose(NutConfig config) {
    if (log.isInfoEnabled())
        log.infof("Nutz.Mvc[%s] is deposing ...", config.getAppName());
    Stopwatch sw = Stopwatch.begin();
    // Firstly, upload the user customized desctroy
    try {
        Setup setup = config.getAttributeAs(Setup.class, Setup.class.getName());
        if (null != setup)
            setup.destroy(config);
    } catch (Exception e) {
        throw new LoadingException(e);
    } finally {
        SessionProvider sp = config.getSessionProvider();
        if (sp != null)
            sp.notifyStop();
        // If the application has Ioc, depose it
        Ioc ioc = config.getIoc();
        if (null != ioc)
            ioc.depose();
    }
    // Done, print info
    sw.stop();
    if (log.isInfoEnabled())
        log.infof("Nutz.Mvc[%s] is down in %sms", config.getAppName(), sw.getDuration());
}
Also used : Stopwatch(org.nutz.lang.Stopwatch) LoadingException(org.nutz.mvc.LoadingException) Setup(org.nutz.mvc.Setup) Ioc(org.nutz.ioc.Ioc) LoadingException(org.nutz.mvc.LoadingException) SessionProvider(org.nutz.mvc.SessionProvider)

Aggregations

Ioc (org.nutz.ioc.Ioc)35 NutIoc (org.nutz.ioc.impl.NutIoc)29 Test (org.junit.Test)27 Animal (org.nutz.ioc.json.pojo.Animal)15 JsonLoader (org.nutz.ioc.loader.json.JsonLoader)6 Ioc2 (org.nutz.ioc.Ioc2)3 IocContext (org.nutz.ioc.IocContext)2 IocLoader (org.nutz.ioc.IocLoader)2 IocTO00 (org.nutz.ioc.json.pojo.IocTO00)2 MapLoader (org.nutz.ioc.loader.map.MapLoader)2 Stopwatch (org.nutz.lang.Stopwatch)2 LoadingException (org.nutz.mvc.LoadingException)2 File (java.io.File)1 HashMap (java.util.HashMap)1 Map (java.util.Map)1 Properties (java.util.Properties)1 HttpSession (javax.servlet.http.HttpSession)1 User (net.wendal.nutzdemo.bean.User)1 Dao (org.nutz.dao.Dao)1 ComboContext (org.nutz.ioc.impl.ComboContext)1