2014-01-13 55 views
0

我正在面對Jackrabbit節點內容從一個路徑移動到另一個路徑的問題。JCR移動內容

嘗試將節點下的文檔列表(從jcr中的臨時節點)移動到新路徑(新節點,不包含任何文檔)。

節點是mixin類型。

下面是用於創建文檔節點的部分片段:

Node documentNode = session.getNode("/1/doc/1").addNode("Test_Sample", "et:document"); 
documentNode.setProperty(PROPERTY_ID, 123); 
documentNode.setProperty(Property.JCR_TITLE, "Test Sample"); 
documentNode.setProperty(Property.JCR_DESCRIPTION, "Sample Description"); 
documentNode.setProperty(ETNodeTypes.ET_TAGS.getName(), "web"); 

Node resourceNode = documentNode.addNode (Property.JCR_CONTENT, "nt:resource"); 
resourceNode.setProperty (Property.JCR_MIMETYPE, "application/xstream"); 
resourceNode.setProperty (Property.JCR_ENCODING, "UTF-8"); 
Binary value = session.getValueFactory().createBinary(new ByteArrayInputStream(document.getData())); 
resourceNode.setProperty (Property.JCR_DATA, value); 

Calendar lastModified = Calendar.getInstance(); 
resourceNode.setProperty (Property.JCR_LAST_MODIFIED, lastModified); 
session.save(); 

VersionManager versionManager = session.getWorkspace().getVersionManager(); 
documentNode.addMixin(JcrConstants.MIX_VERSIONABLE); 
versionManager.checkin(documentNode.getPath()); 
doc.setVersionNumber(versionManager.getBaseVersion(documentNode.getPath()).getName()); 
return documentNode.getIdentifier(); 

節點類型描述:

/** 
* Document node 
*/ 
[et:document] > nt:file, mix:title, mix:versionable, mix:shareable 
+ * (nt:file) VERSION 
- et:tags multiple 
- et:role multiple 
- et:id (LONG) 

通緝使用JCR API本身,而不是讓所有的子節點迭代來移動內容並移至目標文件夾。

在JCR 2.0中使用Jackrabbit核心2.6.0。

回答

0

不知道你確切的問題是什麼,你可以使用Session.moveWorkspace.move來移動節點,我將鏈接的API文檔解釋差異。

確保目標節點定義接受您在其下移動的節點類型,或者使用nt:unstructured目標節點作爲開始,因爲它接受其下的任何節點類型。