使用Clojure脚本扩展Java项目

1、非继承性的扩展


2、扩展中的问题

1)脚本的设计

扩展脚本包括:ext-input、ext-output、ext-assert三个固定部分;

中间层脚本执行扩展脚本的三个固定部分;

扩展脚本的三个固定函数中,将调用中间层脚本提供的函数。

2)中间层脚本提供的接口

a)ext-input:扩展参数类型,扩展参数值编辑器的配置

add-input-type [condition input-type]

set-input-value-editor [condition editor-type init-value open-detail detail-title]

b)ext-output:扩展输出值和期望值编辑器

set-output-value-editor [condition editor-type init-value open-detail detail-title]

set-expect-value-editor [condition editor-type init-value open-detail detail-title]

c)ext-assert:扩展新断言的匹配,新断言模板

def-assert-match [output-type output-value test-type expect-type expect-value]

def-assert-info [utplsql-assert msg-in]

prepare-data []

execute-proc []

execute-assert []

restore-data []

add-assert-type [assert-name assert-info assert-match]

d)存储过程信息

e)存储过程的参数列表和引用表列表

f)ut文件的handler

g)案例的输入信息列表

h)案例的输出信息列表


3)问题

a)编辑器类型和初始值应该在哪里设置?

  • 这个应该是公用的,所以不需要在每个断言里扩展,应该放在ext-output里

b)接口层次不一致问题

  • 案例配置文件包含存储过程、输入/输出列表信息,存储过程包括其参数和引用表信息。为了兼顾工具使用的方便和扩展的能力,将同时提供不同层次的接口。

c)中间层提供的Java数据结构的时效性问题
  • 不论是存储过程,还是案例配置文件,都不是某个一成不变的对象。因此,脚本中涉及到的数据结构均表示“当前正处理状态的数据结构”。
d) 断言模板在脚本和Java中的实现
  • 如果Velocity模板中所需的数据可以直接在Clojure脚本中指定,那就没有必要在Java端判断是哪一种断言类型了。
e)扩展脚本中配置的数据结构如何添加到Java中?
  • 在中间层脚本中添加,然后一次性导入Java中
  • 每一条数据,在中间层脚本中调用Java的添加接口,一条一条添加

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值