程序包 org.xmeta

类 World


  • public class World
    extends Object

    世界是存放事物的容器。

    可以通过事物的路径访问这个世界下的所有事物。

    事物的路径规则参看Path}
    作者:
    zyx
    • 字段详细资料

      • MODE_PROGRAMING

        public static byte MODE_PROGRAMING
        编程模式,默认
      • MODE_WORKING

        public static byte MODE_WORKING
        工作模式,一般JavaAction等发生变更时不重新编译
      • WEBROOT_TEMP_THINGMANAGER

        public static String WEBROOT_TEMP_THINGMANAGER
        在WEB模式下,会把webroot作为一个事物管理器
      • metaThing

        public Thing metaThing
        元事物
      • globalContexts

        protected List<ThingEntry> globalContexts
        全局上下文
      • helpSize

        public int helpSize
        帮助列表的最大个数
    • 方法详细资料

      • getInstance

        public static World getInstance()
        取得世界的实例。
        返回:
        世界的实例
      • setMode

        public void setMode​(byte mode)
      • getMode

        public byte getMode()
      • addLib

        public void addLib​(String lib)
      • createThingManager

        public ThingManager createThingManager​(String name,
                                               String link)
        创建一个ThingManager,必须是全路径<projectName>:<thingManagerName>。
        参数:
        name - 名称
        link - 连接
        返回:
        事物管理器
      • getFailureThingManangers

        public List<String> getFailureThingManangers()
        获取加载和初始化失败的事物管理器名称的列表。
        返回:
        事物管理器列表
      • isFailureThingManager

        public boolean isFailureThingManager​(String thingManager)
        返回指定的事物管理器是否是加载或初始化失败。
        参数:
        thingManager - 事物管理器
        返回:
        是否失败
      • removeFailureThingManager

        public void removeFailureThingManager​(String thingManager)
        从加载或初始化失败的事物管理器列表中移除指定的事物管理器。
        参数:
        thingManager - 事物管理器名
      • addGlobalContext

        public void addGlobalContext​(Thing contextThing,
                                     int index)
        已过时。
        添加全局上下文。动作上下文已改名为动作监听器,使用addGlobalActionListener。
        参数:
        contextThing - 事物
        index - 位置
      • addGlobalActionListener

        public void addGlobalActionListener​(Thing listener)
        添加全局动作监听器。全局动作监听器可以监听除了全局监听器的动作之外的所有动作的执行。
        参数:
        listener - 监听器
      • addGlobalActionListener

        public void addGlobalActionListener​(Thing listener,
                                            int index)
        添加全局动作监听器。全局动作监听器可以监听除了全局监听器的动作之外的所有动作的执行。
        参数:
        listener - 监听器
        index - 位置
      • removeGlobalContext

        public void removeGlobalContext​(Thing contextThing)
        已过时。
        移除一个全局上下文。
        参数:
        contextThing - 事物
      • removeGlobalActionListener

        public void removeGlobalActionListener​(Thing listener)
        移除一个全局动作监听器。
        参数:
        listener -
      • get

        public Object get​(String pathStr)
        通过路径来获得事物,可能会返回项目、事物管理者、目录、事物或者事物的列表。
        参数:
        pathStr - 路径
        返回:
        路径所对应的事物
      • loadThingFromClasspath

        public Thing loadThingFromClasspath​(String thingPath)
        从类的路径中装载事物。
        参数:
        thingPath - 事物路径
        返回:
        事物
      • getResource

        public URL getResource​(String path)
                        throws IOException
        通过路径获取资源。
        参数:
        path - 路径
        返回:
        资源,没找到返回null
        抛出:
        IOException - 异常
      • getResourceAsStream

        public InputStream getResourceAsStream​(String path)
                                        throws IOException
        以流的形式返回资源,如果没有返回null。首先从文件系统中找,其次从classpath下寻找资源。
        参数:
        path - 路径
        返回:
        输入流
        抛出:
        IOException - IO异常
      • getAction

        public Action getAction​(String actionPath)
        通过动作事物的路径获得动作。
        参数:
        actionPath - 动作路径
        返回:
        Action
      • getActionClass

        public Class getActionClass​(String actionPath,
                                    ActionContext actionContext)
        返回动作类,通常是动作事物对应的类,有些动作可能没有对应类。
        参数:
        actionPath - 动作路径
        actionContext - 变量上下文
        返回:
      • getActionClass

        public Class getActionClass​(Thing actionThing,
                                    ActionContext actionContext)
        返回动作类,通常是动作事物对应的类,有些动作可能没有对应类。
        参数:
        actionThing - 动作事物
        actionContext - 变量上下文
        返回:
      • getAction

        public Action getAction​(Thing actionThing)
        通过事物获得一个动作。
        参数:
        actionThing - 定义动作的事物
        返回:
        动作
      • getData

        public <T> T getData​(String key)
        获取一个用户数据。
        参数:
        key - 键
        返回:
      • setThreadData

        public void setThreadData​(String key,
                                  Object data)
        设置绑定到当前事物的ThreadLocal的数据。
      • getThreadData

        public <T> T getThreadData​(String key)
        返回绑定到本事物的ThradLocal中的数据。
        参数:
        key -
        返回:
      • getPath

        public String getPath()
        获得当前世界的路径。
        返回:
        世界的路径
      • debug

        public void debug​(ActionContext actionContext)
        执行一个已经设置了断点的动作,可以把该方法的调用嵌入到代码中,从而可以 实现在代码中的调试断点。
        参数:
        actionContext - 变量上下文
      • getThing

        public Thing getThing​(String path)
        通过事物的路径来访问具体的事物。
        参数:
        path - 事物的路径
        返回:
        事物,不存在则返回null
      • getThing

        public Thing getThing​(String path,
                              String thingManager,
                              String descriptor)
        通过事物的路径获取指定的事物,如果存在那么使用给定的descriptor创建事物,并保存到指定的thingManager下。
        参数:
        path - 事物的路径
        thingManager - 事物管理器
        descriptor - 描述者
        返回:
        事物
      • getThingManagers

        public List<ThingManager> getThingManagers()
        获取事物管理器列表。
        返回:
        事物管理器列表
      • getThingManagerListeners

        public List<ThingManagerListener> getThingManagerListeners​(String thingManagerName)
        获得注册的事物管理者的监听列表。
        参数:
        thingManagerName - 事物管理者的名称
        返回:
        事物管理者的监听者列表
      • getHomeFromSystem

        public String getHomeFromSystem​(String name)
      • testFileHome

        public String testFileHome​(String filePath)
      • getHomeFormSytsem

        public String getHomeFormSytsem()
      • init

        public void init​(String worldPath)
      • init

        public void init​(String worldPath,
                         ClassLoader classLoader)
        通过给定事物的存放路径来初始化世界。
        参数:
        worldPath - 世界的路径
      • isInited

        public boolean isInited()
        返回是否已经初始化过。
        返回:
        是否已经初始化
      • refresh

        public void refresh()
        刷新当前世界中项目。
      • registThingManagerListener

        public void registThingManagerListener​(String thingManagerName,
                                               ThingManagerListener listener)

        注册事物管理器的监听者。

        这里注册的监听者是所有事物管理者共有的,注册的键值是事物管理者的名称,不同项目下同名的事物管理者可以通过自身的名字获得相同 的事物管理者事件监听者列表,如果注册时事物管理者名称为*,那么表示此事件监听者监听所有事物管理者的事件。

        虽然在World中注册了事物管理者监听事件,但在具体的事物管理者实现中要使用注册的监听者,那么需在触发 事件通过World取得相应的监听者列表。

        如要监听具体的事物管理者,可获得具体的事物管理者然后调用事物管理者的addListener方法添加监听。
        参数:
        thingManagerName - 事物管理者的名称
        listener - 事物管理者事件监听者
      • runActionAsync

        public void runActionAsync​(String actionPath,
                                   ActionContext actionContext)
      • runAction

        public Object runAction​(String actionPath,
                                ActionContext actionContext,
                                Map<String,​Object> parameters)
        执行一个动作。
        参数:
        actionPath - 动作路径
        actionContext - 动作上下文
        parameters - 参数
        返回:
        动作执行后的返回结果
      • setData

        public void setData​(String key,
                            Object value)
        设置一个用户数据。
        参数:
        key - 键
        value - 值
      • removeData

        public void removeData​(String key)
        移除一个用户数据。
        参数:
        key - 键
      • unregistThingManagerListener

        public void unregistThingManagerListener​(String thingManagerName,
                                                 ThingManagerListener listener)
        取消事物管理者的监听者。
        参数:
        thingManagerName - 事物管理者的名称
        listener - 事物管理者监听
      • setActionListener

        public void setActionListener​(ActionListener actionListener)
      • isHaveActionListener

        public boolean isHaveActionListener()
      • isThingFile

        public boolean isThingFile​(String fileName)
        返回指定的文件名是否是保存事物的文件。
        参数:
        fileName - 文件名
        返回:
        是否是事物文件
      • addThingManager

        public void addThingManager​(ThingManager thingManager)
        添加事物管理器。
        参数:
        thingManager - 事物管理器
      • addThingManagerFirst

        public void addThingManagerFirst​(ThingManager thingManager)
        添加事物管理器到最前面。
        参数:
        thingManager - 事物管理器
      • moveThingManagerToFirst

        public void moveThingManagerToFirst​(ThingManager thingManager)
        先从事物管理器列表中移除,然后再加到最前面。如果移除失败(不在事物管理器列表中),则不会添加。
        参数:
        thingManager -
      • getThingManager

        public ThingManager getThingManager​(String name)
        根据事物管理器的名称返回事物管理器。
        参数:
        name - 名称
        返回:
        事物管理器
      • removeThingManager

        public void removeThingManager​(ThingManager thingManager)
        移除事物管理器。
        参数:
        thingManager - 事物管理器
      • removeThingManager

        public void removeThingManager​(ThingManager thingManager,
                                       boolean deleteRes)
      • getOS

        public String getOS()
      • getJVMBit

        public String getJVMBit()
      • addHelp

        public void addHelp​(String title,
                            String sourcePath,
                            String helpPath)
        添加运行期的帮助。
        参数:
        title - 标题
        sourcePath - 范围
        helpPath - 路径事物
      • getHelps

        public List<Help> getHelps()
      • isVerbose

        public boolean isVerbose()
      • setVerbose

        public void setVerbose​(boolean verbose)
      • registThingCoder

        public void registThingCoder​(ThingCoder thingCoder)
        注册事物的编码编码和解码器。
        参数:
        thingCoder - 编码器的实例
      • getThingCoders

        public List<ThingCoder> getThingCoders()
        返回编码器列表。
        返回:
        事物编码劣列表
      • getThingCoder

        public ThingCoder getThingCoder​(String type)
        通过类型返回事物的编码器,类型通常是文件的后缀名。
        参数:
        type - 编码类型
        返回:
        事物编码器
      • getWebFileRoot

        public String getWebFileRoot()
      • setWebFileRoot

        public void setWebFileRoot​(String webFileRoot)
      • addFileThingManager

        public void addFileThingManager​(String name,
                                        File dir,
                                        boolean hasThingDir,
                                        boolean first)
                                 throws IOException
        把一个目录当作文件事物管理器加入到事物管理器列表中,如果目录是world的home目录,那么过滤不生效。
        参数:
        name - 事物管理器名称
        dir - 目录
        hasThingDir - 是否包含things子目录
        first - 是否添加到第一个事物管理器中
        抛出:
        IOException
      • getWorkDirThingManager

        public ThingManager getWorkDirThingManager()
        返回工作目录对应的事物管理器,用于XWorker之外项目获取自身的事物管理器。
        返回:
        事物管理器,总是返回第一个事物管理