源码浅析基于Eclipse平台的EOS Studio架构节选.docx

上传人:b****8 文档编号:9215591 上传时间:2023-05-17 格式:DOCX 页数:14 大小:547.36KB
下载 相关 举报
源码浅析基于Eclipse平台的EOS Studio架构节选.docx_第1页
第1页 / 共14页
源码浅析基于Eclipse平台的EOS Studio架构节选.docx_第2页
第2页 / 共14页
源码浅析基于Eclipse平台的EOS Studio架构节选.docx_第3页
第3页 / 共14页
源码浅析基于Eclipse平台的EOS Studio架构节选.docx_第4页
第4页 / 共14页
源码浅析基于Eclipse平台的EOS Studio架构节选.docx_第5页
第5页 / 共14页
源码浅析基于Eclipse平台的EOS Studio架构节选.docx_第6页
第6页 / 共14页
源码浅析基于Eclipse平台的EOS Studio架构节选.docx_第7页
第7页 / 共14页
源码浅析基于Eclipse平台的EOS Studio架构节选.docx_第8页
第8页 / 共14页
源码浅析基于Eclipse平台的EOS Studio架构节选.docx_第9页
第9页 / 共14页
源码浅析基于Eclipse平台的EOS Studio架构节选.docx_第10页
第10页 / 共14页
源码浅析基于Eclipse平台的EOS Studio架构节选.docx_第11页
第11页 / 共14页
源码浅析基于Eclipse平台的EOS Studio架构节选.docx_第12页
第12页 / 共14页
源码浅析基于Eclipse平台的EOS Studio架构节选.docx_第13页
第13页 / 共14页
源码浅析基于Eclipse平台的EOS Studio架构节选.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

源码浅析基于Eclipse平台的EOS Studio架构节选.docx

《源码浅析基于Eclipse平台的EOS Studio架构节选.docx》由会员分享,可在线阅读,更多相关《源码浅析基于Eclipse平台的EOS Studio架构节选.docx(14页珍藏版)》请在冰点文库上搜索。

源码浅析基于Eclipse平台的EOS Studio架构节选.docx

源码浅析基于Eclipse平台的EOSStudio架构节选

1构件体系

1.1基本结构

一个EOS项目的基本包含关系是“构件项目->构件包->构件->构件单元”。

其中构件包是最小的可发布单元。

构件项目是构件包的集合,只是多包括了一个WEB模块。

1.2构件关系

1.2.1构件注册

各种类型的构件通过扩展插件的形式动态的加入Workbench。

扩展点com.primeton.studio.workbench.model描述了一个构件类型所需要的必要信息,通过实现该扩展点来添加新的构件类型。

其中:

∙fileExtension:

该构件支持的文件后缀名,以逗号分隔

∙label:

该构件的显示名称

∙allowSubfolder:

是否支持多层目录

∙factory:

构件工厂类,必须实现接口IModelFactory

∙imageProvider:

构件图像提供类。

可选。

∙interceptor:

构件生命周期拦截器。

∙contentProvider:

构件内容提供类。

可选。

第一次启动构件类型注册表(ComponentRegistry)时,它会获取所有实现了构件类型扩展点的实现,解析它们的内容,将这些类型加入构件类型注册表中,以ComponentDescriptor类的格式进行描述。

ComponentRegistry提供了多种接口可以查询构件类型方面的信息。

另外,如果factory类实现了IModelFactory2接口,则具备动态配置扩展的可支持的文件类型(如jsp构件类型插件)

1.2.2构件创建

NodeFacotry提供了构件项目、构件包、构件的创建API。

构件的具体创建方法由构件定义(ComponentDescriptor)中所指定了负责构件创建的IModelFactory接口来定义。

构件下面的构件资源的创建由每个构件给出具体的向导来完成。

1.2.3构件载入

构件资源的载入由LoadNodeOperation完成。

ResourceManager的load?

?

?

()方法提供了具体的载入逻辑。

1.2.4构件引用

1.2.4.1内部引用

内部引用指的是API一级的相互引用。

UnitID是独立于构件类型的规范的构件,是由(构件包名,构件名,资源名,构件类型)所唯一确定的一组数据,可以标识任意合法的构架资源,是构件之间的引用的标准格式。

IModelFactory接口给出了将UnitID转换成具体构件的String类型ID的方法。

ReferenceTable:

构件资源引用表。

以UnitID的格式保存了各个构件资源之间的双向引用关系。

通过其API可以查询到各个构件的引用和被引用情况。

这些信息在每次编译的时候通过解析构件资源的语意(重载EOSUnit.getReferenceUnits())获取更新,并缓存到eclipse的配置目录中以便下次可以获取即时的引用信息。

1.2.4.2外部引用

构件通过打包后可以由其他项目引用。

默认所有的构件均为可导出的。

实现IExportable接口的IEOSNode可以定义该接口是否可导出。

无论构件资源是否可导出,打包时均会置入引用包中。

现在实现该接口的IEOSNode包括构件包和构件。

ICompiler中LoadCompiledUnit接口负责载入打包后的构件包里面的构件内容,不可导出的构件资源将不会载入。

1.2.5构件元信息

WorkspaceMeta:

仅当工程下面的目录具备.eos文件时,它才会被识别成一个合法的构件容器EOSFolder

ProjectMeta:

项目相关的信息(TODO:

deprecated。

工程根目录下的.eos文件没有太多存在的必要了,相应的META信息可以一同放在项目的配置文件中)

DeployMeta:

Server所需要的元信息格式。

1.2.6其他接口

1.3资源

Stub类原是桥接Eclipse资源与EOS模型的一种类。

今后可考虑用Adapter而不是直接实现IResource系列接口的方式来实现。

ResourceManager是对外的资源管理类,提供了大部分与资源相关的接口(考虑今后将显式的API重构为隐式的API,如removeNode(IEOSNodenode)变为IEOSNode.remove(),提高API的使用便利性。

但remove()方法实现内部则调用ResourceManager.removeNode(this))。

同时ResourceManager维护着两个表:

∙“资源->构件”检索表

∙“文件路径->构件”检索表

2事件体系

2.1Eclipse事件

∙EOSResourceListener负责一般的构件资源事件处理

∙EOSProjectAdditoinListener负责项目的打开、关闭事件处理

∙EOSClassPathListener负责.classpath文件内容与web模块下JAVA源文件夹的同步

2.2Studio事件

在执行Load、Add、Remove、Compile等构件操作后,ResourceManager会通过core插件里的StudioEventManager发出相应的事件。

触发事件的时机和处理事件的方法需要留意一下,不然很容易造成死锁。

可考虑将事件处理过程设为不可重入,以避免可能出现这种情况。

3编译体系

3.1编译器

构件资源中需要被编译的资源包括两类:

形式逻辑语言,如数据库定义,业务流程图;以及计算逻辑语言,如Java代码,可执行脚本等。

形式逻辑语言的编译一般涉及图形符号的解释、冗余信息的去除、逻辑的转换和代码的自动生成,大多由构件自身提供的解释或编译工具执行;

计算逻辑语言的编译是普通意义上对通用计算机语言如Java的编译,一般由构件平台所提供的语言插件执行;

对于形式逻辑语言,可以通过查询构件类型注册表找到各个构件资源所对应的构件类型,再调用该构件类型所定义的编译器的编译接口(ICompiler)编译这些构件资源即可;对于计算逻辑语言,需要由第三方语言插件来进行编译,不主动调用,一般这类型调用都是由Eclipse的资源编译器发起。

对构件的编译采用将构件的形式逻辑语言的编译器组织成org.eclipse.core.resources.IncrementalProjectBuilder的子类,并注册到扩展点org.eclipse.core.resources.builders下成为Eclipse可识别的编译插件的编译器扩展。

通过将该编译器绑定到EOS的项目特征(Nature)确保只有构件项目才能接受该类型编译器的编译动作。

每种构件类型相关的编译器通过实现扩展点”piler”来定义。

其中:

∙model:

对应构件类型的pluginId。

∙class:

编译类类名,必须实现ICompiler接口。

∙fileExtension:

可识别的目标文件的扩展名,以逗号分隔。

3.2编译相关类

3.3编译过程

3.4编译标签

编译中出现的警告和错误信息,作为编译结果之一,用IMarker记录下来,同时显示在‘问题’视图的列表中。

为了能让EOS编译的错误信息直接被问题视图搜集到,编译结果的标签在实现扩展点org.eclipse.core.resources.markers时设置它的父标签为org.eclipse.core.resources.problemmarker即可。

资源的EOS编译标签再该资源重新编译的时候被EOS编译器清零。

TaskMessage是编译信息的另一种数据格式,用于打包时记录编译信息显示于结果对话框中。

4搜索体系

4.1搜索进程

搜索的API是ProjectManager.searchUnitsContent()。

加入构件的新搜索类型首先实现了Eclipse与search相关的两个扩展点。

由于搜索是一项比较耗费时间的操作,Eclipse采用后台进程的形式确保其不会影响前台界面的响应速度,而EOS里又采用了多线程保证搜索的速度,其中SearchJob.MAX_THREAD定义了线程池里可运行的线程数量。

4.2搜索标签

搜索的结果被打上标签(IMarker),以便可以定位到在文件中的具体出现位置。

它的IMarker类型号为ResourceManager.MARKER_ID。

搜索返回的这些标签的IMarker.TRANSIENT属性被设为true,这是确保Eclipse关闭后将不会保留下这些标签。

这些标签最后被搜集并转换成Match对象传回给EOSSearchResult,并最终显示在搜索结果视图中。

5部署体系

EPP文件是打包后的构件包,EPJ文件是打包后的构件项目。

这两类构件文件均可以引用包的形式为其他项目所引用。

通过实现扩展点com.primeton.studio.workbench.library可以向workbench中添加内置的引用库。

Workbench会解析该扩展点中包含的所有文件名,其中EPP和EPJ文件会被解析成引用构件包,JAR文件会添加到项目的JavaClassPath中,WAR文件则会在新建项目的时候默认添加到项目的WEB模块中。

6调试

待补充……

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2