jackrabbit食用指南:关于NodeType

作者: cleanup123 | 来源:发表于2019-04-06 06:38 被阅读4次
rabbit.jpg

JSR 170 node types 分为 Mixin types 和 Primary types。

这篇文章主要讨论Primary types,我参考了Jackrabbit Wikijcr2.0Api 将所有的Primary types节点整理如下图所示。

JCR Primary types.png

可以看到所有的节点都是基于nt:base产生的,并且nt:base是一个abstract节点,如果你直接将nt:base节点当作节点类型创建新节点会得到一个抽象节点的异常提示。

Node ntbase = rootNode.addNode("ntbase", NodeType.NT_BASE);

javax.jcr.nodetype.ConstraintViolationException: Unable to add a node with an abstract node type: nt:base

jackrabbit wiki 上只针对
nt:base,
nt:unstructured,
nt:hierarchyNode,
nt:file,
nt:folder,
nt:resource
这几个NodeType做了说明,其他的节点没有任何提示。所以本文只对这写NodeType做使用说明,其他的节点cleanup123会在尝试之后补充更新。

上述6个节点类型一共分为

  1. nt:base 基础类型
    此类型是抽象节点类型不能直接用来新建新的节点,但是可以用SQL-2语法来查询。
  2. nt:unstructured 非结构化节点
    可以设置所有类型的属性和子节点。

原文为: The nt:unstructured node type permits all kinds of properties and child nodes to be added to a node

  1. nt:hierarchyNode 结构化节点

    nt:hierarchyNode也是一个抽象节点,他的具体实现节点有三个:

    1. nt:file
      可以新增一个jcr:content 的节点,通常使用nt:resources类型的节点。

    2. nt:folder
      可以新增一个nt:hierarchyNode类型的节点

    3. nt:linkedFile
      可以添加一个jcr:content 的属性,通常使用nt:resources类型的节点。

  2. nt:resource
    可以设置Property.JCR_ENCODING,Property.JCR_MIMETYPE,Property.JCR_DATA,Property.JCR_LAST_MODIFIED这四个属性。


以下是具体使用这写节点的代码:

        //在基础节点后增加非结构化
        Node unstructured = rootNode.addNode("unstructured", NodeType.NT_UNSTRUCTURED);
        //非结构化节点可以自定义自己的属性
        unstructured.setProperty("p1","abc");
        unstructured.setProperty("p2","1234");

        //在基础节点下新增nt:hierarchyNode类型的nt:folder
        Node picfolder = rootNode.addNode("picfolder", NodeType.NT_FOLDER);
        //在folder下面建立nt:file节点
        Node mypic1 = picfolder.addNode("mypic1", NodeType.NT_FILE);
        //在mypic1文件下可建立Node.JCR_CONTENT的节点可以是任何类型,但是通常会选择nt:resource节点
        Node sky = mypic1.addNode(Node.JCR_CONTENT, NodeType.NT_RESOURCE);
        sky.setProperty(Property.JCR_ENCODING,"utf-8");
        sky.setProperty(Property.JCR_MIMETYPE,"application/json");
        sky.setProperty(Property.JCR_DATA, new BinaryImpl("{'id':001,'msg':'sky is blue!'}".getBytes()));
        sky.setProperty(Property.JCR_LAST_MODIFIED,Calendar.getInstance().getTimeInMillis());

相关文章

  • jackrabbit食用指南:关于NodeType

    JSR 170 node types 分为 Mixin types 和 Primary types。 这篇文章主要...

  • jackrabbit食用指南:Jackrabbit Config

    原文: https://jackrabbit.apache.org/jcr/jackrabbit-configur...

  • 通过页面查看仓库中的节点

    Jackrabbit启动之后,可以通过页面看到内容仓库中的所有节点。 1、启动Jackrabbit,如下: 2、页...

  • DOM属性总结

    1. nodeType作用:返回一个整数值,代表节点类型首先来总结一下关于nodeType的种类 文档节点(doc...

  • 关于 nodeType 、nodeName 、nodeValue

    nodeType 属性: 每个节点都有一个 nodeType 属性,用于表明节点的类型,节点类型由 Node 类型...

  • js DOM nodeType

    js 里面的节点的nodeType,就是判断节点的类型nodeType=1 的时候 是元素节点nodeType=3...

  • nodeType

    nodeType属性返回节点类型的常数值。不同的类型对应不同的常数值,12种类型分别对应1到12的常数值 元素节点...

  • nodeType

    该节点的类型。9代表Document节点,1代表Element节点,3代表Text节点,8代表Comment节点,...

  • 《毒液》食用指南

    毒液是什么? 它是一种呈现为粘液态的共生体 诞生在距离地球几光年之外的克林特星 它可以和宿主结合成一种全新的生物 ...

  • 人类食用指南

    一夜之间,谁能想到,动物竟成了世界的主宰,人类却沦为了它们的食物,它们也不再像刚开始那样生吞活剥,渐渐的讲求精细化...

网友评论

    本文标题:jackrabbit食用指南:关于NodeType

    本文链接:https://www.haomeiwen.com/subject/vqmqiqtx.html