resteasy-links的研究(六)

这篇文章分析一下新加的ClassLinksProvider的使用方法。

这个class来自于这个PR:

在这个PR里面,关于这个新加的class,添加了一个测试:

这篇文章就是分析一下这个测试,从而学习ClassLinksProvider的使用方法。

首先看一下ClassLinksProviderService的类图:

这个class在测试当中提供rest服务,它里面有两个方法,分别是getForClass()getResourceMethodRegistry(),其中对外提供服务的是getForClass()方法,因此主要看这个方法的逻辑:

这个service的逻辑如下:

明白了这个service的逻辑,接下来看看测试类TestClassLinksProvider里面的逻辑。首先看一下它的类图:

具体看一下测试当中shouldGetBookClassLinks()方法的逻辑:

从上面的逻辑图可以看到,测试的目的是访问服务端,传入Book这个class的字串名字,然后服务端刚才看过了会返回一个这个class隐含的RESTServiceDiscovery数据。

其中,Book这个class是一个JAXB标记的数据class:

它的类图如下:

可以看到它包含一个RESTServiceDiscovery的数据,但是新的ClassLinksProvider的功能不依赖于数据class自带的这个RESTServiceDiscovery数据,而是会自己重建一个。在下一篇文章当中,我们会做一个demo来验证这一点。

这个数据返回后,test case会验证数据里面包含的预期的内容,因此也就可以验证ClassLinksProvider的功能是正常工作的。

以上是对这个test case的静态分析,本文就分析到这里。在下一篇文章里,依据上面的分析,做一个demo项目,实际跑一下这个功能,进行动态分析。

My Github Page: https://github.com/liweinan

Powered by Jekyll and Theme by solid

If you have any question want to ask or find bugs regarding with my blog posts, please report it here:
https://github.com/liweinan/liweinan.github.io/issues