程序包 org.xmeta

类 World

java.lang.Object
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
      元模型
    • globalActionListenerProviders

      protected List<ActionListenerProvider> globalActionListenerProviders
      全局上下文
    • threadLocalDatas

      protected volatile ThreadLocal<Map<String,Object>> threadLocalDatas
      绑定到线程上的数据
    • helpSize

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

    • 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)
    • getFailureThingManagers

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

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

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

      public void addGlobalActionListener(ActionListenerProvider provider)
    • addGlobalActionListener

      public void addGlobalActionListener(ActionListenerProvider provider, int index)
    • removeGlobalActionListener

      public void removeGlobalActionListener(ActionListenerProvider provider)
    • getGlobalActionListenerProviders

      public List<ActionListenerProvider> getGlobalActionListenerProviders()
    • 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()
    • getLibraryPath

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