快速业务通道

Java Content Repository API简介 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
单,如清单 7 所示:

清单 7. 用 TransientRepository 获得仓库、工作区和根节点

Repository r = new TransientRepository(); Session session = r.login(new SimpleCredentials("userid", "".toCharArray())); Workspace ws = session.getWorkspace(); Node rn = session.getRootNode();

像手工配置时一样,所有的 JCRWiki 内容都放在 wiki 名称空间下:

ws.getNamespaceRegistry()。registerNamespace    ("wiki", "http://www.barik.net/wiki/1.0");

恭喜!仓库的自动配置现在完成了。

JCRWiki 的设计策略

现在看一下 JCRWiki 仓库的整体内容层次结构。在示例中,要创建两个实体 “rose” 和 “Shakespeare”,它们都是 nt:unstructured 类型的。根据设计合同,每个百科全书条目都要有三个属性:条目的标题、条目的内容以及多值分类属性(如果条目有多个分类)或单值分类属性(如果条目只有一个分类)。多值属性在编程上表现为一组数值。

图 2 描绘了 JCRWiki 设计策略的图示:

图 2. JCRWiki 拓扑的高层图示

Java Content Repository API简介(7)

时间:2011-06-25 IBM Titus Barik

JCRWiki 功能

没有内容的仓库没什么用处。这一节将演示 JSR-170 提供的基本内容操纵功能,并描述一些更高级的、可选的仓库特性,例如版本管理和导入导出 XML 内容。

添加内容

从清单 8 开始,向仓库添加内容节点,让它看起来像图 2 中的 JCRWiki 拓扑:

清单 8. 将内容添加到 JCR 仓库中

Node encyclopedia = rn.addNode("wiki:encyclopedia"); Node p = encyclopedia.addNode("wiki:entry"); p.setProperty("wiki:title", new StringValue("rose")); p.setProperty("wiki:content", new    StringValue("A rose is a flowering shrub.")); p.setProperty("wiki:category",    new Value[]{     new StringValue("flower"),     new StringValue("plant"),     new StringValue("rose")}); Node n = encyclopedia.addNode("wiki:entry"); n.setProperty("wiki:title", new StringValue("Shakespeare")); n.setProperty("wiki:content", new    StringValue("A famous poet who likes roses.")); n.setProperty("wiki:category", new StringValue("poet")); session.save();

默认情况下,Jackrabbit 的节点被设置为 nt:unstructured。注意,“rose” 的分类属性是多值的。上面代码段的最后一行代码将保存会话。添加和设置节点以及节点属性只能修改临时的会话存储层。要将这些变化保持到仓库中,则必须用 session.save() 保存会话。可以在目标节点上调用 Node.remove() 来删除节点。

存取内容

JSR-170 提供了两种存取内容的方法:遍历 存取和直接 存取。遍历存取包括用相对路径在内容树中进行遍历,直接存取允许用绝对路径直接跳到节点,如果节点是可以引用的,则用 UUID 直接跳到节点。因为两种存取之间存在相似性,所以我在这篇文章只侧重于遍历存取。

从任何 Node 对象及其方法 Node.getNode()、Node.getProperty() 都可以进行遍历存取。通过使用 JCRWiki 拓扑,可以用以下代码从根节点获得 encyclopedia 节点:

Node encyclopedia = rn.getNode("wiki:encyclopedia");

可以进一步通过遍历得到属性。例如,在根节点向下的 “rose” 百科全书节点条目中,假设以前知道 J

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号