Restlet help 的结构和作用分析

前面说过了 restlet 组件和 help 的关系,参见http://blog.csdn.net/teamlet/article/details/7726308

这里就分头详细描述一下 help 这个分支的内容。


一、Help 是 Restlet Help的顶级类

Help是一个抽象类,没有实现任何的方法。


二、RestletHelper 是与 Restlet 对应的Help


RestletHelper<T>是 Help 的子类之一,也是个抽象类。

RestletHelper主要定义了 Map<String, Object> attributes 和 T helped 两个属性:


attributes 是用来保存在 Engine 和 Restlet API 之间需要交换的属性。
helped 用来保存对应的 Restlet 组件。


除了通过helped提供一些方法外,还有一个比较重要的方法就是 handle(Request request, Response response)
这个方法与Restlet中的 handle(Request request, Response response) 类似,不同的是,这里不需要调用启动(start)方法,
因为每个Restlet在handle调用的时候都需要启动,而help则不需要在handle()中启动。


RestletHelper 同时定义了start()、stop()、update()抽象方法,供子类实现。


三、CompositeHelper


CompositeHelper 是RestletHelper的子类,因为没有实现RestletHelper 中声明的 start() 等抽象方法,所以CompositeHelper也是一个抽象类。


CompositeHelper 定义了 操作Filter的指针:包括firstInboundFilter、firstOutboundFilter、lastInboundFilter、lastOutboundFilter
以及入口的Restlet组件 inboundNext 和出口的Restlet组件 outboundNext 。


同时,与Restlet类和其子类实现的调用关系一样,CompositeHelper 覆写了 RestletHelper 的 handle(Request request, Response response)方法,
方法中首先调用父类的handle方法 —— super.handle(Request request, Response response),然后调用firstInboundFilter.handle()方法处理Filter队列;



四、ComponentHelper


ComponentHelper 是 CompositeHelper的子类,与其对应的 Restlet组件是 Component .


ComponentHelper 实现了RestletHelper定义的 start() stop() update()方法。


在start()方法中,调用了非常重要的方法 boolean checkVirtualHost(VirtualHost host) ,这个方法也是在 ComponentHelper这个类中实现的。


首先,start()方法先调用 checkVirtualHost()方法依次检查 Compoennt中的 defaultHost 和 hosts 。
如果 defaultHost和hosts不为空,并且下一个组件是 Application 则开始解析并组装这个 Application,然后启动这个 Application .
Application 启动后,创建 inboundFilter 和 outboundFilter ,并把 包含Component的 ServerRouter 实例 设置为 outboundNext .


当Component 类实例调用 start() 方法时,其中startHelper() 方法就是来调用 ComponentHelper 的 start()。


这里需要备注一下:就是ComponentHelper执行 start()方法会启动application .

componentHelper.start() --->checkVirtualHost(VirtualHost host) ----> application.start()




《待续》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值