山东大学软件学院软件工程应用与实践 COCOON 第四篇"/>
2021SC@SDUSC山东大学软件学院软件工程应用与实践 COCOON 第四篇
2021SC@SDUSC
sitemap:
该类共有四个类,分别为LinkGaherer,LinkTranslator,NotifyingGenerator,SitemapServlet,其中NotifyingGenerator已弃用,将不再分析。
LinkGatherer:
链接聚集器,该类直接继承了ExtendedXLinkPipe,并实现了Transformer和CacheableProcessingComponent接口。
该类提供了getKey方法生成唯一密钥,返回1,getValidity方法生成有效性对象,返回了空值.
通过setup方法设置SourceResolver,Map,source和sitemap来处理请求对象。
addLink方法可以给Link列表添加一个href,同时会对该网址进行判断,将不符合要求的返回。
simpleLink方法可将进行简单链接,startLocator开启定位器,两个方法都继承自XLinkPipe,都是为链表添加一个
public void startLocator( String href, String role, String title, String label, String uri, String name, String raw, Attributes attr ) throws SAXException{AttributesImpl newattr = new AttributesImpl( attr );int hrefIndex = attr.getIndex( XLINK_NAMESPACE_URI, XLINK_HREF );int roleIndex = attr.getIndex( XLINK_NAMESPACE_URI, XLINK_ROLE );int titleIndex = attr.getIndex( XLINK_NAMESPACE_URI, XLINK_TITLE );int labelIndex = attr.getIndex( XLINK_NAMESPACE_URI, XLINK_LABEL );if ( hrefIndex > -1 )newattr.setValue( hrefIndex, href );if ( roleIndex > -1 )newattr.setValue( roleIndex, role );if ( titleIndex > -1 )newattr.setValue( titleIndex, title );if ( labelIndex > -1 )newattr.setValue( labelIndex, label );super.startElement( uri, name, raw, newattr );}
startLocator通过获取设置属性,并调用startElement方法。
public void simpleLink( String href, String role, String arcrole, String title, String show, String actuate, String uri, String name, String raw, Attributes attr ) throws SAXException{AttributesImpl newattr = new AttributesImpl( attr );int hrefIndex = attr.getIndex( XLINK_NAMESPACE_URI, XLINK_HREF );int roleIndex = attr.getIndex( XLINK_NAMESPACE_URI, XLINK_ROLE );int arcroleIndex = attr.getIndex( XLINK_NAMESPACE_URI, XLINK_ARCROLE );int titleIndex = attr.getIndex( XLINK_NAMESPACE_URI, XLINK_TITLE );int showIndex = attr.getIndex( XLINK_NAMESPACE_URI, XLINK_SHOW );int actuateIndex = attr.getIndex( XLINK_NAMESPACE_URI, XLINK_ACTUATE );if ( hrefIndex > -1 )newattr.setValue( hrefIndex, href );if ( roleIndex > -1 )newattr.setValue( roleIndex, role );if ( arcroleIndex > -1 )newattr.setValue( arcroleIndex, arcrole );if ( titleIndex > -1 )newattr.setValue( titleIndex, title );if ( showIndex > -1 )newattr.setValue( showIndex, show );if ( actuateIndex > -1 )newattr.setValue( actuateIndex, actuate );super.startElement( uri, name, raw, newattr );}
simpleLink通过获取设置属性,并调用startElement方法。
LinkTranslator:
链接转换器,该类直接继承了ExtendedXLinkPipe,并实现了Transformer和CacheableProcessingComponent接口。方法与LinkGatherer中类,但是每个方法都是从链表中寻找是否存在,若存在则使用链表中的,若不存在则使用参数中提供的。
SitemapServlet:
在该文件中,提供了初始化创建一个已配置的TreeProcessor,启动服务使用Cocoon树处理器处理传入请求,销毁方法,同时定义了一个保护类来完成这些操作,并作为该类的一个成员变量。
保护类RequestProcessor中,继承了RequestProcessor,在该类中可以获取进程和url。
createTreeProcessorConfiguration方法获取站点地图位置的uri,并在当前servlet上下文中解析它,Treeprocessor接收已解决的问题是非常重要的,仅提供相对于当前上下文的uri是不够的,而且不起作用,最后返回一个configuration
更多推荐
2021SC@SDUSC山东大学软件学院软件工程应用与实践 COCOON 第四篇
发布评论