resteasy-links的研究(六)
这篇文章分析一下新加的ClassLinksProvider
的使用方法。
这个class来自于这个PR:
在这个PR里面,关于这个新加的class,添加了一个测试:
这篇文章就是分析一下这个测试,从而学习ClassLinksProvider
的使用方法。
首先看一下ClassLinksProviderService
的类图:
这个class在测试当中提供rest服务,它里面有两个方法,分别是getForClass()
和getResourceMethodRegistry()
,其中对外提供服务的是getForClass()
方法,因此主要看这个方法的逻辑:
这个service的逻辑如下:
- 接受用户传过来的
className
字串 - 把字串传入
ClassLinksProvider.getLinks()
方法 - 通过
ClassLinksProvider.getLinks()
得到class里面所包含的RESTServiceDiscovery
数据(注意这个数据instance是在ClassLinksProvider
里面重建出来的)
明白了这个service的逻辑,接下来看看测试类TestClassLinksProvider
里面的逻辑。首先看一下它的类图:
具体看一下测试当中shouldGetBookClassLinks()
方法的逻辑:
从上面的逻辑图可以看到,测试的目的是访问服务端,传入Book
这个class的字串名字,然后服务端刚才看过了会返回一个这个class隐含的RESTServiceDiscovery
数据。
其中,Book
这个class是一个JAXB标记的数据class:
它的类图如下:
可以看到它包含一个RESTServiceDiscovery
的数据,但是新的ClassLinksProvider
的功能不依赖于数据class自带的这个RESTServiceDiscovery
数据,而是会自己重建一个。在下一篇文章当中,我们会做一个demo来验证这一点。
这个数据返回后,test case会验证数据里面包含的预期的内容,因此也就可以验证ClassLinksProvider
的功能是正常工作的。
以上是对这个test case的静态分析,本文就分析到这里。在下一篇文章里,依据上面的分析,做一个demo项目,实际跑一下这个功能,进行动态分析。