package org.nutz.mvc; import java.util.HashMap; import java.util.Map; import org.nutz.ioc.Ioc; import org.nutz.lang.Lang; import org.nutz.lang.util.Context; import org.nutz.lang.util.SimpleContext; import org.nutz.mvc.config.AtMap; public class NutMvcContext extends SimpleContext { private ThreadLocal<Context> reqThreadLocal = new ThreadLocal<Context>(); public Map<String, Ioc> iocs = new HashMap<String, Ioc>(); public Map<String, AtMap> atMaps = new HashMap<String, AtMap>(); public Map<String, NutConfig> nutConfigs = new HashMap<String, NutConfig>(); public Map<String, Map<String, Map<String, Object>>> localizations = new HashMap<String, Map<String, Map<String, Object>>>(); public Context reqCtx() { Context ctx = reqThreadLocal.get(); if (ctx == null) { ctx = Lang.context(); reqThreadLocal.set(ctx); } return ctx; } public void reqCtx(Context ctx) { reqThreadLocal.set(ctx); } public void removeReqCtx() { reqThreadLocal.remove(); } public void close() { reqThreadLocal.remove(); iocs.clear(); atMaps.clear(); nutConfigs.clear(); localizations.clear(); } /** * 获取默认Ioc,在单个NutFilter/NutServlet中非常合用 */ public Ioc getDefaultIoc() { if (iocs.isEmpty()) return null; return iocs.values().iterator().next(); } public NutConfig getDefaultNutConfig() { if (nutConfigs.isEmpty()) return null; return nutConfigs.values().iterator().next(); } }