程序包 org.xmeta

类 World

java.lang.Object
org.xmeta.World

public class World
extends Object

世界是存放模型的容器。

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

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

  • 方法详细资料

    • getInstance

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

      public void setMode​(byte mode)
    • getMode

      public byte getMode()
    • getLibList

      public List<String> getLibList()
    • addLib

      public void addLib​(String lib)
    • createThingManager

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

      public ThingManager createThingManager​(String name, File managerRootFile, String 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 - 模型管理者的名称
      返回:
      模型管理者的监听者列表
    • getClassLoader

      public ThingClassLoader getClassLoader()
    • getHome

      public String getHome​(String name)
    • 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)
    • runActionAsync

      public void runActionAsync​(String actionPath, ActionContext actionContext, Map<String,​Object> parameters)
    • runAction

      public Object runAction​(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 - 模型管理者监听
    • getActionListener

      public ActionListener getActionListener()
    • setActionListener

      public void setActionListener​(ActionListener actionListener)
    • isHaveActionListener

      public boolean isHaveActionListener()
    • isThingFile

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

      public void addThingManager​(ThingManager thingManager)
      添加模型管理器。
      参数:
      thingManager - 模型管理器
    • getClassThingManager

      public ClassThingManager getClassThingManager()
    • 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()
    • initThingManager

      public ThingManager initThingManager​(File rootPath)
    • initThingManager

      public ThingManager initThingManager​(File rootPath, String name)
    • 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)
    • getTransientThingManager

      public TransientThingManager getTransientThingManager()
    • 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之外项目获取自身的模型管理器。
      返回:
      模型管理器,总是返回第一个模型管理